图书管理系统C语言课程设计报告.doc
《图书管理系统C语言课程设计报告.doc》由会员分享,可在线阅读,更多相关《图书管理系统C语言课程设计报告.doc(28页珍藏版)》请在咨信网上搜索。
- . 学院 计算机科学与技术系 课程设计报告 2012~2013学年第一学期 课程 C语言课程设计 课程设计名称 图书管理系统 学生XX 学号 专业班级 指导教师 目 录 一、 系统设计背景; 二、 课程设计的需求分析: 三、 系统设计的目的及具体要求; 四、 算法设计; 五、 用户手册; 六、 调试及测试; 七、 总结. 一、 系统设计背景: 人类已经跨入了新世纪,正在进入信息化时代。信息化浪潮、网络革命在给社会带来冲击的同时,也使图书馆业务受到了强烈的冲击,图书馆传统的管理和效劳方式已不能适应读者对日益增长的文献信息的需求。随着馆藏量的不断增加,图书资料的录入和查询的难度也就相应增加,数据处理手工操作,工作量大,出错率高,出错后不易更改的手工方式,已经不能满足要求。 基于此问题,建立一个规化,系统化,程序化的图书管理系统迫不及待。为方便对图书馆书籍的录入、修改、删除、借、还书等进展高效的管理,特编写程序以提高图书馆的管理效率。使用程序之后,工作人员可以查询书籍的在库状态,删除或者修改某图书,可以全面掌握图书的流通情况等等。 二、 课程设计的需求分析: 为了满足图书管理的要求,通过计算机技术给图书管理员和读者借书、还书带来便利。使用C语言编写了图书管理系统。本系统主要实现了图书信息管理的功能,通过此系统可以对图书馆库存图书信息进展管理和维护操作。实现了图书馆管理的一般功能,包括查询、删除、修改、图书信息等,所设计的系统以菜单方式工作,为用户提供清晰的使用提示,依据用户的选择来进展各种处理,并且在此过程中能够尽可能的兼容用户使用过程中可能出现的异常情况。图书信息包括编号、书名、作者、、出版日期、价格等,图书信息的录入要求和显示要一定的规要求,录入的图书信息用文件形式保存,并可以对其进展浏览、查询、修改、删除等根本操作。 三、 系统设计的目的及具体要求: 〔1〕目的:将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制构造、数据构造作一比拟和总结,结合设计题目进展综合性应用,对所学知识到达融会贯穿的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼: 〔1〕进一步稳固、加深学生所学专业课程?C程序设计语言?的根本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 〔2〕全面考核学生所掌握的根本理论知识及其实际业务能力,从而到达提高学生素质的最终目的。 〔3〕利用所学知识,开发小型应用系统,掌握运用C语言编写调试应用系统程序,训练独立开发应用系统,进展数据处理的综合能力。 〔4〕对于给定的设计题目,如何进展分析,理清思路,并给出相应的数学模型。 〔5〕掌握构造化程序设计方法,熟悉面向过程程序设计方法。 〔6〕熟练掌握C语言的根本语法,灵活运用各种数据类型。 〔7〕进一步掌握在集成环境下如何调试程序和修改程序。 〔2〕课程设计名称及容 课程设计名称:图书管理系统 设计容:设计一个实用的小型图书管理程序,设计图书的索引卡片。对图书的在库和借出状态要有所表示。能提供读者信息查询及提供按图书的编号、书名、责任者、等途径的检索。 〔3〕任务和要求 程序应提供的根本根本管理功能有: 1) 添加:即增加一本数的记录到系统中 2) 存储:即将图书信息保存在一个文件中。 3) 装入:即将文件中的信息读入程序。 4) 查询:可根据书名、编号查找书的相关信息,假设找到显示该书全部信息。 5) 修改:可修改一本书的除书名外其它信息。、 6) 状态:提供该书在库、不在库的状态。 四、算法设计: 1、系统设计思路 : 整个系统制造的过程中,涉及了较多C语言的知识点,对于不同的数据类型、程序控制构造等作以分析。 (1) 整个系统除了主函数外,另外还有各种功能的子函数,利用无限次循环语句while()和选择语句switch()实现了各个子函数的功能,系统根据输入的数字选项来调用相应的函数,以实现相应的功能。主要实现了图书的录入、存储、查询、删除、修改、借书、还书等功能; (2) mbook():这是一个图书构造体,可以描述每本书共同拥有的属性和行为, (3) Save()、putin()、lookup()、del()、update()、search():这几个是功能函数,Save():保存一本书的信息,putin():录入一本书的信息,search():查询一本书的信息以及记录,update():修改一本书的信息,del():删除一本书的信息. (4) Borrowbook()、returnbook(),这两个函数式借书的函数,在借还后系统会修改图书的在库信息,调用时将信息传递给函数,函数返回经过功能操作后,并会出提示信息让用户返回菜单保存信息。 实现注释: 这个适用的小型图书管理系统程序的所有信息以磁盘文件的方式保存,方便用户使用,实现了图书管理系统的根本功能,包括了图书的录入、图书的查询、图书的删除、图书的修改、图书的在库状态表示。查询是可按书名、编号、作者、、出版时间以及价格等方式查询,找到后系统会自动输出这本书的所有信息。也可查询图书的在库状态,方便用户借书、还书操作,在借书或者还书成功后图书的在库状态即改变。系统中主要的数据构造就是图书的信息,包含编号、书名、作者、、出版时间、价格、在库状态,在处理过程中各项可以成为一本图书的不同属性来处理。 2、程序构造流程图: 图书管理系统 退 出 查 询 录 入 浏 览 删 除 修 改 3、 设计表示: (1) 利用构造体typedef struct {};将图书馆的书籍共同拥有的属性和数量表达出来,属性中包括书号、书名、作者、出版时间以及价格,属性中包括书的本数以及最大可储存的数量。 (2) 分别写不同的子函数: void save(); void putin() ; void lookup(); void search_by_name() ; void search_by_author(); void search(); void del(); void update(); 首先利用void save()这个子函数来描述图书管理系统保存图书信息的功能,翻开library.doc这个文件,确认文件可用时即可保存图书信息;void putin() 可方便图书馆工作人员录入新书,具体录入容包括书号、书名、作者名、、出版时间以及价格;利用1,0让工作人员可选择继续录入否;使用者可以通过void lookup()这个子函数来查询图书馆所以书籍的在库状态,如果书籍不在即表示已经借出;如果使用者想要搜索自己想要的书,可以通过该书的各种属性进展查询,在该系统中我仅列举了两种属性即书名和作者,用户在输入想要找的书的书名或该书作者即可查询书的在库状态,如果该书尚在库,用户即可进展借出操作,同时也可以得到该书的其他属性,包括书名、作者、、出版时间、价格;图书馆的工作人员在调整图书库时 ,如果想要删除某些书籍,即可利用void del()这个子函数来进展操作,输入想要删除的书籍的各种属性即可找到该书,任何进展删除操作;当然进展修改某本书的属性时也一样,只要通过书的编号找到该书即可进展各种不同的修改。 (3) 最后在结尾编写主函数main(),在确认“library.doc〞!=NULL时进展图书管理系统的目录操作,在系统的主目录上,用户可以看到六个操作选项,包括图书信息录入、图书信息浏览、图书信息查询、图书信息删除、图书信息修改、退出图书管理系统。在确认选项后即可进展下一步由各个子函数实现的不同操作。 (4) 设计过程中的想法:因为自身知识以及时间的所限,本系统所提供的功能非常有限,有一些图书馆所必备的功能没有实现,其中最重要的一点是对读者的管理,如果时间充足的话还可以参加,设置借书卡或会员证,对书籍的借出状况能有更好的储存,在工作人员想要找书时可以利用系统查询书籍的借者。总的来说这个程序大致实现了题目的要求,但是这套程序仍然存在着很多的问题与缺乏,在提示信息方面可能还不够,有待改良。 五、 用户手册: 下面,我大致介绍一下我得系统的主要功能和主要事项: 当运行该程序时,首先进入系统主界面,如何可以选择1.图书信息的录入2.图书信息的浏览3.图书信息的查询4.图书信息的删除5图书信息的修改0退出图书管理系统.当出现please enter choose:时,需要输入选项前的数字,输入完之后按回车键。首次运行系统时应选择1,录入一些书籍,在完成第一次的操作后,用户即可再回到系统进展其他选项的操作,不会出现cannot find!的错误提示,当用户选择2时系统会出现第一次录入的所有书的各种信息,包括书名、编号、作者、、出版时间、价格; 当用户选择3时系统界面会出现提示,让用户选择想要查询书籍的编号,输入编号即可看到该书的各种不同属性;当用户选择4时系统也会给用户提示,让用户选择想要删除的书籍编号,当输入编号并确认后,该书就会在图书管理系统中删除;当用户选择5时系统也会给用户提示,让用户选择想要修改的书籍编号,输入完毕后,用户即可对该书的不同属性进展修改操作;返回菜单需按回车键即可。 六、 调试及测试: 1.进入主菜单: 2. 选择1录入3本书籍: 3. 选择2浏览图书信息: 4. 选择3查询图书: 5.选择4删除图书: 6. 选择5修改图书: 7. 选择0即可退出系统。 七. 总结: 在这两个星期的实践中,通过编写这个图书管理系统,我体会到了C语言学习的适用性,将理论和实践结合在一起,用先进的计算机工具方便人们的生活,C语言程序的编写首先要从大局考虑,把自己编写的整个程序的思想都写在草稿上,这样有助于自己编写程序,在编写时要完善注释,方便其他人理解程序,编写的程序从理论上来说并没有错误,但一上机就错误不断,甚至照搬课本上的知识也不变,不能得到正确的结果。有时程序改了一遍又一遍,但就是不能成功,编程简直让人头都大了,看似简单的程序,在调试时不断出错。经反反复复的修改后,最后终于成功了,这时所有的烦恼都没了,好轻松,想想这一切都是值得的。我认为,开发一套系统,最主要的是细心与耐心,并且思考要全面,结合实际,充分考虑客户的需求和现实意义,不管什么系统,只有运用到实际生活中,才具有现实意义。所以C语言程序的实用性很强,我们以后还要更加努力认真地学习编程语言。 参考资料: 1] 黄明等编著?C语言课程设计?:电子工业 [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] 学钢等?数据构造算法设计指导?:清华大学,1999年 第1版。 [12] 大有?数据构造?〔面向21世纪课程教材〕 :高等教育。2001年6月第1版。 [8].学钢等?数据构造算法设计指导?:清华大学,1999年 第1版。 原代码: #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct { char number[10];//书号 char name[20];//书名 char author[20];//作者 char publish[50];// char time[20];//出版时间 float price; }mbook; typedef struct { int count;//书的本数 mbook book[100];//最大可有100本书 }mlibrary; mlibrary 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.book[0]),library.count,fp); } void putin() /*定义录入函数*/ { int y=1; system("cls"); while(y) { printf("\t请输入您的书籍的书号:"); scanf("%s",library.book[library.count].number); printf("\t请输入书名:"); scanf("%s",library.book[library.count].name); printf("\t请输入作者名:"); scanf("%s",library.book[library.count].author); printf("\t请输入:"); scanf("%s",library.book[library.count].publish); printf("\t请输入出版时间:"); scanf("%s",library.book[library.count].time); printf("\t请输入该书的价格:"); fflush(stdin); scanf("%f",&library.book[library.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作者名\t\t出版日期\t图书价格\n"); for ( i=0;i<library.count;i++) { printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } fflush(stdin); getchar(); } void search_by_name() /*定义按书名查询*/ { int i ; char s2[20]; int flag=1; printf("\n请输入要查询的书名: "); fflush(stdin); scanf("%s",s2); printf("图书号\t图书名\t作者名\t\t出版日期\t图书价格\n"); for( i=0;i<library.count;i++ ) if(strcmp(s2,library.book[i].name)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if (flag) { printf("cannot found!"); } fflush(stdin); getchar(); } void search_by_author() /*定义按作者名查询*/ { int i ; char s3[20]; int flag=1; printf("请输入要查询的书的作者: "); fflush(stdin); scanf("%s",s3); printf("图书号\t图书名\t作者名\t\t出版日期\t图书价格\n"); for( i=0;i<library.count;i++ ) if(strcmp(s3,library.book[i].author)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if (flag) { printf("cannot found!"); } fflush(stdin); getchar(); } void search() /*定义查询函数*/ { int a; system("cls"); /*进展清屏*/ printf("\t\t******************************\n"); printf("开场查询\n"); printf("\t\t\t1---------------search_by_name\n"); printf("\t\t\t2---------------search_by_writer\n"); printf("\t\t\t0---------------exit\n"); printf("\t\t******************************\n") ; printf("\t\t请选择你想要的查询方式:"); flush(stdin); scanf("%d",&a); switch(a) { case 1: search_by_name(); break; case 2: search_by_author(); break; case 0: return; } } void del() /*定义删除函数*/ { int i; char number[10]; system("cls"); /*清屏*/ printf("\n Please type in the number of the book you want to delete:"); fflush(stdin); scanf("%s",number); for (i=0;i<library.count;i++) { if(strcmp(number,library.book[i].number)==0)break; } if (i!=library.count) { for(;i<library.count-1;i++) { strcpy(library.book[i].name,library.book[i+1].name); strcpy(library.book[i].number,library.book[i+1].number); strcpy(library.book[i].publish,library.book[i+1].publish); strcpy(library.book[i].author,library.book[i+1].author); strcpy(library.book[i].time,library.book[i+1].time); library.book[i].price=library.book[i+1].price; } library.count--; } else printf("\n cannot found!\n"); save(); fflush(stdin); getchar(); } void update()//修改图书信息 { int i; char number[10]; system("cls"); /*清屏*/ printf("\n Please type in the number of the book you want to delete:"); fflush(stdin); scanf("%s",number); for (i=0;i<library.count;i++) { if(strcmp(number,library.book[i].number)==0) { printf("图书号\t图书名\t作者名\t\t出版日期\t图书价格\n"); printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); break; } } if (i!=library.count) { mbook book; printf("\n\t\t请输入修改后此图书的信息\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.book[i].name,book.name); strcpy(library.book[i].number,book.number); strcpy(library.book[i].publish,book.publish); strcpy(library.book[i].author,book.author); strcpy(library.book[i].time,book.time); library.book[i].price=book.price; save(); } else printf("\n cannot found!\n"); fflush(stdin); getchar(); } void main() { int a; FILE *fp; if((fp=fopen("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.book[0]),library.count,fp); fclose(fp); do { system("cls"); printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n"); printf("\t\t*********************************************\n"); printf("\t\t\t1 ------------------图书信息录入\n"); printf("\t\t\t2 ------------------图书信息浏览\n"); printf("\t\t\t3 ------------------图书信息查询\n"); printf("\t\t\t4 ------------------图书信息删除\n"); printf("\t\t\t5 ------------------图书信息修改\n"); printf("\t\t\t0 -----------------退出图书管理系统\n"); printf("\t\t*********************************************\n"); printf("\t\tPlease 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("\n\n退出\n\n"); break; default: printf("\n序号不对\n"); } }while(a!=0); save(); } - . 可修编.- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 语言 课程设计 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【二***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【二***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文