当前位置:文档之家› C语言课程设计报告—图书信息管理系统

C语言课程设计报告—图书信息管理系统

C语言课程设计报告图书信息管理系统设计55071-13陈杰指导老师:刘文中C 语言程序设计编程实践是学习C语言程序设计的一重要环节,上机实习和课程设计是提高同学们程序设计能力的有效途径,能够使同学们初步掌握程序设计的基本方法和调试技能。

学校安排上机时间有限,老师也只能教给我们一些方法,而我们自己需要投入很大的时间和精力来锻炼。

1、题目要求设计“图书信息管理系统”要求:图书信息包括:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。

使之提供以下功能:(1)系统以菜单方式工作。

(2)图书信息录入功能。

(图书信息用文件保存)。

(3)图书信息浏览功能。

(4)图书信息查询功能。

(5)图书信息的删除和修改。

2、分析:根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。

3、总体设计:根据题目要求,可以将系统分为六个模块:(1)管理员登录系统模块。

(2)菜单选择模块。

(3)图书信息录入功能模块。

(4)图书信息浏览功能。

(5)图书信息查询功能。

(6)图书信息的删除和修改。

第1页4、详细设计:头函数名:#include<>#include<>#include<>/*********图书信息结构体*********//***包括登录号,书名,作者名,分类号,出版单位,出版时间,价格等***/struct bookinf{ int num; ******************************************************登录号char bname[20];*************************************** 书名char wname[10];*************************************** 作者名char clanum[14];*************************************** 分类号char pubcom[10];*************************************** 出版单位char pubtime[10];*************************************** 出版时间float price;********************************************* 价格};一管理员登录系统模块:(1)来到图书信息管理系统页面void index(){char input; 注释:运行时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;struct manage pswd;if ((fp=fopen("","r"))==NULL){printf("\n\n\n\tCannot open file!\n\t");}else {do{printf("\n\n\t请输入管理员帐号:");scanf("%s",name);printf("\n\n\t请输入管理员密码:");scanf("%s",password);fp=fopen("","r");fread(&pswd,sizeof(struct manage),1,fp);fclose(fp);w=strcmp,name);k=strcmp,password);adm_servelist();}while (w!=0||k!=0);adm_servelist();}(3)来到功能菜单页面第3页void adm_servelist(){void book_add();void book_view();void change();void del();void book_search();void login();void pwchange();int in; 注释:菜单列出的服务种类char input; 从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){case 1: book_add(); break; 注释:选择自己所需要 case 2: book_view(); break; 后摁下数字键则 case 3: book_search(); break; 则进入此功能页面 case 4: del(); break;case 5: change();break;case 6: login(); break;}}(3)图书信息录入功能模块void book_add()第4页void adm_servelist();void book_add();int i=0,j;FILE *fp;char input; 注释:输入的图书信息 struct bookinf books; 是通过文件进行 struct bookinf book_taxis[30]; 保存的printf("\n\n\n\t---请输入图书信息---\n\n");printf("\t登录号:");scanf("%d",&;printf("\n\t书名:");scanf("%s",;printf("\n\t作者名:");scanf("%s",;printf("\n\t分类号:");scanf("%s",;printf("\n\t出版单位:");scanf("%s",;printf("\n\t出版时间:");scanf("%s",;printf("\n\t价格:");scanf("%f",&;if ((fp=fopen("","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp);i=i+1;}while(!feof(fp));fclose(fp);for (j=0;j<=i;j++)if ==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");input=getchar();adm_servelist();break;}}if ((fp=fopen("","r"))==NULL){第5页fp=fopen("","w");}else{fclose(fp);fp=fopen("","a");}fwrite(&books,sizeof(struct bookinf),1,fp);fclose(fp);printf("\n\n\n\t信息输入完毕~按任意键继续\n");input=getchar();adm_servelist();}(4)图书信息浏览功能模块void book_view(){void adm_servelist();void book_view();int inp,i=0,n=0;FILE *fp;char input;struct bookinf bookview[20];if ((fp=fopen("","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(struct bookinf),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){case 1:{if (n==0){printf("\n\t已到达首页\n\t按任意键重新选择");input=getchar();}else n=n-1; break;}case 2:{if (n==i-2){printf("\n\t已到达最末页\n\t按任意键重新选择"); input=getchar();}else n=n+1; break;}case 3:{adm_servelist();break;}default:{printf("\n\t没有这项服务\n\t按任意键重新选择"); input=getchar();}}}while (inp!=3);第7页}}(5)图书信息修改与删除功能模块修改:void change(int x){int inp,i=0,j;void book_search();FILE *fp,*fp1;char input;struct bookinf books,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_search();if (inp==1){printf("\n\n\n\t---请输入图书信息---\n\n");printf("\t登录号:");scanf("%d",&;printf("\n\t书名:");scanf("%s",;printf("\n\t作者名:");scanf("%s",;printf("\n\t分类号:");scanf("%s",;printf("\n\t出版单位:");scanf("%s",;printf("\n\t出版时间:");scanf("%s",;第8页printf("\n\t价格:");scanf("%f",&;if ((fp1=fopen("","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp1); i=i+1;}while(!feof(fp1));fclose(fp1);for (j=0;j<x;j++)if ==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("\t按任意键返回管理菜单~");printf("0");input=getchar();book_search();break;}for (j=x+1;j<i-2;j++)if ==book_taxis[j].num){printf("\n\n\n\t对不起,这个编号已经使用过了~\n");printf("1");printf("\t按任意键返回管理菜单~");input=getchar();book_search();break;}}book_taxis[x]=books;fp=fopen("","w");for (j=0;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);printf("\n\n\t信息修改完成!按任意键返回");input=getchar();book_search();第9页}}S删除:void del(int y){char input;FILE *fp;int inp,i=0,j;struct bookinf book_taxis[20];void book_search();void adm_servelist();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_search();if (inp==1){if ((fp=fopen("","r"))!=NULL){do{fread(&book_taxis[i],sizeof(struct bookinf),1,fp); i=i+1;}while(!feof(fp));fclose(fp);}if (i>2){fp=fopen("","w");第10页for (j=0;j<y;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp); fclose(fp);fp=fopen("","a");for (j=y+1;j<i-1;j++)fwrite(&book_taxis[j],sizeof(struct bookinf),1,fp);fclose(fp);}else{remove("");}printf("\n\n\t记录已删除!\n\n\t按任意键返回\n\t");input=getchar();adm_servelist();}}(6)图书信息查询功能模块void book_search(){void adm_servelist();void id_search();void wr_search();void bn_search();char input;FILE *fp;int inp;if ((fp=fopen("","r"))==NULL){printf("\n\n\n\t数据尚未初始化~~\n\n\t请在管理菜单中增加图书信息~~~\n"); printf("\n\t<按任意键返回管理菜单>\n\t");input=getchar();adm_servelist();}else{do{printf("\n\n\n\t1.按图书登录号查询\n");printf("\n\t2.按图书作者查询\n");第11页printf("\n\t3.按图书名查询\n");printf("\n\t4.回到主菜单\n");printf("\n\n\t请选择查询类别:");scanf("%d",&inp);if (inp!=1&&inp!=2&&inp!=3&&inp!=4){printf("\n\n\t没有这项服务~\n\t按任意键重新选择~");input=getchar();}}while (inp!=1&&inp!=2&&inp!=3&&inp!=4);fclose(fp);switch (inp){case 1: id_search(); break;case 2: wr_search(); break;case 3: bn_search(); break;case 4: adm_servelist(); break;}}}5运行与测试报告:第12页第13页三后记/课程设计过程中遇到的问题以及解决方法,课程设计的体会。

相关主题