C语言的图书管理系统_第1页
C语言的图书管理系统_第2页
C语言的图书管理系统_第3页
C语言的图书管理系统_第4页
C语言的图书管理系统_第5页
已阅读5页,还剩30页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上精选优质文档-倾情为你奉上专心-专注-专业专心-专注-专业精选优质文档-倾情为你奉上专心-专注-专业 图书管理系统1.课程设计的目的一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程处理借书、还书业务流程的效率很低,其次处理能力比较低为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。通过本次课程设计,可以增进对C语言的了解,培养学生的动手动脑能力,加强了对利用C

2、语言编写系统的能力,为今后编写相关程序打下基础。经过本次程序设计实践,完成用C语言一个小型软件的设计,可以学习C语言程序设计的基本方法,掌握常用程序调试的方法和技巧,理解结构化程序设计的基本理念,理解程序设计的系统分析,概要设计,编码,调试等过程,培养基本算法的设计能力,培养严密逻辑思考能力,培养程序设计的实验能力,培养团队协作精神。本次课程设计我设计主要目的是利用Visual C+6.0开发工具编制图书借阅管理系统中数据的录入,用以实现图书数据的输入添加图书信息,以便于图书的浏览,查询和删除,通过图书信息的录入,使得图书借阅管理系统得以运行。2设计方案论证2.1系统设计思路图书管理系统应具有

3、信息录入,浏览,查询,修改,删除等功能,所以这个图书管理系统分为6个部分,各模块功能如下:(1)图书信息录入模块:添加新书的信息如图书登陆号,图书书名,图书作者名,图书出版社,图书出版时间,图书分类号,图书价格,(2)图书信息浏览模块:显示全部图书信息。(3)图示信息查询模块:根据查询的条件查寻需要的图书借阅记录。(4)图书信息修改模块:根据所要修改的图书信息进行修改。(5)图书信息删除模块,删除相关图书的借阅记录。(6)退出系统模块:退出图书借阅管理系统。主功能模块图如图1所示:图1 主功能模块图2.2图书信息录入模块的设计思路定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量,利用

4、调用的函数可以方便快捷的对图书信息的录入,遍历到尾结点,p指向尾结点依次进行图书信息登录号,书名,作者名,出版社,出版时间,图书分类号,图书价格的信息输入,待到录入完成一本图书信息后,设定是否继续添加,方便图书入库和更新。定义flag函数,方便用户选择重复输入,避免多次重新输入的麻烦。定义fflush函数,对图书信息按要求录入。最后利用return语句返回主函数。3.设计结果与分析3.1主界面的设计代码编写完之后,检查有无错误,然后执行程序,进入界面。主界面的主要功能为:使本系统操作起来更为简单明了,便于用户操作使用。对于图书信息的管理其结果如下图所示:图2主界面3.2图书信息录入模块的设计进

