C语言课程设计报告图书信息管理系统设计55071-13陈杰20071001797指导老师:刘文中C语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。使之提供以下功能:(1)系统以菜单方式工作。(2)图书信息录入功能。(图书信息用文件保存)。(3)图书信息浏览功能。(4)图书信息查询功能。(5)图书信息的删除和修改。2、分析:根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。3、总体设计:根据题目要求,可以将系统分为六个模块:(1)管理员登录系统模块。(2)菜单选择模块。(3)图书信息录入功能模块。(4)图书信息浏览功能。(5)图书信息查询功能。(6)图书信息的删除和修改。第1页管理员登录系统模块菜单选择模块。菜单选择模块。菜单选择模块。菜单菜单选择模块。(1)择模块。图书信息录入功能模块图书信息浏览功能模块图书信息查询功能模块图书信息的删除和修改图书信息管理系统4、详细设计:头函数名:#includestdio.h#includestdlib.h#includestring.h/*********图书信息结构体*********//***包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等***/structbookinf{intnum;******************************************************登录号charbname[20];***************************************书名charwname[10];***************************************作者名charclanum[14];***************************************分类号charpubcom[10];***************************************出版单位charpubtime[10];***************************************出版时间floatprice;*********************************************价格};一管理员登录系统模块:(1)来到图书信息管理系统页面voidindex(){charinput;注释:运行时printf(\n\n\t\t\t*****************************\n);直接进入printf(\t\t\t图书信息管理系统\n);这个页面printf(\t\t\t*****************************\n\n\n);printf(------------------------------------------------------------------------------\n);printf(\t按任意键进入\n\t);input=getchar();}(2)管理员登陆进入功能菜单页面第2页FILE*fp;structmanagepswd;if((fp=fopen(password.txt,r))==NULL){printf(\n\n\n\tCannotopenfile!\n\t);}else{do{printf(\n\n\t请输入管理员帐号:);scanf(%s,name);printf(\n\n\t请输入管理员密码:);scanf(%s,password);fp=fopen(password.txt,r);fread(&pswd,sizeof(structmanage),1,fp);fclose(fp);w=strcmp(pswd.manage_name,name);k=strcmp(pswd.password,password);adm_servelist();}while(w!=0||k!=0);adm_servelist();}}(3)来到功能菜单页面第3页开始输入管理员帐号和密码输入正确与否进入功能菜单页面结束Nvoidadm_servelist(){voidbook_add();voidbook_view();voidchange();voiddel();voidbook_search();voidlogin();voidpwchange();intin;注释:菜单列出的服务种类charinput;从1,2,3,4,5,6do所对应的功能进行选择{printf(\n\n\n\t--欢迎使用信息管理系统--);printf(\n\n\t1.图书信息录入\n);printf(\t2.图书信息浏览\n);printf(\t3.图书信息查询\n);printf(\t4.图书信息删除\n);printf(\t5.图书信息修改\n);printf(\t6.退出管理模式\n);printf(\n\t请选择服务种类:);scanf(%d,&in);if(in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6){printf(\n\t没有这项服务~\n);printf(\t按任意键重新选择);input=getchar();}}while(in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6);switch(in){case1:book_add();break;注释:选择自己所需要case2:book_view();break;后摁下数字键则case3:book_search();break;则进入此功能页面case4:del();break;case5:change();break;case6:login();break;}}(3)图书信息录入功能模块voidbook_add(){第4页voidadm_servelist();voidbook_add();inti=0,j;FILE*fp;charinput;注释:输入的图书信息structbookinfbooks;是通过文件进行structbookinfbook_taxis[30];保存的printf(\n\n\n\t---请输入图书信息---\n\n);printf(\t登录号:);scanf(%d,&books.num);printf(\n\t书名:);scanf(%s,books.bname);printf(\n\t作者名:);scanf(%s,books.wname);printf(\n\t分类号:);scanf(%s,books.clanum);printf(\n\t出版单位:);scanf(%s,books.pubcom);printf(\n\t出版时间:);scanf(%s,books.pubtime);printf(\n\t价格:);scanf(%f,&books.price);if((fp=fopen(book.txt,r))!=NULL){do{fread(&book_taxis[i],sizeof(structbookinf),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for(j=0;j=i;j++)if(books.num==book_taxis[j].num){printf(\n\n\n\t对不起,这个编号已经使用过了~\n);printf(\t按任意键返回管理菜单~);input=getchar();adm_servelist();break;}}if((fp=fopen(book.txt,r))==NULL){第5页fp=fopen(book.txt,w);}else{fclose(fp);fp=fopen(book.txt,a);}fwrite(&books,sizeof(structbookinf),1,fp);fclose(fp);printf(\n\n\n\t信息输入完毕~按任意键继续\n);input=getchar();adm_servelist();}(4)图书信息浏览功能模块voidbook_view(){voidadm_servelist();voidbook_view();intinp,i=0,n=0;FILE*fp;charinput;structbookinfbookview[20];if((fp=fopen(book.txt,r))==NULL){printf(\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n);printf(\n\t按任意键返回管理菜单\n\t);input=getchar();adm_servelist();}else{do{fread(&bookview[i],sizeof(structbookinf),1,fp);i=i+1;}while(!feof(fp));fclose(fp);do{printf(\n\t--------共有%d条记录--------,i-1);printf(\n\n\t登录号:%d\n,bookview[n].num);第6页printf(\n\t书名:%s\n,bookview[n].bname);printf(\n\t作者名:%s\n,bookview[n].wname);printf(\n\t分类号:%s\n,bookview[n].clanum);printf(\n\t出版单位:%s\n,bookview[n].pubcom);printf(\n\t出版时间:%s\n,bookview[n].pubtime);printf(\n\t价格:%f\n,bookview[n].price);printf(\n\n\t1.上一页\t2.下一页\t3.回目录\n);printf(\n\t请选择:);scanf(%d,&inp);switch(inp){case1:{if(n==0){printf(\n\t已到达首页\n\t按任意键重新选择);input=getchar();}elsen=n-1;break;}case2:{if(n==i-2){printf(\n\t已到达最末页\n\t按任意键重新选择);input=getchar();}elsen=n+1;break;}case3:{adm_servelist();break;}default:{printf(\n\t没有这项服务\n\t按任意键重新选择);input=getchar();}}}while(inp!=3);第7页}}(5)图书信息修改与删除功能模块修改:voidchange(intx){intinp,i=0,j;voidbook_search();FILE*fp,*fp1;charinput;structbookinfbooks,book_taxis[20];do{printf(\n\n\n\t注意:您确定要修改该记录吗?\n);printf(\n\t1.是\t2.否\n);printf(\n\t请输入:);scanf(%d,&inp);if(inp!=1&&inp!=2){printf(\n\t对不起~没有这项服务~\n);printf(\t按任意键重新选择\n\t);input=getchar();}}while(inp!=1&&inp!=2);if(inp==2)book_