1、图书借阅管理系统高级语言程序设计课程设计报告题目:图书借阅管理系统专业:班级:姓名:指导教师:成绩:计算机与信息工程系2014年6月20日目录1 目的要求 12 设计思路 22.1 系统需求分析 22.2 功能介绍 22.3 模块划分 32.4 数据流图 33 设计代码 44 总结 151 目的要求设计一图书信息管理系统,使之能提供以下功能:1)系统以菜单方式工作;2)图书信息录入功能(图书信息用文件保存)输入;3)图书信息浏览功能输出;4)查询和排序功能:(至少一种查询方式)算法;5)按书名查询;6)按作者名查询;7)图书信息的删除与修改(可选项)。2 设计思路根据题目要求,应当把图书信息用
2、结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中去,所以应该提供下个结构体和文件的输入等操作:在程序中需要实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现:另外还需提供选择菜单实现功能,在运行时达到所要求的目的。2.1 系统需求分析经过以上对本系统的调研及可行性分析后,下面将对系统在功能上以及性能上进行进一步的需求分析。2.2 功能介绍输入图书信息, 出现一个图书信息管理系统的主界面,其中有6个数字代表的选项,可以按相关的数字进行操作。每一条记录包括一本书的书名、图书号、作者、出版时间、出版社名、价格。 0)退出: 如果
3、在图书管理系统的主界面,则退出的是系统,如果是在子菜单下则返回到主界面。 1)录入新图书: 可以完成一条信息的输入,也可以完成多条信息的输入。 2)浏览图书信息: 学生可以浏览图书的相关信息,包括一本书的书名、图书号、作者、出版时间、出版社名、价格。 3)自主查询图书信息: 可以按书名或按作者查找图书的相关信息并显示。 4)删除图书信息: 只能通过图书号删除一本书的相关信息。 5)修改图书信息:只能通过图书号进行修改该图书的相关信息。 2.3 模块划分图1 系统功能模块图2.4 数据流图 图2 系统数据流程图3 设计代码#include#include#includetypedef struc
4、t char number10;/书号 char name20;/书名 char author20;/作者 char publish50;/出版社 char time20;/出版时间 float price;mbook;typedef struct int count;/书的本数 mbook book100;/最大可有100本书mlibrary;mlibrary library;void save()/保存图书信息。 FILE *fp; if(fp=fopen(library.doc,w)=NULL) printf(n不能保存图书信息n); return; fwrite(&library.co
5、unt,sizeof(int),1,fp); fwrite(library.book,sizeof(library.book0),library.count,fp);void putin() /*定义录入函数*/ int y=1; system(cls); while(y) printf(t请输入您的书籍的书号:); scanf(%s,library.booklibrary.count.number); printf(t请输入书名:); scanf(%s,library.booklibrary.count.name); printf(t请输入作者名:); scanf(%s,library.bo
6、oklibrary.count.author); printf(t请输入出版社:); scanf(%s,library.booklibrary.count.publish); printf(t请输入出版时间:); scanf(%s,library.booklibrary.count.time); printf(t请输入该书的价格:); fflush(stdin); scanf(%f,&library.booklibrary.count.price); library.count+; printf(录入成功,恭喜您!); printf(n是否继续录入(1.继续;0,退出录入):); fflush
7、(stdin); scanf(%d,&y); if (y!=1) y=0; break; save();void lookup() system(cls); printf(图书号t图书名t作者名t出版社t出版日期t图书价格n); for (int i=0;ilibrary.count;i+) printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price);
8、printf(n 查询结果如上按0键返回主菜单: ); fflush(stdin); getchar();void search_by_name() /*定义按书名查询*/ char s220; int flag=1; printf(n请输入要查询的书名: ); fflush(stdin); scanf(%s,s2); printf(图书号t图书名t作者名t出版社t出版日期t图书价格n); for(int i=0;ilibrary.count;i+ ) if(strcmp(s2,library.booki.name)=0) flag=0; printf(%st%st%st%st%st%6.2f
9、n,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); if (flag) printf(查询错误!按0键返回主菜单: ); fflush(stdin); getchar();void search_by_author() /*定义按作者名查询*/ char s320; int flag=1; printf(请输入要查询的书的作者: ); fflush(stdin); scanf(%s,s3); pr
10、intf(图书号t图书名t作者名t出版社t出版日期t图书价格n); for(int i=0;ilibrary.count;i+ ) if(strcmp(s3,library.booki.author)=0) flag=0; printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); if (flag) printf(查询出错!按0键返回主菜单: );
11、fflush(stdin); getchar();void search() /*定义查询函数*/ int a; system(cls); /*进行清屏*/ printf(tt*n); printf(开始查询n); printf(ttt1-按书名查询n); printf(ttt2-按作者名查询n); printf(ttt0-退出n); printf(tt*n) ; printf(tt请选择你想要的查询方式:); fflush(stdin); scanf(%d,&a); switch(a) case 1: search_by_name(); break; case 2: search_by_au
12、thor(); break; case 0: return; void del() /*定义删除函数*/ char number10; system(cls); /*清屏*/ printf(n 请输入想要删除的书名:); fflush(stdin); scanf(%s,number); int i; for (i=0;ilibrary.count;i+) if(strcmp(number,library.booki.number)=0)break; if (i!=library.count) for(;ilibrary.count-1;i+) strcpy(library.booki.name
13、,library.booki+1.name); strcpy(library.booki.number,library.booki+1.number); strcpy(library.booki.publish,library.booki+1.publish); strcpy(library.booki.author,library.booki+1.author); strcpy(library.booki.time,library.booki+1.time); library.booki.price=library.booki+1.price; library.count-; else pr
14、intf(n cannot found!n); printf(删除成功按0键返回主菜单); save(); fflush(stdin); getchar();void update()/修改图书信息 char number10; system(cls); /*清屏*/ printf(n 请输入你要更改的图书名:); fflush(stdin); scanf(%s,number); int i; for (i=0;ilibrary.count;i+) if(strcmp(number,library.booki.number)=0) printf(图书号t图书名t作者名t出版社t出版日期t图书价
15、格n); printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price); break; if (i!=library.count) mbook book; printf(ntt请输入修改后此图书的信息n); printf(t请输入图书号:); scanf(%s,book.number); printf(t请输入图书名:); scanf(%s,book.na
16、me); printf(t请输入作者名:); scanf(%s,book.author); printf(t请输入出版社:); scanf(%s,book.publish); printf(t请输入出版时间:); scanf(%s,book.time); printf(t请输入该书的价格:); fflush(stdin); scanf(%f,&book.price); strcpy(library.booki.name,book.name); strcpy(library.booki.number,book.number); strcpy(library.booki.publish,book.
17、publish); strcpy(library.booki.author,book.author); strcpy(library.booki.time,book.time); library.booki.price=book.price; save(); printf(n 修改成功请按0键返回主菜单:); else printf(n 修改出错!请按0键返回主菜单:n); fflush(stdin); getchar();void main() FILE *fp; if(fp=fopen(library.doc,r)=NULL) printf(n不能打开图书信息库n); fp=fopen(l
18、ibrary.doc,w+); printf(n初始化图书信息库,初始化之后要重启程序n); library.count=0; fwrite(&library.count,sizeof(int),1,fp); fclose(fp); fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book0),library.count,fp); fclose(fp); int a; do system(cls); printf(nnnnntttt图书信息管理系统ttttn); printf(tt*n); pr
19、intf(ttt1 -图书信息录入n); printf(ttt2 -图书信息浏览n); printf(ttt3 -图书信息查询n); printf(ttt4 -图书信息删除n); printf(ttt5 -图书信息修改n); printf(ttt0 -退出图书信息系统n); printf(tt*n); printf(tt请输入操作类型: ); fflush(stdin); scanf(%d,&a); switch(a) case 1: putin(); break; case 2: lookup(); break; case 3: search(); break; case 4: del();
20、 break; case 5: update(); break; case 0: printf(nn退出nn); break; default: printf(n序号不对n); while(a!=0); save();4 总结通过课程设计,对C语言这门课程有了更深一步的了解。它是计算机程序设计的重要理论技术基础,在我们软件工程专业的学习中占据着十分重要的地位。这个程序的结构大体是从网络上借鉴的,但是结果无法运行,只能自己修改,最后终于调试通过,同时也使我们知道,要学好这门课程,仅学习书本上的知识是不够的,还要有较强的实践能力。因为我们学习知识就是为了实践。而只有多实践,多编写程序,才能更好的理解与掌握书本上的东西。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1