版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.题目小型图书信息管理系统的设计与实现2.功能(1)每一条记录包括一本图书的书名、ISBN、作者、出版社、定价、出版日期和数量。(2)输入功能:可以一次完成无数条记录的输入。(3)显示功能:完成全部图书信息的显示。(4)查找功能:完成按书名查找图书信息,并显示。(5)排序功能:按图书价格进行排序。(6)插入功能:按图书价格高低插入一条图书信息。(7)保存功能:将图书信息保存在任何自定义的文件中,如保存在:c:book。(8)读取功能:将保存在文件中的图书信息读取出来。(9)有一个清晰美观界面来调用各个功能3.要求(1)整个系统均用C语言实现;(2)利用指针、链表来实现学生成绩的数据结构设计;
2、(3)系统具有输入、显示、查询、删除、排序、插入,保存、读取基本功能;(4)系统的各个功能模块都用函数的形式来实现;(5)可以将图书信息保存在文件中。(6)可以将图书信息从文件中读取出来。4.源程序#include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #include<windows.h>#define LL sizeof(BOOK_TYPE)int maininterface();void infor_input(); void refer
3、();void refer_1();void refer_2();void modify();void delete();void findbook();void findbook1();void findbook2();void devise();void main() int a=0; do a=maininterface(); switch(a) case 1:system("CLS");infor_input();break; case 2:system("CLS");refer();break; case 3:system("CLS&
4、quot;);modify();break; case 4:system("CLS");delete();break; case 5:exit(0); default:system("CLS");printf("nnnnttt无此操作,请按任意键返回:n");getch();system("CLS"); while(a!=6); int maininterface() int n; printf("nnntt-小型图书登记管理系统-n"); printf("ntttt1:<录入图
5、书信息>n"); printf("ntttt2:<查询信息>n"); printf("ntttt3:<修改图书信息>n"); printf("ntttt4:<删除图书信息>n"); printf("ntttt5:<退出系统>n"); printf("nttt请输入1-5,其他输入非法!n"); scanf("%d",&n); return n;typedef struct int month; int d
6、ay; int year;DATES; DATES day; typedef struct books char bookname50; char ISBN50; char author50; char publisher50; float money; DATES day; int count; struct books *next;BOOK_TYPE; BOOK_TYPE ts;struct books *head = NULL;void infor_input() FILE *fp; int n=0; BOOK_TYPE ts; printf("-图书资料基本信息录入-n&qu
7、ot;); do printf("请输入书名n"); scanf("%s",ts.bookname); printf("请输入ISBNn"); scanf("%s",ts.ISBN); printf("请输入作者n"); scanf("%s",ts.author); printf("请输入出版社n"); scanf("%s",ts.publisher); printf("请输入定价n"); scanf("%
8、f",&ts.money); printf("请输入出版日期n"); scanf("%d/%d/%d",&ts.day.month,&ts.day.day,&ts.day.year); printf("请输入数量n"); scanf("%d",&ts.count); printf("nttt请选择(1:确定t2:取消t0:重新输入):"); scanf("%d",&n); while(n=0); if(n=1) if(
9、fp=fopen("book.txt","a")=NULL) /* 若"book.txt"文件不存在,则以创建方式打开文件 */ fp=fopen("book.txt","w+"); fwrite(&ts,LL,1,fp); /* 将输入的图书信息写入磁盘文件"book.txt" */ fclose(fp); system("CLS"); printf("输入成功!n"); printf("请选择(1:返回主界面t2:
10、输入另一本图书信息t0:退出系统):n"); scanf("%d",&n); switch(n) case 1:system("CLS");break; case 2:system("CLS");infor_input();break; case 0:break; default:printf("无此操作,按任意键返回n");getch();system("CLS");break; void refer() int n; printf("1:<根据ISBN号,找
11、出图书信息>n"); printf("2:<根据出版社名称,找出所有图书信息>n"); printf("3:<根据书名,找出图书信息>n"); printf("4:<统计书籍总数>n"); printf("5:<统计书籍总金额和平均价格>n"); printf("0:<返回>n"); printf("请输入0-5,其他输入非法!n"); scanf("%d",&n);swi
12、tch(n) case 1:system("CLS");findbook();break; case 2:system("CLS");findbook1();break; case 3:system("CLS");findbook2();break; case 4:system("CLS");refer_1();break; case 5:system("CLS");refer_2();break; case 0:system("CLS");break; default:pr
13、intf("无此操作n");break; struct books *read_1() FILE *fp; struct books *p1,*p2,*head; fp=fopen("book.txt","r"); head=p1=(BOOK_TYPE *)malloc(LL); fread(p1,LL,1,fp); while(feof(fp)=0) p2=(BOOK_TYPE *)malloc(LL); fread(p2,LL,1,fp); p1->next=p2; p1=p2; p1->next=NULL; fclo
14、se(fp); return head;void refer_1() struct books *head,*p,*d; struct books *read_1(); int total=0; head=read_1(); for(p=head;p->next!=NULL;d=p,p=p->next,free(d) total=total+p->count; printf("书籍总数:%dn",total); printf("按任意键返回");getch();system("CLS");void refer_2()
15、 int num=0; struct books *head,*p1,*p2; struct books *read_1(); float total=0,average=0; head=read_1(); for(p1=head;p1->next!=NULL;p2=p1,p1=p1->next,free(p2) num=num+p1->count; total=total+p1->money*p1->count; average=total/num; printf("书籍总金额:%.2fn",total); printf("书籍平均
16、价格:%.2fn",average); printf("按任意键返回");getch();system("CLS");void findbook() FILE *fp; char ISBN50; int i; fp=fopen("book.txt","r"); printf("请输入书的ISBN号n"); scanf("%s",ISBN); for(i=0;fread(&ts,LL,1,fp)!=0;i+) if(strcmp(ISBN,ts.ISBN)=0
17、) printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %dn按任意键返回n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count); printf("没有你所需要的书籍"); fclose(fp);void findbook1() FILE *fp; char publisher50; int i; fp=fopen("book.txt","r&quo
18、t;); printf("请输入书的publishern"); scanf("%s",publisher); for(i=0;fread(&ts,LL,1,fp)!=0;i+) if(strcmp(publisher,ts.publisher)=0) printf("这本书的详细资料为:%s %s %s %s %f %d/%d/%d %dn按任意键返回n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.yea
19、r,ts.count); printf("没有你所需要的书籍"); fclose(fp);void findbook2() FILE *fp; char bookname50; int i; fp=fopen("book.txt","r"); printf("请输入书的booknamen"); scanf("%s",bookname); for(i=0;fread(&ts,LL,1,fp)!=0;i+) if(strcmp(bookname,ts.bookname)=0) printf(
20、"这本书的详细资料为:%s %s %s %s %f %d/%d/%d %dn按任意键返回n",ts.bookname,ts.ISBN,ts.author,ts.publisher,ts.money,ts.day.month,ts.day.day,ts.day.year,ts.count); printf("没有你所需要的书籍"); fclose(fp);void delete() struct books *p1, *p2; char ISBN50;int e=0;if(head = NULL) printf("无书籍记录");ret
21、urn; printf("请输入您要删除的书籍的ISBN:n");scanf("%s",ISBN); p1 = head; while(ISBN != p1->ISBN && p1->next != NULL) p2 = p1; p1 = p1->next; if(ISBN = p1->ISBN) if(p1 = head) head = p1->next; else p2->next = p1->next; free(p1); e-; else printf("没有该书籍记录,请核对!
22、n"); void modify() struct books *p1, *p2; char ISBN50; if(head = NULL) printf("无书籍记录!n"); return; printf("请输入您要修改的书籍的ISBNn:"); scanf("%s",ISBN); p1 = head; while(ISBN != p1->ISBN && p1->next != NULL) p2 = p1; p1 = p1->next; if(ISBN = p1->ISBN) d
23、evise(p1); else printf("没有该学生记录,请核对!n"); void devise(struct books *p) int choice; choice = -1; do printf("请选择您要修改的书籍的信息内容:n"); printf("+-+n"); printf("| 书名 请按 1 |n"); printf("| ISBN 请按 2 |n"); printf("| 作者 请按 3 |n"); printf("|出版社请按 4 |
24、n"); printf("| 定价 请按 5 |n"); printf("| 出版日期 请按 6 |n"); printf("| 数量 请按 7 |n"); printf("| 取消 请按 0 |n"); printf("+-+n"); printf("请输入您的选择:"); scanf("%d", &choice); switch(choice) case 0: return; case 1: printf("请输入新书名 :"); scanf("%s", p->bookname); break; case 2: printf("请输入新ISBN:"); scanf("%s", &p->ISBN); break; case 3: printf("请输入新作者:"); scanf("%s", p->a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理实践中的家庭支持
- 护理基本用药护理
- 护理考试名师难点解析
- 护理实践中的护理质量改进
- 护理学生人文关怀教育
- 呼吸系统疾病护理的质量控制
- 护理安全管理的国际经验与借鉴
- 护理课件评估与反馈机制
- 旅游行业经理人才选拔面试技巧
- 基于可持续发展的空天旅游载具环境影响评估
- 2026年2月时政题库(附答案)
- 2026江苏无锡江阴水韵新城建设投资有限公司招聘工作人员7人笔试备考试题及答案解析
- 2026年河南林业职业学院单招职业适应性测试题库带答案详解
- 2026年内蒙古商贸职业学院单招职业技能考试题库附答案详解
- 2026年安徽城市管理职业学院单招职业适应性测试题库带答案详解(新)
- KTV事故隐患内部报告奖励制度
- 应急管理干部警示教育以案促改心得体会
- 2026年小学六年级下册劳动教育教学计划
- 乡卫生院卫生统计制度
- 2026年妇联岗位面试考点梳理练习题及答案
- 露天矿山应急管理课件
评论
0/150
提交评论