版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、推南艸紅學院C程序设计课程设计报告(2015-2016学年度 第一学期)题目:实验室设备管理系统学生姓名:宋波学号:1508210120班级:15 计科3班指导老师:邓明日期:2016年4月9日淮南师范学院计算机学院2016年4月9日1课程设计名称及内容 21.1程序设计组成框图 22任务要求 33课程设计报告内容 33.1流程图显示 33.2程序实现思路 64程序演示 95总结 136源代码 14实验室设备管理系统1、课程设计名称及内容课程设计名称:实验室设备管理系统 设计内容:编写一个简单的实验室设备管理程序,帮助管理实验室设备信息。要求具有 设备信息管理的功能。其中包括设备信息的录入、删
2、除、查询和修改等功能。还应包括对 实验室信息管理的功能。其中包括对实验室信息的录入、删除、修改和查询等功能程序设计组成框图2、任务和要求运用面向对象的程序设计方法,要求选择动态数组类模板或链表类模板,任务中要 运用I/O流对象对文件进行读写操作。本题程序应提供的基本管理功能有:1)添加:即增加一条信息到设备信息中,或增加一条信息到实验室信息中;2)显示:即在屏幕上显示所有设备或实验室信息;3)存储:即将设备信息和实验室信息分别保存在文件中;4)装入:即将文件中的信息读入程序;5)查询:可根据设备名称查找具体情况,若找到,显示在屏幕上;6)修改:可修改设备信息,或对实验室信息进行修改。3、课程设
3、计报告内容3.1流程图显示将新的设备信息插入链表删除节点操作的算法流程图输入要删除的设备的编号idreturn NULL链表是否为空head=NULLN判断要删除的是否为头结点Yhead->id=nidpt2=head head=head->next free(p t2)N3.2 程序实现思路 定义一个结点类,用于存放实验室设备的各种信息; 定义一个Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象;定义一个 Shebei 类,用于包装 Link 类及菜单操作; 定义 Link 类和 Shebei 类的成员函数,实现要求的各种功能;Link 类:class Lin
4、k/Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象private:Node *head; / 链表的头指针,为Node对象类型的指针 public :Link();/ 构造函数,初始化变量bool linkIsEmpty();/判断链表是否为空void linkInsert(Node *newnode);/向链表中插入新的结点bool linkDelete(int nid);/从链表中删除的结点void linkClear();/清空链表中数据void linkView();/ 查看链表中数据Node* linkFind(int nid);/在链表中查找 id 为 nid
5、 结点,返回指向该结点的指针Node* getHead();/ 获取头指针 ;Shebei 类: class Shebei private:Link clink;/Link对象成员bool k;/ 记录数据是否被修改 public:Shebei();void ShebeiClear();void ShebeiInsert(); void ShebeiDelete();void ShebeiFind();void ShebeiModify();void ShebeiView();void ShebeiLoad();void ShebeiSave();void Exit();/ 退出程序void
6、showMenu();/ 显示菜单void showTip();/ 显示操作提示void doMenu(char n);/ 执行相应菜单项功能 ;然后就是各个函数的具体定义。菜单选择功能的实现 , 使用 switch 语句; 菜单选择函数的定义:void Shebei:showMenu()cout<<"tt*"<<endl;cout<<"tt*cout<<"tt*"<<endl;cout<<"tt*1-cout<<"tt*"<
7、<endl;cout<<"tt*2-cout<<"tt*cout<<"tt*3-删*"<<endl;cout<<"tt*4-cout<<"tt*cout<<"tt*5-cout<<"tt*cout<<"tt*6-cout<<"tt*"<<endl;cout<<"tt*7-cout<<"tt*cout<
8、<"tt*0-实验室设备管理系统清空:清除所有设备信息*"<<endl;*"<<endl;添加:增加一个设备到设备信息中*"<<endl;*"<<endl;:删除指定设备数据 *"<<endl; cout<<"tt*查找:根据设备数据查找设备信息*"<<endl;修改:修改指定设备信息*"<<endl;*"<<endl;*"<<endl;显示:在屏幕上显示所有设
9、备的信息存储:将设备信息保存在一个文件中*"<<endl;退出:安全的退出本系统*"<<endl;*"<<endl;*"<<endl;cout<<"tt*"<<endl;void Shebei:showTip()cout<<endl;CC d"'*操作完成*、'<<endl;cout<<"*选择 07 继续*、'<<endl;cout<<" 请选择:
10、" 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': Shebei
11、Save(); break;case 'O':Exit();break;default:COUtVV"输入错误!"4、程序演示4.1、进入系统4.2添加设备信息lot JtKXSMKFK*梵沌冥*f幫耳址*i青选择;*MI *C:U fbXniiir't - s D tr>klt>pDts bug实逾宰送亘宜 Zi慝进.extT10退出*农全的退出本系统WM»6S.Jst?一锐根扌居祓锚扌居直找谟制言息 修改j旨定设备信息在屏幕上显示所有设备的信息 轉设备喑息保存在一个文件中4 一査協5侈改.01013楚 0 4 丄 IfHl
12、fr" 0 3 -it 二篇12:期量 编-.量昙 嘉型属买格存产官 爰青购护塞设 AAAAAAAAA hlK>Hlf!>齐口 erIfl4.3删除指疋设备信息4.4根据设备数据查找设备信息MM MM完成*號桂豪耳acjfxac at號輔1602* /j: day in Ji型=inuln j it7T 属気脸室 ifihianshia 旬买时 |E:200£-01-0 丄 (榕:丄乂色陋yuan 竺住崖汐肮沁岂片尹口丁 mnknow:23kg疋疑耳强X M:耳冥4隹捣根揖设备数据查扶设副百息5修颈修旳旨定谟备信息4-豆亍:在用草上辰示用有设备的信息 卩诗協祁设
13、昔信息保存在一t文件中 0退出=妥全的退岀本系统零查戏设隹的编弓苗编号:10W2耳梵耳豪:M垃耳K耳4.5修改设备信息4.6显示所有设备信息h"C:U «#-r imi it r Dv $ kta> p D w-bugk 论垂 iEE弋FT 际讲K 其 M MKHMM-K KM MK M-K XMM1-1 设备编-M- S1 s touuFlnigl-touif 丄 m#,Hi? iu hl v«miui12= S4kcrH修改临改梧疋设釜信息.乂融设畜编号:l«kM -弓称"h* hvi HzJsstrafca iZ 册主买验室=I口
14、1 :2H»i m at使书寿昭二Lin k 11 u w 至呈叮电刚imtmynui-An丄空t:4玄1 19 9 >01-01t imliinnw右一區示,住屏幕上品示所有设备的唁总 "-存储厚说盍信息恨序在一个文舛中 p追出安全閉退出本彖缢4.7将设备信息存储在文本中10D4 shcbci sh=bei2 shiymshii 2001-01-01 125Qyuan1 狛翱 ks,IflD3 'toiiyirgyi touyingyil 5kiyan=!hl2 2D01-01-Q3 lODyuanIS9-01-01 54kg5、总结经过一个星期的C语言程序
15、设计,让我明白到了 C语言这门课的重要性,C语言作 为一门电脑学的基础课,是我们必须掌握的顺电脑飞速发展的今天,掌握电脑的应用是如 今每一位大学生所必须掌握的,掌握电脑有对各人来说有我种好处,学习电脑是一种本领, 也是一种生存的技能,而 C语言做为程序的基础,掌握它更是我们这些大学生所必须掌 握的。经过这次程序设计,让我认识到了 C语言的运用是相当广泛的,才拿到题目的时候, 我真的不知道该怎么办,但随着慢慢的设计,思路也总算有了,这样才能继续进行下去, 这时我才真正认识到了 C语言的功能原来是那么的多。一个复杂的实验室设备管理系统, 经过500-600行的代码就可以完完全全的达到,这是让我非常
16、惊讶的,但相对,如今的 C 语言也是非常难的,这学期学到的一些内容,都是C语言的重点,但学下来以后感觉还是很难所以必须先打好基础,基础好了,学什么都会容易很多。这次的程序设计让我重新认识到了 C语言,这是一门非常重要的科目,我们必须付 出很多倍的努力学习它,才能熟练地掌握它。源代码#include<iostream> #include<cstdlib> #include<string> #include<fstream> #include<sstream> using namespace std;class Node / 结点类,用于
17、存放客户的各种信息 public:long id;string name;string type;string suoshushiyanshi;string buytime;string price;string amount;string shengchanriqi;string shiyongshouming;string weight;Node *next;/实验设备编号/名称/设备类型/实验设备所属实验室/购买时间/价格/库存量/生产日期/使用寿命/重量/指向下一结点的指针nname="noname",string ntype="unkown",
18、stringNode(long id=000,stringnsuoshushiyanshi="unknow",string nbuytime="unknow",string nprice="unknow",string namount="unknow", string nshengchanriqi="unkown",string nshiyongshouming="unknow",string nweight="unknow" );/ 构造函数,初始化;c
19、lass Link/Link 类,把数据以链表的形式存储,链表的每个结点为一个 Node 对象 private:Node *head; /链表的头指针,为 Node 对象类型的指针public :Link();/ 构造函数,初始化变量bool linkIsEmpty();/ 判断链表是否为空void linkInsert(Node *newnode);/ 向链表中插入新的结点bool linkDelete(int nid);/ 从链表中删除的结点void linkClear();/ 清空链表中数据void linkView();/ 查看链表中数据Node* linkFind(int nid);
20、/ 在链表中查找 id 为 nid 结点,返回指向该结点的指针Node* getHead();/获取头指针;Node:Node(long nid, string nname, string ntype,string nsuoshushiyanshi, string nbuytime,string nprice,string namount, string nshengchanriqi, string nshiyongshouming,string nweight)id=nid;name=nname;type=ntype;suoshushiyanshi=nsuoshushiyanshi;buyt
21、ime=nbuytime;price=nprice;amount=namount;shengchanriqi=nshengchanriqi;shiyongshouming=nshiyongshouming;weight=nweight;next=NULL;Link:Link()/构造函数,初始化链表为空head=NULL;bool Link:linkIsEmpty()/判断链表是否为空,空则返回 truereturn(head=NULL);共同设计 void Link:linkInsert(Node *newnode) / 按 id 值从小到大的顺序,插入新的结点 Node *p1;if(!h
22、ead)链表为空的情况 head=newnode;else if(head->id)>(newnode->id) /插入到第一个结点的情况newnode->next=head;head=newnode;else /插入到第二个及以后情况p1=head;while(1)if(!(p1->next)p1->next=newnode; break;else if(p1->next)->id>newnode->id) newnode->next=p1->next; p1->next=newnode; break; p1=p1
23、->next;bool Link:linkDelete(int nid) / 删除结点,成功则返回 true Node *p;if(head=NULL)/ 链表为空的情况 return false;if(head->id=nid) / 删除的为第一个结点的情况 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;r
24、eturn false;由陈广鹏设计void Link:linkClear() / 清空链表 head=NULL;Node* Link:linkFind(int nid) / 查找 id 值为 nid 的结点,返回该结点的指针Node *p=head;/没找到符合条件的结点的话,返回的指针值为 NULLwhile(p)if(p->id=nid)break;elsep=p->next;return p;void Link:linkView() / 显示链表数据Node *p=head;while(p)cout<<" 实验设备编号 :"<<p
25、->id<<endl;cout«"名称:"<<p->n ame«e ndl;cout«"类型:"<<p->type<<e ndl;coutvv"所属实验室:"<<p->suoshushiyanshivvendl;coutvv"购买时间:"<vp->buytime<vendl;coutvv"价格:"<<p->price<<e ndl;co
26、utvv"库存量:"<<p->amount<<endl;coutvv"生产日期:"<<p->shengchanriqivvendl;coutvv"使用寿命:"vvp->shiyongshoumingvvendl;coutvv"重量:"vvp->weight<ve ndl;coutvv"*、'vvendl;p=p->next;Node* Link:getHead()return head;/类Shebe,用于包装Link类及菜单
27、操作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();void Exit();/ 退出程序void showMe nu(); 显示菜单void showTip();显示操作提示void doMe n
28、u (char n);执行相应菜单项功能 ;Shebei:Shebei()Li nk();调用成员对象的构造函数ShebeiLoad();从文件中读取数据,创建链表 k=false;设置数据被修改void Shebei:ShebeiClear() /清空设备记录clink.linkClear();coutvv"成功清空设备信息记录!"<<e ndl;void Shebei:ShebeiInsert() /插入设备记录Node *p=new Node();coutvv"请输入设备编号:";cin>>p->id;coutvv&q
29、uot;请输入名称:"cin>>p->name;coutvv"请输入类型:"cin>>p->type;coutvv"请输入所属实验室:"cin>>p->suoshushiyanshi;coutvv"请输入购买时间:"cin>>p->buytime;coutvv"请输入价格:"cin>>p->price;coutvv"请输入库存量:"cin>>p->amount;coutvv&qu
30、ot;请输入生产日期:"cin>>p->shengchanriqi;coutvv"请输入设备重量:"cin>>p->weight;if(!clink.linkFind(p->id) / 判断设备信息是否存在 clink.linkInsert(p); k=true;"vvendl; 由陈磊设计else coutvv"设备编号为"vvp->idvv"的的设备已存在,插入失败!void Shebei:ShebeiDelete() /删除设备记录long i;if(clink.link
31、IsEmpty()/ 链表为空的情况coutvv"没有设备记录! "vve ndl;elsecoutvv"请输入设备编号:cin>>i;if(clink.linkDelete(i)coutvv"成功删除编号为"<<i<<"的实验记录! "<<endl; k=true;elsecoutvv"没有找到编号为"<<ivv"的设备! "<<endl;void Shebei:ShebeiFind() /查找某编号的设备记录l
32、ong n;Node *p;if(clink.linkIsEmpty()/ 链表为空的情况coutvv"没有设备记录! "<<e ndl;elsecoutvv"请输入要查找设备的编号:"cin>>n;p=clink.linkFind(n);/ 获得找到的结点的指针if(p) /指针值不为 NULL 时coutvv"实验设备编号:"vvp->idvvendl;coutvv"名称:"vvp->n amevve ndl;coutvv"类型:"vvp->type
33、vve ndl;coutvv"所属实验室:"vvp->suoshushiyanshivvendl;coutvv"购买时间:"vvp->buytimevvendl;coutvv"价格:"vvp->pricevve ndl;coutvv"库存量:"vvp->amountvvendl;coutvv"生产日期:"vvp->shengchanriqivvendl;coutvv"使用寿命:"vvp->shiyongshoumingvvendl;cout
34、vv"重量:"vvp->weightvve ndl;else/指针值为NULL时coutvv"没有找到编号为"<<*<"的设备记录! "<<endl; void Shebei:ShebeiModify() /修改某编号的设备信息long n;Node *p;if(clink.linkIsEmpty()/ 链表为空的情况cout«"没有设备记录! "<<e ndl;elsecoutvv"请输入要修改设备的编号:"cin>>n;p
35、=clink.linkFind(n);/ 获得找到的结点的指针 if(p) /指针值不为 NULL 时coutvv"实验设备编号:"vvp->id<vendl;coutvv"名称:"vvp->n amevve ndl;coutvv"类型:"vvp->typevve ndl;coutvv"所属实验室:"vvp->suoshushiyanshivvendl;coutvv"购买时间:"vvp->buytime<vendl;coutvv"价格:&quo
36、t;vvp->pricevve ndl;coutvv"库存量:"vvp->amountvvendl;coutvv"生产日期:"vvp->shengchanriqivvendl;coutvv"使用寿命:"vvp->shiyongshoumingvvendl; coutvv"重量:"vvp->weightvve ndl;coutvv"请输入新的设备信息"vvendl;coutvv"请输入设备编号:"cin>>p->id;coutvv
37、"请输入名称:" cin>>p->name; coutvv"请输入类型:" cin>>p->type;cout<<" 请输入所属实验室: " cin>>p->suoshushiyanshi;cout<<" 请输入购买时间: " cin>>p->buytime;cout<<" 请输入价格: " cin>>p->price;cout<<" 请输入库存量:
38、 " cin>>p->amount;cout<<" 请输入生产日期: " cin>>p->shengchanriqi;cout<<" 请输入设备重量: " cin>>p->weight;else/指针值为NULL时coutvv"没有找到编号为"<<n<<"的设备记录! "<<endl; 由边 飞设 计void Shebei:ShebeiView() /显示所有设备的记录if(clink.lin
39、kIsEmpty()cout«"没有设备记录!"<<e ndl;elseclink.linkView();void Shebei:ShebeiLoad() /从文件中读入数据,创建链表Node *p;long nid;ifstream infile("data.txt");if(!infile)cerr«"错误:数据文件不能打开!n"elsewhile(infile>>nid) / 读取客户,直到读空p=new Node();p->id=nid;infile>>p->
40、name>>" "/读取名称infile>>p->type>>" " infile>>p->suoshushiyanshi>>" " infile>>p->buytime>>" " infile>>p->price>>" " infile>>p->amount>>" " infile>>p->she
41、ngchanriqi>>" " infile>>p->weight>>" "clink.linkInsert(p);in(); /关闭文件void Shebei:ShebeiSave() /将/ 数据保存到文件Node *p=clink.getHead();ofstream outfile("data.txt");if(!outfile)cerr«"错误:数据文件不能打开!n"elsewhile(p)"<<p->type<<
42、""<<p->amount<<"outfile<<p->id<<""<<p->name<<""<<p->suoshushiyanshi<<" "<<p->buytime<<" "<<p->price<<""<<p->shengchanriqi<<"&
43、quot;<<p->weight<<" "<<endl;p=p->next;k=false;cout< < "保存成功! "<<endl;void Shebei:Exit()char s='Y'if(k) /判断数据是否修改coutvv"数据已经改变,是否保存?(y/n):"cin>>s;if(s='y'|s='Y')ShebeiSave();coutvv"已安全退出,"system("pause");exit(0); 由丁小泷设计void Shebei:showMenu()coutvv"tt 实验室设备管理系统&qu
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 元旦返乡营销方案(3篇)
- 扶贫攻坚领域应急预案(3篇)
- 水景喷泉管道施工方案(3篇)
- 执纪审查应急演练预案(3篇)
- 旅游营销传播方案(3篇)
- 维修配件供应链优化-第3篇
- 深圳西部港口保安服务公司发展战略研究:基于港口特色与市场需求的探索
- 淮安经济开发区管委会人力资源开发:现状、问题与策略转型
- 淡水鱼鱼鳞去除方法的多维探究与创新实践
- 淀粉基分散剂助力多壁碳纳米管分散:制备、原理与应用新探
- 应用心理学专业-《变态心理学》-2024版教学大纲
- 现代色谱分离技术
- 企业HSE绩效考核指标体系
- 2025至2030中国二手奢侈品鉴定标准与流通体系研究报告
- 成人吞咽障碍患者口服给药护理-2025中华护理学会团体标准
- 慢性顽固性疼痛的护理课件
- 2026年江苏航空职业技术学院单招职业技能考试题库附答案
- 蜜雪冰城成本管理
- 2025年赛事运营经理招聘面试参考题库及答案
- 北师大版一年级下册数学专项卷(钟表认读)考试题及答案
- 2025年美术对口招生真题及答案
评论
0/150
提交评论