




已阅读5页,还剩22页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
课 程 报 告课 程 名 称: 程序设计实践 专 业 班 级 : 信息类* 学 生 姓 名 : * 学 号 : * 任 课 教 师 : 徐 振 强 学 期 :2010-2011学年第二学期 课程报告任务书题 目图书信息管理系统主要内容开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版时间、价格等基本信息(也可以根据自己情况进行扩充,比如是否借出、库存量等)。使之能提供以下基本功能:(1)图书信息录入功能(图书信息用文件保存)输入v(2)图书信息浏览功能输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式): l 按书名查询 按作者名查询 按照价钱排序 按出版时间排序等等(4)图书信息的删除与修改扩展功能:可以按照自己的程度进行扩展。比如(1)简单的权限处理 (2)报表打印功能(3)甚至根据自己情况,可以加上学生信息,并扩充为图书借阅系统。(4)模糊查询 (5)综合查询 (6)统计功能 比如统计处某一类别的图书信息 或 筛选出小于指定数量库存的图书信息等等,总之,可以根据自己需求进行分析功能。任务要求一、提交材料应包括:(1)系统源代码 (2)课程报告二、整个设计过程具体要求(1)需求分析 要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2)设计过程 要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程 要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段 按照要求完成系统设计和实现报告,并进行总结、答辩。成绩评定报告撰写情况(30分)系统完成情况(30分)答辩情况(40分)总分内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分成绩评定教师: 27目 录任务书 2目录 31.需求分析 42.概要设计 43.详细设计 5 3.1结构体设计 5 3.2主函数 6 3.3功能函数 10 (1)函数:输出单本的图书数据 10 (2)函数:接收单本的图书数据,返回指针 10(3)函数:得到图书的数据,并放入到链表中 11(4)函数:从文件读入图书记录 11(5)函数:把数据写入到文件 12(6)函数:按价格和出版时间排序排序 13(7)函数:统计图书的总本数 15(8)函数:修改图书的信息 15(9)函数:删除数据 16(10)函数:将图书的数据插入到顺序排放的链表中,19(11)函数:查询图书的信息,并把图书的数据输出19(12)函数:用链表给图书排序21(13)函数:输出链表中的图书信息214.调试分析 225.测试结果 226.课程心得总结 271 需求分析1.图书信息录入功能(图书信息用文件保存)输入。2.图书信息浏览功能输出。3.查询功能、排序功能 :l 按编号查询或排序 按书名查询 按作者查询 按出版社查询 按价格排序 按出版时间排序 4.统计图书数目。 5. 图书信息的插入、删除和修改。 6.使用密码登录本系统,且可以修改密码。 7. 本界面具有友善、直观、易操作等特点,本系统采用数字输入选择操作。2 概要设计结构图如下所示: 图书管理系统输 入 密 码修改图书数据录入图书数据排序保存文件输出图书信息统计图书数目查询图书信息插入图书数据删除图书数据从文件读取数据修改登录密码按图书价格排序按出版时间排序按图书编号排序按编号查询按名称查询按出版社查询按作者查询修改编号修改名称修改作者修改出版社修改价格或出版时间修改全部输入要修改的图书编号3 详细设计 3.1结构体设计#define N 15/编号位数#define M 15 /名称字节数#define K 15 /作者字节数#define F 15 /出版社字节数#define O 2 /数组位数 建立图书结构体struct book char numN; char nameM; char zuozheK; char chubanF; int jcO; struct book *next;3.2主函数 int i=0,g=0;char mm7,ch; char c7;FILE *fp;int n,x=1,k=0;float aO=0;struct book *head=NULL;if(fp=fopen(密码(勿删,否则出错!).txt,r)=NULL)printf(密码载入失败!n);exit(0);for(i=0;i6;i+)mmi=fgetc(fp);mm6=0;printf(请输入密码n);loop: for (i=0;inext=NULL) printf(请先录入图书的数据!); getchar(); break; else fprint_(head);break; case 3: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else print_(head);break; case 4: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else head=jc_paixu(head); break; case 5: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else k=to_ji(head); printf(总共有%3d 本书,k); getchar(); break; case 6: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else chaxun(head); getchar(); break; case 7: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else head=charu(head);break; case 8: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else head=shanchu(head); break; case 9: if(head=NULL|head-next=NULL) printf(请先录入图书的数据!); getchar(); break; else xiugai(head); break; case 10: head = load(); if(head=NULL) printf(请先录入图书的数据!); getchar(); break; else break; case 11: if(fp=fopen(密码(勿删,否则出错!).txt,w)=NULL) printf(文件载入失败!n); exit(0); printf(请输入6位新密码!n); for(i=0;inum);printf(书名: );puts(p0-name);printf(作者: );puts(p0-zuozhe);printf(出版社: );puts(p0-chuban);printf(价格: );printf(%-8dn,p0-jc0); printf(出版时间:);printf(%-8d,p0-jc1);printf(n); (2)函数:接收单本的图书数据,返回指针struct book * scanf1_()struct book *p0;p0=(struct book *)malloc(sizeof(struct book);printf(请输入图书的编号:);gets(p0-num);printf(请输入图书的名称:);gets(p0-name);printf(请输入图书的作者:);gets(p0-zuozhe);printf(请输入图书的出版社:);gets(p0-chuban);printf(请输入图书的价格:);scanf(%d,&p0-jc0);printf(请输入图书的出版时间:);scanf(%d,&p0-jc1);getchar();return p0;(3)函数:得到图书的数据,并放入到链表中struct book * scanf_()struct book *p1,*p2,*head;int n=0;printf(注意:当图书编号为 0 时输入结束nn);p1=(struct book *)malloc(sizeof(struct book); /*得到图书信息*/head=p2=p1;doprintf(请输入图书的编号:);gets(p1-num);if(strcmp(p1-num,0)=0)goto endd;printf(请输入图书的名称:);gets(p1-name);printf(请输入图书的作者:);gets(p1-zuozhe);printf(请输入图书的出版社:);gets(p1-chuban);printf(请输入图书的价格:);scanf(%d,&p1-jc0);printf(请输入图书的出版时间:);scanf(%d,&p1-jc1);getchar();printf(n);p1=(struct book *)malloc(sizeof(struct book);p2-next=p1;p2=p1;n+;while(1);endd:p1-next=NULL;printf(信息输入完毕!n);getchar();/*图书的数据被放在链表中*/return head;(4)函数:输出链表中的图书信息void print_(struct book *head)struct book *p;printf(*n);printf(*t|编号t|书名t|作者t|出版社t|价格t|出版时间|*n);printf(*n);/打印表格域 p=head;doprintf(*t|%st|%st|%st|%st|%dt|%dt| *n,p-num,p-name,p-zuozhe,p-chuban,p-jc0,p-jc1); printf(*n);/打印表格域p=p-next;while(p!=NULL);getchar(); (5)函数:用链表给图书排序struct book *num_paixu(struct book *head)struct book *p1,*p2,*p3,*p4,*p5,*p6,*p7;int x=1;for(p1=head;p1-next!=NULL;p4=p1,p1=p1-next)p3=p1;for(p2=p1-next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2-next)if(strcmp(p3-num,p2-num)0)p3=p2;p5=p7;if(p3!=p1)if(x&p1=head)p6=p1-next;p1-next=p3-next;p3-next=p6;p5-next=p1;head=p3;p1=p3;x=0;elsep6=p1-next;p1-next=p3-next;p3-next=p6;p4-next=p3;p5-next=p1;p1=p3;printf(排序成功!n);return head;(6)函数:查询图书的信息,并把图书的数据输出void chaxun(struct book *head) int k;char aN;struct book *p1; printf(*n);printf(* 0-放弃查询 *n);printf(* 1-按编号查询 *n);printf(* 2-按书名查询 *n);printf(* 3-按作者查询 *n);printf(* 4-按出版社查询 *n);printf(*n);scanf(%d,&k);getchar();switch(k) case 0:break;case 1:printf(请输入要查询的图书编号:);gets(a); p1=head; while(p1-next!=NULL)if(strcmp(p1-num,a)=0)break;p1=p1-next;if(p1-next=NULL)printf(没有找到编号为 %s 的图书!n,a);elseprintf(要查询的图书信息如下:nn);printf_(p1);break;case 2:printf(请输入要查询的书名:);gets(a); p1=head; while(p1-next!=NULL)if(strcmp(p1-name,a)=0)break;p1=p1-next;if(p1-next=NULL)printf(没有找到名称为 %s 的图书!n,a);elseprintf(要查询的图书信息如下:nn);printf_(p1);break;case 3:printf(请输入要查询的作者:);gets(a); p1=head; while(p1-next!=NULL)if(strcmp(p1-zuozhe,a)=0)break;p1=p1-next;if(p1-next=NULL)printf(没有找到作者为 %s 的图书!n,a);elseprintf(要查询的图书信息如下:nn);printf_(p1);break;case 4:printf(请输入要查询的出版社:);gets(a); p1=head; while(p1-next!=NULL)if(strcmp(p1-chuban,a)=0)break;p1=p1-next;if(p1-next=NULL)printf(没有找到出版社为 %s 的图书!n,a);elseprintf(要查询的图书信息如下:nn);printf_(p1);break;default:printf(您的输入有误!);getchar();break;(7)函数:将图书的数据插入到顺序排放的链表中,并且插入后也是顺序排放的。struct book * charu(struct book *head)struct book *p1,*p2,*p3;p1=scanf1_();p2=head;p3=p2;while(strcmp(p2-num,p1-num)next!=NULL)p3=p2;p2=p2-next;if(p2=head)p1-next=head;head=p1;else p3-next=p1;p1-next=p2;printf(插入成功!n);getchar();return head;(8)函数:删除数据struct book * shanchu(struct book *head)char aN;struct book *p1,*p2,*p3;printf(请输入要删除的图书的编号:);gets(a);p1=head;p2=p1;while(strcmp(p2-num,a)!=0)&p2-next!=NULL)p3=p2;p2=p2-next;if(p2-next=NULL)printf(没有找到要删除的数据!n);else if(p2=head)head=p2-next;printf(删除成功!n);else p3-next=p2-next;printf(删除成功!n);getchar();return head;(9)函数:修改图书的信息void xiugai(struct book *head)char aN;struct book *p1;int i,k;printf(输入要修改的图书的编号);gets(a);p1=head;while(p1-next!=NULL)if(strcmp(p1-num,a)=0)break;p1=p1-next;if(p1-next=NULL)printf(没有要找的图书信息!n);getchar();elseprintf(*n);printf(* 0-放弃修改 *n);printf(* 1-修改编号 *n);printf(* 2-修改书名 *n);printf(* 3-修改作者 *n);printf(* 4-修改出版社 *n);printf(* 5-修改价格或出版时间*n);printf(* 6-修改全部 *n);printf(*n);scanf(%d,&k);getchar();switch(k) case 0:break;case 1: printf(请输入新编号:);gets(p1-num);printf(修改成功!);getchar();break;case 2:printf(请输入新书名:);gets(p1-name);printf(修改成功!);getchar();break;case 3:printf(请输入新作者:);gets(p1-zuozhe);printf(修改成功!);getchar();break;case 4:printf(请输入新出版社:);gets(p1-chuban);printf(修改成功!);getchar();break;case 5:printf(*n);printf(* 0-放弃修改 *n);printf(* 1-修改价格和时间 *n);printf(* 2-修改图书价格 *n);printf(* 3-修改出版时间 *n);printf(*n);scanf(%d,&k);switch(k)case 0:break;case 1:p1-jcO-1=0;printf(请输入价格和出版时间:);for(i=0;ijci);printf(修改成功!);getchar();getchar();break;case 2:printf(请输入新价格:);scanf(%d,&p1-jc0);printf(修改成功!);getchar();break;case 3:printf(请输入新出版时间:);scanf(%d,&p1-jc1);printf(修改成功!);getchar();break;default :printf(您的输入有误!);getchar();break;break;case 6:printf(请输入新的编号:);gets(p1-num);printf(请输入新的书名:);gets(p1-name);printf(请输入新的作者:);gets(p1-zuozhe);p1-jcO-1=0;printf(请输入新的价格:);scanf(%d,&p1-jc0);printf(请输入新的出版时间:); scanf(%d,&p1-jc1);printf(修改成功!);getchar();getchar();break;default:printf(您的输入有误!);getchar();break;(10)函数:统计图书的总本数int to_ji(struct book *head)int n=0;struct book *p1;for(p1=head;p1-next!=NULL;p1=p1-next)n+;return n+1;(11)函数:按价格和出版时间排序排序struct book * jc_paixu(struct book *head)struct book *p1,*p2,*p3,*p4,*p5,*p6,*p7;int x=1,n,i;char ch;printf(*n);printf(* 0-退出 *n);printf(* 1-按价格排序 *n);printf(* 2-按出版时间排序 *n);printf(* 3-按图书编号排序 *n);printf(*n);scanf(%d,&n);if(n!=0)getchar();switch(n)case 0: break;case 1: i=0;break;case 2: i=1;break;case 3:head=num_paixu(head);printf(是否显示排序结果 Y/N ?);ch=getchar();getchar();if(ch=y|ch=Y)printf(n);print_(head);break;default:printf(输入有误!);getchar();break;if(n0)for(p1=head;p1-next!=NULL;p4=p1,p1=p1-next)p3=p1;for(p2=p1-next,p5=p7=p2;p2!=NULL;p7=p2,p2=p2-next)if(p3-jci-p2-jcinext;p1-next=p3-next;p3-next=p6;p5-next=p1;head=p3;p1=p3;x=0;elsep6=p1-next;p1-next=p3-next;p3-next=p6;p4-next=p3;p5-next=p1;p1=p3;printf(排序成功!n);printf(是否查看排序结果 Y/N );ch=getchar();getchar();if(ch=y|ch=Y)printf(n);print_(head);return head;(12)函数:把数据写入到文件void fprint_(struct book *head)FILE *fb;struct book *p1;if(fb=fopen(信息.txt,w)=NULL)printf(文件 信息.txt 打开失败);exit(0);for(p1=head;p1!=NULL;p1=p1-next)if(strcmp(p1-num,0)=0)continue; fprintf(fb,%13s%15s%15s%15s%13d%14dn,p1-num,p1-name,p1-zuozhe,p1-chuban,p1-jc0,p1-jc1);fclose(fb); printf(文件成功保存到 信息.txt 中!n);getchar();(13)函数:从文件读入图书记录struct book * load()struct book *p1, *p2, *head ;int m=0;FILE *fp; if(fp=fopen(信息.txt,r) = NULL)printf(文件 信息.txt 打开失败);exit(0); head=NULL;p1=p2= (struct book *) malloc (sizeof(struct book);dofscanf(fp, %13s%15s%15s%15s%13d%14dn, &p1-num, &p1-name, &p1-zuozhe,&p1-chuban,&p1-jc0, &p1-jc1);m=m+1;if(m=1)head=p1;elsep2-next=p1;p2=p1;p1=(str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 商业空间设计制作及安装协议
- 英语虚拟语气的学习与实践:高二英语突破难点教案
- 员工健康管理培训课件
- 状物作文可爱的小狗400字(9篇)
- 安全生产行政法规解读讲解
- 养老护理课件
- 医患关系拍摄技巧指南
- 多点相关定位系统机务员理念考核试卷及答案
- 麦肯锡领导力培训
- 数据信息精准报告承诺书9篇
- 安徽省定远县藕塘中学高三上学期周考训练物理试题
- 三维波动方程双变网格有限差分并行模拟方法:理论、实践与优化
- 邮政银行一点一策课件
- 餐饮咨询顾问合同范本
- 四级专项模拟考试题库及答案
- 川教版(2024)七年级上册信息科技全册教案
- 2025-2026学年新疆师范大学附属实验高中高三数学第一学期期末统考试题
- 深圳中考英语听说考试模仿朗读技巧点拨
- 电子商务法律法规及合规性要求
- 2025年(完整版)十八项核心制度培训考核试题(含答案)
- 煤矿企业环保课件
评论
0/150
提交评论