图书管理系统课程报告.docx
- 文档编号:7242623
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:28
- 大小:432.86KB
图书管理系统课程报告.docx
《图书管理系统课程报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统课程报告.docx(28页珍藏版)》请在冰豆网上搜索。
图书管理系统课程报告
课程报告
课程名称:
程序设计实践
专业班级:
学生姓名:
学号:
任课教师:
学期:
课程报告任务书
题目
图书信息管理系统
主要
内容
开发一个图书信息管理系统,图书信息包括:
图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。
使之能提供以下基本功能:
(1)图书信息录入功能(图书信息用文件保存)--输入
(2)图书信息浏览功能--输出
(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):
①按书名查询②按作者名查询
按照价钱排序
按出版时间排序等等
(4)图书信息的删除与修改
扩展功能:
可以按照自己的程度进行扩展。
比如
(1)简单的权限处理
(2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。
(4)模糊查询(5)综合查询(6)统计功能比如统计处某一类别的图书信息或筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。
任务
要求
一、提交材料应包括:
(1)系统源代码
(2)课程报告
二、整个设计过程具体要求
(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;
(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)
(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;
(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩
评定
报告撰写情况(30分)
系统完成情况(30分)
答辩情况(40分)
总分
内容
20分
规范程度
5分
程序测试
5分
基本功能20分
扩展功能10分
自述情况10分
答辩情况
30分
成绩评定教师:
1需求分析
看到题目后,理解到里面的关键词有两个:
图书、管理。
那么对于这个系统的编写就围绕这两点进行。
对于图书的信息要包括:
图书编号、书名、作者、出版社、类别、出版时间和价格,提供读者更多关于图书的信息,便于他们查询和记忆;再者,就是图书的管理,我在这里设计的一个是对于图书管理者的系统,另一个是针对读者的服务系统,有两个不同的界面。
在主界面上不同角色选择不同的界面进入,这两个系统进入时均有权限,起到保护各系统的作用。
首先,管理着系统,这个系统要能录入图书信息并保存,能对图书录入情况进行浏览,能够将图书进行价格排序,还要能够对图书信息进行删除和修改。
其次,读者服务系统,读者能浏览图书信息,能查询需要的书(这里我设计了书名查询和作者名查询两种方式),能够通过价位排序浏览图书信息,经过对比知道更多信息,更好的实现读者服务功能。
2概要设计
(1)数据结构
对于图书的信息采用一个结构体来完成,对图书不同的信息设计不同的易懂的英文变量或汉语拼音代表,在程序中便于引用,也便于阅读程序。
对于图书的信息的保存用文件来实现,对于以后图书的浏览、排序、删除和修改就直接打开对其操作。
(2)模块划分
1、主函数
主函数中主要包含:
功能函数的定义、系统的主界面、管理者界面、读者界面及进入各界面的权限设置。
用不同的易懂的英文字母来定义各功能函数,接着用printf输出函数在界面上输出系统主界面,然后用if判断语句选择不同的界面,再次用if判断语句来设置权限,权限通过后,输出管理者界面、读者界面或退出系统。
输出所选界面后用swith结构调用各功能函数实现所选操作。
2、信息录入函数
先建立一个文件fp,并打开,用for循环来控制所输图书上限,并循环输入图书信息保存至所建文件中,输入完毕后,关闭文件。
3、信息浏览函数
打开所建的信息录入文件,用printf输出函数输出图书信息的界面,然后用for循环控制输出文件中的所有图书信息,输出完毕后,用if判断语句实现选择性退出输入,关闭文件。
4、图书查询函数
该函数主要运用do-while循环实现,再循环中首先用printf输出图书查询界面,然后用if判断语句来选择所用查询方式,进入查询,其中用if判断是否有所找图书,若有就用for来控制查询书的上限,在经过if判断是否找到所要的图书,确认后输出该图书信息。
5、删除函数
打开图书文件后,输出所有图书信息,选择所删除书号,进入删除系统,采用所选图书信息位置后面的图书信息依次向前覆盖图书信息,从而删除所选图书信息达到删除目的。
然后将改变后的的文件信息保存至原来文件中,再次打开输出显示删除后的图书信息。
最后关闭文件。
6、修改函数
按提示输入修改图书编号,再用指针找到该图书信息输出,在此用if来完成是否找到所选图书,用可读写方式打开信息文件,利用fseek()来控制指针移动,指向需修改的文件信息位置,输入修改内容进行覆盖,完成后保存至原来文件中,相当于进行了更新,关闭该文件,再用只读方式打开输出其中全部信息,最后关闭文件。
7、排序函数
这里主要运用冒泡排序法来完成。
打开文件,利用for循环找到文件中图书数目,再利用冒泡排序进行价位排序,完成之后,输出排序后的图书信息。
(3)程序总体框架
3详细设计
(1)数据结构
structbook/*图书信息结构定义*/
{
intnum;/*图书编号*/
charname[100];/*书名*/
charauthor[100];/*作者名*/
charfn[100];/*分类号*/
charplace[100];/*出版单位*/
charday[100];/*出版时间*/
floatmoney;/*价格*/
}book[MAX],temp;
(2)主函数
intmain(void)/*主函数*/
{
voidInput();/*输入*/
voidOutput();/*输出*/
voidFind();/*查找*/
voidDelete();/*删除*/
voidChange();/*修改*/
voidPaixu();/*排序*/
intn;
printf("\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※※\n");
printf("※欢迎来河南工业大学图书信息管理系统※\n");
printf("※※\n");
printf("※※\n");
printf("※★1.图书管理员系统★※\n");
printf("※※\n");
printf("※★2.读者系统★※\n");
printf("※※\n");
printf("※▲退出(输入其他数字)※\n");
printf("※※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请输入选择项(1-2):
");
scanf("%d",&n);
printf("\n\n\n\n");
if(n==1)
{
intm;
printf("请输入图书管理系统的密码:
");
scanf("%d",&m);
if(m==1002)
{
for(;;)/*省略"初始化"、"条件表达式"和"增量"*/
{
ints;
printf("\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※※\n");
printf("※欢迎来河南工业大学图书信息管理系统※\n");
printf("※※\n");
printf("※※\n");
printf("※主菜单※\n");
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("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n\n");
printf("请输入选择项(1-7):
");
scanf("%d",&s);
printf("\n\n\n\n");
if(s>0&&s<8)
{
switch(s)
{
case1:
Input();break;
case2:
Output();break;
case3:
Find();break;
case4:
Delete();break;
case5:
Change();break;
case6:
Paixu();break;
case7:
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※※\n");
printf("※谢谢使用!
※\n");
printf("※再见!
※\n");
printf("※※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
exit(0);
}
}
}
}
else
printf("密码错误,请您重新进入系统\n");
return0;
}
elseif(n==2)
{
intt;
printf("请输入读者密码:
");
scanf("%d",&t);
if(t==320)
{
for(;;)/*省略"初始化"、"条件表达式"和"增量"*/
{
inth;
printf("\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※※\n");
printf("※欢迎来河南工业大学读者服务系统※\n");
printf("※※\n");
printf("※主菜单※\n");
printf("※※\n");
printf("※★1.图书信息浏览★※\n");
printf("※※\n");
printf("※★2.图书信息查询★※\n);
printf("※※\n");
printf("※★3.图书价位排序★※\n");
printf("※※\n");
printf("※★4.退出系统★※\n");
printf("※※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("请输入选择项(1-4):
");
scanf("%d",&h);
printf("\n\n\n\n");
if(h>0&&h<5)
{
switch(h)
{
case1:
Output();break;
case2:
Find();break;
case3:
Paixu();break;case4:
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
printf("※※\n");
printf("※谢谢使用!
※\n");
printf("※再见!
※\n");
printf("※※\n");
printf("※※※※※※※※※※※※※※※※※※※※※※※※\n");
exit(0);
}
}
}
}
else
printf("密码错误,请您重新进入系统\n");
return0;
}
elsereturn0;
}
(3)录入函数
voidInput()/*输入*/
{
FILE*fp;
intn;
fp=fopen("book","ab");/*建立一个新二进制文件*/
for(n=0;n { printf("n=%d输入序号n(当输入n=-1时,返回),n=",n++); scanf("%d",&n); if(n==-1) { fclose(fp); return;/*默认不返回值*/ } else { printf("请输入图书编号书名作者名分类号出版单位出版时间价格\n"); scanf("%d%s%s%s%s%s%f",&book[n].num,book[n].name,book[n].author,book[n].fn,book[n].place,book[n].day,&book[n].money); fwrite(&book[n],sizeof(structbook),1,fp);/*写入文件*/ } } fclose(fp); } (4)浏览函数 voidOutput()/*输出*/ { FILE*fp; inti; fp=fopen("book","rb"); printf("※※※※※※※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("图书列表\n"); printf("-----------------------------------------------------------\n"); printf("图书编号书名作者名分类号出版单位出版时间价格\n"); printf("-----------------------------------------------------------\n"); for(i=0;fread(&book[i],sizeof(structbook),1,fp)==1;i++) { printf("%6d%8s%8s%8s%8s%8s%10.2f\n",book[i].num,book[i].name,book[i].author,book[i].fn,book[i].place,book[i].day,book[i].money); } fclose(fp); } (5)查询函数 voidFind()/*查找*/ { inti; intchoose,t; charans[100]; do { printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("※※\n"); printf("※1.按书名查找※\n"); printf("※2.按作者名查找※\n"); printf("※▲返回主菜单(输入其他数字)※\n"); printf("※※\n"); printf("※※※※※※※※※※※※※※※※※※※※※※※※\n"); printf("输入选项代号: "); scanf("%d",&choose); if(choose==1) { printf("输入所查书名: \n"); scanf("%s",ans); t=-1; if(choose==1) { for(i=0;i if(strcmp(ans,book[i].name)==0) { t=i; printf("%d%s%s%s%s%s%2f\n",book[t].num,book[t].name,book[t].author,book[t].fn,book[t].place,book[t].day,book[t].money); } } if(t==-1) printf("不存在该信息\n"); } elseif(choose==2) { printf("输入所查作者名: \n"); scanf("%s",ans); t=-1; if(choose==2) { for(i=0;i if(strcmp(ans,book[i].author)==0) { t=i; printf("%d%s%s%s%s%s%2f\n",book[t].num,book[t].name,book[t].author,book[t].fn,book[t].place,book[t].day,book[t].money); } } if(t==-1)printf("不存在该信息\n"); } elsereturn; }while (1); } (6)删除函数 voidDelete()/*删除*/ { FILE*fp; inti,flag,n,s,j; fp=fopen("book","rb+"); rewind(fp); printf("图书列表\n"); printf("-----------------------------------------------------------\n"); printf("图书编号书名作者名分类号出版单位出版时间价格\n"); printf("-----------------------------------------------------------\n"); for(i=0;fread(&book[i],sizeof(structbook),1,fp)==1;i++) { printf("%6d%8s%8s%8s%8s%8s%10.2f\n",book[i].num,book[i].name,book[i].author,book[i].fn,book[i].place,book[i].day,book[i].money); printf("\n"); } n=i; printf("输入待删除图书编号: \n"); scanf("%d",&s); for(i=0,flag=1;flag&&i { if(s==book[i].num) { for(j=i;j { book[j].num=book[j+1].num; strcpy(book[j].name,book[j+1].name); strcpy(book[j].author,book[j+1].author); strcpy(book[j].fn,book[j+1].fn); strcpy(book[j].place,book[j+1].place); strcpy(book[j].day,book[j+1].day); book[j].money=book[j+1].money; } flag=0; } } if(! flag) n=n-1; else printf("没有此号\n"); fp=fopen("book","wb"); for(i=0;i fwrite(&book[i],sizeof(structbook),1,fp); fclose(fp); fp=fopen("book","r"); printf("图书列表\n"); printf("-----------------------------------------------------------\n"); printf("图书编号书名作者名分类号出版单位出版时间价格\n"); printf("-----------------------------------------------------------\n"); for(i=0;i { fread(&book[i],sizeof(structbook),1,fp); printf("%6d%8s%8s%8s%8s%8s%10.2f\n",book[i].num,book[i].name,book[i].author,book[i].fn,book[i].place,book[i].day,book[i].money); printf("\n"); } fclose(fp); } (7)修改函数 voidChange()/*修改*/ { FILE*fp; inti,num,n; intflag=0; printf("请输入要修改的图书编号: "); scanf("%d",&num); for(i=0;i<=MAX;i++) if(book[i].num==num) { printf("图书列表\n"); printf("-----------------------------------------------------------\n"); printf("图书编号书名作者名分类号出版单位出版时间价格\n"); printf("-----------------------------------------------------------\n"); printf("%6d%8s%8s%8s%8s%8s%10.2f\n",book[i].num,book[i].name,book[i].author,book[i].fn,book[i].place,book[i].day,book[i].money); printf("--------------------------------------------------------
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 课程 报告