1、 C语言课程设计汇报 图书信息管理系统设计 55071-13 陈 杰 1001797 指导老师:刘文中 C 语言程序设计 编程实践是学习C语言程序设计一关键步骤,上机实习和课程设计是提升同学们程序设计能力有效路径,能够使同学们初步掌握程序设计基础方法和调试技能。学校安排上机时间有限,老师也只能教给我们部分方法,而我们自己需要投入很大时间和精力来锻炼。 1、题目要求 设计“图书信息管理系统” 要求: 图书信息包含:登录号,书名,作者名,
2、分类号,出版单位,出版时间,价格等。使之提供以下功效: (1) 系统以菜单方法工作。 (2) 图书信息录入功效。(图书信息用文件保留)。 (3) 图书信息浏览功效。 (4) 图书信息查询功效。 (5) 图书信息删除和修改。 2、分析: 依据题目要求,应该把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功效操作,所以需要建立对应模块来实现;另外还需提供键盘式选择菜单实现功效,在运行时达成所要目标。 3、总体设计: 依据题目要求
3、能够将系统分为六个模块: (1) 管理员登录系统模块。 (2) 菜单选择模块。 (3) 图书信息录入功效模块。 (4) 图书信息浏览功效。 (5) 图书信息查询功效。 (6) 图书信息删除和修改。 第1页 管理员登录系统模块 菜单选择模块。 菜单选择模块。 菜单选择模块。 菜单菜单选择模块。 (1) 择模块。 图书信息录入功效模块 图书信息浏览功效模块 图书信息查询功效模块 图书信息删除和修改 图书信息管理系统
4、
4、具体设计:
头函数名:
#include
5、ar wname[10];*************************************** 作者名 char clanum[14];*************************************** 分类号 char pubcom[10];*************************************** 出版单位 char pubtime[10];*************************************** 出版时间 float price;************************************
6、 价格 }; 一管理员登录系统模块: (1) 来到图书信息管理系统页面 void index() { char input; 注释:运行时 printf("\n\n\t\t\t*****************************\n"); 直接进入 printf("\t\t\t 图书信息管理系统\n");
7、这个页面 printf("\t\t\t*****************************\n\n\n"); printf(" ------------------------------------------------------------------------------\n"); printf("\t<按任意键进入>\n\t"); input=getchar(); } (2) 管理员登陆进入功效菜单页面 第2页 开始 输入管理员帐号和密码 输入正确是否 进入功效菜单页面 结束 N FILE *fp; struct ma
8、nage pswd; if ((fp=fopen("password.txt","r"))==NULL) { printf("\n\n\n\tCannot open file!\n\t"); } else { do { printf("\n\n\t请输入管理员帐号:");
9、 scanf("%s",name); printf("\n\n\t请输入管理员密码:"); 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,
10、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;
11、 注释:菜单列出服务种类 char input; 从1,2,3,4,5,6 do 所对应功效进行选择 { printf("\n\n\n\t--欢迎使用信息管理系统--"); printf("\n\n\t1.图书信息录入\n");
12、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=g
13、etchar(); } } 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;
14、 则进入此功效页面 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;
15、 注释:输入图书信息 struct bookinf books; 是经过文件进行 struct bookinf book_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作者名:");
16、 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 {
17、 fread(&book_taxis[i],sizeof(struct bookinf),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_servel
18、ist(); 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("\n\n\n\t信息输入完
19、成~按任意键继续\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("book.txt","r"))==NULL) { printf("\n\n\n\t数据还未初始化~~\n\n\t请在管理菜单
20、中增加图书信息~~~\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);
21、 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
22、\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按任意键重新选择");
23、 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; }
24、 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]
25、 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_sear
26、ch(); if (inp==1) { 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出版单位:
27、"); scanf("%s",books.pubcom); printf("\n\t出版时间:"); scanf("%s",books.pubtime); 第8页 printf("\n\t价格:"); scanf("%f",&books.price); if ((fp1=fopen("book.txt","r"))!=NULL) { do { fread(&book_taxis[i],sizeof(struct boo
28、kinf),1,fp1);
i=i+1;
}
while(!feof(fp1));
fclose(fp1);
for (j=0;j 29、
break;
}
for (j=x+1;j 30、
fp=fopen("book.txt","w");
for (j=0;j 31、uct 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= 32、getchar();
}
}
while (inp!=1&&inp!=2);
if (inp==2)
book_search();
if (inp==1)
{
if ((fp=fopen("book.txt","r"))!=NULL)
{
do
{
fread(&book_taxis[i],sizeof(struct bookinf),1,fp);
i=i+1;
}
while(!feof(fp));
fclose(fp);
}
if (i>2 33、)
{
fp=fopen("book.txt","w");
第10页
for (j=0;j 34、 fclose(fp);
}
else
{
remove("book.txt");
}
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();
35、
char input;
FILE *fp;
int inp;
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
{
printf("\n\n\n\t1.按图书登录号查询\n");
printf("\n\t 36、2.按图书作者查询\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 37、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页
三 后记/课程设计过程中碰到问题和处理方法,课程设计体会。
这次课程设计让我掌握了很 38、多有用知识。首先经过不停地学习和锻炼愈加熟练地掌握应用软件Microsoft Visual C++ 6.0 了。设计正确及适宜程序对于我们初学者来说是很大难题,出现一丁点儿错误就得非很大努力去修改,正式者一步步一点点努力让我对C语言游乐更深认识。同时我掌握了处理问题方法,这不管是对以后学习、生活全部有没有比关键价值。
在设计中,每个同学全部会碰到部分困难,或多或少,这些困难常常让我心情烦躁,比如不能清楚建立设计模块,不会修改出现错误等等,然后我向同学寻求帮助,向她们学习,最终经过自己努力建立了模块。不可避免地程序中肯定仍然存在者一些问题,我期望在以后学习和应用中不停提升自己能力,攻克碰到困难。
第14页






