《最新c语言图书馆管理系统.doc》由会员分享,可在线阅读,更多相关《最新c语言图书馆管理系统.doc(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-datec语言图书馆管理系统射星网上商城网站设计内蒙古科技大学本科生课程设计说明书题 目:C语言课程设计 图书信息管理系统学生姓名: 安 静 学 号: 1376807343 专 业: 计算机科学与技术 班 级: 三 班 指导教师: 郝 斌 -内蒙古科技大学课程设计任务书课程名称C语言课程设计设计题目图书信息管理系统指导教师郝斌时间2015年1月4日一、教学要求1. 巩固和加深
2、学生对C语言课程的基本知识的理解和掌握2. 掌握C语言编程和程序调试的基本技能3. 利用C语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用C语言解决实际问题的能力二、设计资料及参数每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可更换。图书信息管理系统包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:图书信息录入功能(图书信息用文件保存)输入图书信息浏览功能输出查询或排序功能:(至少两种种查询方式)算法按书名查询 按作者名查询图书信息的删除与修改 图书的借出与归还三、设计要求及成果1. 分
3、析课程设计题目的功能需求(可选用数组或链表实现,可多人(最多3人)协作完成一个题目)2. 写出详细设计说明(至少包括功能实现分析和模块流程图)3. 编写程序代码,调试程序使其能正确运行(代码书写要规范,标示符要见名知意,要有必要的注释,每人至少3个函数,每人至少200行代码,不包括注释和花括号)4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告(请严格按照模板进行排版)四、进度安排第一天 选择课程设计题目,分析课题的要求第二天 编程第三天 编程及调试第四天 写课程设计报告第五天 提交课程设计报告(打印稿及电子稿)五、评分标准1. 根据平时上机考勤、表现和进度,教师将每天点名和
4、检查2. 根据课程设计完成情况,必须有可运行的软件。3. 根据课程设计报告的质量,如有雷同,则所有雷同的所有人均判为不及格。六、建议参考资料1C语言程序设计,谭浩强,清华大学出版社2C语言程序设计课程设计,刘振安,机械工业出版社目录内蒙古科技大学课程设计任务书I第一章 需求分析31.1 引言31.2 任务概述41.3 数据描述41.4 功能需求41.5 性能需求41.6 运行需求51.7 任务计划5第二章 概要设计72.1 总体设计72.2 数据类型设计(或数据结构设计)72.3 接口设计82.4 运行界面设计8第三章 详细设计103.1 输入模块设计103.2 查找模块设计113.3 删除模
5、块设计123.4 借阅模块设计143.5 还书模块设计163.6 流程图17第四章 测试分析184.1 测试程序执行情况184.2 出现的问题和解决的方法21第五章 课程设计总结22附录:程序代码23参考文献30致谢31第一章 需求分析1.1 引言随着计算机及网络技术的飞速发展,Internet/Intranet应用在全球范围内日益普及,当今社会正快速向信息化社会前进,信息系统的作用也越来越大。图书馆在正常运营中总是面对大量的读者信息,书籍信息以及由两者相互作用产生的借书信息,还书信息。随着图书的大量增加,其管理难度也越来越大,如何优化图书馆的日常管理也就成为一个大众化的课题。数据处理手工操作
6、,工作量大,出错率高,出错后不易更改。当前图书馆采取手工方式对图书借阅情况进行人工管理,由于信息比较多,图书借阅信息的管理工作混乱而又复杂;一般借阅情况是记录在借书证上,图书的数目和内容记录在文件中,图书馆的工作人员和管理员也只是当时对它比较清楚,时间一长,如再要进行查询,就得在众多的资料中翻阅、查找了,造成查询费时、费力。如要对很长时间以前的图书进行更改就更加困难了。 因此图书管理信息化是发展的必然趋势。用结构化系统分析与设计的方法,建立一套有效的图书信息管理系统,可以减轻工作,将工作科学化、规范化,提高了图书馆信息管理的工作质量因此根据图书馆目前实际的管理情况开发一套图书管理系统是十分必要
7、的。 建立一个图书管理系统可以使图书管理工作规范化、系统化、程序化、避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书信息。 图书管理系统是一个对图书进行录入、删除、修改和查询的管理应用软件,管理员可以对文件中存储的图书进行查询和管理,了解图书的基本信息。该系统充分利用计算机的功能实现对书籍管理的自动化控制,将会使图书馆管理工作大大减轻,方便友好的图形用户界面,简便的操作,完善的数据库管理,将会使图书馆信息管理系统极大限度地应用于现代化图书管理,成为图书管理人员的得力助手1.2 任务概述每个学生在教师提供的课程设计题目中任意选择一题,独立完成,题目选定后不可
8、更换。图书信息管理系统包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:图书信息录入功能(图书信息用文件保存)输入图书信息浏览功能输出查询或排序功能:(至少两种种查询方式)算法按书名查询 按作者名查询1.3 数据描述图1.31.4 功能需求图1.41.5 性能需求在运行本程序时只要按照正确的操作方法不会出现无法运行的情况,系统稳定性好,安全,可靠。1.6 运行需求1. 输入图书信息时按照“图书编号、书名、作者、出版日期、图书价格”的顺序输入。2. 以(0/1)形式判断时,只能用阿拉伯数字。3. 进入排序功能后,要想见排序信息,到主菜单
9、下浏览信息。1.7 任务计划1. 样例输出和输入图1.7.1下面以上述据描述的数据为测试数据进行简单输入输出图1.7.2 查询界面图1.7.3 删除界面第二章 概要设计图书管理系统2.1 总体设计信息录入信息查询信息浏览信息删除信息修改退出系统图2.1录入:可以添加图书信息,依次输入编号、书名、作者、出版时间、出版社后,会提示是否继续添加。浏览:可以以表格形式输出所有图书信息。删除:输入欲删除图书后,会自动删除图书信息的记录内容。查询:可以选择用图书名字方式查询。修改:输入欲修改的书名后,再依次输入编号、书名、作者、出版时间、出版社即可完成修改。2.2 数据类型设计(或数据结构设计)struc
10、t bookschar tsmc12;int tsbh;float dj;char zz12;char czzt12;char xm12;char xb12;int xh;sM;以结构体数据类型输入数据。2.3 接口设计 函数名函数格式 /即函数首部函数功能int main()int建立主界面void srvoid输入函数void cxVoid查询图书void scVoid删除图书void jsvoid借书图书void hsVoid还书图书void tcvoid退出表2.3 函数列表2.4 运行界面设计/*主函数.主菜单*/int main ()int sele;flag=0;sele=1;v
11、oid sr();void cx();void sc();void js();void hs();void tc();void jsh();/system (tsgl);printf(nn);printf( *n);printf( 1:输入 2:查询 3:删除 n);printf( 4:借书 5:还书 0:退出 n);printf( *n);while(1)printf(nn请输入功能序号:);scanf (%d,&sele);if(sele=0 & sele=5)switch(sele)case 1:sr();break; case 2:cx();break; case 3:sc();bre
12、ak; case 4:js();break; case 5:hs();break; case 0:jsh();break;if(flag)break;printf(nn);printf( *n);printf( 1:输入 2:查询 3:删除 n);printf( 4:借书 5:还书 0:退出 n);printf( *n);elseprintf(输入错误请再次输入|nn);printf(nn);printf( *n);printf( 1:输入 2:查询 3:删除 n);printf( 4:借书 5:还书 0:退出 n);printf( *n);printf(nn让任意键继续n); /wr_fil
13、e();第三章 详细设计3.1 输入模块设计void sr() int n,i; N=0;printf(可输入的书本数:);scanf(%d,&n);N=n+N;printf(请输入相关信息:n);for(i=1;i=n;i+)printf(图书名称:);scanf(%s,sN-n-1+i.tsmc);printf(图书编号:);scanf(%d,&sN-n-1+i.tsbh);printf(单价:);scanf(%f,&sN-n-1+i.dj);printf(作者:);scanf(%s,&sN-n-1+i.zz);strcpy(sN-n-1+i.czzt,未借出);strcpy(sN-n-1
14、+i.xm,无);3.2 查找模块设计void cx()int i,j100=-1,d,k,t=0;char m20;printf(查询:);printf(1:图书名称 2:图书编号);printf(nn请输入查询选项:);scanf(%d,&k);if(k=1)printf(请输入图书名称:);scanf(%s,m);for(i=0;iN;i+)if(strcmp(m,si.tsmc)=0)jt=i;t=t+1;else if(k=2)printf(请输入图书编号:);scanf(%d,&d);for(i=0;iN;i+)if(d=si.tsbh)jt=i;t+;if(j0=-1&t=0)p
15、rintf(没有找到!n);if(j0!=-1 & t!=0)printf(t图书名称 t图书编号 t单价 t作者 t存在状态 t借书人姓名 t性别 t学号n);for(i=0;it;i+)printf(t%s t%d t%f t%s t%s t%s t%s t%d ,sji.tsmc,sji.tsbh,sji.dj,sji.zz,sji.czzt,sji.xm,sji.xb,sji.xh);3.3 删除模块设计void sc()int i,d,k,t=0;char ms20;int ja=-1;printf(查询:);printf(1:图书名称 2:图书编号);printf(nn请输入查询选
16、项:);scanf(%d,&k);if(k=1)printf(请输入图书名称:);scanf(%s,ms);for(i=0;iN;i+)if(strcmp(ms,si.tsmc)=0)ja=i;break;else if(k=2)printf(请输入图书编号:);scanf(%d,&d);for(i=0;iN;i+)if(d=si.tsbh)ja=i;break;printf(确定删除该图书吗?1表示Yes,其他No);int p;scanf(%d,&p);if(p=1)printf(Congratulations,删除成功|n);if(ja!=-1 & p)N=N-1;for(i=ja;iN
17、;i+)strcpy(si.tsmc,si+1.tsmc);si.tsbh=si+1.tsbh;si.dj=si+1.dj;strcpy(si.zz,si+1.zz);strcpy(si.czzt,si+1.czzt);strcpy(si.xm,si+1.xm);strcpy(si.xb,si+1.xb);si.xh=si+1.xh;else if(ja=-1)printf (没有找到!n);3.4 借阅模块设计void js()int i,j100=-1,d,k,t=0;char m20;printf(查询:);printf(1:图书名称 2:图书编号);printf(nn请输入查询选项:)
18、;scanf(%d,&k);if(k=1)printf(请输入图书名称:);scanf(%s,&m);for(i=0;iN;i+)if(strcmp(m,si.tsmc)=0)jt=i;t=t+1;else if(k=2)printf(请输入图书编号:);scanf(%d,&d);for(i=0;iN;i+)if(d=si.tsbh)jt=i;t+;if(j0=-1&t=0)printf(没有找到!n);strcpy(sji.czzt,已借出);printf(此书已借出n);if(j0!=-1&t!=0&sji.czzt= 未借出)printf(%s %d %f %s %s %s %s %d
19、,sji.tsmc,sji.tsbh,sji.dj,sji.zz,sji.czzt,sji.xm,sji.xb,sji.xh);printf(1:确定借阅 2:退出n);scanf(%d,&k);switch(k)case 1:printf(请输入学号:n);scanf(%d,&sji.xh);printf(请输入姓名:n);scanf(%s,&sji.xm);printf(请输入性别:n);scanf(%s,&sji.xb);strcpy(sji.czzt,已借出); printf(已借出,按任意键继续n);/getch();case 2:break;3.5 还书模块设计void hs()i
20、nt i,j100=-1,d,k,t=0;char m20;printf(查询:);printf(1:图书名称 2:图书编号);printf(nn请输入查询选项:);scanf(%d,&k);if(k=1)printf(请输入图书名称:);scanf(%s,&m);for(i=0;iN;i+)if(strcmp(m,si.tsmc)=0)jt=i;t+;break;else if(k=2)printf(请输入图书编号:);scanf(%d,&d);for(i=0;iN;i+)if(d=si.tsbh)jt=i;t+;break;if(t=0)printf(没有找到!n);elseprintf(
21、%s %f %s %s %s %s %d n,sji.tsmc,sji.dj,sji.zz,sji.czzt,sji.xm,sji.xb,sji.xh);printf(1:确定归还 2:退出n);int p;scanf(%d,&p);if(p=1)strcpy(sji.czzt,未借出);strcpy(sji.xm,无);sji.xh=0;printf(已归还,按任意键继续n); /getch();3.6 流程图主菜单退出查询数据添加删除还书借书图3.7第四章 测试分析4.1 测试程序执行情况图4.1.1 管理界面图4.1.2 添加图书图4.1.3 名称查询图4.1.4 编号查询图4.1.5
22、借书图4.1.6 还书图4.1.7删除信息4.2 出现的问题和解决的方法第五章 课程设计总结通过两周的课程设计,使我清楚地认识到了实践的重要性.经过有针对性地上机操作,不仅可以提高我对C语言的认识,更重要的是提高了自己的实践能力。 在课程设计过程中,我学到了许多道理,也懂得无论做什么事情都应该先拟定一个计划。有了计划,就有了奋斗目标,我们就会冲着目标奋进。通过这次学习使我对指针、数组、结构体以及循环有了深刻的理解,可以学以致用,觉得有了很大的收获。与此同时也使我学会了如何克服不良情绪,怎样调整自己的心态。 在这次学习中,我遇到了许多困难,但经过我的耐心研究,同学们的帮助以及老师的谆谆教导,使我
23、最终克服了困难,成功地完成了本次课程设计。这让我懂得了,无论做什么事都不要轻言放弃,无论做什么事都要有耐心、信心加恒心,只有这样,我们才会成功。在这次设计中,我的人生格言也在无时无刻地帮助着我,鼓励这我,在我感到困惑疲惫时,在我被问题萦绕百般不解时,它都会激励我,它就是在磨练中成长、苦中作乐附录:程序代码#include#include#includetypedef struct char number10;/书号char name20;/书名char author20;/作者char publish50;/出版社char time20;/出版时间float price;mbook;typed
24、ef 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.count,sizeof(int),1,fp);fwrite(library.book,sizeof(library.book0),library.count,fp);void putin() /*定义录入函数*/int y=1;system(c
25、ls);while(y)printf(t请输入您的书籍的书号:);scanf(%s,library.booklibrary.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
26、.count.time);printf(t请输入该书的价格:);fflush(stdin);scanf(%f,&library.booklibrary.count.price);library.count+;printf(录入成功,恭喜您!);printf(n是否继续录入(1.继续;0,退出录入):);fflush(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+)pri
27、ntf(%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);printf(n 查询结果如上按0键返回主菜单: );fflush(stdin);getchar();void search_by_name() /*定义按书名查询*/char s220;int flag=1;printf(n请输入要查询的书名: );fflush(stdin);scanf(%s,s2
28、);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.2fn,library.booki.number,library.booki.name,library.booki.author,library.booki.publish,library.booki.time,library.booki.price);if (flag)printf(查询错误!按0键返回主菜单: );fflus
29、h(stdin);getchar();void search_by_author() /*定义按作者名查询*/char s320;int flag=1;printf(请输入要查询的书的作者: );fflush(stdin);scanf(%s,s3);printf(图书号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.n
30、ame,library.booki.author,library.booki.publish,library.booki.time,library.booki.price);if (flag)printf(查询出错!按0键返回主菜单: );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) ;
31、printf(tt请选择你想要的查询方式:);fflush(stdin); scanf(%d,&a); switch(a) case 1:search_by_name();break;case 2:search_by_author();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,libra
32、ry.booki.number)=0)break;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.ti
33、me,library.booki+1.time);library.booki.price=library.booki+1.price;library.count-;elseprintf(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;
34、i+) if(strcmp(number,library.booki.number)=0) printf(图书号t图书名t作者名t出版社t出版日期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请输入修改后此图书的信息n);p
35、rintf(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);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();printf(n 修改成功请按0键返回主菜单:);else
限制150内