




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 计算机科学与技术系课程设计报告20102011学年第二学期课程 c+课程设计课程设计名称实验室设备管理系统学生姓名学号 目 录1 课程设计的目的22 课程设计名称及内容23 任务要求24 课程设计报告内容34.1流程图显示34.2程序实现思路65 程序演示96 总结14参考文献 14附录(源代码) 1528实验室设备管理系统1、课程设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程c+程序设计语言的
2、基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。 (2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。 (3)利用所学知识,开发小型应用系统,掌握运用c+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。 (5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。(6)熟练掌握c+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。2、课程设计名称及内容课程设计名称:实验室设备管理系统设计内容:编写一个简单
3、的实验室设备管理程序,帮助管理实验室设备信息。要求具有设备信息管理的功能。其中包括设备信息的录入、删除、查询和修改等功能。还应包括对实验室信息管理的功能。其中包括对实验室信息的录入、删除、修改和查询等功能。3、任务和要求运用面向对象的程序设计方法,要求选择动态数组类模板或链表类模板,任务中要运用i/o流对象对文件进行读写操作。本题程序应提供的基本管理功能有:1) 添加:即增加一条信息到设备信息中,或增加一条信息到实验室信息中;2) 显示:即在屏幕上显示所有设备或实验室信息;3) 存储:即将设备信息和实验室信息分别保存在文件中;4) 装入:即将文件中的信息读入程序;5) 查询:可根据设备名称查找
4、具体情况,若找到,显示在屏幕上; 6) 修改:可修改设备信息,或对实验室信息进行修改。4、 课程设计报告内容head=null输入设备信息linkisempty()p-next=nullhead=nullnewnode =pnewnode -next=pnewnode =p输入新设备信息返回头指针headnyyn4.1 流程图显示将新的设备信息插入链表链表为空head=nullheadnewnode =p1newnode -next=nullp1-next=p-nextp-next=p1输入信息返回头指针newnodeyn删除节点操作的算法流程图输入要删除的设备的编号id链表是否为空head=
5、null判断要删除的是否为头结点head-id=nidhead=head-p p-next=(p-next)-nextp-next!=nullp-id=nidreturn nullpt2=headhead=head-nextfree(pt2)p=p-next;p-next=(p-next)-next; return true返回头指针headynynynyn4.2 程序实现思路定义一个结点类,用于存放实验室设备的各种信息;定义一个link类,把数据以链表的形式存储,链表的每个结点为一个node对象;定义一个shebei类,用于包装link类及菜单操作;定义link类和shebei类的成员函数,
6、实现要求的各种功能;link类:class link/link类,把数据以链表的形式存储,链表的每个结点为一个node对象private: node *head; /链表的头指针,为node对象类型的指针public : link();/构造函数,初始化变量 bool linkisempty();/判断链表是否为空 void linkinsert(node *newnode);/向链表中插入新的结点 bool linkdelete(int nid);/从链表中删除的结点 void linkclear();/清空链表中数据 void linkview();/查看链表中数据 node* linkf
7、ind(int nid);/在链表中查找id为nid结点,返回指向该结点的指针 node* gethead();/获取头指针;shebei类:class shebeiprivate: link clink;/link对象成员 bool k;/记录数据是否被修改public: shebei(); void shebeiclear(); void shebeiinsert(); void shebeidelete(); void shebeifind();void shebeimodify(); void shebeiview(); void shebeiload(); void shebeisa
8、ve(); void exit();/退出程序 void showmenu();/显示菜单 void showtip();/显示操作提示 void domenu(char n);/执行相应菜单项功能;然后就是各个函数的具体定义。菜单选择功能的实现,使用switch语句;菜单选择函数的定义:void shebei:showmenu() couttt*endl; couttt* 实验室设备管理系统 *endl;couttt* *endl;couttt* 1-清空:清除所有设备信息 *endl;couttt* *endl;couttt* 2-添加:增加一个设备到设备信息中 *endl;couttt*
9、 *endl;couttt* 3-删除:删除指定设备数据 *endl; couttt* *endl;couttt* 4-查找:根据设备数据查找设备信息 *endl;couttt* *endl;couttt* 5-修改:修改指定设备信息 *endl;couttt* *endl;couttt* 6-显示:在屏幕上显示所有设备的信息 *endl;couttt* *endl;couttt* 7-存储:将设备信息保存在一个文件中 *endl;couttt* *endl;couttt* 0-退出:安全的退出本系统 *endl; couttt*endl;void shebei:showtip() coute
10、ndl; cout*操作完成*endl; cout*选择07 继续*endl; cout请选择:;void shebei:domenu(char n) switch(n) case 1: shebeiclear(); break; case 2: shebeiinsert(); break;case 3: shebeidelete();break; case 4: shebeifind(); break;case 5: shebeimodify(); break; case 6: shebeiview(); break; case 7: shebeisave(); break; case 0:
11、 exit(); break; default: cout输入错误!; 5、 程序演示5.1、进入系统5.2添加设备信息 5.3删除指定设备信息 5.4根据设备数据查找设备信息 5.5 修改设备信息 5.6 显示所有设备信息5.7 将设备信息存储在文本中6、 总结经过一个星期的c+程序设计,让我明白到了c+这门课的重要性,c+作为一门电脑学的基础课,是我们必须掌握的顺电脑飞速发展的今天,掌握电脑的应用是如今每一位大学生所必须掌握的,掌握电脑有对各人来说有我种好处,学习电脑是一种本领,也是一种生存的技能,而c+做为电脑的基础,掌握它更是我们这些大学生所必须掌握的。经过这次程序设计,让我认识到了c
12、+的运用是相当广泛的,才拿到题目的时候,我真的不知道该怎么办,但随着慢慢的设计,思路也总算有了,这样才能继续进行下去,这时我才真正认识到了c+的功能原来是那么的多。一个复杂的实验室设备管理系统,经过500-600行的代码就可以完完全全的达到,这是让我非常惊讶的,但相对,如今的c+也是非常难的,这学期学到的一些内容,都是c+的重点,但学下来以后感觉还是很难所以必须先打好基础,基础好了,学什么都会容易很多。这次的程序设计让我重新认识到了c+,这是一门非常重要的科目,我们必须付出很多倍的努力学习它,才能熟练地掌握它。参考资料1郑莉 等编著c+语言程序设计(第三版)北京:清华大学出版社2郑莉 等编著c
13、+语言程序设计(第三版)学生用书北京: 清华大学出版社3李春葆 等编著c+程序设计学习与上机实验指导 北京:清华大学出版社4范辉 等编著visual c+6.0程序设计简明教程 高等教育出版社5李龙澍c+程序设计实训教程北京:清华大学出版社 6洪国胜 等编著 c+ builder程序设计轻松上手北京:清华大学出版社7严蔚敏等 数据结构(c语言版) 北京:清华大学出版社,1997年4月第1版。8胡学钢等数据结构算法设计指导北京:清华大学出版社,1999年 第1版。源代码#include#include#include#include#includeusing namespace std;clas
14、s node /结点类,用于存放客户的各种信息public: long id; /实验设备编号 string name; /名称 string type; /设备类型string suoshushiyanshi; /实验设备所属实验室string buytime; /购买时间string price; /价格string amount; /库存量string shengchanriqi; /生产日期string shiyongshouming; /使用寿命 string weight; /重量 node *next; /指向下一结点的指针 node(long id=000,string nna
15、me=noname,string ntype=unkown,string nsuoshushiyanshi=unknow,string nbuytime=unknow,string nprice=unknow,string namount=unknow, string nshengchanriqi=unkown,string nshiyongshouming=unknow,string nweight=unknow );/构造函数,初始化变量;class link/link类,把数据以链表的形式存储,链表的每个结点为一个node对象private: node *head; /链表的头指针,为n
16、ode对象类型的指针public : link();/构造函数,初始化变量 bool linkisempty();/判断链表是否为空 void linkinsert(node *newnode);/向链表中插入新的结点 bool linkdelete(int nid);/从链表中删除的结点 void linkclear();/清空链表中数据 void linkview();/查看链表中数据 node* linkfind(int nid);/在链表中查找id为nid结点,返回指向该结点的指针 node* gethead();/获取头指针;node:node(long nid, string nn
17、ame, string ntype,string nsuoshushiyanshi,string nbuytime,string nprice,string namount, string nshengchanriqi,string nshiyongshouming,string nweight) id=nid; name=nname;type=ntype;suoshushiyanshi=nsuoshushiyanshi;buytime=nbuytime;price=nprice;amount=namount;shengchanriqi=nshengchanriqi;shiyongshoumi
18、ng=nshiyongshouming; weight=nweight; next=null;link:link() /构造函数,初始化链表为空 head=null;bool link:linkisempty() /判断链表是否为空,空则返回true return(head=null);void link:linkinsert(node *newnode) /按id值从小到大的顺序,插入新的结点 node *p1; if(!head)/链表为空的情况 head=newnode; else if(head-id)(newnode-id) /插入到第一个结点的情况 newnode-next=hea
19、d; head=newnode; else /插入到第二个及以后情况 p1=head; while(1) if(!(p1-next) p1-next=newnode; break; else if(p1-next)-idnewnode-id) newnode-next=p1-next; p1-next=newnode; break; p1=p1-next; bool link:linkdelete(int nid) /删除结点,成功则返回true node *p; if(head=null)/链表为空的情况 return false; if(head-id=nid) /删除的为第一个结点的情况
20、 head=head-next; return true; p=head; while(p-next) /删除的为第二个及以后结点的情况 if(p-next)-id=nid) p-next=(p-next)-next; return true; p=p-next; return false;void link:linkclear() /清空链表 head=null;node* link:linkfind(int nid) /查找id值为nid的结点,返回该结点的指针 node *p=head; /没找到符合条件的结点的话,返回的指针值为null while(p) if(p-id=nid) br
21、eak; else p=p-next; return p;void link:linkview() /显示链表数据 node *p=head; while(p) cout实验设备编号:idendl; cout名称:nameendl; cout类型:typeendl; cout所属实验室:suoshushiyanshiendl; cout购买时间:buytimeendl; cout价格:priceendl; cout库存量:amountendl; cout生产日期:shengchanriqiendl; cout使用寿命:shiyongshoumingendl; cout重量:weightendl
22、; cout*next; node* link:gethead() return head;/类shebei,用于包装link类及菜单操作class shebeiprivate: link clink;/link对象成员 bool k;/记录数据是否被修改public: shebei(); void shebeiclear(); void shebeiinsert(); void shebeidelete(); void shebeifind();void shebeimodify(); void shebeiview(); void shebeiload(); void shebeisave
23、(); void exit();/退出程序 void showmenu();/显示菜单 void showtip();/显示操作提示 void domenu(char n);/执行相应菜单项功能;shebei:shebei() link();/调用成员对象的构造函数 shebeiload();/从文件中读取数据,创建链表 k=false;/设置数据被修改void shebei:shebeiclear() /清空设备记录 clink.linkclear(); cout成功清空设备信息记录!endl;void shebei:shebeiinsert() /插入设备记录 node *p=new no
24、de(); coutp-id; coutp-name; coutp-type;coutp-suoshushiyanshi;coutp-buytime; coutp-price; coutp-amount; coutp-shengchanriqi;coutp-weight; if(!clink.linkfind(p-id) /判断设备信息是否存在 clink.linkinsert(p); k=true; else cout设备编号为id的的设备已存在,插入失败!endl;void shebei:shebeidelete() /删除设备记录 long i; if(clink.linkisempty
25、()/链表为空的情况 cout没有设备记录!endl; else couti; if(clink.linkdelete(i) cout成功删除编号为i的实验记录!endl; k=true; else cout没有找到编号为i的设备!endl; void shebei:shebeifind() /查找某编号的设备记录 long n; node *p; if(clink.linkisempty()/链表为空的情况 cout没有设备记录!endl; else coutn; p=clink.linkfind(n);/获得找到的结点的指针 if(p) /指针值不为null时 cout实验设备编号:ide
26、ndl; cout名称:nameendl; cout类型:typeendl; cout所属实验室:suoshushiyanshiendl; cout购买时间:buytimeendl; cout价格:priceendl; cout库存量:amountendl; cout生产日期:shengchanriqiendl; cout使用寿命:shiyongshoumingendl; cout重量:weightendl; else/指针值为null时 cout没有找到编号为n的设备记录!endl; void shebei:shebeimodify() /修改某编号的设备信息 long n; node *p
27、; if(clink.linkisempty()/链表为空的情况 cout没有设备记录!endl; else coutn; p=clink.linkfind(n);/获得找到的结点的指针 if(p) /指针值不为null时 cout实验设备编号:idendl; cout名称:nameendl; cout类型:typeendl; cout所属实验室:suoshushiyanshiendl; cout购买时间:buytimeendl; cout价格:priceendl; cout库存量:amountendl; cout生产日期:shengchanriqiendl; cout使用寿命:shiyong
28、shoumingendl; cout重量:weightendl;cout请输入新的设备信息endl;coutp-id; coutp-name; coutp-type; coutp-suoshushiyanshi; coutp-buytime; coutp-price; coutp-amount; coutp-shengchanriqi; coutp-weight; else/指针值为null时 cout没有找到编号为n的设备记录!endl; void shebei:shebeiview() /显示所有设备的记录 if(clink.linkisempty() cout没有设备记录!endl; e
29、lse clink.linkview();void shebei:shebeiload() /从文件中读入数据,创建链表 node *p; long nid; ifstream infile(data.txt); if(!infile) cerrnid) /读取客户,直到读空 p=new node(); p-id=nid; infilep-name ; /读取名称 infilep-type ;infilep-suoshushiyanshi ; infilep-buytime ; infilep-price ; infilep-amount ; infilep-shengchanriqi ;in
30、filep-weight ; clink.linkinsert(p); infile.close(); /关闭文件void shebei:shebeisave() /将数据保存到文件 node *p=clink.gethead(); ofstream outfile(data.txt); if(!outfile) cerr错误:数据文件不能打开!n; else while(p) outfileid name type suoshushiyanshi buytime price amount shengchanriqi weight next; k=false; cout保存成功!endl; void shebei:exit() char s=y; if(k) /判断数据是否
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030年中国玄参数据监测研究报告
- 2025至2030年中国滤纸打痕机数据监测研究报告
- 2025至2030年中国模具树脂数据监测研究报告
- 2025至2030年中国智能电子调节器数据监测研究报告
- 2025至2030年中国明式低圆桌数据监测研究报告
- 2025至2030年中国带底座移动式喷头数据监测研究报告
- 2025至2030年中国工业呼吸面罩数据监测研究报告
- 2025至2030年中国小家电货架数据监测研究报告
- 2025至2030年中国奇味村威化饼干数据监测研究报告
- 2025至2030年中国可充气半透明大宝石打火机数据监测研究报告
- 团员发展纪实簿
- 河南投资集团笔试真题
- 2024年中国废尼龙市场调查研究报告
- 建设工程管理毕业实践报告
- 无人机应用与基础操控入门课件
- 湖南省城镇排水管道非开挖修复更新技术标准(发布稿)
- 完整版:美制螺纹尺寸对照表(牙数、牙高、螺距、小径、中径外径、钻孔)
- GB/T 23863-2024博物馆照明设计规范
- 四川省会计师事务所服务收费标准
- 化学品泄露应急处置培训
- 化学品作业场所安全警示标志大全
评论
0/150
提交评论