《c语言实习 图书信息管理系统报告.doc》由会员分享,可在线阅读,更多相关《c语言实习 图书信息管理系统报告.doc(42页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 C语言课程设计报告课程名称 C语言课程设计 教师名称 谷淑化 姓 名 王保成 学 号 20211000341 专 业 地质工程岩土钻掘方向 所在院系 工程学院 班 级 051113 类 别 图书信息管理系统 日 期 2021年8月 课程设计评语对课程论文的评语:平时成绩:课程论文成绩:总 成 绩:评阅人签名:注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。目 录课程设计评语目 录1 课程设计题目图书信息管理系统图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之
2、能提供以下功能:2 程序设计思路3 功能模块图各功能模块流程图31输入模块32浏览模块33查找模块4数据结构及算法设计4.1 主函数4.2各功能模块设计421输入模块423查找模块43公共函数434删除函数5 程序代码及运行结果51 程序代码52运行结果如下截面图;521主菜单函数522输入模块523浏览模块524查找模块525修改和删除模块6 编程中遇到的困难及解决方法7总结心得:8致谢1 课程设计题目图书信息管理系统图书信息包括登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能:1系统以菜单方式工作2图书信息录入功能图书信息用文件保存3图
3、书信息浏览功能4图书信息查询功能5图书信息删除与修改功能可选项提示 系统以菜单方式工作,因此要提供键盘式选择菜单以实现功能选择;图书信息采用文件保存,因而要提供文件的输入/输出操作;要实现、图书信息的浏览功能,那么要提供信息显示操作;要实现图书信息查询功能,那么要提供查找操作;要实现图书信息删除与修改功能,要提供文件记录的删除修改操作。整个系统被设计为图书信息输入模块,图书信息浏览模块,图书信息查询模块和图书信息删除与修改模块。建立图书信息结构体,结构体成员包括登录号、书名、作者名、分类号、出版单位、出版时间、价格。2 程序设计思路根据需求分析,可以对这个系统的设计分为以下几个模块:图书信息管
4、理系统数据输入数据浏览数据查找删除和修改退出系统功能模块图3 功能模块图各功能模块流程图31输入模块32浏览模块需求分析 该模块的功能是显示所有图书记录信息。流程图 显示图书记录返回主菜单退出 浏览模块流程图33查找模块流程图:按书名查找模块1,2,还是3用户作出选择,输入一整型数值用户作出选择,输入一整型数值1,2,还是3 返回主菜单退出 返回上一层按书名查找模块流程图流程图按作者名称查找模块用户作出选择,输入一整型数值1,2,还是3 返回主菜单 返回上一层退出按作者查找模块流程图注:由于按登录号、书名、作者名、分类号、出版单位、出版时间和价格等查询图书信息具有相似的编码,本程序为方便起见,
5、仅编入了按书名和作者名查找功能。34修改和删除模块需求分析 该模块的功能是修改或删除图书纪录信息并且覆盖原有图书信息。流程图删除或修改模块 用户作出选择,输入一整型数值 调用删除或修改函数,调用读取函数用户输入修改或删除信息用户作出选择,输入1或2或31,2或3 2. 返回1.确认 3.返回上一层插入模块流程图4数据结构及算法设计4.1 主函数程序int main() int re=1,t,j=0;int n,choice; while(re=1) t=1;system(cls); printf( *n);printf( 主菜单 nn); printf( 1.录入信息n); printf( 2
6、.查看信息n); printf( 3.查询信息n); printf( 4.删除与修改信息n);printf( 5.退出n);printf( *); printf(n);if(j=1) printf(nt选择错误!); printf(nt请选择1-5: _bb); scanf(%d,&choice); switch(choice)case 1:printf(nt1: 录入信息n); input(); printf(n t1.返回主菜单;nt 2.退出 ntt请选择: _bb);scanf(%d,&re); break; case 2: printf(nt2.查看信息n); output(); p
7、rintf(nt 1.返回主菜单;nt 2.退出ntt请选择: _bb);scanf(%d,&re); break; case 3:while(t=1)printf(nt3.查询信息n); printf(nt 请选择查询方式:nt 1.按书名nt 2.按作者名nt 3.其余任意数字键返回主菜单 _bb); scanf(%d,&n); if(n=1)book_name(); else if(n=2) author_name(); else re=1; goto lebel; printf(nt 1.返回上一层;nt 2.返回主菜单;nt 3.退出 nt 请选择: _bb); scanf(%d,&
8、t);if(t=1) system(cls); if(t=2) re=1; if(t=3) re=0; lebel: break;case 4:while(t=1|f=1)printf(nt4.删除与修改信息n); printf(nt 请选择:nt 1.删除信息;nt 2.修改信息n t 3.其余任意数字键返回主菜单 _bb); scanf(%d,&n); if(n=1)delet(); else if(n=2)modify(); else re=1; goto lebe; printf(nt 1.返回上一层;nt 2.返回主菜单;nt 3.退出 ntt 请选择: _bb); scanf(%d
9、,&t); if(t=1)system(cls); if(t=2) re=1; if(t=3) re=0; lebe: break; case 5:re=0; break; default:re=1;j=1;return 0;注:主函数为主菜单,采用选择语句。4.2各功能模块设计421输入模块在这里主要运用结构体的形式来输入保存图书的各种信息,包括图书的登录号、书名、作者名、分类号等等,因为图书的数目众多,因此采用结构体数组的形式。用结构体来存放图书信息:#define LEN sizeof(struct book)typedef struct book int sort;char book_
10、name15;char author_name15;int vert_number;char publish_unit15;char publish_time10;int price;B;B *P,*p1,boo;程序:void input() int result; int i; printf(tt要录入信息的书籍数量为: _本bb);scanf(%d,&num);if(num0) P=(B *)malloc(LEN * num);for(i=0;inum;i+) Pi.sort=i+1; printf(ntNO. %d,Pi.sort);printf(n); printf(t 请按序输入书
11、名,作者名,分类号,出版单位,出版时间,价格ntt );scanf(%s%s%d%s%s%d,Pi.book_name,Pi.author_name,&Pi.vert_number,Pi.publish_unit,Pi.publish_time,&Pi.price); printf(n); result=save(); if(result=0)printf( t录入信息失败!n);num = 0;if(result=1) printf( t成功录入信息!n);else num=0;printf( t输入错误!);422浏览模块程序:void output()int i;get();if(get
12、()=1) printf(ntt成功获取信息!n); for(i=0;inum;i+)printf(nttNO.t%dn,Pi.sort); printf(tt 书名 作者名 序列号 出版单位 出版时间 价格n); printf(tt %s %s %d %s %s %d,Pi.book_name,Pi.author_name,Pi.vert_number,Pi.publish_unit,Pi.publish_time,Pi.price); printf(n);else printf( t文件翻开错误!); 423查找模块4231按书名查找程序:void book_name()int i;int
13、 tag=0; char ch15;printf(t 请输入书名: _bb);scanf(%s,ch);if(get()=0)printf( t无法查询!);return;if(get()=1)for(i=0;inum;i+)if(strcmp(Pi.book_name,ch)=0)printf(ntt 排列号 书名 作者名 序列号 出版单位 出版时间 价格n);printf(tt %d %s %s %d %s %s %dn,Pi.sort,Pi.book_name, Pi.author_name,Pi.vert_number,Pi.publish_unit,Pi.publish_time,P
14、i.price); tag =1;if (tag = 0)printf(n t没有相关信息!n);4232按作者查找void author_name()int i;int tag=0; char ch15;printf(t 请输入作者名: _bb);scanf(%s,ch);if(get()=0)printf( t无法查询!);return;if(get()=1)for(i=0;inum;i+)if(strcmp(Pi.author_name,ch)=0)printf(ntt 排列号 书名 作者名 序列号 出版单位 出版时间 价格n);printf(tt %d %s %s %d %s %s %
15、dn,Pi.sort,Pi.book_name,Pi.author_name,Pi.vert_number,Pi.publish_unit,Pi.publish_time,Pi.price);tag =1;if (tag = 0)printf( t没有相关信息!);43公共函数431保存函数 int save()FILE *fp;int i,n=0,n1=0;if(fp=fopen(book.txt,w)=NULL)return 0;fprintf(fp,%dn,num);for(i=0;i0)P=(B *)malloc(LEN * num); for(i=0;i=1&n=num)for(i=
16、0;ibook_name); printf(tt作者名: _bb); scanf(%s,p1-author_name); printf(tt序列号: _bb); scanf(%d,&p1-vert_number); printf(tt出版单位: _bb); scanf(%s,p1-publish_unit); printf(tt出版时间: _bb); scanf(%s,p1-publish_time); printf(tt价格: _bb); scanf(%d,&p1-price); strcpy(Pi.book_name,p1-book_name); strcpy(Pi.author_name
17、,p1-author_name); Pi.vert_number=p1-vert_number; strcpy(Pi.publish_unit,p1-publish_unit); strcpy(Pi.publish_time,p1-publish_time); Pi.price=p1-price; y=0;z=1;else if(x=2) y=1;z=0; else y=0; f=1;elseprintf( t输入错误,请重新输入:);y=1;while(z=1)result=save(); if(result=0)printf(n t修改信息失败!n);z=0; if(result=1) p
18、rintf(n t成功修改信息!n);z=0; return;434删除函数void delet()int t,n,i,j,y=1;int result,z=0,x; t=get();if(t=0)printf(n t翻开文件错误,无法删除!);return;else while(y=1) printf(nt 您要删除信息的图书排列号为(1-%d): _bb,num); scanf(%d,&n); if(n=1&n=num)for(i=0;inum;i+)if(Pi.sort=n)printf(nt 您即将删除以下信息:n); printf(tt 排列号 书名 作者名 序列号 出版单位 出版时
19、间 价格n); printf(tt %d %s %s %d %s %s %d,Pi.sort,Pi.book_name, Pi.author_name,Pi.vert_number,Pi.publish_unit, Pi.publish_time,Pi.price); printf(nnt 确认请按1;返回请按2;返回上一层请按3 _bb); scanf(%d,&x); if(x=1)for(j=i;jnum-1;j+) strcpy(Pj.book_name,Pj+1.book_name); strcpy(Pj.author_name,Pj+1.author_name); Pj.vert_n
20、umber=Pj+1.vert_number; strcpy(Pj.publish_unit,Pj+1.publish_unit); strcpy(Pj.publish_time,Pj+1.publish_time); Pj.price=Pj+1.price; num=num-1; y=0; z=1; else if(x=2) y=1;else y=0;f=1;elseprintf( t输入错误,请重新输入:);y=1;while(z=1)result=save(); if(result=0)printf( nt删除信息失败!n);z=0;if(result=1) printf( nt成功删除
21、信息!n);z=0;return;5 程序代码及运行结果51 程序代码#include#include#include#define LEN sizeof(struct book)typedef struct book int sort;char book_name15;char author_name15;int vert_number;char publish_unit15;char publish_time10;int price;B;B *P,*p1,boo;int num=0,f=0;int save();void input();int get();void output();vo
22、id book_name();void author_name();void modify();void delet();int main() int re=1,t,j=0;int n,choice;while(re=1) t=1;system(cls); printf( *n);printf( 主菜单 nn); printf( 1.录入信息n); printf( 2.查看信息n); printf( 3.查询信息n); printf( 4.删除与修改信息n);printf( 5.退出n);printf( *); printf(n);if(j=1) printf(nt选择错误!); printf
23、(nt请选择1-5: _bb); scanf(%d,&choice); switch(choice)case 1:printf(nt1: 录入信息n); input();printf(n t1.返回主菜单;nt 2.退出 ntt请选择: _bb);scanf(%d,&re); break; case 2: printf(nt2.查看信息n); output();printf(nt 1.返回主菜单;nt 2.退出ntt请选择: _bb);scanf(%d,&re); break; case 3:while(t=1)printf(nt3.查询信息n); printf(nt 请选择查询方式:nt 1
24、.按书名nt 2.按作者名nt 3.其余任意数字键返回主菜单 _bb); scanf(%d,&n); if(n=1)book_name(); else if(n=2) author_name(); else re=1; goto lebel; printf(nt 1.返回上一层;nt 2.返回主菜单;nt 3.退出 nt 请选择: _bb); scanf(%d,&t);if(t=1)system(cls); if(t=2) re=1; if(t=3) re=0; lebel: break;case 4:while(t=1|f=1)printf(nt4.删除与修改信息n); printf(nt
25、请选择:nt 1.删除信息;nt 2.修改信息n t 3.其余任意数字键返回主菜单 _bb); scanf(%d,&n); if(n=1)delet(); else if(n=2)modify(); else re=1; goto lebe; printf(nt 1.返回上一层;nt 2.返回主菜单;nt 3.退出 ntt 请选择: _bb); scanf(%d,&t); if(t=1)system(cls); if(t=2) re=1; if(t=3) re=0; lebe: break;case 5:re=0; break;default:re=1;j=1;return 0;int save()FILE *fp;int i,n=0,n1=0;if(fp=fopen(book.txt,w)=NULL)return 0;fprintf(fp,%dn,num);for(i=0;inum;i+)fprintf(fp,%d %s %s %d %s %s %