




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
高级语言程序设计课程设计报告 目 录1 课程设计目的与要求12 问题描述23总体设计33.1 功能分析33.2 系统使用的主要函数33.3 系统使用的主要数据结构44 详细设计54.1 程序总体结构图54.2 程序流程图75 功能测试105.1 系统主界面105.2 系统输入信息的界面115.3 系统信息查询的界面125.4 系统信息按作者名查询的界面135.5 系统信息按作者名排序146 程序设计调试情况分析157 课程设计小结16参考文献17附录 系统源程序188图书信息管理系统1 课程设计目的与要求图书信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能;查询和排序功能要求实现查找操作(至少两种依据);还应该提供图书信息删除和修改的功能;另外还应该提供键盘式选择菜单以实现功能选择。 图书管理系统,其中包括:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。功能包括:1) 系统以菜单方式工作;2) 图书信息录入功能(图书信息用文件保存);3) 图书信息浏览功能;4) 查询和排序功能;5)图书信息的删除与修改功能2 问题描述1.设计一个图书管理系统,其中包括:图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。功能包括:1) 系统以菜单方式工作;2) 图书信息录入功能(图书信息用文件保存);3) 图书信息浏览功能;4) 查询和排序功能;5)图书信息的删除与修改功能2.需求分析:图书信息存放在文件中,提供文件的输入、输出等操作;要实现浏览功能;查询和排序功能要求实现查找操作(至少两种依据);还应该提供图书信息删除和修改的功能;另外还应该提供键盘式选择菜单以实现功能选择。显示模块通过设计一个模块,来实现图书信息的显示,以便于浏览图书的信息。查询模块通过设计一个模块,这个模块可以按图书的书名、作者来查询图书所有的信息,以便查询者阅读。删除模块通过设计一个模块,当输入一个图书的登入号或者书名的时候,可以通过这个模块,将输入登入号或者书名的书籍的所有信息从数据库中删除出去。以后,这本图书的信息不再出现在数据库中。修改模块通过设计一个模块,当某本图书的信息发生变化的时候,可以通过修改模块来进行修改。修改模块时一具有多级子菜单的模块。排序模块通过设计一个模块,来实现数据库的信息按某项成员名的升序或者降序排列,这个模块提供了按书名,作者名,分类号三种方式来实现排序。3总体设计 3.1 功能分析(系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现通讯录的管理,同时对操作结果在计算机中做永久保存。) 整个系统可以分为信息录入、信息浏览、信息查询、信息排序、信息删除和信息修改的功能。系统提供主界面,各种功能操作以独立的函数为基础,运用对链表操作的技术来实现图书信息的管理,同时对操作结果在计算机中做永久保存。 3.2 系统使用的主要函数 void menu();int bookluru(struct book*p,int n); (录入图书信息) void bookliulan(struct book*p,int n); (图书信息浏览) void bookchaxun(struct book*p,int n);(图书信息查询)void bookxiugai(struct book*p,int n); (图书信息修改) int bookzengjia(struct book*p,int n); (图书信息增加)int bookshanchu(struct book*p,int n); (图书信息删除) void bookpaixu(struct book*p,int n); (图书信息排序) void DLsearch(struct book*p,int n); (按登入号查询)void AUsearch(struct book*p,int n); (按作者名查询)int bookzairu(struct book*p,int n); (图书信息文件储存 )void goout(); (退出程序) int bookbaocun(struct book*p,int n); (图书信息保存) void main() 3.3 系统使用的主要数据结构 struct book /定义一个book类结构体。char noL;char nameL;char authorL;char fenleiL;char puttimeL;char putfromL;char priceL;4 详细设计4.1 程序总体结构图 N Y 图4.1 程序总体结构图 0 1 2 3 4 5 6 7 图4.2 程序层次图 4.2 程序流程图 图4.3信息登入功能流程图 图4.4 查询功能流程图 图4.5 修改功能流程图5 功能测试5.1 系统主界面图5.1 系统主界面5.2 系统输入信息的界面图 5.2 输入信息界面5.3 系统信息查询的界面 图5.3信息查询界面5.4 系统信息按作者名查询的界面 图5.4 按作者名查询5.5 系统信息按作者名排序 图5.5 信息排序界面6 程序设计调试情况分析1)问题:在信息查询完成后,无法跳出该界面,无法回到主界面。图6.1 查询后无法回到主界面解决方法:在信息查询那个版块的程序中,把原先用scanf输入字符改成gets(no),排除由于回车键出现的问题。2)问题:“登录号书名作者。”之间无空格号解决方法:改为printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格); 拉宽长度。7 课程设计小结通过一周的课程设计,第一次我们试着用所学的C语言知识去编制生活中常用的程序。我们是小组选择编辑图书信息管理系统程序。由于分工合作,我负责的是查询和排除模块。起初对知识掌握的不够全面,在整个设计过程中遇到很多问题。比如,编译出现错误,对于格式的掌握还不够透彻;在分界面运行完后,回不到系统的主界面,出现了死循环;在删除信息的板块中,删除了要保留的;运行时,屏幕显示的字之间无空格。后来,通过小组互相帮组讨论,查阅书籍,改善了程序。首先把原程序中的运用scanf()输入字符,改为getchar(),排除了接受回车键所出现的问题,能够顺利的返回主界面。其次,printf()中字符串控制的长度拉宽。最后还是能如期的完成此次实训。当然,由于初次接触图书管理系统的设计,程序还是存在缺陷。比如操作起来不够简便、连贯,同时也没考虑到实际问题。如图书的价格要取大于等于零的数等。总之,此次的课程设计还是对我们的专业很有帮助。既巩固了我们的C语言知识,让我们对一部分函数的功能有了更加深刻的理解,把所学运用到实际,也使我们在系统设计领域有了新的拓展,开发我们的思维。参考文献1 吉顺如. C程序设计教程与实验. 北京 :清华大学出版社. 2011. 48-103附录 系统源程序#include /头文件#include#include#define L 30 /宏定义#define Q 200struct book /定义一个book类结构体。char noL;char nameL;char authorL;char fenleiL;char puttimeL;char putfromL;char priceL;/函数声明 /函数声明void menu();int bookluru(struct book*p,int n); void bookliulan(struct book*p,int n); void bookchaxun(struct book*p,int n); void bookxiugai(struct book*p,int n); int bookzhengjia(struct book*p,int n);int bookshanchu(struct book*p,int n); void bookpaixu(struct book*p,int n); void DLsearch(struct book*p,int n); void AUsearch(struct book*p,int n);int bookzairu(struct book*p,int n);void goout();int bookbaocun(struct book*p,int n); void main() /主函数char slect,yn;struct book recordQ; /定义book类结构体变量存放图书信息共200条int total=0,flag;total=bookzairu(record,Q); /从文件读取图书信息,不超过200条domenu(); /显示菜单printf(请服务项编号:);slect=getchar();getchar();switch(slect) case0: goout();break;case1: total=bookluru(record,total);break; /函数调用case2: bookliulan(record,total);break;case3: bookchaxun(record,total);break;case4: bookxiugai(record,total);break;case5: total=bookzhengjia(record,total);break;case6: total=bookshanchu(record,total);break;case7: bookpaixu(record,total);break;case8: flag=bookbaocun(record,total);if(flag=1) printf(图书信息保存成功!n);elseprintf(图书信息保存失败!n);break;default:continue;if(slect=0) break;printf(n还要继续选择吗?(Y/N)); /提示是否结束doyn=getchar();getchar();if (yn=Y|yn=y)break;else if (yn=N|yn=n)break;else printf(非法选项!n还要继续选择吗?(Y/N));while(1);while(yn!=N&yn!=n);/图书管理系统主菜单.void menu()system(cls); printf(nn); printf(请选择服务项目编号(0-8)n); printf(*n); printf(*欢迎使用图书信息管理系统*n); printf(*n); printf( n); printf( n); printf( n); printf( * 1 . 图书信息录入. n); printf( * 2 . 图书信息浏览. n); printf( * 3 . 图书信息查寻. n); printf( * 4 . 图书信息修改. n); printf( * 5 . 图书信息增加. n); printf( * 6 . 图书信息删除. n); printf( * 7 . 图书信息排序. n); printf( * 8 . 图书信息保存. n); printf( * 0 . 退出图书管理系统. n); printf( n); printf( n); printf( n); printf(*n; printf(n);int bookluru(struct book *p,int n)/录入图书信息.int i=0;int m;printf(n添加前的图书信息记录共有%d个:n,n); /显示原有的图书信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);i=0;while(ino,)!=0) /输入的登录号不为空时,输出图书信息printf(%9s%9s%9s%9s%9s%9s%9sn,p-no,p-name,p-author,p-fenlei,p-puttime,p-putfrom,p-price);/信息输出i+;p+;printf(n请输入要录入的图书数目X(0X%d): ,200-n); /设置图书信息存储最大值scanf(%d,&m);i=0;while(ino); /输入登录号,再输入其他信息while(strcmp(p-no,)=0);printf(书名为:); gets(p-name); printf(作者名为:); gets(p-author); printf(分类号为:); gets(p-fenlei); printf(出版时间为:); gets(p-puttime); printf(出版单位为:); gets(p-putfrom); printf(价格为:); gets(p-price);p+;i+;return m+n;void bookliulan(struct book*p,int n)/图书信息浏览.int i=0;printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);while(ino,p-name,p-author,p-fenlei,p-puttime,p-putfrom,p-price);p+;i+;void bookchaxun(struct book*p,int n)/图书信息查寻.char c;bookliulan(p ,n);doprintf(n请问按登录号查询(D),还是按作者名查询(A)?); /选择查询方式c=getchar();getchar();if(c=D|c=d)DLsearch(p,n);break;else if(c=A|c=a)AUsearch(p,n);break;elseprintf(n输入的为非法字符!n);continue;while(c!=D|c!=d|c!=A|c!=a);void DLsearch(struct book*p,int n)/按登录号查询.int i,x=0;char DLL;printf(n请输入要查询图书的登录号:);gets(DL);for(i=0;in;i+)if(strcmp(DL,pi.no)=0) /输入登录号,如果在系统中找到则输出图书信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);printf(n%10s%10s%10s%10s%10s%10s%10sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);x=1;break;if(x=0)printf(n对不起,图书系统中没有包含此书的信息!n);void AUsearch(struct book*p,int n)/按作者名查询.int i,x=0;char AU20;printf(n请输入要查询图书的作者姓名:);gets(AU);for(i=0;in;i+) if(strcmp(AU,pi.author)=0) /输入作者姓名,如果在系统中找到则输出图书信息 printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);printf(n%10s%10s%10s%10s%10s%10s%10sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);x=1;if(x=0)printf(n对不起,图书系统中没有包含此书的信息!n); /提示信息void bookxiugai(struct book*p,int n)/图书信息修改.int i,k=0;char noL;bookliulan(p,n);printf(n请输入要修改图书的登录号:);gets(no);for(i=0;ino)!=0) continue; /输入的登录号不匹配,结束本次循环elseprintf(n请输入正确的图书登录号:);gets(p-no);printf(n请输入正确的图书书名:); gets(p-name); printf(n请输入正确的图书作者名:); gets(p-author); printf(n请输入正确的图书分类号:); gets(p-fenlei); printf(n请输入正确的图书出版时间:); gets(p-puttime); printf(n请输入正确的图书出版单位:); gets(p-putfrom); printf(n请输入正确的图书价格:); gets(p-price);printf(n修改图书图书信息完成!);k=1;if(k=0)printf(n对不起,图书系统中没有包含此书的信息!n);int bookzhengjia(struct book *p,int n)/图书信息增加.int i=0;char c;struct book t,*q;printf(n添加前图书信息的记录为:n); bookliulan(p ,n);/显示添加前图书信息的记录doprintf(请输入新图书信息的登录号:);gets(t.no); printf(n请输入新图书信息的书名为:); gets(); printf(n请输入新图书信息的作者名为:); gets(t.author); printf(n请输入新图书信息的分类号为:); gets(t.fenlei); printf(n请输入新图书信息的出版时间为:); gets(t.puttime); printf(n请输入新图书信息的出版单位为:); gets(t.putfrom); printf(n请输入新图书信息的价格为:); gets(t.price);for(i=0;ino)=0|strcmp(t.author,(p+i)-author)=0|strcmp(t.fenlei,(p+i)-fenlei)=0)printf(登录号、作者名和分类号重复,要重新输入吗(Y/N)?);c=getchar();putchar(n);break;if(i=n)*(p+i)=t; printf(n添加后图书的信息记录为:n); /显示添加后图书的信息记录printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;in+1;i+)printf(n%9s%9s%9s%9s%9s%9s%9sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);break;while(c=y|c=Y);return n+1;int bookshanchu(struct book *p,int n)/图书信息删除.int i,x,y=0;char c,name20,no20;printf(n删除前图书的信息记录为:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格); /显示删除前图书的信息记录for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n请输入要删除图书的登陆号:);gets(no);for(x=0;xn;x+)if(strcmp(no,px.no)!=0) /输入的登录号不匹配,结束本次循环continue;if(xn)for(i=x;in;i+) /后一个图书信息对前一个图书信息覆盖删除 strcpy(pi.no,pi+1.no); strcpy(pi.author,pi+1.author); strcpy(,pi+1.name); strcpy(pi.fenlei,pi+1.fenlei); strcpy(pi.price,pi+1.price); strcpy(pi.putfrom,pi+1.putfrom); strcpy(pi.puttime,pi+1.puttime);printf(图书信息删除后的记录:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格); /显示图书信息删除后的记录for(i=0;in-1;i+)printf(n%9s%9s%9s%9s%9s%9s%9sn,pi.no,,pi.author,pi.fenlei,pi.putfrom,pi.puttime,pi.price);y=1;elseprintf(n对不起,图书系统中没有包含此书的信息!n);return n-y;/对图书信息排序.void bookpaixu(struct book*p,int n)int j,i,k;char c1,c2;struct book temp;printf(n排序前图书的信息记录为:n);printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);printf(n按登录号排序(D),还是按作者名排序(A)?); /选择排序的方式c1=getchar();getchar();if(c1=d|c1=D) /选择登录号由小到大排序for(i=0;in-1;i+) k=i;for(j=i+1;j0) /使用选择法进行排序k=j;if(k!=i) /如果最小熟不熟默认的pi,再交换,temp=pk;pk=pi;pi=temp;printf(n排序后图书的信息记录为:n); /输出排序后图书的信息printf(n %9s%9s%9s%9s%9s%9s%9sn,登录号,书名,作者名,分类号,出版单位,出版时间,价格);for(i=0;ino,(p+i)-name,(p+i)-author,(p+i)-fenlei,(p+i)-putfrom,(p+i)-puttime,pi.price);else if(c1=a|c1=A) /选择作者名由小到大排序for(i=0;in-1;i+)k=i;for(j=i+1;j0)k=j;if(k!=i) /使用选择法进行排序temp=pk;pk=pi;pi=temp;printf(n排序后图书的信息记录为:n);printf(n %9
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Module 10 Australia Unit 3 教学设计 2024-2025学年外研版九年级英语上册
- 《搭配问题》(教学设计)-2023-2024学年三年级下册数学人教版
- Unit 5 Here and now Section B project 教学设计 2024-2025学年人教版(2024)七年级英语下册
- Unit 3 My School (Section A 2a~2f)教学设计 2024-2025学年人教版(2024)七年级英语上册
- 20 谈创造性思维2024-2025学年九年级语文上册同步教学设计(河北专版)
- 21古诗三首《出塞》《凉州词》教学设计-2024-2025学年统编版语文四年级上册
- 2024-2025学年高中物理 4.6 用牛顿运动定律解决问题(一)教学设计 新人教版必修1
- 硝酸甘油护理查房
- 0 数学游戏-在教室里认一认(教学设计)-2024-2025学年一年级上册数学人教版
- 2024秋七年级历史上册 第二单元 夏商周时期 早期国家的产生与社会变革 第6课 动荡的春秋时期教学设计3 新人教版
- pmp-项目管理-培训班课件
- 2×1000MW机组扩建工程E标段施工组织总设计
- 人际交往与人际沟通
- 2018年湖北宜昌中考满分作文《别样的长安情》
- 空调施工组织设计方案
- DB11∕T 365-2016 钢筋保护层厚度和钢筋直径检测技术规程
- 中小学教师职业道德规范(2023年修订)全文1500字
- (新版)精益化管理知识应知应会考试题库500题(含答案)
- 二十届三中全会精神知识竞赛试题及答案
- 中国香氛香薰行业市场需求规模与投资效益预测报告2024-2030年
- 对称性花纹色织物劈花设计
评论
0/150
提交评论