图书馆信息管理系统实验报告.doc
《图书馆信息管理系统实验报告.doc》由会员分享,可在线阅读,更多相关《图书馆信息管理系统实验报告.doc(28页珍藏版)》请在咨信网上搜索。
图书馆信息管理系统实验报告 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 28 个人收集整理 勿做商业用途 集美大学诚毅学院 软件工程课设计报告 题目:图书管理系统 系部名称 : 计算机信息工程 专业 : 软件工程 学生姓名 : 余传贵 班 级 : 软件1271 学号 : 201242059027 时间 : 2013年 12月 23 日 至 2013年 12 月 27日 指导老师 : 王宗跃 课程设计题目:图书管理系统 一、 实验目的: 1、通过系统分析、系统设计、编程调试,写实验报告等环节,初步掌握软件系统设计的方法和步骤。 2、熟悉C语言程序的编辑、编译、链接和运行的过程,掌握C语言的数据类型。 3、掌握文件和文件指针的概念以及文件的定义方法,认识文件打开、关闭、读写等文件基本操作函数. 4、 训练自己灵活运用程序设计语言进行软件开发的能力,提高分析问题和解决问题的能力,培养必要的工程实践能力,从而提高程序设计水平。 二、 实验内容: 1、 键盘输入密码。 2、 键盘按照提示进行操作. 3、 键盘按照提示实现对图书信息的输入. 4、 查询模块,实现按编号、名称、类型进行查询 5、 更新模块,实现对图书信息的删除、更改和添加。. 6、 排序模块,实现按编号、名称、类型进行排序。 7、 统计模块,实现按名称、类型出版社进行数量统计。 三、 需求分析: 程序实现以菜单形式进入并操作,对图书信息的查询、更新、排序、统计功能,为此可以做出一系列操作函数,以链表保存图书的图书编号、图书名称、图书作者、图书类型、图书出版社、图书出版时间、图书数量,并用文件指针对信息进行保存和以实现对图书信息的录入、保存、修改、删除、添加、查询、排序和统计等功能。 四、 概要设计 1、 方案设计 读取 信息 查询 信息 更新信息 排序信息 统计信息 保存信息 修改信息 添加信息 名称排序 输出信息 录入信息 输入密码 编号排序 类型排序 名称统计 类型统计 出版社统计 类型查询 名称查询 编号查询 删除信息 设 计 图 2、模块功能说明。对各个模块进行功能描述: 1) 各模块间通过菜单切换和调用。 2) 主函数通过调用菜单函数实现对各功能模块的调用,各功能模块间根据需要可相互调用。 3) 程序能够保证各模块功能的独立和数据共享。 4) 可以保存到文件,可以从文件读入已有的文件。 5) 录入模块可以用来录入图书信息。 6) 输出模块可以用来输出已经录入的图书信息. 7) 查询模块可以用来查询图书的信息,包括按编号查询、按名称查询和按类型查询. 8) 更新模块可以用来更新图书信息,包括添加信息,删除信息和修改信息。 9) 统计模块可以用来统计图书的具体信息,包括按名称统计,按类型统计,按出版社统计。 10) 排序模块可以用来对图书信息进行排序,包括按编号排序、按名称排序和按类型排序。 五、 详细设计及运行结果: 功能模块流程图如下: 主 函 数 void main() { int i,choice; char a[7]="123456”,b[7]; printf(”\n\n ★请输入密码(六位):"); for(i=0;i〈6;i++) { b[i]=getch(); printf("*”); } getch(); b[6]=’\0’; if(!strcmp(a,b)) { do { system("color 7e”); printf(" ****************\n"); printf(" 1. 录入图书信息\n"); printf(” ****************\n"); printf(” 2. 保存图书信息\n”); printf(" ****************\n”); printf(” 3. 读取图书信息\n"); printf(” ****************\n”); printf(” 4。 输出图书信息\n”); printf(" ****************\n”); printf(” 5。 查询图书信息\n"); printf(” ****************\n"); printf(” 6。 更新图书信息\n"); printf(" ****************\n”); printf(” 7。 排序图书信息\n"); printf(" ****************\n”); printf(” 8。 统计图书信息\n"); printf(” ****************\n”); printf(” 0. 退出系统\n\n"); printf(” 请选择(0—8):”); scanf(”%d”,&choice); switch(choice) { case 1: input(); break; case 2: save(); break; case 3: read(); break; case 4: output(); break; case 5: inquire(); break; case 6: renew(); break; case 7: sort(); break; case 8: count(); break; case 0: break; } } while(choice!=0); { exit(0); } } else printf("\n\n *************密码错误!***********\n"); }Choice=3 Choice=4 Choice=5 读取信息 输出信息 查询信息 是 Y 否 N N Y Y Y N Choice=8 N 否 统计信息 是 Y Choice=6 更新信息 是 Y N Choice=7 排序信息 是 Y N Choice=0 N Choice=2 保存信息 Y N Choice=1 录入信息 保存 输入提示信息 开 始 结 束 输 入 模 块 输 出 模 块 输出图书信息i++ N num=0 开 始 num=0 N Y 开 始 输入图书信息 结束 N Y Choice 将图书信息存盘 结束 Y 查 询 模 块 更 新 模 块 按编号查询 Y 是 Choice=3 N Y 是 Y 开 始 N YY 是 否 开 始 Y 修改信息 保 存 Choice=0 N Choice=2 N Choice=1 Choice=0 Choice=3 Y 按类型查询 N N Choice=2 按名称查询 Choice=1 输入提示信息 输入提示信息 删除信息 添加信息 返 回 返 回 统 计 模 块 排 序 模 块 否 否 否 是 是 是 返 回 输入提示信息 输入提示信息 按类型排序 按名称排序 按编号排序 Choice=1 Choice=3 Choice=4 Choice=0 开 始 按名称统计 按类型统计 按出版社统计 否 Choice=2 Choice=1 否 Choice=3 Choice=0 是 是 是 开 始 返 回 否 修 改 模 块 添 加 模 块 删 除 模 块 开 始 开 始 开 始 选择删除项 输入新信息 选择修改项 是否删除 是 是否修改 是否继续 否 是 否 是 输出剩余信息 输出修改信息 否 否 输出新信息 否 是否继续 是否继续 是 是 结 束 结 束 结 束 六、 设计体会及调试情况: 在这两个星期里,我们专业的学生在宋辉老师的带领下进行了c语言课程设计.在这之前,我们已经对c语言这门课程学习了一年,对其有了一定的了解,但是也仅仅是停留在了解的范围,对里面的好多东西还是很陌生,更多的在运用起来的时候还是感到很棘手。 起初由于上机实践太少,经验很是不足,遇到错误就犯晕,经过几天连续编程,我也积累了不少以前没有的经验,遇到错误也不那么惧怕了,还从一些同学那里学到了不少编程技巧和好习惯,不得不说我得感谢学校给我们这样一个连续足够的实践来强化C语言编程能力。而且我越来越对编程有兴趣了,当程序正常运行那一刻真恨不得对全世界人说我成功了。 现在我再说说本次课程设计我的心得体会: 课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用c语言这个工具解决实际问题,又必须掌握它.通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握c语言的语法规定。对于一些内容自己认为在课堂上听懂了,但上机实践中才发现问题很多。也只有上机操作才能认识到自己课本学的与实践的差距. 然而学习c语言不能停留在学习它的语法规则,而是利用学到的知识编写c语言程序,解决实际问题。也就是把c语言作为工具,描述解决实际问题的步骤,由计算机帮助我们解决问题。也只有通过上机才能检验自己是否掌握c语言、自己编写的程序是否能够正确地解题。 一个c语言程序从编辑、编译、连接到运行,都要在一定的外部操作环境下才能进行。所谓"环境”就是所用的计算机系统硬件、软件条件,只有学会使用这些环境,才能进行程序开发工作.通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它开发环境时就会触类旁通,很快掌握新系统的使用。 完成程序的编写,决不意味着万事大吉。你认为万无一失的程序,实际上机运行时可能不断出现麻烦.如编译程序检测出一大堆错误。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。上机是学好程序语言的必经之路,也是最快捷的,即使花费一整天时间来看书可能还不如安安心心在那里编写几个程序更能理解所学的东西。 通过本次课程设计我认识到学习是个积累的过程,只有有了量的积累才可能会有质的飞跃,多实践远胜于空想,没有做不到,只有不想做。 附录: 源代码 (略,详见电子版实验报告) #include<stdio.h〉 #include〈stdlib。h〉 #include<string。h> #include〈conio.h〉 #define PRINT1 printf("*****************************************************************************\n”) #define PRINT2 printf("图书编号—图书名称—图书作者-图书类型—图书出版社-图书出版时间(年-月-日)-图书数量\n") #define PRINT3 printf(" %d %s %s %s %s %d—%d—%d %d\n”,book[i]。num, book[i]。name,book[i]。writer,book[i]。type,book[i].publish,book[i].publish_time。year,book[i]。publish_time.month,book[i].publish_time。day,book[i].amount) #define PAGE 3 #define MAX 300 int sum; //用来记录图书数目(全局变量) struct DATE//定义日期结构体类型 { int year; int month; int day; }; struct BOOK//定义图书结构体类型 { int num; //图书编号 char name[10]; //图书名称 char writer[8]; //图书作者 char type[10]; //图书类型 char publish[40]; //图书出版社 struct DATE publish_time; //图书出版时间 int amount; //图书数量 }book[MAX];//存放MAX个图书信息记录的结构体数组 //录入模块 void input() { int i=0,s=MAX; char choice; printf(”\n\n **** 录入图书信息**** (最多%d种)\n”,s); printf(" *******************************\n”); do { printf(”\n 第%d种图书”,i+1); printf(”\n ★输入图书编号:”); scanf("%d",&book[i].num); if(book[i]。num==0) break; printf(”\n ★输入图书名称:”); scanf(”%s”,book[i]。name); printf("\n ★输入图书作者:"); scanf(”%s”,book[i]。writer); printf("\n ★输入图书类型:"); scanf("%s",book[i]。type); printf("\n ★输入出版社:"); scanf(”%s”,book[i]。publish); printf("\n ★出版时间(yyyy—mm—dd):"); scanf("%d—%d—%d”,&book[i]。publish_time。year,&book[i].publish_time.month,&book[i].publish_time。day); printf(”\n ★输入图书总量:"); scanf(”%d”,&book[i].amount); i++; printf("\n ☆ 要继续输入吗?(Y/N):”); choice=getch(); if(choice==’N'||choice==’n') break; }while(i〈MAX); printf(”\n ****%d种图书信息输入完毕!****\n”,i); sum=i; printf(”\n 按任意键返回主菜单!”); } //保存模块 void save() { FILE *fp; int i=0; char filename[10]; printf(”\n 输入要保存的文件名称:"); scanf(”%s”,filename); if ( (fp=fopen(filename, "wb”)) == NULL) { printf("\n\n****写文件错误!****\n\n"); } if(fwrite(&book[i],sizeof(book[MAX]),1,fp)!=1) printf(”****写文件错误!****\n”); fclose(fp); } //读取模块 void read() { FILE *fp; int i=0; char filename[10]; printf("\n 输入要保存的文件名称:"); scanf(”%s”,filename); if ( (fp=fopen(filename, "r”)) == NULL) { printf(”\n\n****读文件错误!****\n\n”); } while(!feof(fp)) { fread(&book[i],sizeof(book[MAX]),1,fp); if(book[i]。num==0) break; else i++; } fclose(fp); sum=i; } //输出模块 void output() { int i=0,j=0,page=1; system(”cls"); //清屏 printf(”\n\n ****图书信息表**** 第%d页\n\n”,page); PRINT2; PRINT1; do { if(book[i].num!=0) { j++; if(j%PAGE!=0) { PRINT3; PRINT1; } else { PRINT3; PRINT1; if(book[i+1].num!=0) { printf("按任意键继续!"); printf("\n\n ****图书信息表**** 第%d页\n\n",++page); PRINT2; PRINT1; } } } i++; } while(book[i]。num!=0); printf(”\n”); printf(”按任意键返回主菜单!"); } /*****更新图书信息模块*****/ //删除模块 void del() { int i,j,del_num,b=0; read(); printf(" 输出要删除的图书编号:”); scanf(”%d”,&del_num); for(i=0;i<sum;i++) { if(book[i]。num==del_num&&book[i]。num!=0) {for(j=i;j〈sum;j++) {book[j]=book[j+1];} sum——; break; } else b++; } PRINT1; PRINT2; for(i=0;i<sum;i++) {PRINT3; printf("\n"); } if(sum==b) { printf(” 该图书不存在"); printf(" 按任意键返回"); } } //添加模块 void append() { int i,flag=0; char choice; i=sum; read(); printf("\n\n 添加一种新图书\n"); do { printf("\n ★新图书编号:”); scanf(”%d”,&book[i].num); printf("\n ★图书名称:”); scanf("%s”,book[i].name); printf("\n ★作者名称:”); scanf("%s”,book[i].writer); printf(”\n ★图书类型:”); scanf("%s”,book[i]。type); printf("\n ★出版社名称:"); scanf("%s”,book[i]。publish); printf(”\n ★出版时间(yyyy—mm-dd):”); scanf(”%d—%d—%d",&book[i].publish_time.year,&book[i]。publish_time.month,&book[i]。publish_time。day); printf(”\n ★图书数量:”); scanf("%d",&book[i].amount); i++; printf("\n ☆ 要继续添加吗?(Y/N)"); choice=getch(); if(choice==’Y’||choice==’y’) { printf(”\n 继续!\n"); flag=1; //继续添加的标志 } else flag=0; }while(flag==1); sum=i; printf("\n 按任意键返回主菜单!"); } //修改模块 void modify() { int i=0,choice,modify_num,flag; read(); do { printf(”\n 输出要修改的图书编号:”); scanf(”%d",&modify_num); for(i=0;i〈sum;i++) if(book[i]。num==modify_num) { printf(”\n **************图书信息************** \n\n"); PRINT1; PRINT2; PRINT3; printf("\n 您要修改哪一项?\n”); printf(”\n 1。图书名称\n"); printf("\n 2。图书作者\n"); printf(”\n 3.图书类型\n”); printf("\n 4.图书出版社\n"); printf(”\n 5.图书出版时间\n"); printf(”\n 6。图书数量\n”); printf(”\n 请选择(1-6):”); scanf("%d",&choice); switch(choice) { case 1: printf("\n ★输入修改后的书名:"); scanf(”%s”,book[i].name);break; case 2: printf("\n ★输入修改后的作者名:”); scanf("%s”,book[i]。writer);break; case 3: printf(”\n ★输入修改后的图书类型:”); scanf(”%s",book[i].type);break; case 4: printf("\n ★输入修改后的出版社:"); scanf(”%s”,book[i]。publish);break; case 5: printf(”\n ★输入修改后的出版时间:”); scanf("%d—%d-%d”,&book[i]。publish_time.year,&book[i].publish_time.month,&book[i]。publish_time.day);break; case 6: printf(”\n ★输入修改后的图书数量:”); scanf(”%d",&book[i].amount);break; } PRINT1; PRINT2; PRINT3; break; } if(i==sum) { printf("\n 该图书不存在!"); } printf(”\n\n ☆ 要继续修改吗?(Y/N)”); choice=getch(); if(choice=='Y’||choice=='y') { flag=1; //继续添加的标志 printf(”\n 继续!\n”); } else flag=0; }while(flag==1); printf("\n 按任意键返回主菜单!”); } //更新模块 void renew() { int choice; do { printf(”\n\n\n *****更新图书信息*****\n\n"); printf(” 1.删除图书信息\n\n"); printf(" 2。添加图书信息\n\n”); printf(” 3。修改图书信息\n\n”); printf(" 0。返回主菜单\n\n"); printf(" 请选择(0—3):”); scanf(”%d”,&choice); switch(choice) { case 1: del();break; case 2: append();break; case 3: modify();break; case 0: break; } }while(choice!=0); } /******查询模块******/ //按图书编号查询 void inquire_num() { int inquire_num,i,j=0; read(); printf("\n **********输入要查询的书的编号:”); scanf(”%d”,&inquire_num); for(i=0;i〈sum;i++) if(book[i]。num==inquire_num) { printf("\n **************图书信息************** \n\n"); PRINT1; PRINT2; PRINT3; } else j++; if(j==sum) printf(”\n 该图书不存在!”); } //按图书名称查询 void inquire_name() { int i,j=0; read(); char inquire_name[20]; printf("\n **********输入要查询的图书名称:"); scanf("%s",inquire_name); for(i=0;i<sum;i++) if(strcmp(book[i]。name,inquire_name)==0&&book[i].num!=0) { printf(”\n **************图书信息************** \n"); PRINT1; PRINT2; PRINT3; } else j++;- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 信息管理 系统 实验 报告
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【a199****6536】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【a199****6536】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文