5、入选择菜单后,输入数字1,进入图书信息录入模块,根据系统提示输入图书名,图书作者等信息。本模块的主要功能为:对图书信息按要求依次进行录入,用于添加图书信息,进行图书信息的储存,便于对图书信息的浏览、修改和删除。本模块使用效果图如图所示:图3图书信息录入的界面图图书信息录入模块的代码如下:void InsertDoc(struct books_list *head) /*定义结构体指针变量 s指向开辟的新结点首地址 p为中间变量*/ struct books_list *s, *p; char flag=Y; /*定义flag,方便用户选择重复输入*/ p=head; /*遍历到尾结点,p指向尾

6、结点*/ while(p-next!= NULL) p=p-next; /*开辟新空间,存入数据,添加进链表*/ while(flag=Y|flag=y) s=(struct books_list *)malloc(sizeof(struct books_list); printf(n 请输入图书登陆号:); fflush(stdin); scanf(%s,s-loginnum); printf(n 请输入图书书名:); fflush(stdin); scanf(%s,s-bookname); printf(n 请输入图书作者名:); fflush(stdin); scanf(%s,s-aut

7、hor); printf(n 请输入图书出版社:); fflush(stdin); scanf(%s,s-publisher); printf(n 请输入图书出版时间:); fflush(stdin); scanf(%s,s-pbtime); printf(n 请输入图书分类号:); fflush(stdin); scanf(%s,s-classfy); printf(n 请输入图书价格:); fflush(stdin); scanf(%f,&s-price); printf(n); p-next=s; /*将新增加的节点添加进链表*/ p=s; /*p指向尾节点,向后移*/ s-next=N

8、ULL; printf( 添加成功!); printf(n 继续添加?(Y/N):); fflush(stdin); scanf(%c,&flag); printf(n); if(flag=N|flag=n) break; else if(flag=Y|flag=y) continue; save(head); /*保存数据至文件*/ return;4.设计体会这次图书借阅管理系统课程设计,我主要采用是用Visual C+6.0开发工具编制。在这次课程设计当中,我受益匪浅,就图书借阅管理这个课题,我实现了数据的输入和输出,能通过直接写程序进行简单的操作。在这次课程设计中,虽然没有使用库函数和文

9、件操作,但是自己扎实的掌握了定义函数和调用函数,在小组共同努力下完成了这次课程设计,有种自豪感,从开始不清晰的思路到完成程序设计,这也是一种跨越。通过这次课程设计,使我更加扎实的掌握了C语言方面的知识,在设计过程中虽然遇到了一些问题,但经过一次又一次的思考,一遍又一遍的检查终于找出了原因所在,也暴露出了前期我在这方面的知识欠缺和经验不足。这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后终于游逆而解。同时,在课程设计过程中我学得到很多实用的知识。编写程序中,真的是细节决定成败,因为不管程序的语句是多是少,但是只要有一条语句或语法不正确,就不能使程序得到所需要的结果。没能够使自己编写出

10、来的程序等到想要的结果,意味着这是一个不理想的程序,对于本次编写来说则是失败的。我们认为,在这学期的实验中,在收获知识的同时,还收获了阅历,收获了成熟,在此过程中,我们通过查找大量资料,请教老师,以及不懈的努力,不仅培养了独立思考、动手操作的能力,在各种其它能力上也都有了提高。更重要的是,在实验课上,我们学会了很多学习的方法。而这是日后最实用的,真的是受益匪浅。要面对社会的挑战,只有不断的学习、实践,再学习、再实践。锻炼自己的c 语言编程能力,养成良好的c语言编程风格。不管怎样,这些都是一种锻炼,一种知识的积累,能力的提高。完全可以把这个当作基础东西,只有掌握了这些最基础的,才可以更进一步,取

11、得更好的成绩。很少有人会一步登天吧。永不言弃才是最重要的。5参考文献1 谭浩强著.C程序设计(第三版).北京:清华大学出版社,2005 46-542 谭浩强著.C程序设计教程.北京:清华大学出版社,2005 72-863 C编写组编.常用C语言用法速查手册.龙门书局,1995 100-1204 H M Peitel,P J Deitel.C How to Program.Second Edition.蒋才鹏等译.C程序设计教程.北京;机械工业出版社,2000 78-905 Herbert Schildt著。戴健鹏译.C语言大全(第二版).北京:电子工业出版社,1994 92-113附录:源程序

12、include#include#include#includestruct books_list char author20; char bookname20; char publisher20; char pbtime15; char loginnum10; float price; char classfy10; struct books_list * next; ; struct books_list * Create_Books_Doc(); void InsertDoc(struct books_list * head); void DeleteDoc(struct books_li

13、st * head); void Print_Book_Doc(struct books_list * head);void search_book(struct books_list * head); void info_change(struct books_list * head); void save(struct books_list * head);struct books_list * Create_Books_Doc() struct books_list * head; head=(struct books_list *)malloc(sizeof(struct books_

14、list); /*分配头节点空间*/ head-next=NULL; /*头节点指针域初始化,定为空*/ return head;void save(struct books_list * head) struct books_list *p; FILE *fp; p=head; fp=fopen(data.txt,w+); /*以写方式新建并打开 data.txt文件*/ fprintf(fp,n); /*向文件输出表格*/ fprintf(fp,登录号 书 名 作 者 出版单位 出版时间 分类号 价格 n); fprintf(fp,n); while(p-next!= NULL) p=p-

15、next; fprintf(fp,%-6.6s%-10.10s%-10.10s%-10.10s%-12.12s%-6.6s%.2f n,p-loginnum,p-bookname,p-author,p-publisher,p-pbtime,p-classfy,p-price); fprintf(fp,n); fclose(fp); printf( 已将图书数据保存到 data.txt 文件n);void InsertDoc(struct books_list *head) struct books_list *s, *p; char flag=Y; /*定义flag,方便用户选择重复输入*/

16、p=head; while(p-next!= NULL) p=p-next; /*开辟新空间,存入数据,添加进链表*/ while(flag=Y|flag=y) s=(struct books_list *)malloc(sizeof(struct books_list); printf(n 请输入图书登陆号:); fflush(stdin); scanf(%s,s-loginnum); printf(n 请输入图书书名:); fflush(stdin); scanf(%s,s-bookname); printf(n 请输入图书作者名:); fflush(stdin); scanf(%s,s-

17、author); printf(n 请输入图书出版社:); fflush(stdin); scanf(%s,s-publisher); printf(n 请输入图书出版时间:); fflush(stdin); scanf(%s,s-pbtime); printf(n 请输入图书分类号:); fflush(stdin); scanf(%s,s-classfy); printf(n 请输入图书价格:); fflush(stdin); scanf(%f,&s-price); printf(n); p-next=s; /*将新增加的节点添加进链表*/ p=s; /*p指向尾节点,向后移*/ s-nex

18、t=NULL; printf( 添加成功!); printf(n 继续添加?(Y/N):); fflush(stdin); scanf(%c,&flag); printf(n); if(flag=N|flag=n) break; else if(flag=Y|flag=y) continue; save(head); /*保存数据至文件*/ return;void search_book(struct books_list *head) struct books_list * p; char temp20; p=head; if(head=NULL | head-next=NULL) /*判断

19、数据库是否为空*/ printf( 图书库为空!n); else printf(请输入您要查找的书名: ); fflush(stdin); scanf(%s,temp); /*指针从头节点开始移动,遍历至尾结点,查找书目信息*/ while(p-next!= NULL) p=p-next; if(strcmp(p-bookname,temp)=0) printf(n图书已找到!n); printf(n); printf(登录号: %stn,p-loginnum); printf(书名: %stn,p-bookname); printf(作者名: %stn,p-author); printf(出

20、版单位: %stn,p-publisher); printf(出版时间: %stn,p-pbtime); printf(分类号: %stn,p-classfy); printf(价格: %.2ftn,p-price); if(p-next=NULL) printf(n查询完毕!n); return;void Print_Book_Doc(struct books_list * head) struct books_list * p; if(head=NULL | head-next=NULL) /*判断数据库是否为空*/ printf(n 没有图书记录! nn); return; p=head

21、; printf(n); printf(登录号 书 名 作 者 出版单位 出版时间 分类号 价格 n); printf(n); /*指针从头节点开始移动,遍历至尾结点,依次输出图书信息*/ while(p-next!= NULL) p=p-next; printf(%-6.6s%-10.10s%-10.10s%-10.10s%-12.12s%-6.6s%.2f n,p-loginnum,p-bookname,p-author,p-publisher,p-pbtime,p-classfy,p-price); /*循环输出表格*/ printf(n); printf(n);void info_ch

22、ange(struct books_list * head) struct books_list * p; int panduan=0; char temp20; p=head; printf(请输入要修改的书名:); scanf(%s,temp); while(p-next!= NULL) p=p-next; if(strcmp(p-bookname,temp)=0) printf(n 请输入图书登陆卡号:); fflush(stdin); scanf(%s,p-loginnum); printf(n 请输入图书书名:); fflush(stdin); scanf(%s,p-bookname

23、); printf(n 请输入图书作者名:); fflush(stdin); scanf(%s,p-author); printf(n 请输入图书出版社:); fflush(stdin); scanf(%s,p-publisher); printf(n 请输入图书出版时间:); fflush(stdin); scanf(%s,p-pbtime); printf(n 请输入图书分类号:); fflush(stdin); scanf(%s,p-classfy); printf(n 请输入图书价格:); fflush(stdin); scanf(%f,&p-price); printf(n); pa

24、nduan=1; if(panduan=0) printf(n 没有图书记录! nn); return;void DeleteDoc(struct books_list * head) struct books_list *s,*p; char temp20; int panduan; panduan=0; p=s=head; printf( 请输入您要删除的书名:); scanf(%s,temp); while(p!= NULL) if(strcmp(p-bookname,temp)=0) panduan+; break; p=p-next; if(panduan=1) for(;s-next!=p;) s=s-next; s-next=p-next; free(p); printf(n 删除成功! n); else printf( 您输入的书目不存

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论