《小型图书信息管理系统(C语言)(共10页).doc》由会员分享,可在线阅读,更多相关《小型图书信息管理系统(C语言)(共10页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
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 #include #include #include #include#define LL sizeof(BOOK_TYPE)int maininterface();void infor_input(); void refer();void refer_1();void refer_2();void modify();void delete();void
3、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);modify();break; case 4:system(CLS);delete();break; case 5:exit(0); default:system(CLS);printf(n
4、nnnttt无此操作,请按任意键返回:n);getch();system(CLS); while(a!=6); int maininterface() int n; printf(nnntt-小型图书登记管理系统-n); printf(ntttt1: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 day; int year;DAT
5、ES; 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); do printf(请输入书名n); sca
6、nf(%s,ts.bookname); printf(请输入ISBNn); scanf(%s,ts.ISBN); printf(请输入作者n); scanf(%s,ts.author); printf(请输入出版社n); scanf(%s,ts.publisher); printf(请输入定价n); scanf(%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:
7、确定t2:取消t0:重新输入):); scanf(%d,&n); while(n=0); if(n=1) if(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:输入另一本图书信息t0:退出系统):n); scanf(%d,&n); switch(n) case
8、 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:n); printf(2:n); printf(3:n); printf(4:n); printf(5:n); printf(0:n); printf(请输入0-5,其他输入非法!n); scanf(%d,&n);switch(n) case 1:system(CLS);fin
9、dbook();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:printf(无此操作n);break; struct books *read_1() FILE *fp; struct books *p1,*p2,*head; fp=fopen(book.txt,r);
10、 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; fclose(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-
11、next,free(d) total=total+p-count; printf(书籍总数:%dn,total); printf(按任意键返回);getch();system(CLS);void refer_2() 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-mone
12、y*p1-count; average=total/num; printf(书籍总金额:%.2fn,total); printf(书籍平均价格:%.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) printf(这本书的
13、详细资料为:%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); printf(请输入书的publishern); scanf(%s,publisher); for(i=0;fr
14、ead(&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.year,ts.count); printf(没有你所需要的书籍); fclose(fp);void findbook2() FILE *fp; char bookname50; int i; fp=fope
15、n(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(这本书的详细资料为:%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(没有你所需要的书籍); fc
16、lose(fp);void delete() struct books *p1, *p2; char ISBN50;int e=0;if(head = NULL) printf(无书籍记录);return; 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(p
17、1); e-; else printf(没有该书籍记录,请核对!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) devise(p1); else printf(没有该学生记录,请核对!
18、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 |n); printf(| 定价 请按 5 |n); printf(| 出版日期 请按 6 |n); printf(| 数量 请按 7 |n); printf(| 取消 请按 0 |n); printf(+-+n); print
19、f(请输入您的选择:); 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-author); break; case 4: printf(请输入新出版社:); scanf(%s, p-publisher); break; case 5: printf(请
20、输入新定价:); scanf(%d, p-money); break; case 6: printf(请输入新出版日期 :); scanf(%ld, &p-day.month,day.day,day.year); break; case 7: printf(请输入新数量:); scanf(%s, p-count); break; default: printf(n无效选项!); break; while(choice != 0); 经过一个多星期的C语言课程设计,感觉自己收获不少!首先是:链表本来上课是没有上的,但这个课程设计里面主要都是用链表,因为要达到这样的功能,使用链表相当方便,但不容易
21、理解,所以在这方面我很了很多的时间看课本和参考课外书,使C语言的知识强化了不少。其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:返回值函数和不返回值函数两者在主函数中的调用是不同的更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。这个学生成绩管理系统都是在自己知识范围内完成的,所以界面清晰简单,可能不是很好看,但绝对实用!从这里我也得到一个体会,做一个程序,或者开发一个软件,应该着重从它的后台制作入手,不能做出一个中看不中用的程序或者软件。相信这次的课程设计为我以后继续从事计算机工作打了一个小小的开头。由于这是第一次进行设计,写文档,难免会写得不好!专心-专注-专业