图书管理系统.docx
- 文档编号:96078
- 上传时间:2023-04-28
- 格式:DOCX
- 页数:29
- 大小:280.38KB
图书管理系统.docx
《图书管理系统.docx》由会员分享,可在线阅读,更多相关《图书管理系统.docx(29页珍藏版)》请在冰点文库上搜索。
图书管理系统
学生实习报告
课程名称___程序设计综合实践___
题目名称_______________
学生学院_____
专业班级__
学号_______________
学生姓名________________
指导教师____________
2011年8月14日
目录
摘要1
1.设计的目的与要求1
1.1.目的:
1
1.2.要求:
1
2.总体设计2
2.1.系统构成框图2
2.2.系统结构框图3
3.详细设计4
3.1.借阅图书4
3.2.采编入库4
3.3.查阅功能5
3.4.归还图书5
4.数据结构设计6
4.1.头函数6
4.2.采编入库7
4.3.图书借阅8
4.4.查询功能8
4.5.归还图书10
4.6.清除库存10
5.调试分析12
5.1.主页面12
5.2.采编模块13
5.3.查询模块14
5.4.归还模块14
5.5.清除模块15
5.6.借阅模块15
6.总结16
7.参考文献17
8.答辩记录17
9.教师意见18
10.另附源代码:
18
摘要
图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,有很多的图书馆以前对信息管理的主要方式是基于文本、表格等纸介质的手工处理,对于图书借阅情况(如借书天数、超过限定借书时间的天数)的统计和核实等往往采用对借书卡的人工检查进行,对借阅者的借阅权限、以及借阅天数等用人工计算、手抄进行。
数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。
总的来说,缺乏系统,规范的信息管理手段。
图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况
图书管理系统是一个以菜单方式工作的信息管理系统,该系统用来反映登陆号、书名、作者名、出版单位、价格、库存量等信息,并实现采编入库、借阅、归还、清除库存以及查询等功能。
1.设计的目的与要求
1.1.目的:
建立一个图书管理系统,使图书管理工作规范化,系统化,程序化,避免图书管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改图书情况。
1.2.要求:
(1)采编入库:
新购入一本书,经分类和确定书号后登记到图书账目中去,若该书已存在,这库存量增加
(2)借阅:
若一种书的现存量大于0,则借出一本,登记借阅者的图书证号和归还期限
(3)归还:
注销借阅者的登记,改变该书的现存量(过期罚款-选作)
(4)清除库存:
某书已无保留价值,将它从图书账目中注销
(5)查询功能:
按书名查询、按作者名查询
2.总体设计
2.1.系统构成框图
2.2.系统结构框图
3.详细设计
3.1.借阅图书
3.2.采编入库
3.3.查阅功能
3.4.归还图书
4.数据结构设计
4.1.头函数
#include
#include
#include
#include
structBOOK
{
intid,usr[100],total,store,days[100];
charname[100],author[100];
}books[100];
/*上面是结构体的定义,用于存放书籍及借书的信息。
*/
voidpage_title(char*menu_item)/*打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。
*/
{
printf(">>>欢迎进入图书管理系统<<<\n\n-设计者-\n\n",menu_item);
printf(">>>赵云鹏31001410<<<\n\n-%s-\n\n",menu_item);
}
intmain()
{
menu:
page_title("操作选单");
printf("请用数字键选择操作\n\n");
printf("\t\t1采编入库\t2借阅图书\n");
printf("\t\t3归还图书\t4清除库存\n");
printf("\t\t5查询功能\n");
printf("\t\t0退出\n");
switch(getch())
{
case'1':
book_add();break;
case'2':
book_out();break;
case'3':
book_in();break;
case'4':
book_del();break;
case'5':
book_search();break;
case'0':
exit(0);
}
gotomenu;
}
4.2.采编入库
voidbook_add()
{
intn,f;
page_title("采编入库");
printf("序号:
");
scanf("%d",&f);
for(n=0;n<100;n++)
if(books[n].id==0||books[n].id==f)break;
books[n].id=f;
printf("书名:
");
scanf("%s",&books[n].name);
printf("作者:
");
scanf("%s",&books[n].author);
printf("数量:
");
scanf("%d",&f);
books[n].total+=f;
books[n].store=books[n].total;
return_confirm();
}
4.3.图书借阅
voidbook_out()/*借阅图书*/
{
intn,s,l,d;
page_title("借阅图书");
if((n=book_search())!
=-1&&books[n].store>0)
{
printf("请输入借书证序号:
");
scanf("%d",&s);
printf("可借10天,超过天数按每天0.5元罚款:
");
1for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!
=-1&&books[n].store==0)printf("此书已经借出.\n");
return_confirm();
}
4.4.查询功能
charbook_search()
{
intf,n,i;
charstr[100];
printf("请选择>>1按书名查询\n>>2按作者查询\n>>3按书序号查询");
scanf("%d",&i);
if(i==1){
getchar();
scanf("%s",str);
for(n=0;n<100;n++)
{
if(strcmp(books[n].name,str)==0)
{
printf("书名:
%s\n",books[n].name);
printf("作者:
%s\n",books[n].author);
printf("存数:
%d\n",books[n].total);
returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/
}
}
printf("\n输入错误或无效图书序号.\n");
return-1;/*如果找不到相应记录则提示错误并返回-1*/
}
elseif(i==2){
getchar();
scanf("%s",str);
for(n=0;n<100;n++)
{
if(strcmp(books[n].author,str)==0)
{
printf("书名:
%s\n",books[n].name);
printf("作者:
%s\n",books[n].author);
printf("存数:
%dof",books[n].store);
printf("%d\n",books[n].total);
returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/
}
}
printf("\n输入错误或无效图书序号.\n");
return-1;/*如果找不到相应记录则提示错误并返回-1*/
}
if(i==3){
scanf("%d",&f);
for(n=0;n<100;n++)
{
if(books[n].id==f)
{
printf("书名:
%s\n",books[n].name);
printf("作者:
%s\n",books[n].author);
printf("存数:
%dof",books[n].store);
printf("%d\n",books[n].total);
returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/
}
}
printf("\n输入错误或无效图书序号.\n");
return-1;/*如果找不到相应记录则提示错误并返回-1*/
}
}
4.5.归还图书
voidbook_in()/*归还图书*/
{
intn,s,l;
page_title("归还图书");
if((n=book_search())!
=-1&&books[n].store { printf("借阅者图书证列表: \n"); for(l=0;l<10;l++) if(books[n].usr[l]! =0) printf("[%d]-%d天\n",books[n].usr[l],books[n].days[l]); printf("请输入借书证序号: "); scanf("%d",&s); for(l=0;l<10;l++) { if(books[n].usr[l]==s) { books[n].usr[l]=0; books[n].days[l]=0; break; } } books[n].store++; } if(n! =-1&&books[n].store==books[n].total) printf("全部入藏.\n"); return_confirm(); } 4.6.清除库存 voidbook_del() { intn; page_title("清除库存"); if((n=book_search())! =-1){ books[n].id=0; books[n].total=0; } printf("该书已注销.\n"); return_confirm(); } 1. getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行. 2 getch(): 所在头文件: conio.h。 函数用途: 从控制台读取一个字符,但不显示在屏幕上 函数原型: intgetch(void) 返回值: 读取的字符 例如: charch;或intch; getch();或ch=getch(); 用getch();会等待你按下任意键,再继续执行下面的语句; 用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。 易错点: 1.所在头文件是conio.h。 而不是stdio.h. 2.在使用之前要调用initscr(),结束时要调用endwin()。 否则会出现不输入字符这个函数 也会返回的情况。 3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n) 1)windows平台下ENTER键会产生两个转义字符\r\n,因此getch返回13(\r)。 2)unix、linux系统中ENTER键只产生\n,因此getch返回10(\n)。 3)MACOS中ENTER键将产生\r,因此getch返回13(\r)。 getch();并非标准C中的函数,不存在C语言中。 所以在使用的时候要注意程序的可移植性。 国内C语言新手常常使用getch();来暂停程序且不知道此函数来源, 3. getchar(): 从键盘上输入一个字符+回车才把该字符输进去 getch(): 只要输入一个字符不需要输入回车就把该字符输进去了 此外getch()需要有头文件conio.h 5.调试分析 5.1.主页面 5.2.采编模块 5.3.查询模块 5.4.归还模块 5.5.清除模块 5.6.借阅模块 6.总结 经过一个星期的上机实践学习,使我对C语言有了更进一步的认识和了解,要想学好它要重在实践,要通过不断的上机操作才能更好地学习它,通过实践,我也发现我的好多不足之处。 本次实践设计对我来说是一次挑战,在这期间我遇到了很多困难。 通过上网查找资料、查看书籍、询问同学、请教老师等方法我终于完成了这次大作业。 通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C语言,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好程序设计。 学到的新东西: 1. getch与getchar基本功能相同,差别是getch直接从键盘获取键值,不等待用户按回车,只要用户按一个键,getch就立刻返回,getch返回值是用户输入的ASCII码,出错返回-1.输入的字符不会回显在屏幕上.getch函数常用于程序调试中,在调试时,在关键位置显示有关的结果以待查看,然后用getch函数暂停程序运行,当按任意键后程序继续运行. 2 getch(): 所在头文件: conio.h。 函数用途: 从控制台读取一个字符,但不显示在屏幕上 函数原型: intgetch(void) 返回值: 读取的字符 例如: charch;或intch; getch();或ch=getch(); 用getch();会等待你按下任意键,再继续执行下面的语句; 用ch=getch();会等待你按下任意键之后,把该键字符所对应的ASCII码赋给ch,再执行下面的语句。 易错点: 1.所在头文件是conio.h。 而不是stdio.h. 2.在使用之前要调用initscr(),结束时要调用endwin()。 否则会出现不输入字符这个函数 也会返回的情况。 3.在不同平台,输入回车,getch()将返回不同数值,而getchar()统一返回10(即\n) 1)windows平台下ENTER键会产生两个转义字符\r\n,因此getch返回13(\r)。 2)unix、linux系统中ENTER键只产生\n,因此getch返回10(\n)。 3)MACOS中ENTER键将产生\r,因此getch返回13(\r)。 getch();并非标准C中的函数,不存在C语言中。 所以在使用的时候要注意程序的可移植性。 国内C语言新手常常使用getch();来暂停程序且不知道此函数来源, 3. getchar(): 从键盘上输入一个字符+回车才把该字符输进去 getch(): 只要输入一个字符不需要输入回车就把该字符输进去了 此外getch()需要有头文件conio.h 7.参考文献 1.谭浩强《c程序设计》清华大学出版社 2.颜晖《c语言程序设计》,高等教育出版社,2008 8.答辩记录 9.教师意见 10.另附源代码: #include #include #include #include structBOOK { intid,usr[100],total,store,days[100]; charname[100],author[100]; }books[100]; /*上面是结构体的定义,用于存放书籍及借书的信息。 */ voidpage_title(char*menu_item)/*打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。 */ { printf(">>>欢迎进入图书管理系统<<<\n\n-设计者-\n\n",menu_item); printf(">>>赵云鹏31001410<<<\n\n-%s-\n\n",menu_item); } voidreturn_confirm()/*返回前请求确认的函数,以便在返回前观察结果*/ { printf("\n按任意键返回……\n"); getch(); } charbook_search()/*图书查阅*/ { intf,n,i;/*f借书证号*/ charstr[100]; printf("请选择>>1按书名查询\n>>2按作者查询\n>>3按书序号查询"); scanf("%d",&i); if(i==1){ getchar(); scanf("%s",str); for(n=0;n<100;n++) { if(strcmp(books[n].name,str)==0) { printf("书名: %s\n",books[n].name); printf("作者: %s\n",books[n].author); printf("存数: %d\n",books[n].total); returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/ } } printf("\n输入错误或无效图书序号.\n"); return-1;/*如果找不到相应记录则提示错误并返回-1*/ } elseif(i==2){ getchar(); scanf("%s",str); for(n=0;n<100;n++) { if(strcmp(books[n].author,str)==0) { printf("书名: %s\n",books[n].name); printf("作者: %s\n",books[n].author); printf("存数: %dof",books[n].store); printf("%d\n",books[n].total); returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/ } } printf("\n输入错误或无效图书序号.\n"); return-1;/*如果找不到相应记录则提示错误并返回-1*/ } if(i==3){ scanf("%d",&f); for(n=0;n<100;n++) { if(books[n].id==f) { printf("书名: %s\n",books[n].name); printf("作者: %s\n",books[n].author); printf("存数: %dof",books[n].store); printf("%d\n",books[n].total); returnn;/*在数组中找到图书号匹配的记录,显示其信息并返回数组下标*/ } } printf("\n输入错误或无效图书序号.\n"); return-1;/*如果找不到相应记录则提示错误并返回-1*/ } } voidbook_out()/*借阅图书*/ { intn,s,l,d; page_title("借阅图书"); if((n=book_search())! =-1&&books[n].store>0) { printf("请输入借书证序号: "); scanf("%d",&s); printf("可借10天,超过天数按每天0.5元罚款: "); for(l=0;l<10;l++) { if(books[n].usr[l]==0) { books[n].usr[l]=s; books[n].days[l]=d; break; } } books[n].store--; } if(n! =-1&&books[n].store==0)printf("此书已经借出.\n"); return_confirm(); } voidbook_in()/*归还图书*/ { intn,s,l;/*s是借书证号,l是天数*/ page_title("归还图书"); if((n=book_search())! =-1&&books[n].store { printf("借阅者图书证列表: \n"); for(l=0;l<10;l++) if(books[n].usr[l]! =0) printf("[%d]-10天之内\n",books[n].usr[l],books[n].days[l]); printf("请输入借书证序号: "); scanf("%d",&s); for(l=0;l<10;l++) { if(books[n].usr[l]==s) { books[n].usr[l]=0; books[n].days[l]=0; break; } } books[n].store++; } if(n! =-1&&books[n].store==books[n].total) printf("全部入藏.\n"); return_confirm(); } voidbook_add()/*采编入库*/ { intn,f; page_title("采编入库"); printf("序号: "); scanf("%d",&f); for(n=0;n<100;n++) if(books[n].id==0||books[n].id==f)break; books[n].id=f; printf("书名: "); sca
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统