《最新C实习报告--图书信息管理系统设计.doc》由会员分享,可在线阅读,更多相关《最新C实习报告--图书信息管理系统设计.doc(69页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateC实习报告-图书信息管理系统设计C实习报告-图书信息管理系统设计C 语 言 课 程 实 习 报 告所 在 院 系 :数学与物理学院班 级 学 号 : 121091 姓 名 : 程序 已存档 : 指 导 老 师 :评 分 :二零一零年七月十五日图书信息管理系统设计一.题目要求 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系
2、统,使之能提供以下功能:1 系统以菜单方式工作2 图书信息录入功能(图书信息用文件保存)3 图书信息浏览功能4 图书信息查询功能5 图书信息的删除与修改(可选项)二.需求分析 根据题目要求,需建立图书信息结构体,结构体中应包括图书登录号、书名、作者名、分类号、出版单位、出版时间、价格。 图书信息应存放在文件中,所以提供文件的输入输出等操作;并且程序需具有实现图书信息浏览、查询、删除等功能,并可对图书信息进行选择性修改;另外还应提供键盘是选择菜单来实现功能选择。三.总体设计.图书信息管理系统系统结合上述分析该系统应包括以下模块:信息录入、信息查询、信息浏览、信息删除、信息修改。结构图如下信息浏览
3、信息删除信息修改信息查询信息录入四.详细设计1、 主函数开始主函数要求设计比较简洁,只提供设输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。 流程图结束根据n的值调用各功能模块函数显示一系列功能选项输入n,判断n是否是05? N Y程序Void main()int a;/*变量保存选择菜单数字,判断输入的数字是否在功能人能够菜单所对应的数字范围内*/menu: page_title(操作菜单); /*调用页眉打印函数*/printf(tt请用数字键选择操作nn); printf(tt1 图书信息录入nntt2 图书信息查询nn); printf(tt3 图书信息浏览nntt4 图
4、书信息修改nn); printf(tt5 图书信息删除nntt0 退出n);/*对功能选项的显示*/printf(nt选择使用功能种类(0-5) bb); scanf(%d,&a); if(a5) /*对选择的数字作判断*/ printf(t无该项功能,请重新选择:); scanf(%d,&a); /*实现选择功能*/ switch(a) case 1 : book_luru();break; case 2 : book_search();break; case 3 : book_scan();break; case 4 : book_modify();break; case 5 : book
5、_del();break; case 0 : exit(0); break; /*以上完成了主函数计主菜单的构成*/2数据结构 根据题目中对数据结构的要求每一本图书包含的信息利用一个结构体来存放。其中结构体需包含 :字符变量:书名、作者、出版单位实型变量:价格整型变量:图书登录号、分类号、出版时间定义结构体如下struct BOOK int id,kind,out_time; float price;char name50,author25,out_place300; booksN; /*booksN中每个数组元素对应一本书的全部信息*/*以上完成了对于结构体的定义*/注意 本程序booksN
6、中的个数,采取宏定义的方式,可以随时在源程序宏定义中更改,本程序在此宏定义#define N 1000。3.录入模块 需求分析该模块的功能是假如用户需要新加入新图书的信息,通过文件指针将已存在二进制文件上的新图书的信息录入图书信息管理系统。输入图书信息流程图保存信息 保存不成功 提示保存不成功 保存 成功使指针不在指向文件提示返回主菜单程序void book_luru()int i; FILE *fp; page_title(图书信息录入); printf(t输入图书的登录号、书名、作者名、分类号、出版单位、出版时间、价格:nt);for(i=0;iSIZE;i+)scanf(%d%s%s%d
7、%s%d%f,&booksi.id,booksi.name,booksi.author,&booksi.kind,booksi.out_place,&booksi.out_time,&booksi.price); /*信息录入*/ if(fp=fopen(book_imf,wb)=NULL)printf(tcannot open filen); return_confirm(); return;for(i=0;iSIZE;i+)if(fwrite(&booksi,sizeof(struct BOOK),1,fp)!=1) /*信息保存*/printf(tfile write errorn);
8、fclose(fp); /*信息保存完成后关闭文件*/ return_confirm();return;printf(t成功录入并保存%d本图书的信息,SIZE);return_confirm();注意 SIZE是录入新图书信息的数目,可以采用宏定义的方式,可以随时在源程序宏定义中更改,本程序在此宏定义#define SIZE 3。4.查询模块需求分析该模块的功能是根据输入的图书分类号查找相应图书的记录流程图输入查询图书名称 是否有该图书记录 Y N提示没有找到显示找到的记录 Y询问用户是否继续查询 N提示是否返回主菜单 程序 void book_search() int n,t,i=0,a;
9、 page_title(图书信息查询); /*调用页眉打印函数*/abc:printf(t请输入图书分类号:); scanf(%d,&t); for(n=0;nN;n+) if(booksn.kind=t) printf(t书名:%sn,booksn.name); i+;/*查找并显示图书*/if(i=0) printf(t此类书不存在.);printf(t是否继续查询:1.是 2.否 );scanf(%d,&a);switch(a)case 1: goto abc; case 2: return_confirm();/*调用返回函数*/5.浏览模块需求分析 该模块用于显示某本图书所有的信息,
10、根据所输入的图书名查找并显示图书的信息。流程图输入图书名称查找图书是否存在 N Y提示不存在显示图书信息提示返回主菜单提示是否继续浏览 Y N程序void book_scan() int n,a,i=0; char bookname50;page_title(图书信息浏览); /*调用页眉打印函数*/ab:printf(t请输入书名:); scanf(%s,bookname); for(n=0;nN;n+) if(strcmp(booksn.name,bookname)=0) printf(t登录号:%dn,booksn.id); printf(t书名:%sn,booksn.name); pr
11、intf(t作者:%sn,booksn.author); printf(t分类号:%sn,booksn.kind); printf(t价格:%.2fn,booksn.price); printf(t出版单位:%sn,booksn.out_place); printf(t出版时间:%sn,booksn.out_time); i+; /*i记录书的本数*/ if(i=0) printf(t此书不存在.n);printf(t是否继续浏览:1.是 2.否 );scanf(%d,&a);switch(a)case 1: goto ab; /*用goto语句继续浏览*/ case 2: return_co
12、nfirm();/*调用返回函数*/6.修改模块需求分析 该模块用于显示某本图书所有的信息,以便进行选择性修改。显示完所有信息后,用户需输入信息编号进而进行修改图书信息流程图输入图书名称是否找到该图书记录 N Y显示图书所有信息,确定哪个需要修改提示不存在输入需修改的图书信息的编号 输入正确 输入错误提示重新输入编号输入修改信息提示返回主菜单 N是否确定修改Y 显示查找到的记录调用修改函数程序void book_modify() /*修改模块*/ int n,c,d,i=0; char bookname50;page_title(图书信息修改); printf(t请输入书名:); scanf(
13、%s,bookname); for(n=0;nnn 1).登录号 2).书名 3).作者 4).分类号 5).价格 6.出版单位 7.出版时间 8.取消修改并返回; printf(twhich you needed?: bb); scanf(%d,&c); /*选择修改项*/ if(c8) puts(ntchoice error! please choose again! ); while(c8); /*do while语句实现重新选择修改项*/ doswitch(c) case 1:printf(t登录号:); scanf(%d,&booksn.id); break; case 2: pri
14、ntf(t书名:); scanf(%s,&booksn.name); break; case 3: printf(t作者:); scanf(%s,&booksn.author); break; case 4: printf(t分类号:); scanf(%d,&booksn.kind); break; case 5: printf(t价格:); scanf(%.2f,&booksn.price); break; case 6:printf(t出版单位:); scanf(%s,&booksn.out_place);break; case 7: printf(t出版时间:); scanf(%s,&b
15、ooksn.out_time);break; printf(ntare you sure?nnt1).sure 2).No and remodify bb);scanf(%d,&d); /*提示是否确定修改*/ while(d=2); /*do while语句实现重新输入修改信息*/ printf(tmodify successfully);i+; return_confirm();/*调用返回函数*/if(i=0) printf(t此书不存在.n); return_confirm();/*提示此书不存在并返回*/7.删除模块需求模块 该模块用于删除某本图书的所有信息,根据输入的书名查找并显示
16、书的信息,再确定是否删除。输入图书名称流程图 查找是否有该图书记录 Y N显示该图书信息返回主菜单显示查找到的记录调用修改函数显示查找到的记录调用修改函数提示没有找到 确定是否删除 N 提示是否返回主菜单 Y提示删除成功程序void book_del() /*删除模块*/ int n,i=0; char bookname50;page_title(图书信息删除); printf(t请输入书名:); scanf(%s,bookname); for(n=0;nN;n+) if(strcmp(booksn.name,bookname)=0) /*用strcmp函数查找*/printf(t登录号:%d
17、n,booksn.id); printf(t书名:%sn,booksn.name); printf(t作者:%sn,booksn.author); printf(t分类号:%sn,booksn.kind); printf(t价格:%.2fn,booksn.price); printf(t出版单位:%sn,booksn.out_place); printf(t出版时间:%sn,booksn.out_time); /*显示该书信息*/ printf(tare you sure to delete the book? 1)yes 2)no ); /*确定是否删除删除*/ scanf(%d,&a);
18、i+; if(a=1) for(;n图 书 信 息 管 理 系 统 nntttt* %s *nn,menu_item); 2) 返回主菜单函数说明 /*该函数用于返回主菜单。*/程序void return_confirm() int a;printf(n是否返回主菜单? 1.yes 2.no ); scanf(%d,&a);switch(a)case 1: return; case 2: exit(0); 五.程序运行情况1) 主菜单 程序运行后出现主菜单(如下图)2) 图书信息录入页面 在主菜单中选择数字键1,进入信息录入页面,输入图书信息3) 图书信息查询页面 在主菜单中选择数字键2,进入
19、信息查询页面,输入图书分类号进行查询4) 图书信息浏览页面 在主菜单中选择数字键3,进入信息浏览页面,输入图书名称进行查找浏览5) 图书信息修改页面 在主菜单中选择数字键4,进入信息修改页面,输入图书名称进行查询并显示图书信息,然后选择需要修改的信息编号进行修改6) 图书信息删除页面 在主菜单中选择数字键5,进入信息删除页面,输入图书名称进行查询并显示图书信息,然后确定是否删除该图书信息六.实习心得C语言是一门很适用的计算机语言。通过暑期为期一周的实习,我学到了不少东西,同时也意识到了自己不足。在这几天的上机实习中,我充分体验到逻辑思维对程序设计者的重要性,同时有锻炼了自己的能力,让自己在以后
20、编程序时能有很好的逻辑思考的习惯,这会让我在以后受益颇多。这几天的温度不高,大家坐在机房里一起实习感觉还不错,我相信这次实习将成为大学生活的一段美好的回忆。程序源代码:#include #include #include #define N 1000#define SIZE 3struct BOOK int id,kind,out_time; float price;char name50,author25,out_place300; booksN; /*上面是结构体的定义,用于存放图书的信息。*/ void page_title(char *menu_item) system(cls);pr
21、intf(nttt 图 书 信 息 管 理 系 统 nntttt* %s *nn,menu_item); /*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/ void return_confirm() int a;printf(nt是否返回主菜单? 1.yes 2.no ); scanf(%d,&a);switch(a)case 1: return; case 2: exit(0); /*上面是返回前请求确认的函数,以便在返回前观察结果*/ void book_luru()int i; FILE *fp; page_title(图书信息录入); printf(t
22、输入图书的登录号、书名、作者名、分类号、出版单位、出版时间、价格:n);for(i=0;iSIZE;i+)scanf(%d%s%s%d%s%d%f,&booksi.id,booksi.name,booksi.author, &booksi.kind,booksi.out_place,&booksi.out_time,&booksi.price);if(fp=fopen(book_imf,wb)=NULL)printf(tcannot open filen); return_confirm(); return;for(i=0;iSIZE;i+)if(fwrite(&booksi,sizeof(s
23、truct BOOK),1,fp)!=1)printf(file write errorn); fclose(fp); return_confirm();return;printf(t成功录入并保存%d本图书的信息,SIZE);return_confirm();/*上面是图书信息录入的函数*/void book_search() int n,t,j,i=0,a; FILE *fp;page_title(图书信息查询); if(fp=fopen(book_imf,rb)=NULL)printf(tcannot open filen); return_confirm(); return;for(j
24、=0;jSIZE;j+)fread(&booksj,sizeof(struct BOOK),1,fp);fclose(fp);abc:printf(t请输入图书分类号:); scanf(%d,&t); for(n=0;nN;n+) if(booksn.kind=t) printf(t书名:%sn,booksn.name); i+;if(i=0) printf(此类书不存在.);printf(t是否继续查询:1.是 2.否 );scanf(%d,&a);switch(a)case 1: goto abc; case 2: return_confirm(); /*上面是图书信息查询的函数*/ vo
25、id book_scan() int n,a,j,i=0; char bookname50;FILE *fp;page_title(图书信息浏览); if(fp=fopen(book_imf,rb)=NULL)printf(tcannot open filen); return_confirm(); return;for(j=0;jN;j+)fread(&booksj,sizeof(struct BOOK),1,fp);fclose(fp);ab:printf(t请输入书名:); scanf(%s,bookname); for(n=0;nN;n+) if(strcmp(booksn.name,
26、bookname)=0) printf(t登录号:%dn,booksn.id); printf(t书名:%sn,booksn.name); printf(t作者:%sn,booksn.author); printf(t分类号:%dn,booksn.kind); printf(t价格:%.2fn,booksn.price); printf(t出版单位:%sn,booksn.out_place); printf(t出版时间:%dn,booksn.out_time); i+; if(i=0) printf(t此书不存在.n);printf(t是否继续浏览:1.是 2.否 );scanf(%d,&a)
27、;switch(a)case 1: goto ab; case 2: return_confirm(); /*上面是图书信息浏览的函数*/ void book_modify() int n,c,b,j,i=0; char bookname50;FILE *fp;page_title(图书信息修改); if(fp=fopen(book_imf,rb)=NULL)printf(tcannot open filen); return_confirm(); return;for(j=0;jN;j+)fread(&booksj,sizeof(struct BOOK),1,fp);fclose(fp);p
28、rintf(t请输入书名:); scanf(%s,bookname); for(n=0;nnn 1).登录号 2).书名 3).作者 4).分类号 5).价格 6).出版单位 7).出版时间 8).取消修改并返回); printf(ntwhich you needed?: bb); scanf(%d,&c); if(c8) puts(ntchoice error! please choose again! ); while(c8); doswitch(c) case 1:printf(登录号:); scanf(%d,&booksn.id); break; case 2: printf(书名:)
29、; scanf(%s,&booksn.name); break; case 3: printf(作者:); scanf(%s,&booksn.author); break; case 4: printf(分类号:); scanf(%d,&booksn.kind); break; case 5: printf(价格:); scanf(%.2f,&booksn.price); break; case 6: printf(出版单位:); scanf(%s,&booksn.out_place);break; case 7: printf(出版时间:); scanf(%d,&booksn.out_tim
30、e);break; printf(ntAre you sure?nnt1).sure 2).No and remodify bb); scanf(%d,&b); while(b=2); printf(tmodify successfully);i+; if(i=0) printf(t此书不存在.n);if(fp=fopen(book_imf,wb)=NULL)printf(tcannot open filen); return_confirm(); return;for(j=0;jN;j+)fwrite(&booksj,sizeof(struct BOOK),1,fp);fclose(fp);
31、 return_confirm();/*上面是图书信息修改的函数*/ void book_del() int n,a,j,i=0; char bookname50;FILE *fp;page_title(图书信息删除);if(fp=fopen(book_imf,rb)=NULL)printf(tcannot open filen); return_confirm(); return;for(j=0;jN;j+)fread(&booksj,sizeof(struct BOOK),1,fp);fclose(fp); printf(t请输入书名:); scanf(%s,bookname); for(
32、n=0;nN;n+) if(strcmp(booksn.name,bookname)=0) printf(t登录号:%dn,booksn.id); printf(t书名:%sn,booksn.name); printf(t作者:%sn,booksn.author); printf(t分类号:%dn,booksn.kind); printf(t价格:%.2fn,booksn.price); printf(t出版单位:%sn,booksn.out_place); printf(t出版时间:%dn,booksn.out_time); printf(tare you sure to delete th
33、e book? 1)yes 2)no ); scanf(%d,&a); i+; if(a=1) for(;nN-1;n+) booksn=booksn+1;printf(t该书已注销.n);if(i=0) printf(t此书不存在.n);if(fp=fopen(book_imf,wb)=NULL)printf(tcannot open filen); return_confirm(); return;for(j=0;jN-1;j+)fwrite(&booksj,sizeof(struct BOOK),1,fp);fclose(fp); return_confirm(); /*上面是图书信息删除的函数*/ void main() int a;menu: page_title(操作菜单); printf(tt请用数字键选择操作nn); printf(tt1 图书信息录入nntt2 图