




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
计算机与信息学院计算机类课程设计报告课程名称:算法与数据结构设计课程设计课程设计题目:教学实验设备信息管理系统姓 名:系:计算机科学与技术专 业:计算机科学与技术年 级:2009级学 号:091150022指导教师:宁正元职 称:教授2011年 9月 1日计算机与信息学院计算机类课程设计结果评定评语:评分项目分值得分 课程设计报告符合规范10 类层次结构图和用例图合3 主要技术路线正确30 设计报告条理清晰,重点突出20 有一定的创新性,难易程度10成绩:指导教师签字:任务下达日期:2011年4月 25日评定日期:目 录1课程设计的目的1 2 课程设计的要求13 课程设计内容1 3.1主要内容1 3.2 需求分析23.3 程序总体设计23.4设计过程与程序功能展示34总结7参考文献 7源代码 7教学实验设备信息管理系统1.设计目的1)复习和巩固算法与数据结构的基础知识,进一步加深对算法的理解和掌握;2)提高程序设计能力,掌握算法与数据结构的基本方法;3)培养我们在项目开发中团队合作精神、创新意识及能力。2.设计要求1)掌握算法与数据结构基本方法,设计并实现一个应用系统;2)设计要实用,算法要简练;3)说明书、流程图要清楚;4)通过课程设计,要求学生在指导教师的指导下,独立完成课程实习的全部内容;5)上交课程设计内容。3.课程设计内容3.1主要内容教学实验设备信息包括:设备编号、设备种类(如:微机打印机扫描仪等等)设备名称、设备价格、设备购入日期、是否报废、报废日期等。试设计一实验设备信息管理系统,使之能提供以下功能:(1)能够完成对设备的录入和修改(2)对设备进行分类统计(3)设备的查询3.2需求分析实验室设备信息用文件存储,提供文件的输入输出操作;要能够完成设备的录入和修改,需要提供设备添加和修改操作;实现对设备进行分类统计,需要提供排序操作;实现对设备查询需要提供查找操作,设备的查询可根据设备编号、设备种类、设备购入日期、正常设备(未报废的)等多种方式查询;另外还要根据键盘式选择菜单以实现功能选择。3.3程序总体设计实验设备信息输入模块实验设备信息添加模块实验设备信息修改模块实验设备分内统计模块实验设备查询模块功能选择教学实验设备信息管理系统3.4设计过程与程序功能展示3.4.1主函数void main() Node * equipment; FILE *fo; int flag; Node *p,*q; printf(tttt设备信息管理系统n); equipment=(Node*)malloc(sizeof(Node); N结束根据n值调用各功能模块函数输入n,判断m 是否是0到4?显示一系列功能选择开始equipment-next=NULL; p=equipment; fo=fopen(设备信息管理系统,wb+); q=(Node*)malloc(sizeof(Node); if(fread(q,sizeof(Node),1,fo) /将文件的内容放入接点中 q-next=NULL; p-next=q; p=q; /将该接点挂入链表中 fclose(fo); /关闭文件 while(1) printf(*目录*); printf(n1添加记录n); printf(n2修改记录n); printf(n3显示记录n); printf(n4统计分类记录n); printf(n0*-EXIT-*n); printf(请输入你要操作的序号:); scanf(%d,&flag); switch(flag) case 0: printf(n提示:已经退出系统,ByeBye!n);break; case 1: Add(equipment); break; /增加记录 case 2: Modify(equipment); break;/修改记录 case 3: Disp(equipment); break;/显示记录信息 case 4: Tongji(equipment); break;/统计记录 default: printf(n提示:输入错误!n); break; 3.4.2各功能模块设计(1)输入模块Struct shebei char ID10; char name15; char kind15; char over15; char yesno10; char time10; char price10; ; (2)追加模块void Add(Node *equipment) /添加记录 Node *p,*r,*s; char id10; /先用于输入ID,也用于判断是否跳出循环 r=equipment; s=equipment-next; /使s为第一个有用的结点 while(r-next!=NULL) /这个循环的作用是使r为最后一个有用的结点 开始r=r-next; /将指针置于最末尾 while(1) 输入ID号,并将指针置于最末尾 printf(提示:输入0则返回主菜单!n); printf(n请你输入设备ID号:); scanf(%s,id); if(strcmp(id,0)=0) break; 依次输入shebei 结构体内容,完成一条添加记录p=(Node *)malloc(sizeof(Node); /申请空间 strcpy(p-data.ID,id); printf(n请输入设备名称:); scanf(%s,); 提示以完成一条记录添加printf(n请输入设备种类:); scanf(%s,p-data.kind); printf(n请输入报废日期:); scanf(%s,&p-data.over); printf(n请输入设备是否报废:); 结束scanf(%s,&p-data.yesno); printf(n请输入设备购买时间:); scanf(%s,&p-data.time); printf(n请输入设备价格:); scanf(%s,&p-data.price); printf(提示:已经完成一条记录的添加。n); p-next=NULL; r-next=p; /这一步是必需的,将p与先前的链表连起来构成一条新链表 r=p; /也是必需的.将r 又重设为新链的最后一个有用结点 (3)修改模块void Modify(Node *equipment)/修改 Node *p; char find20; if(!equipment-next) 开始printf(n提示:没有资料可以修改!n); return; 判断是否有内容可以修改 printf(请输入要修改的设备ID号:); scanf(%s,find); p=equipment-next; 没有资料可以修改,跳出while(p!=NULL) if(strcmp(p-data.ID,find)=0) /如果找到的话返回的是符合要求 break; 请输入要修改的设备ID号p=p-next; if(p) /若找到 int x; 完成修改输入0否着输入任意数进行修改while(1) printf(完成修改请输入0否则输入任意数再进行修改:); scanf(%d,&x); 修改成功提示该项记录资料成功修改if(x=0) break; printf(请输入新设备号(原来是 %s ):,p-data.ID); scanf(%s,p-data.ID); printf(请输入新设备名称(原来是 %s ):,); 结束scanf(%s,); printf(请输入新设备设备种类名称(原来是 %s ):,p-data.kind); scanf(%s,p-data.kind); printf(请输入新设备报废日期名称(原来是 %s ):,p-data.over); scanf(%s,p-data.over); printf(请输入新设备是否报废(原来是 %s ):,p-data.yesno); scanf(%s,p-data.yesno); printf(请输入新设备购买时间(原来是 %s ):,p-data.kind); scanf(%s,p-data.time); printf(请输入新设备价格(原来是 %s ):,p-data.price); scanf(%s,p-data.price); printf(n提示:该项记录资料已经成功修改!n); else printf(n提示:你要修改的信息不存在!n); (4)输出记录void Disp(Node *equipment)/输出记录 Node *p; p=equipment-next; if(!p) printf(n提示:没有记录可以显示!n); return; printf(tttt显示结果n); printf(设备号码,设备名称,设备种类,报废日期,是否报废,购买时间,价格n); while(p) printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); p=p-next; 结束束有记录者按要求输出没有记录可以显示,跳出开始(5)统计模块void Tongji(Node *equipment)/统计 Node *p; int sel;int flag2=0,ha=0; char find20;p=equipment-next; if(!equipment-next) /若链表为空 printf(n提示:没有资料可以统计分类!n); return; printf(提示:n=0退出n=1按设备号统计n=2按设备名称统计n); scanf(%d,&sel); if(sel=1) printf(n输入你要统计分类的设备号:); scanf(%s,find); while(p) if(strcmp(p-data.ID,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(设备号码,设备名称,设备种类,报废日期,是否报废,购买时间,价格n); printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); ha=flag2; else if(flag2ha)printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price);ha=flag2; p=p-next; if(flag2) printf(n*按设备号%s统计分类的有%d条记录:*nn,find,flag2); else printf(n按设备号%s统计的结果为0个nn,find); else if(sel=2) printf(n输入你要统计分类的设备名称:); scanf(%s,find); while(p) if(strcmp(,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(设备号码 设备名称 设备种类 报废日期 是否报废 购买时间 价格n); printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); ha=flag2; else if(flag2ha)printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price);ha=flag2; p=p-next; if(flag2) printf(n*按设备名称%s统计的有%d条记录:*nn,find,flag2); else printf(n按设备名称%s统计分类的结果为0个nn,find); else if(sel=0) return; 4.总结这个教学实验设备信息管理系统总的来说可设计为实验设备信息输入模块,实验设备信息添加模块,实验设备信息修改模块,实验设备分类统计模块和实验设备查询模块,设计过程中参照了一些关于信息管理系统方面算法以及思想方法,但是还有许多不足之处,例如怎么去实现设备的细分以及归案。经过这次课程设计方案的多次修正,还有多次调试和运行,自己在一定程度上加深了对C语言、链表和二叉树的理解,在发现问题解决问题的同时也深刻意识到自身对算法的掌握仍旧有很多的不足之处。希望能通过这次课程设计,对自己在算法与数据结构的学习上有更大的帮助,有助于提高对它的深刻理解。参考文献1宁正元、王秀丽. 算法与数据结构.北京:清华大学出版社,2009.2刘汝佳.算法竞赛入门经典.北京:清华大学出版社,2010.源代码void main() Node * equipment; FILE *fo; int flag; Node *p,*q; printf(tttt设备信息管理系统n); equipment=(Node*)malloc(sizeof(Node); equipment-next=NULL; p=equipment; fo=fopen(设备信息管理系统,wb+); q=(Node*)malloc(sizeof(Node); if(fread(q,sizeof(Node),1,fo) /将文件的内容放入接点中 q-next=NULL; p-next=q; p=q; /将该接点挂入链表中 fclose(fo); /关闭文件 while(1) printf(*目录*); printf(n1添加记录n); printf(n2修改记录n); printf(n3显示记录n); printf(n4统计分类记录n); printf(n0*-EXIT-*n); printf(请输入你要操作的序号:); scanf(%d,&flag); switch(flag) case 0: printf(n提示:已经退出系统,ByeBye!n);break; case 1: Add(equipment); break; /增加记录 case 2: Modify(equipment); break;/修改记录 case 3: Disp(equipment); break;/显示记录信息 case 4: Tongji(equipment); break;/统计记录 default: printf(n提示:输入错误!n); break; Struct shebei char ID10; char name15; char kind15; char over15; char yesno10; char time10; char price10; ; void Add(Node *equipment) /添加记录 Node *p,*r,*s; char id10; /先用于输入ID,也用于判断是否跳出循环 r=equipment; s=equipment-next; /使s为第一个有用的结点 while(r-next!=NULL) /这个循环的作用是使r为最后一个有用的结点 r=r-next; /将指针置于最末尾 while(1) printf(提示:输入0则返回主菜单!n); printf(n请你输入设备ID号:); scanf(%s,id); if(strcmp(id,0)=0) break; p=(Node *)malloc(sizeof(Node); /申请空间 strcpy(p-data.ID,id); printf(n请输入设备名称:); scanf(%s,); printf(n请输入设备种类:); scanf(%s,p-data.kind); printf(n请输入报废日期:); scanf(%s,&p-data.over); printf(n请输入设备是否报废:); scanf(%s,&p-data.yesno); printf(n请输入设备购买时间:); scanf(%s,&p-data.time); printf(n请输入设备价格:); scanf(%s,&p-data.price); printf(提示:已经完成一条记录的添加。n); p-next=NULL; r-next=p; /这一步是必需的,将p与先前的链表连起来构成一条新链表 r=p; /也是必需的.将r 又重设为新链的最后一个有用结点 void Modify(Node *equipment)/修改 Node *p; char find20; if(!equipment-next) printf(n提示:没有资料可以修改!n); return; printf(请输入要修改的设备ID号:); scanf(%s,find); p=equipment-next; while(p!=NULL) if(strcmp(p-data.ID,find)=0) /如果找到的话返回的是符合要求 break; p=p-next; if(p) /若找到 int x; while(1) printf(完成修改请输入0否则输入任意数再进行修改:); scanf(%d,&x); if(x=0) break; printf(请输入新设备号(原来是 %s ):,p-data.ID); scanf(%s,p-data.ID); printf(请输入新设备名称(原来是 %s ):,); scanf(%s,); printf(请输入新设备设备种类名称(原来是 %s ):,p-data.kind); scanf(%s,p-data.kind); printf(请输入新设备报废日期名称(原来是 %s ):,p-data.over); scanf(%s,p-data.over); printf(请输入新设备是否报废(原来是 %s ):,p-data.yesno); scanf(%s,p-data.yesno); printf(请输入新设备购买时间(原来是 %s ):,p-data.kind); scanf(%s,p-data.time); printf(请输入新设备价格(原来是 %s ):,p-data.price); scanf(%s,p-data.price); printf(n提示:该项记录资料已经成功修改!n); else printf(n提示:你要修改的信息不存在!n); void Disp(Node *equipment)/输出记录 Node *p; p=equipment-next; if(!p) printf(n提示:没有记录可以显示!n); return; printf(tttt显示结果n); printf(设备号码,设备名称,设备种类,报废日期,是否报废,购买时间,价格n); while(p) printf(n%-10s%-10s%-10s%-10s%-10s%-10s%-10sn,p-data.ID,,p-data.kind,p-data.over,p-data.yesno,p-data.time,p-data.price); p=p-next; void Tongji(Node *equipment)/统计 Node *p; int sel;int flag2=0,ha=0; char find20;p=equipment-next; if(!equipment-next) /若链表为空 printf(n提示:没有资料可以统计分类!n); return; printf(提示:n=0退出n=1按设备号统计n=2按设备名称统计n); scanf(%d,&sel); if(sel=1) printf(n输入你要统计分类的设备号:); scanf(%s,find); while(p) if(strcmp(p-data.ID,find)=0) flag2+; if(flag2=1&ha!=flag2) printf(设备号码,设备名称,设备种类,报废日期,是否报废,购买时间,价格n); printf(n%-10s%-10s%-10s%-10s%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 民法学上课件
- 初一物理考试试题及答案
- 北京驾校考试题库及答案
- 化工产业新质生产力测评体系
- 新质生产力×文化创新:融合赋能新未来
- 新质生产力五大生产要素
- 博鳌论坛:新质生产力对话
- 职教助力新质生产力
- 农业农村新质生产力发展
- 2025年急救护理医学实战技能操作考核答案及解析
- 2025-2030中医药大健康产业链整合与投资机会分析报告
- 小学三年级上册《健康成长》全册教案教学设计
- 有机化学-药用化学基础中职PPT完整全套教学课件
- 国土空间规划概述课件
- 消费者心理学PPT完整全套教学课件
- 《新编实用英语》教学方法的探讨与研究
- 阴式子宫全切术
- 军人常见心理问题
- 某大酒店弱电智能化系统清单报价
- 2023年兴文县中医院康复医学与技术岗位招聘考试历年高频考点试题含答案解析
- 阿联酋法律体系
评论
0/150
提交评论