图书管理系统C语言程序设计实验报告.docx
- 文档编号:27899938
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:18
- 大小:104.60KB
图书管理系统C语言程序设计实验报告.docx
《图书管理系统C语言程序设计实验报告.docx》由会员分享,可在线阅读,更多相关《图书管理系统C语言程序设计实验报告.docx(18页珍藏版)》请在冰豆网上搜索。
图书管理系统C语言程序设计实验报告
C语言程序设计实验报告
系别
专业
班级
姓名
学号
时间
实验题目图书信息管理系统
一、实验目的
(1)熟练掌握C语言的相关操作。
(2)综合应用C语言的知识,独立完成一个完整的系统,提高编程能力,体会软件程序的开发过程。
二、实验内容
(1)运用数组、循环、文件等编辑一个图书管理系统,其中具有输入、修改、删除、添加、查询、排序、统计、保存、读取模块。
(2)执行编译操作,并根据提示调试此程序,排除所有的错误和警告。
直到编译成功为止。
(3)执行运行操作,逐一对每个模块进行调试,直到全部程序运行成功为止。
(4)请老师检查,向老师演练此程序,并能回答老师提出的相关问题。
三、需求分析
(1)该图书信息管理系统,使之能够完成图书信息的输入、打印、修改、删除、添加、查询、排序、统计、保存、读取、退出。
每个模块的功能如下:
1、输入模块能够按照图书号的先后顺序完成图书号、书名、出版社、出版日期、作者、所在书库、价格。
2、打印模块能输出刚刚输入的信息。
3、修改模块中输入要修改相应的图书号后,选择需要须改的项目就能完成修改操作。
4、删除模块中输入相应的图书号后可完成删除操作。
5、添加模块能完成添加新书的操作。
6、查询模块能够按图书名称查询该书的全部信息。
7、排序模块能按照图书的价格进行排行。
8、统计模块能根据输入的图书名统计该书的种数。
9、保存模块能够将所有图书的信息保存。
10、读取模块能读取已保存的图书信息并显示。
11、退出模块可直接退出此程序,结束操作。
(2)创建该图书信息管理系统目的就是能够对图书信息进行输入、打印、修改、删除、添加、查询、排序、统计、保存、读取、退出等功能。
(3)该图书信息管理系统是在VC中文简体环境下运行。
该系统要测试的数据如下:
输入模块:
第1种图书
图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格
01履历表人文2008-8-7几米文艺23
第2种图书
图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格
02沙漏湖南2007-6-5饶雪漫文艺22
第3种图书
图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格
03世界是平的科技2003-11-2托马斯经济56
第4种图书
图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格
04天使与魔鬼人文2007-9-8丹布朗文艺29
第5种图书
图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格
05向左走向右走人文2005-6-23几米文艺26
修改模块:
(修改《天使与魔鬼》的价格)
(输入)04(修改图书号)
(输入)6(修改价格的选项)
(输入)(修改后的分数)
插入模块:
(插入06《傲慢与偏见》))
(输入图书号)06
(输入书名)傲慢与偏见
(输入出版社)人文
(输入出版日期)2006-5-21
(输入作者)简奥斯丁
(输入所在书库)文艺
(输入价格)24
查询模块:
(查询《沙漏》的基本信息)
沙漏(输入书名即可查询)
删除模块:
(删除《世界是平的》)
03(输入图书号即可删除)
排序模块:
(输入排序模块的执行键即可完成)
输出模块:
(输入输出模块的执行键即可完成)
退出模块:
(输入)0
四、概要设计
(1)、主函数结构图
2)、模块功能详细说明
A、输入模块:
它可以通过循环完成对全部图书基本信息(包括:
图书号、书名、出版社、出版日期、作者、所在书库、价格)的一次性录入,其中书名、出版社定义为10个字节的字符型,作者、所在书库定义为20个字节的字符型图书号和价格则定义为整型。
B、打印模块:
输出所有的图书信息。
C、修改模块:
在输入要修改图书的相应的序号后,系统便开始查找该图书号,如果存在该图书号,只要选择1-7选项可以分别完成对、出信息中好图书基本信息中图书名称、出版社、出版日期、作者、所在书库、价格的修改及退出。
D、删除模块:
输入图书号即可完成删除该书信息的操作。
E、添加模块:
输入一个图书的全部信息后,该程序会按照书号由小到大的顺序查找到相应的位置,并把输入该图书的全部信息插入到相关位置。
F、查询模块:
此模块按书名进行查询,它也是通过指针和链表进行推移查找,如果找到则显示该图书的全部信息,否则,将输出没有查到该图书信息,以便给以提示.
G、排序模块:
该模块利用循环按图书价格由低到高进行排序并显示排序结果。
H、统计模块:
该模块根据输入的图书名统计该图书的本数,若没有相应信息则显示有0本该书。
I、保存模块:
该模块将已输入的图书信息保存。
J、读取模块:
该模块将通过打开指定的文件读取已有的信息。
H、退出模块:
可直接退出此程序,结束操作。
五、详细设计及运行结果
(1)函数之间的相互调用
(2)该图书信息管理系统的源代码。
#include""
#include""
#include""
#include""
#defineMAX10
#defineN5;
/*日期结构体类型*/
typedefstruct
{intyear;
intmonth;
intday;
}DATE;
/*图书结构体类型*/
typedefstruct
{
intnum;/*图书编号*/
charname[10];/*图书名称*/
charpress[10];/*出版社*/
DATEpro_time;/*出版日期*/
floatprice;/*价格*/
charauthor[20];/*作者*/
charadd[20];/*所在书库*/
}BOOK;
/*保存信息*/
voidsave_file(BOOKbooks[],intsum)
{
FILE*fp;
inti;
charfilename[40];
;
getch();
exit(0);
}
for(i=0;i { fprintf(fp,"%d%s%s%d-%d-%d%s%s%f\n",books[i].num,books[i].name,books[i].press, books[i].,books[i]., books[i].,books[i].author,books[i].add,books[i].price); } fclose(fp); } /*读取信息*/ voidwrite_file(BOOKbooks[],int*sum) { FILE*fp; inti; charfilename[40]; printf("\ninputREADfilename="); scanf("%s",filename); if((fp=fopen(filename,"r"))==NULL) { printf("\n%sfileNOTopen! pressanykeyexitsystem."); getch(); } i=0; while(feof(fp)==0) { fscanf(fp,"%d%s%s%d-%d-%d%s%s%f",&books[i].num,books[i].name,books[i].press, &books[i].,&books[i]., &books[i].,books[i].author,books[i].add,&books[i].price); i++; } fclose(fp); *sum=i-1; } /*输入模块*/ intinput(BOOKbooks[]) { inti=0; floatf; charisCon; system("cls"); flushall(); printf("isContinue(y/n)? : "); scanf("%c",&isCon); printf("\n\n录入图书信息(最多%d种)\n",MAX); printf("-----------------------------------------------\n"); while(isCon=='Y'||isCon=='y') {printf("\n第%d种图书",i+1); printf("\n"); printf("\n图书号: "); flushall(); scanf("%d",&books[i].num); printf("\n图书名称: "); flushall(); scanf("%s",books[i].name); printf("\n出版社: "); flushall(); scanf("%s",books[i].press); printf("\n出版日期(yyyy-mm-dd): "); flushall(); scanf("%d-%d-%d",&books[i].,&books[i]., &books[i].; printf("\n作者: "); flushall(); scanf("%s",books[i].author); printf("\n所在书库: "); flushall(); scanf("%s",books[i].add); printf("\n价格: "); flushall(); scanf("%f",&f); books[i].price=f; i++; flushall(); printf("isContinue(y/n)? : "); scanf("%c",&isCon); } printf("\n--%d种图书信息输入完毕! --\n",i); printf("\n按任意键返回主菜单! "); getchar(); returni; } /*输出模块*/ voidoutput(BOOKbooks[],int*sum) { inti=0,j=0,page=1;intn; n=*sum; system("cls"); printf("\n\n--图书信息表--\n\n"); printf("图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格\n"); printf("--------------------------------------------------------------------\n"); for(i=0;i { printf("%4d%8s%8s%15d-%2d-%2d%8s%8s%10f\n",books[i].num, books[i].name,books[i].press,books[i]., books[i].,books[i].,books[i].author,books[i].add, books[i].price); printf("-----------------------------------------------------------\n"); } flushall(); printf("按任意键返回主菜单! "); getchar(); } /*添加新书*/ intappend(BOOKbooks[],intsum) { intflag; charchoice; do {system("cls"); printf("\n输入要添加的图书号: "); scanf("%d",&books[sum].num); printf("\n输入要添加的图书名称: "); flushall(); scanf("%s",books[sum].name), printf("\n输入要添加的图书出版社: "); flushall(); scanf("%s",books[sum].press); printf("\n输入要添加的图书出版日期: "); flushall(); scanf("%d%d%d",&books[sum].,&books[sum].,&books[sum].; printf("\n输入要添加的作者: "); flushall(); scanf("%s",books[sum].author); printf("\n输入要添加图书的所在书库: "); flushall(); scanf("%s",books[sum].add); printf("\n输入要添加的图书价格: "); flushall(); scanf("%f",&books[sum].price); sum++; printf("\n\n继续添加吗? (Y/N)"); flushall(); choice=getchar(); if(choice=='Y'||choice=='y') { flag=1; printf("\n继续! \n"); } elseflag=0; }while(flag==1); printf("\n按任意键返回主菜单! "); getchar(); um==modify_num) {printf("\n---图书信息---\n"); printf("\n您要修改哪一项? \n"); printf("\n1.名称\n"); printf("\n2.出版社\n"); printf("\n3.出版日期\n"); printf("\n4.作者\n"); printf("\n5.所在书库\n"); printf("\n6.价格\n"); printf("\n7.请选择(1-7): "); scanf("%d",&choice); switch(choice) {case1: printf("\n输入修改后的名称: "); scanf("%s",books[i].name);break; case2: printf("\n输入修改后的出版社: "); scanf("%s",books[i].press);break; case3: printf("\n输入修改后的出版日期: "); scanf("%d-%d-%d",&books[i]., &books[i]., &books[i].;break; case4: printf("\n输入修改后的价格: "); scanf("%f",&books[i].price);break; case5: printf("\n输入要添加的作者: "); scanf("%s",books[sum].author); case6: printf("\n输入要添加图书的所在书库: "); scanf("%s",books[sum].add); } printf("\n---图书信息---\n"); printf("图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格\n"); printf("-----------------------------------------------------\n"); printf("%4d%8s%8s%15d-%2d-%2d%8s%8s%10f\n",books[i].num, books[i].name,books[i].press,books[i]., books[i].,books[i].,books[i].author,books[i].add, books[i].price); break; }elsej++; if(j==sum) { printf("\n该图书信息不存在! \n"); delum==num) {for(j=i;j books[j]=books[j+1]; sum--; printf("删除成功! \n"); break; }elsej++; } if(j==sum) {printf("\n该图书信息不存在! \n"); ame,inquire_name)==0) {printf("\n--图书信息--\n"); printf("图书号--图书名称--出版社--出版日期(年-月-日)--作者--所在书库--价格\n"); printf("--------------------------------------------------------------------\n"); printf("%4d%8s%8s%15d-%2d-%2d%8s%8s%10f\n",books[i].num, books[i].name,books[i].press,books[i]., books[i].,books[i].,books[i].author,books[i].add, books[i].price); } elsej++; if(j==sum) {printf("\n该图书不存在! "); rice>books[j].price)k=j; if(k! =i) {t=books[i]; books[i]=books[k]; books[k]=t; } } output(books,&sum); ame,count_name)==0) t++; elsej++; } printf("该种图书共有%d本! ",t); if(j==sum) {printf("\n该种图书不存在! "); 输入图书信息\n\n"); printf("2.打印图书信息\n\n"); printf("3.修改图书信息\n\n"); printf("4.删除图书信息\n\n"); printf("5.添加图书信息\n\n"); printf("6.查询图书信息\n\n"); printf("7.图书排行信息\n\n"); printf("8.统计图书信息\n\n"); printf("9.保存图书信息\n\n"); printf("10.读取图书信息\n\n"); printf("0.退出系统\n\n"); printf("请选择(0-10): "); scanf("%d",&choice); switch(choice) { case1: sum=input(books);break; case2: output(books,&sum);break; case3: modify(books,sum);break; case4: sum=del(books,sum);break; case5: sum=append(books,sum);break; case6: inquire(books,sum);break; case7: sort(books,sum);break; case8: count(books,sum);break; case9: save_file(books,sum);break; case10: write_file(books,&sum);break; case0: break; default: break; } }while(choice! =0); save_file(books,sum); } 六、调试情况,设计技巧及体会 此次课程设计让我对C语言有了新的认识,编程的过程是辛苦的,即使一个微小的错误对程序而言都将无法顺利执行。 同时在编程的过程中需要不断的看书,弄明白一些知识。 再则,在实习中,我深刻体会遇到困难要及时向老师寻求帮助,同时也明白学好C语言的重要性。 C语言程序对我们来说比较难,在匆忙的学习中更是难上加难,但在老师的帮助下我终于把一直困扰我的错误改正,最后终于做好了自己的程序。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 语言程序设计 实验 报告