课程设计报告课程名称C语言课程设计课题名称图书信息管理系统专业土木工程班级1083班学号201013170307姓名杨赟指导教师陈世清扬子华罗敬2011年8月29日湖南工程学院课程设计任务书课程名称C课程设计课题图书信息管理系统专业班级土木工程1083班学生姓名杨赟学号201013170307指导老师陈世清郭芳审批任务书下达日期2011年8月29日任务完成日期2011年9月4日C语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。使之提供以下功能:(1)系统以菜单方式工作。(2)图书信息录入功能。(图书信息用文件保存)。(3)图书信息浏览功能。(4)图书信息查询功能。(5)图书信息的删除和修改。2、分析:根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。3、总体设计:根据题目要求,可以将系统分为六个模块:(1)管理员登录系统模块。(2)菜单选择模块。管理员登录系统模块图书信息录入功能模块图书信息浏览功能模块图书信息查询功能模块图书信息的删除和修改图书信息管理系统菜单选择模块。菜单选择模块。菜单选择模块。菜单菜单选择模块。(1)择模块。(3)图书信息录入功能模块。(4)图书信息浏览功能。(5)图书信息查询功能。(6)图书信息的删除和修改。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)管理员登陆进入功能菜单页面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);开始输入管理员帐号和密码输入正确与否进入功能菜单页面结束Nadm_servelist();}while(w!=0||k!=0);adm_servelist();}}(3)来到功能菜单页面voidadm_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(){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){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);}}(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)