




免费预览已结束,剩余8页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
一:设计任务课程设计题目:图书信息管理系统设计图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间价格等。试设计一图书信息管理系统,使之能提供以下功能: 系统以菜单方式工作 图书信息录入功能(图书信息用文件保存)-输入 图书信息浏览功能输出 查询和排序功能算法 按书名查询 按作者名查询图书信息的删除与修改课程设计要求:整个系统均用C语言实现; 可以利用数组、指针、链表来实现数据结构设计; 系统具有输入、显示、查询、删除、排序、插入、保存读取等基本功能; 系统的各个功能模块都用函数的形式来实现; 可以将信息保存在文件中; 可以将信息从文件中读取出来。二:系统设计方案利用学过的C语言知识将各个功能模块的源程序分别写出,进行调试、运行,然后再将各模块组合起来,整体进行调试运行。源程序如下:#include#define N 3int ok=N ;#includestruct system /定义结构体long num;char name20;char writer10;char sort10;char publisher20;long time; float price;void load(struct system inform,FILE *fp) /定义一个输入函数,完成信息录入的功能 if (fp=fopen(system.text,w)=NULL)printf(文件打开错误);printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格 n);fprintf(fp,登录号 书名 作者名 分类号 出版单位 出版时间 价格 n);for(int i=0;iN;i+)scanf(%ld %s %s %s %s %ld %f,&informi.num,,informi.writer,informi.sort,informi.publisher,&informi.time,&informi.price); fprintf(fp,%-6ld %-8s %-8s %-8s %-8s %-6ld %-8f n,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);/在文件fp中存入N本书的信息fclose(fp);void look(struct system inform) /定义一个输出函数,完成信息浏览的功能 printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n);for(int i=0;iN;i+)printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); void search1(struct system inform) /定义一个查询函数,完成对书名查询的功能int i;int n ; /n表示书名为p的书的总本数char p20; /p代表要查询的书名printf(请输入要查询的书名:);scanf(%s,&p);for(i=0;iN;i+) if(strcmp(,p)=0)/判断两字符串是否相等 printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); n+;if(n=0) printf(输入的书不存在n);void search2(struct system inform) /定义一个查询函数,完成对作者名查询的功能int i;int m=0; /m表示作者名为q的书的总本数char q10; /q代表要查询作者名printf(请输入要查询的作者名:);scanf(%s,q);for(i=0;iN;i+)if (strcmp(informi.writer,q)=0) /判断两个字符串是否相等printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);m+;if(m=0) printf(输入的作者名不存在n);void order1(struct system inform,FILE *fp) /定义第一个排序函数,完成对出版时间从高到低的排序功能 if (fp=fopen(system.text,a)=NULL)printf(文件打开错误); fprintf(fp,登录号 书名 作者名 分类号 出版单位 出版时间 价格n);int i,j;struct system temp;for(i=0;ii;j-)if(informj-1.time=informj.time)temp=informj-1;informj-1=informj;informj=temp;printf(按出版时间从高到低排序的结果为:n);printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n);for(i=0;iN;i+)fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);fclose(fp);void order2(struct system inform,FILE *fp) /定义第二个排序函数,完成对价格降序排序的功能if (fp=fopen(system.text,a)=NULL)printf(文件打开错误); fprintf(fp,登录号 书名 作者名 分类号 出版单位 出版时间 价格n);struct system temp;int i,j;for(i=0;ii;j-)if(informj-1.priceinformj.price)temp=informj-1;informj-1=informj;informj=temp;printf(按价格降序排序的结果为:n);printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n);for(i=0;iN;i+)fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);fclose(fp);void cancle(struct system inform,FILE *fp) /定义一个删除函数,完成对图书信息按书名删除的功能 if (fp=fopen(system.text,a)=NULL)printf(文件打开错误); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); fprintf(fp,登录号 书名 作者名 分类号 出版单位 出版时间 价格n); int i,j=0; char p20; /p代表要删除的书名 printf(请输入需要删除的书名:); scanf(%s,&p); for(i=0;iN;i+)if(strcmp(,p)=0) for(j=i;jN;j+) informj=informj+1; ok-; printf(删除成功!结果为:n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); for(i=0;iN-1;i+) fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); fclose(fp);void modify(struct system inform,FILE *fp) /定义一个修改函数,完成图书价格修改的功能 if (fp=fopen(system.text,a)=NULL)printf(文件打开错误);fprintf(fp,登录号 书名 作者名 分类号 出版单位 出版时间 价格n);int i;char m20;float s; printf(请输入要修改价格的书名:); scanf(%s,&m); /m表示要修改价格的书名 for(i=0;iN;i+)if(strcmp(,m)=0)/判断两字符串是否相等printf(价格应修改为:); scanf(%f,&s);informi.price=s;printf(修改成功,结果为:n); printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); for(i=0;iN;i+) fprintf(fp,%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); fclose(fp);void main()int pushbutton;struct system informN;FILE *fp;fp=fopen(system.text,wb+); doprintf(*MENU*n);printf(0 输入图书信息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(请输入08按钮选择操作项:); scanf(%d,&pushbutton);switch(pushbutton) case 0:load(inform,fp);break; case 1:look(inform);break; case 2:search1(inform);break; case 3:search2(inform);break; case 4:order1(inform,fp);break; case 5:order2(inform,fp);break; case 6:cancle(inform,fp);break; case 7:modify(inform,fp);break; case 8:printf(退出n);break; default:printf(n非法操作!n);while(pushbutton!=8);三:程序主要代码分析(1)数据结构选用静态数组实现对图书信息的管理。结构体如下:struct system /定义结构体 long num; char name20; char writer10; char sort10; char publisher20; long time; float price; (2)main()主函数 程序采用模块化设计,主函数为程序的入口,各模块独立,可分块调试,各模块由主函数控制调用。主函数的控制功能通过循环执行一个开关语句来实现。该开关语句的条件值为调用主菜单函数pushbutton得到的返回值,根据该值,调用相应的各功能函数。 void main()int pushbutton;struct system informN;FILE *fp;fp=fopen(system.text,wb+); doprintf(*MENU*n);printf(0 输入图书信息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(请输入08按钮选择操作项:); scanf(%d,&pushbutton);switch(pushbutton) case 0:load(inform,fp);break; case 1:look(inform);break; case 2:search1(inform);break; case 3:search2(inform);break; case 4:order1(inform,fp);break; case 5:order2(inform,fp);break; case 6:cancle(inform,fp);break; case 7:modify(inform,fp);break; case 8:printf(退出n);break; default:printf(n非法操作!n);while(pushbutton!=8);(3)录入信息的功能模块 void load(struct system inform,FILE *fp) /定义一个输入函数,完成信息录入的功能 if (fp=fopen(system.text,w)=NULL)printf(文件打开错误);printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格 n);fprintf(fp,登录号 书名 作者名 分类号 出版单位 出版时间 价格 n);for(int i=0;iN;i+)scanf(%ld %s %s %s %s %ld %f,&informi.num,,informi.writer,informi.sort,informi.publisher,&informi.time,&informi.price); fprintf(fp,%-6ld %-8s %-8s %-8s %-8s %-6ld %-8f n,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price);/在文件fp中存入N本书的信息fclose(fp);此模块完成信息的输入功能,用的是一个输入函数。(4)浏览信息的功能模块(见源程序),采用的是一个输出函数。(5)信息查询功能模块 void search1(struct system inform) /定义一个查询函数,完成对书名查询的功能int i;int n ; /n表示书名为p的书的总本数char p20; /p代表要查询的书名printf(请输入要查询的书名:);scanf(%s,&p);for(i=0;iN;i+) if(strcmp(,p)=0)/判断两字符串是否相等 printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n); printf(%ld %s %s %s %s %ld %fn,informi.num,,informi.writer,informi.sort,informi.publisher,informi.time,informi.price); n+;if(n=0) printf(输入的书不存在n);此模块通过输入书名完成对书信息的查询,输入书名判断所输入的书名是否与保存在文件中的书名相同,若同则显示出来,若不同则提示“输入的书不存在”。(6)信息排序模块功能(主要部分) int i,j;struct system temp;for(i=0;ii;j-)if(informj-1.time=informj.time)temp=informj-1;informj-1=informj;informj=temp;printf(按出版时间从高到低排序的结果为:n);printf(登录号 书名 作者名 分类号 出版单位 出版时间 价格n);此模块采用的是冒泡排序法。(7)信息删除功能(见源程序)输入想删除的图书的书名,判断是否有,有的话则删掉,用其他图书的信息覆盖要删掉图书的信息。 (8)信息修改模块(主要部分)int i;char m20;float s; printf(请输入要修改价格的书名:); scanf(%s,&m); /m表示要修改价格的书名 for(i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 滨州市成品油管理办法
- 矿区工程监理管理办法
- 空调公司工具管理办法
- 物流药品采购管理办法
- 拆除工程质量管理体系与合同管理措施
- 陈洼小学食堂装修合同书4篇
- 2025年学校供餐服务合同3篇
- 浙江省杭州市萧山区城厢片2026届八年级物理第一学期期末联考模拟试题含解析
- 2026届福建省漳州市云霄县物理八年级第一学期期末达标测试试题含解析
- 2026届江苏省南京市南京航天大附属初级中学八年级物理第一学期期末检测试题含解析
- (2024年)知识产权全套课件(完整)
- 阀门试压方案样本
- 电力线路保护工作手册样本
- 儿内科内分泌疾病诊疗规范2023版
- 十大医药代表成功经验分享
- 2022年上海市浦东新区6月线下高考二模英语试题(含答案和听力音频与听力稿)
- 人脸识别系统软件使用手册
- 竣工验收证书(样本)
- 婴幼儿大便问题全解析
- 统编版三年级上册《快乐读书吧》阅读测试题
- 沉降观测记录表(标准版)
评论
0/150
提交评论