C语言专业课程设计方案报告图书信息标准管理系统.doc
C语言课程设计汇报图书信息管理系统设计55071-13陈 杰1001797指导老师:刘文中 C 语言程序设计编程实践是学习C语言程序设计一关键步骤,上机实习和课程设计是提升同学们程序设计能力有效路径,能够使同学们初步掌握程序设计基础方法和调试技能。学校安排上机时间有限,老师也只能教给我们部分方法,而我们自己需要投入很大时间和精力来锻炼。1、题目要求设计“图书信息管理系统”要求:图书信息包含:登录号,书名,作者名,分类号,出版单位,出版时间,价格等。使之提供以下功效:(1) 系统以菜单方法工作。(2) 图书信息录入功效。(图书信息用文件保留)。(3) 图书信息浏览功效。(4) 图书信息查询功效。(5) 图书信息删除和修改。2、分析:依据题目要求,应该把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功效操作,所以需要建立对应模块来实现;另外还需提供键盘式选择菜单实现功效,在运行时达成所要目标。3、总体设计: 依据题目要求,能够将系统分为六个模块:(1) 管理员登录系统模块。(2) 菜单选择模块。(3) 图书信息录入功效模块。(4) 图书信息浏览功效。(5) 图书信息查询功效。(6) 图书信息删除和修改。 第1页管理员登录系统模块菜单选择模块。菜单选择模块。菜单选择模块。菜单菜单选择模块。(1) 择模块。图书信息录入功效模块图书信息浏览功效模块图书信息查询功效模块图书信息删除和修改图书信息管理系统4、具体设计:头函数名:#include<stdio.h>#include<stdlib.h>#include<string.h>/*图书信息结构体*/*包含登录号,书名,作者名,分类号,出版单位,出版时间,价格等*/struct bookinf int num; *登录号 char bname20;* 书名 char wname10;* 作者名 char clanum14;* 分类号 char pubcom10;* 出版单位 char pubtime10;* 出版时间 float price;* 价格;一管理员登录系统模块:(1) 来到图书信息管理系统页面void index() char input; 注释:运行时 printf("nnttt*n"); 直接进入 printf("ttt 图书信息管理系统n"); 这个页面 printf("ttt*nnn"); printf(" -n"); printf("t<按任意键进入>nt"); input=getchar(); (2) 管理员登陆进入功效菜单页面第2页 开始输入管理员帐号和密码输入正确是否进入功效菜单页面结束NFILE *fp;struct manage pswd; if (fp=fopen("password.txt","r")=NULL) printf("nnntCannot open file!nt"); else do printf("nnt请输入管理员帐号:"); scanf("%s",name); printf("nnt请输入管理员密码:"); scanf("%s",password); fp=fopen("password.txt","r"); fread(&pswd,sizeof(struct manage),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页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,6 do 所对应功效进行选择 printf("nnnt-欢迎使用信息管理系统-"); printf("nnt1.图书信息录入n"); printf("t2.图书信息浏览n"); printf("t3.图书信息查询n"); printf("t4.图书信息删除n"); printf("t5.图书信息修改n"); printf("t6.退出管理模式n"); printf("nt请选择服务种类:"); scanf("%d",&in); if (in!=1&&in!=2&&in!=3&&in!=4&&in!=5&&in!=6) printf("nt没有这项服务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_taxis30; 保留 printf("nnnt-请输入图书信息-nn"); printf("t登录号:"); scanf("%d",&books.num); printf("nt书名:"); scanf("%s",books.bname); printf("nt作者名:"); scanf("%s",books.wname); printf("nt分类号:"); scanf("%s",books.clanum); printf("nt出版单位:"); scanf("%s",books.pubcom); printf("nt出版时间:"); scanf("%s",books.pubtime); printf("nt价格:"); scanf("%f",&books.price); if (fp=fopen("book.txt","r")!=NULL) do fread(&book_taxisi,sizeof(struct bookinf),1,fp); i=i+1; while(!feof(fp); fclose(fp); for (j=0;j<=i;j+) if (books.num=book_taxisj.num) printf("nnnt对不起,这个编号已经使用过了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(struct bookinf),1,fp); fclose(fp); printf("nnnt信息输入完成按任意键继续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 bookview20; if (fp=fopen("book.txt","r")=NULL) printf("nnnt数据还未初始化nnt请在管理菜单中增加图书信息n"); printf("nt<按任意键返回管理菜单>nt"); input=getchar(); adm_servelist(); else do fread(&bookviewi,sizeof(struct bookinf),1,fp); i=i+1; while (!feof(fp); fclose(fp); do printf("nt-共有%d条统计-",i-1); printf("nnt登录号: %dn",bookviewn.num); 第6页printf("nt书名: %sn",bookviewn.bname); printf("nt作者名: %sn",bookviewn.wname); printf("nt分类号: %sn",bookviewn.clanum); printf("nt出版单位: %sn",bookviewn.pubcom); printf("nt出版时间: %sn",bookviewn.pubtime); printf("nt价格: %fn",bookviewn.price); printf("nnt1.上一页t2.下一页t3.回目录n"); printf("nt请选择:"); scanf("%d",&inp); switch (inp) case 1: if (n=0) printf("nt已抵达首页nt按任意键重新选择"); input=getchar(); else n=n-1; break; case 2: if (n=i-2) printf("nt已抵达最末页nt按任意键重新选择"); input=getchar(); else n=n+1; break; case 3: adm_servelist(); break; default: printf("nt没有这项服务nt按任意键重新选择"); 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_taxis20; do printf("nnnt注意:您确定要修改该统计吗?n"); printf("nt1.是t2.否n"); printf("nt请输入:"); scanf("%d",&inp); if (inp!=1&&inp!=2) printf("nt对不起没有这项服务n"); printf("t按任意键重新选择nt"); input=getchar(); while (inp!=1&&inp!=2); if (inp=2) book_search(); if (inp=1) printf("nnnt-请输入图书信息-nn"); printf("t登录号:"); scanf("%d",&books.num); printf("nt书名:"); scanf("%s",books.bname); printf("nt作者名:"); scanf("%s",books.wname); printf("nt分类号:"); scanf("%s",books.clanum); printf("nt出版单位:"); scanf("%s",books.pubcom); printf("nt出版时间:"); scanf("%s",books.pubtime); 第8页printf("nt价格:"); scanf("%f",&books.price); if (fp1=fopen("book.txt","r")!=NULL) do fread(&book_taxisi,sizeof(struct bookinf),1,fp1); i=i+1; while(!feof(fp1); fclose(fp1); for (j=0;j<x;j+) if (books.num=book_taxisj.num) printf("nnnt对不起,这个编号已经使用过了n"); printf("t按任意键返回管理菜单"); printf("0"); input=getchar(); book_search(); break; for (j=x+1;j<i-2;j+) if (books.num=book_taxisj.num) printf("nnnt对不起,这个编号已经使用过了n"); printf("1"); printf("t按任意键返回管理菜单"); input=getchar(); book_search(); break; book_taxisx=books; fp=fopen("book.txt","w"); for (j=0;j<i-1;j+) fwrite(&book_taxisj,sizeof(struct bookinf),1,fp); fclose(fp); printf("nnt信息修改完成!按任意键返回"); input=getchar(); book_search(); 第9页S删除:void del(int y) char input; FILE *fp; int inp,i=0,j; struct bookinf book_taxis20; void book_search(); void adm_servelist(); do printf("nnnt注意:您确定要删除该统计吗?n"); printf("nt1.是t2.否n"); printf("nt请输入:"); scanf("%d",&inp); if (inp!=1&&inp!=2) printf("nt对不起没有这项服务n"); printf("t按任意键重新选择nt"); input=getchar(); while (inp!=1&&inp!=2); if (inp=2) book_search(); if (inp=1) if (fp=fopen("book.txt","r")!=NULL) do fread(&book_taxisi,sizeof(struct bookinf),1,fp); i=i+1; while(!feof(fp); fclose(fp); if (i>2) fp=fopen("book.txt","w"); 第10页 for (j=0;j<y;j+) fwrite(&book_taxisj,sizeof(struct bookinf),1,fp); fclose(fp); fp=fopen("book.txt","a"); for (j=y+1;j<i-1;j+) fwrite(&book_taxisj,sizeof(struct bookinf),1,fp); fclose(fp); else remove("book.txt"); printf("nnt统计已删除!nnt按任意键返回nt"); 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("book.txt","r")=NULL) printf("nnnt数据还未初始化nnt请在管理菜单中增加图书信息n"); printf("nt<按任意键返回管理菜单>nt"); input=getchar(); adm_servelist(); else do printf("nnnt1.按图书登录号查询n"); printf("nt2.按图书作者查询n"); 第11页printf("nt3.按图书名查询n"); printf("nt4.回到主菜单n"); printf("nnt请选择查询类别:"); scanf("%d",&inp); if (inp!=1&&inp!=2&&inp!=3&&inp!=4) printf("nnt没有这项服务nt按任意键重新选择"); 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页三 后记/课程设计过程中碰到问题和处理方法,课程设计体会。这次课程设计让我掌握了很多有用知识。首先经过不停地学习和锻炼愈加熟练地掌握应用软件Microsoft Visual C+ 6.0 了。设计正确及适宜程序对于我们初学者来说是很大难题,出现一丁点儿错误就得非很大努力去修改,正式者一步步一点点努力让我对C语言游乐更深认识。同时我掌握了处理问题方法,这不管是对以后学习、生活全部有没有比关键价值。在设计中,每个同学全部会碰到部分困难,或多或少,这些困难常常让我心情烦躁,比如不能清楚建立设计模块,不会修改出现错误等等,然后我向同学寻求帮助,向她们学习,最终经过自己努力建立了模块。不可避免地程序中肯定仍然存在者一些问题,我期望在以后学习和应用中不停提升自己能力,攻克碰到困难。第14页