C语言图书管理系统课设报告.docx
- 文档编号:25614092
- 上传时间:2023-06-10
- 格式:DOCX
- 页数:26
- 大小:365.48KB
C语言图书管理系统课设报告.docx
《C语言图书管理系统课设报告.docx》由会员分享,可在线阅读,更多相关《C语言图书管理系统课设报告.docx(26页珍藏版)》请在冰豆网上搜索。
C语言图书管理系统课设报告
程序设计课设论文
论文题目:
图书信息管理系统
学院:
软件学院
年级:
2015级
班级:
软件工程1522班
姓名:
韩汀
学号:
201515614100
指导教师:
邵回祖
2016年6月14日-2016年6月22日
1.需求分析----------------------------------------1
2.概要设计----------------------------------------2
3.详细设计----------------------------------------3
4.调试分析----------------------------------------8
5.核心源程序清单和执行结果------------------------8
6.课程设计总结-----------------------------------19
1.需求分析
(1)程序的功能:
图书信息管理系统涉及5项功能,包括录入,浏览,查询,删除和修改,其中查询可通过书名或作者两种途径进行。
图书信息录入:
将图书信息写入程序,包括序号,书名,作者,出版社,出版日期和价格。
图书信息浏览:
将所有已录入的图书信息按序号排序列出。
图书信息查询:
可根据图书的书名或作者查找该书的具体信息。
图书信息删除:
可根据序号删除指定图书信息。
图书信息修改:
可根据序号修改图书所有信息。
(2)输入输出要求:
无
(3)测试数据:
1高等数学1高等教育出版社2014.731.20
2概率论2高等教育出版社2008.637.40
3线性代数3高等教育出版社2007.517.30
4C程序设计4清华大学出版社2010.633.00
2.概要设计:
(1)数据的存储结构
(2)系统流程:
3.详细设计:
(1)信息录入函数:
用scanf函数输入定义的书籍结构体的序号,书名,作者,出版社,出版时间和价格。
建立10本书籍的书库,输入完毕,返回主函数。
(2)信息浏览函数:
(3)信息查询函数:
这里分两个项目,一个是通过书名进行查询,另一个是通过作者进行查询。
在定义查询函数时使用switch函数:
通过书名进行查询:
通过作者进行查询:
(4)信息删除函数:
根据序号删除图书,操作成功后显示删除成功,任意键跳转。
如果序号输入错误显示图书不存在。
(5)信息修改函数:
在此函数中,根据序号选择图书修改,存在一个问题,就是难以选择其中一项进行修改,只能全部修改。
出现的问题:
只能全部进行修改:
4.调试分析:
(1)在初次运行中,发现系统闪退问题存在于第2,3,4,5项中,输入序号点击回车系统闪退。
最后在每一项最后加入system("pause");使得闪退问题修复。
(2)在最初编写代码过程中,始终输入:
FILE*fp;
if((fp=fopen("library","r"))==NULL)
最后修改为:
FILE*fp;
if((fp=fopen("library.doc","r"))==NULL)
(3)在信息修改一栏中,目前仍无法实现单独修改一条信息的功能,只能根据序号,对序号所对应的全部图书信息进行修改。
if(i!
=library.count)
{
mbookbook;
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();
5.核心源程序清单和执行结果:
(1)源代码:
#include
#include
#include
typedefstruct
{
charnumber[10];//书号
charname[20];//书名
charauthor[20];//作者
charpublish[50];//出版社
chartime[20];//出版时间
floatprice;
}mbook;
typedefstruct
{
intcount;//书的本数
mbookbook[100];//最大可有100本书
}mlibrary;
mlibrarylibrary;
voidsave()//保存图书信息。
{
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);
}
voidputin()/*定义录入函数*/
{
inty=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();
}
voidlookup()
{
inti;
system("cls");
printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n");
for(i=0;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(); system("pause"); } voidsearch_by_name()/*定义按书名查询*/ { inti; chars2[20]; intflag=1; printf("\n请输入要查询的书名: "); fflush(stdin); scanf("%s",s2); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(i=0;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("cannotfound! "); } fflush(stdin); getchar(); system("pause"); } voidsearch_by_author()/*定义按作者名查询*/ { inti; chars3[20]; intflag=1; printf("请输入要查询的书的作者: "); fflush(stdin); scanf("%s",s3); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(i=0;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("cannotfound! "); } fflush(stdin); getchar(); system("pause"); } voidsearch()/*定义查询函数*/ { inta; 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请选择你想要的查询方式: "); fflush(stdin); scanf("%d",&a); switch(a) { case1: search_by_name(); break; case2: search_by_author(); break; case0: return; } system("pause"); } voiddel()/*定义删除函数*/ { inti; charnumber[10]; system("cls");/*清屏*/ printf("\nPleasetypeinthenumberofthebookyouwanttodelete: "); fflush(stdin); scanf("%s",number); for(i=0;i { if(strcmp(number,library.book[i].number)==0)break; } if(i! =library.count) { for(;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; } printf("删除成功\n"); library.count--; system("pause"); } else printf("\ncannotfound! \n"); save(); fflush(stdin); getchar(); } voidupdate()//修改图书信息 { inti; charnumber[10]; system("cls");/*清屏*/ printf("\nPleasetypeinthenumberofthebookyouwanttodelete: "); fflush(stdin); scanf("%s",number); for(i=0;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) { mbookbook; 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("\ncannotfound! \n"); fflush(stdin); getchar(); system("pause"); } intmain() { inta; 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\tPleaseEnterChoose: "); fflush(stdin); scanf("%d",&a); switch(a) { case1: putin(); break; case2: lookup(); break; case3: search(); break; case4: del(); break; case5: update(); break; case0: printf("\n\n退出\n\n"); break; default: printf("\n序号不对\n"); } }while(a! =0); save(); return0; } (2)运行结果: 在codeblocks中编译、运行目标程序后,进入到主界面,显示如图1: 进入主界面后,显示信息选择操作,根据相应序号选择相应操作,输入1后进入图书信息录入选项,按顺序录入相应信息,完成后按1继续录入,按0结束录入,显示如图2: 按0返回主界面,进入到信息浏览界面,可查看已录入的全部图书信息(下图中只录入一本图书信息),查看结束后按任意键返回主界面,显示如图3: 根据选项进入信息查询界面,有两个选择,分别为根据书名和根据作者,按1进入根据书名进行查询,可显示相应图书信息,显示如图4: 根据作者进行查询,以查询无果为例,显示cannotfound! 显示如图5: 按5进入图书信息修改界面,输入序号显示图书信息并进行修改,按顺序依次修改信息(目前无法对单独某一条信息进行修改),显示如图6: 按4进入信息删除界面,输入相应序号后显示删除成功,按任意键返回,显示如图7: 在信息删除界面中,输入序号,如果没有存储该序号图书信息,显示cannotfound! 显示如图8: 6.课程设计总结: 在课程设计过程中,由于对代码和各种概念不是很清楚,所以对结构体变量的引用非常生疏。 在调试程序的过程中,也存在许多问题,最后一一修改。 通过自己对书本知识一遍又一遍的复习,自己感觉做系统不再那么的复杂,包括框架的建立,界面设计,调用函数等等。 经过一个星期的锻炼,自己感觉到了明显的提高,以后还需多练习,多锻炼,加强对C语言综合知识的理解与应用。 请老师审阅我的课程设计报告。 谢谢 软件学院 1522班 韩汀 201515614100
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 图书 管理 系统 报告
