收藏 分销(赏)

中国地质大学(武汉)C语言图书管理系统课程设计报告.doc

上传人:仙人****88 文档编号:9496897 上传时间:2025-03-28 格式:DOC 页数:17 大小:120.29KB
下载 相关 举报
中国地质大学(武汉)C语言图书管理系统课程设计报告.doc_第1页
第1页 / 共17页
中国地质大学(武汉)C语言图书管理系统课程设计报告.doc_第2页
第2页 / 共17页
点击查看更多>>
资源描述
C 语 言 课 程 实 习 报 告 所 在 院 系 :工程学院 班 级 学 号 :052126-20121002220 姓 名 :方日忠 程序 已存档 : □ 是 □ 否 指 导 老 师 :赵 曼 评 分 :____________ 二零一四年七月 1.题目要求 图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。试设计一图书信息管理系统,使之能提供以下功能: (1)系统以菜单方式工作(2)图书信息录入功能(3)图书信息浏览功能 (4)图书信息查询功能(5)图书信息的删除与修改 2.需求分析 根据题目要求,应当把图书信息用结构体形式输入,再定义一个全局变量和文件指针进行整个程序的运行,然后把图书信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;在程序中需实现图书信息录入,浏览,查询,删除和修改等功能的操作,所以需要建立相应的模块来实现;另外还需提供键盘式选择菜单实现功能,在运行时达到所要目的。 3.总体设计: 根据题目要求,可以将系统分为六个模块:  图书信息管理系统 菜单 图书 图书 图书 图书 图书 选择 录入 浏览 查询 删除 修改 功能 功能 功能 功能 功能 功能 模块 模块 模块 模块 模块 模块 4.详细设计: #include<stdio.h> #include<stdlib.h> #include<string.h> /*********图书信息结构体*********/ /***包括书号、书名、作者、出版社、出版时间,价格***/ typedef struct { char number[10];//书号 char name[20];//书名 char author[20];//作者 char publish[50];//出版社 char time[20];//出版时间 float price; //价格 }mbook; typedef struct { int count;//书的本数 mbook book[100];//最大可有100本书 }mlibrary; mlibrary library; void save()//保存图书信息 { FILE *fp; if((fp=fopen("library.doc","w"))==NULL) { printf("\n不能保存图书信息\n"); return; } fwrite(&library.count,sizeof(int),1,fp); fwrite(library.book,sizeof(library.book[0]),library.count,fp); } /***********图书信息录入功能模块***********/ /*分析:设计一判断语句和循环语句,继续录入则输入1,为真,进入循环。用scanf输入要录入的信息*/ void putin() /*定义录入函数*/ { int y=1; system("cls"); while(y) { printf("\t请输入您的书籍的书号:"); scanf("%s",library.book[library.count].number); printf("\t请输入书名:"); scanf("%s",library.book[library.count].name); printf("\t请输入作者名:"); scanf("%s",library.book[library.count].author); printf("\t请输入出版社:"); scanf("%s",library.book[library.count].publish); printf("\t请输入出版时间:"); scanf("%s",library.book[library.count].time); printf("\t请输入该书的价格:"); fflush(stdin); scanf("%f",&library.book[library.count].price); library.count++; printf("\n是否继续录入(1.继续;0,退出录入):"); fflush(stdin); scanf("%d",&y); if (y!=1) { y=0; break; } } save(); } /***********图书信息浏览功能模块***********/ /*分析:设计一循环,在i<总书本数library.count 时,依次显示书的信息*/ void lookup() { system("cls"); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for (int i=0;i<library.count;i++) { printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } fflush(stdin); getchar(); } /**********图书信息查询功能模块**********/ /**********按书名查询**********/ /*分析:首先输入要查找的书名,然后利用循环语句和strcmp 函数,把输入书名和已录入的所有书名一一比较,若相同,则跳出循环,将该书信息显示出来*/ void search_by_name() /*定义按书名查询*/ {char s2[20]; int flag=1; printf("\n请输入要查询的书名: "); fflush(stdin); scanf("%s",s2); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(int i=0;i<library.count;i++ ) if(strcmp(s2,library.book[i].name)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if (flag) { printf("cannot found!"); } fflush(stdin); //清空输入缓冲区,为了确保不影响后面的数据读取 getchar(); } /**********按作者名查询**********/ /*分析:首先输入要查找的作者名,然后利用循环语句和strcmp 函数,把输入的作者名和已录入的所有书的作者名一一比较,若相同,则跳出循环,将该书信息显示出来*/ void search_by_author() /*定义按作者名查询*/ { char s3[20]; int flag=1; printf("请输入要查询的书的作者: "); fflush(stdin); scanf("%s",s3); printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); for(int i=0;i<library.count;i++ ) if(strcmp(s3,library.book[i].author)==0) { flag=0; printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); } if (flag) { printf("cannot found!"); } fflush(stdin); //清空输入缓冲区,为了确保不影响后面的数据读取 getchar(); } /********************/ void search() /*定义查询函数*/ { int a; system("cls"); /*进行清屏*/ printf("\t\t******************************\n"); printf("开始查询\n"); printf("\t\t\t1---------------search_by_name\n"); printf("\t\t\t2---------------search_by_writer\n"); printf("\t\t\t0---------------exit\n"); printf("\t\t******************************\n") ; printf("\t\t请选择你想要的查询方式:"); fflush(stdin); scanf("%d",&a); switch(a) { case 1: search_by_name(); break; case 2: search_by_author(); break; case 0: return; } } /**********图书信息删除功能模块**********/ /*分析:首先输入要删除的图书号,然后利用循环语句和strcmp 函数,把输入的图书号和已录入的所有书的图书号一一比较,若相同,则跳出循环,然后利用循环语句和strcpy 函数将后一本书的信息复制给前一本书,这样就达到了删除的目的*/ void del() /*定义删除函数*/ { char number[10]; system("cls"); /*清屏*/ printf("\n Please type in the number of the book you want to delete:"); fflush(stdin); scanf("%s",number); int i; for (i=0;i<library.count;i++) { if(strcmp(number,library.book[i].number)==0)break; } if (i!=library.count) { for(;i<library.count-1;i++) { strcpy(library.book[i].name,library.book[i+1].name); strcpy(library.book[i].number,library.book[i+1].number); strcpy(library.book[i].publish,library.book[i+1].publish); strcpy(library.book[i].author,library.book[i+1].author); strcpy(library.book[i].time,library.book[i+1].time); library.book[i].price=library.book[i+1].price; } library.count--; } else printf("\n cannot found!\n"); save(); fflush(stdin); getchar(); } /**********图书信息修改功能模块**********/ /*分析:首先输入要修改的图书号,然后利用循环语句和strcmp 函数,把输入的图书号和已录入的所有书的图书号一一比较,若相同,则跳出循环,然后输入要修改后的信息,利用循环语句和strcpy 函数将要修改后的信息复制给原来的对应的书本,即用新的信息代替了原来的信息*/ void update()//修改图书信息 { char number[10]; system("cls"); /*清屏*/ printf("\n Please type in the number of the book you want to delete:"); fflush(stdin); scanf("%s",number); int i; for (i=0;i<library.count;i++) { if(strcmp(number,library.book[i].number)==0) { printf("图书号\t图书名\t作者名\t出版社\t出版日期\t图书价格\n"); printf("%s\t%s\t%s\t%s\t%s\t%6.2f\n",library.book[i].number,library.book[i].name,library.book[i].author,library.book[i].publish,library.book[i].time,library.book[i].price); break; } } if (i!=library.count) { mbook book; printf("\n\t\t请输入修改后此图书的信息\n"); printf("\t请输入图书号:"); scanf("%s",book.number); printf("\t请输入图书名:"); scanf("%s",book.name); printf("\t请输入作者名:"); scanf("%s",book.author); printf("\t请输入出版社:"); scanf("%s",book.publish); printf("\t请输入出版时间:"); scanf("%s",book.time); printf("\t请输入该书的价格:"); fflush(stdin); scanf("%f",&book.price); strcpy(library.book[i].name,book.name); strcpy(library.book[i].number,book.number); strcpy(library.book[i].publish,book.publish); strcpy(library.book[i].author,book.author); strcpy(library.book[i].time,book.time); library.book[i].price=book.price; save(); } else printf("\n cannot found!\n"); fflush(stdin); getchar(); /**********主函数**********/ 开始 显示一系列功能选项 输入a,判断 a是否是0~5 根据a的值调用各功能模块函数 结束 Y N void main() { FILE *fp; if((fp=fopen("library.doc","r"))==NULL) { printf("\n不能打开图书信息库\n"); fp=fopen("library.doc","w+"); printf("\n初始化图书信息库,初始化之后要重启程序\n"); library.count=0; fwrite(&library.count,sizeof(int),1,fp); fclose(fp); return; } fread(&library.count,sizeof(int),1,fp); fread(library.book,sizeof(library.book[0]),library.count,fp); fclose(fp); int a; do { system("cls"); printf("\n\n\n\n\n\t\t\t\t图书信息管理系统\t\t\t\t\n"); printf("\t\t*********************************************\n"); printf("\t\t\t1 ------------------图书信息录入\n"); printf("\t\t\t2 ------------------图书信息浏览\n"); printf("\t\t\t3 ------------------图书信息查询\n"); printf("\t\t\t4 ------------------图书信息删除\n"); printf("\t\t\t5 ------------------图书信息修改\n"); printf("\t\t\t0 -----------------退出图书信息系统\n"); printf("\t\t*********************************************\n"); printf("\t\tPlease Enter Choose: "); fflush(stdin); scanf("%d",&a); switch(a) { case 1: putin(); break; case 2: lookup(); break; case 3: search(); break; case 4: del(); break; case 5: update(); break; case 0: printf("\n\n退出\n\n"); break; default: printf("\n序号不对\n"); } }while(a!=0); save(); } 5.程序运行截图 主菜单函数 录入模块 浏览模块 查询模块 修改模块 直接退出 6.总结 这次课程设计让我掌握了许多的有用知识。首先通过不断地学习和锻炼更加熟练地掌握应用软件Microsoft Visual C++ 6.0 了。其次,这次设计让我重温并掌握了c语言的各个方面的知识点。曾经为了应对考试的我只是粗略的看了遍课本,然后就是刷题。由于知识网存在严重的漏洞,最终,导致了我在c语言二级考试当中的失败。经过这次的实习,我对c语言二级顿时充满了信心。 设计正确及合适的程序对于我们初学者来说是很大的难题,出现一丁点儿错误就得非很大的努力去修改,正是这一步步一点点的努力让我对C语言有了更深的认识。在设计中,我遇到一些困难,这些困难常常让我心情烦躁,比如不能清晰的建立设计模块,不会修改出现的错误等等,但是我忍了,我认识到这是一个耐力的比拼,只有静下心来,耐心的写程序,才能获得最后的胜利。终于,我通过自己努力建立了模块。在这过程中,我掌握了解决问题的方法,这对以后的学习、生活都有无比重要的价值。 在写程序的过程中,主要还是得靠自己,同学没时间帮你修改、找错误,即使有时间,设计思路不一样的我们还是没办法修改。所以,一切还是要靠自己,耐得住寂寞,才能开出灿烂的花。我希望在以后的学习和应用中不断提高自己的能力,攻克遇到的困难,一步一步的向前进,将这一实用的技术应用到专业或工作当中。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服