1、- .学院计算机科学与技术系课程设计报告20122013学年第一学期课程C语言课程设计课程设计名称 图书管理系统学生XX学号专业班级指导教师 目 录一、 系统设计背景;二、 课程设计的需求分析:三、 系统设计的目的及具体要求;四、 算法设计;五、 用户手册;六、 调试及测试;七、 总结.一、 系统设计背景: 人类已经跨入了新世纪,正在进入信息化时代。信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和效劳方式已不能适应读者对日益增长的文献信息的需求。随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错
2、后不易更改的手工方式,已经不能满足要求。 基于此问题,建立一个规化,系统化,程序化的图书管理系统迫不及待。为方便对图书馆书籍的录入、修改、删除、借、还书等进展高效的管理,特编写程序以提高图书馆的管理效率。使用程序之后,工作人员可以查询书籍的在库状态,删除或者修改某图书,可以全面掌握图书的流通情况等等。二、 课程设计的需求分析: 为了满足图书管理的要求,通过计算机技术给图书管理员和读者借书、还书带来便利。使用C语言编写了图书管理系统。本系统主要实现了图书信息管理的功能,通过此系统可以对图书馆库存图书信息进展管理和维护操作。实现了图书馆管理的一般功能,包括查询、删除、修改、图书信息等,所设计的系统
3、以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进展各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、出版日期、价格等,图书信息的录入要求和显示要一定的规要求,录入的图书信息用文件形式保存,并可以对其进展浏览、查询、修改、删除等根本操作。三、 系统设计的目的及具体要求:1目的:将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制构造、数据构造作一比拟和总结,结合设计题目进展综合性应用,对所学知识到达融会贯穿的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:1进一步稳固、加深学生所学专业课程?C程序设计语言?的根本
4、理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 2全面考核学生所掌握的根本理论知识及其实际业务能力,从而到达提高学生素质的最终目的。 3利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进展数据处理的综合能力。4对于给定的设计题目,如何进展分析,理清思路,并给出相应的数学模型。 5掌握构造化程序设计方法,熟悉面向过程程序设计方法。6熟练掌握C语言的根本语法,灵活运用各种数据类型。7进一步掌握在集成环境下如何调试程序和修改程序。2课程设计名称及容课程设计名称:图书管理系统设计容:设计一个实用的小型图书管理程序,设计图书的索引卡片。对图
5、书的在库和借出状态要有所表示。能提供读者信息查询及提供按图书的编号、书名、责任者、等途径的检索。3任务和要求程序应提供的根本根本管理功能有:1) 添加:即增加一本数的记录到系统中2) 存储:即将图书信息保存在一个文件中。3) 装入:即将文件中的信息读入程序。4) 查询:可根据书名、编号查找书的相关信息,假设找到显示该书全部信息。5) 修改:可修改一本书的除书名外其它信息。、6) 状态:提供该书在库、不在库的状态。四、算法设计: 1、系统设计思路 : 整个系统制造的过程中,涉及了较多C语言的知识点,对于不同的数据类型、程序控制构造等作以分析。(1) 整个系统除了主函数外,另外还有各种功能的子函数
6、,利用无限次循环语句while()和选择语句switch()实现了各个子函数的功能,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、删除、修改、借书、还书等功能;(2) mbook():这是一个图书构造体,可以描述每本书共同拥有的属性和行为,(3) Save()、putin()、lookup()、del()、update()、search():这几个是功能函数,Save():保存一本书的信息,putin():录入一本书的信息,search():查询一本书的信息以及记录,update():修改一本书的信息,del():删除一本书的信息.(4) Borr
7、owbook()、returnbook(),这两个函数式借书的函数,在借还后系统会修改图书的在库信息,调用时将信息传递给函数,函数返回经过功能操作后,并会出提示信息让用户返回菜单保存信息。实现注释: 这个适用的小型图书管理系统程序的所有信息以磁盘文件的方式保存,方便用户使用,实现了图书管理系统的根本功能,包括了图书的录入、图书的查询、图书的删除、图书的修改、图书的在库状态表示。查询是可按书名、编号、作者、出版时间以及价格等方式查询,找到后系统会自动输出这本书的所有信息。也可查询图书的在库状态,方便用户借书、还书操作,在借书或者还书成功后图书的在库状态即改变。系统中主要的数据构造就是图书的信息,
8、包含编号、书名、作者、出版时间、价格、在库状态,在处理过程中各项可以成为一本图书的不同属性来处理。2、程序构造流程图: 图书管理系统 退 出 查 询 录 入 浏 览 删 除 修 改3、 设计表示:(1) 利用构造体typedef struct ;将图书馆的书籍共同拥有的属性和数量表达出来,属性中包括书号、书名、作者、出版时间以及价格,属性中包括书的本数以及最大可储存的数量。(2) 分别写不同的子函数: void save(); void putin() ; void lookup(); void search_by_name() ; void search_by_author(); void
9、search(); void del(); void update();首先利用void save()这个子函数来描述图书管理系统保存图书信息的功能,翻开library.doc这个文件,确认文件可用时即可保存图书信息;void putin() 可方便图书馆工作人员录入新书,具体录入容包括书号、书名、作者名、出版时间以及价格;利用1,0让工作人员可选择继续录入否;使用者可以通过void lookup()这个子函数来查询图书馆所以书籍的在库状态,如果书籍不在即表示已经借出;如果使用者想要搜索自己想要的书,可以通过该书的各种属性进展查询,在该系统中我仅列举了两种属性即书名和作者,用户在输入想要找的书
10、的书名或该书作者即可查询书的在库状态,如果该书尚在库,用户即可进展借出操作,同时也可以得到该书的其他属性,包括书名、作者、出版时间、价格;图书馆的工作人员在调整图书库时 ,如果想要删除某些书籍,即可利用void del()这个子函数来进展操作,输入想要删除的书籍的各种属性即可找到该书,任何进展删除操作;当然进展修改某本书的属性时也一样,只要通过书的编号找到该书即可进展各种不同的修改。(3) 最后在结尾编写主函数main(),在确认“library.doc!=NULL时进展图书管理系统的目录操作,在系统的主目录上,用户可以看到六个操作选项,包括图书信息录入、图书信息浏览、图书信息查询、图书信息删
11、除、图书信息修改、退出图书管理系统。在确认选项后即可进展下一步由各个子函数实现的不同操作。(4) 设计过程中的想法:因为自身知识以及时间的所限,本系统所提供的功能非常有限,有一些图书馆所必备的功能没有实现,其中最重要的一点是对读者的管理,如果时间充足的话还可以参加,设置借书卡或会员证,对书籍的借出状况能有更好的储存,在工作人员想要找书时可以利用系统查询书籍的借者。总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与缺乏,在提示信息方面可能还不够,有待改良。五、 用户手册:下面,我大致介绍一下我得系统的主要功能和主要事项:当运行该程序时,首先进入系统主界面,如何可以选择1.图
12、书信息的录入2.图书信息的浏览3.图书信息的查询4.图书信息的删除5图书信息的修改0退出图书管理系统.当出现please enter choose:时,需要输入选项前的数字,输入完之后按回车键。首次运行系统时应选择1,录入一些书籍,在完成第一次的操作后,用户即可再回到系统进展其他选项的操作,不会出现cannot find!的错误提示,当用户选择2时系统会出现第一次录入的所有书的各种信息,包括书名、编号、作者、出版时间、价格;当用户选择3时系统界面会出现提示,让用户选择想要查询书籍的编号,输入编号即可看到该书的各种不同属性;当用户选择4时系统也会给用户提示,让用户选择想要删除的书籍编号,当输入编
13、号并确认后,该书就会在图书管理系统中删除;当用户选择5时系统也会给用户提示,让用户选择想要修改的书籍编号,输入完毕后,用户即可对该书的不同属性进展修改操作;返回菜单需按回车键即可。六、 调试及测试: 1.进入主菜单:2. 选择1录入3本书籍:3. 选择2浏览图书信息:4. 选择3查询图书:5.选择4删除图书:6. 选择5修改图书:7. 选择0即可退出系统。七 总结:在这两个星期的实践中,通过编写这个图书管理系统,我体会到了C语言学习的适用性,将理论和实践结合在一起,用先进的计算机工具方便人们的生活,C语言程序的编写首先要从大局考虑,把自己编写的整个程序的思想都写在草稿上,这样有助于自己编写程序
14、,在编写时要完善注释,方便其他人理解程序,编写的程序从理论上来说并没有错误,但一上机就错误不断,甚至照搬课本上的知识也不变,不能得到正确的结果。有时程序改了一遍又一遍,但就是不能成功,编程简直让人头都大了,看似简单的程序,在调试时不断出错。经反反复复的修改后,最后终于成功了,这时所有的烦恼都没了,好轻松,想想这一切都是值得的。我认为,开发一套系统,最主要的是细心与耐心,并且思考要全面,结合实际,充分考虑客户的需求和现实意义,不管什么系统,只有运用到实际生活中,才具有现实意义。所以C语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。参考资料:1 黄明等编著?C语言课程设计?:电子工业
15、2郭翠英编著?C语言课程设计案例精编?:中国水利水电3 宁正元?数据构造c语言? :东南大学。2000年6月第1版4 严蔚敏等 ?数据构造c语言版? :清华大学,1997年4月第1版5 谭浩强编著?C程序设计题解与上机指导(第3版) ?:清华大学6 谭浩强编著?C程序设计(第3版) ?:清华大学7 洪国胜 等编著 ?C+ Builder程序设计轻松上手?:清华大学8 宁正元?数据构造c语言? :东南大学。2000年6月第1版9 严蔚敏等 ?数据构造c语言版? :清华大学,1997年4月第1版。10 明日科技 编著?Visual C+程序开发例宝典?:人民邮电。11 学钢等?数据构造算法设计指导
16、?:清华大学,1999年 第1版。12 大有?数据构造?面向21世纪课程教材 :高等教育。2001年6月第1版。 8学钢等?数据构造算法设计指导?:清华大学,1999年 第1版。原代码:#include#include#includetypedef struct char number10;/书号char name20;/书名char author20;/作者char publish50;/char time20;/出版时间float price;mbook;typedef structint count;/书的本数mbook book100;/最大可有100本书mlibrary; mlibr
17、ary library;void save()/保存图书信息。FILE *fp;if(fp=fopen(library.doc,w)=NULL)printf(n不能保存图书信息n);return;fwrite(&library.count,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.booklibrar
18、y.count.number);printf(t请输入书名:);scanf(%s,library.booklibrary.count.name); printf(t请输入作者名:);scanf(%s,library.booklibrary.count.author);printf(t请输入:);scanf(%s,library.booklibrary.count.publish);printf(t请输入出版时间:);scanf(%s,library.booklibrary.count.time);printf(t请输入该书的价格:);fflush(stdin);scanf(%f,&librar
19、y.booklibrary.count.price);library.count+;printf(n是否继续录入(1.继续;0,退出录入):);fflush(stdin);scanf(%d,&y);if (y!=1)y=0;break;save(); void lookup() int i ; system(cls); printf(图书号t图书名t作者名tt出版日期t图书价格n);for ( i=0;ilibrary.count;i+)printf(%st%st%st%st%st%6.2fn,library.booki.number,library.booki.name,library.bo
20、oki.author,library.booki.publish,library.booki.time,library.booki.price); fflush(stdin); getchar();void search_by_name() /*定义按书名查询*/ int i ; char s220; int flag=1; printf(n请输入要查询的书名: );fflush(stdin);scanf(%s,s2);printf(图书号t图书名t作者名tt出版日期t图书价格n);for( i=0;ilibrary.count;i+ ) if(strcmp(s2,library.booki.
21、name)=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(cannot found!);fflush(stdin);getchar(); void search_by_author() /*定义按作者名查询*/ int i ;char s320;int flag=1; printf(请输
22、入要查询的书的作者: );fflush(stdin);scanf(%s,s3);printf(图书号t图书名t作者名tt出版日期t图书价格n);for( 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); i
23、f (flag)printf(cannot found!); fflush(stdin);getchar(); void search() /*定义查询函数*/ int a;system(cls); /*进展清屏*/printf(tt*n);printf(开场查询n);printf(ttt1-search_by_namen);printf(ttt2-search_by_writern);printf(ttt0-exitn);printf(tt*n) ;printf(tt请选择你想要的查询方式:);flush(stdin);scanf(%d,&a);switch(a)case 1:search_
24、by_name();break; case 2:search_by_author();break;case 0: return; void del() /*定义删除函数*/ int i;char number10; system(cls); /*清屏*/ printf(n Please type in the number of the book you want to delete:);fflush(stdin);scanf(%s,number); for (i=0;ilibrary.count;i+)if(strcmp(number,library.booki.number)=0)brea
25、k; if (i!=library.count) for(;ilibrary.count-1;i+)strcpy(library.booki.name,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.ti
26、me);library.booki.price=library.booki+1.price;library.count-; elseprintf(n cannot found!n);save();fflush(stdin);getchar();void update()/修改图书信息 int i;char number10; system(cls); /*清屏*/printf(n Please type in the number of the book you want to delete:);fflush(stdin);scanf(%s,number);for (i=0;ilibrary.
27、count;i+) if(strcmp(number,library.booki.number)=0) printf(图书号t图书名t作者名tt出版日期t图书价格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请输入修改后此图书的信息
28、n); printf(t请输入图书号:); scanf(%s,book.number); printf(t请输入图书名:); scanf(%s,book.name); 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);
29、strcpy(library.booki.number,book.number); strcpy(library.booki.publish,book.publish);strcpy(library.booki.author,book.author); strcpy(library.booki.time,book.time);library.booki.price=book.price; save(); else printf(n cannot found!n); fflush(stdin); getchar();void main() int a; FILE *fp; if(fp=fopen
30、(library.doc,r)=NULL)printf(n不能翻开图书信息库n);fp=fopen(library.doc,w+);printf(n初始化图书信息库,初始化之后要重启程序n);library.count=0;fwrite(&library.count,sizeof(int),1,fp);fclose(fp);return; fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book0),library.count,fp); fclose(fp); do system(cls);pr
31、intf(nnnnntttt图书信息管理系统ttttn);printf(tt*n);printf(ttt1 -图书信息录入n);printf(ttt2 -图书信息浏览n);printf(ttt3 -图书信息查询n);printf(ttt4 -图书信息删除n);printf(ttt5 -图书信息修改n);printf(ttt0 -退出图书管理系统n);printf(tt*n); printf(ttPlease Enter Choose: ); fflush(stdin); scanf(%d,&a);switch(a) case 1: putin(); break;case 2: lookup(); break; case 3: search(); break; case 4: del(); break; case 5: update(); break; case 0: printf(nn退出nn); break; default:printf(n序号不对n); while(a!=0);save();- . 可修编.