C语言课程设计实验设备管理.docx
- 文档编号:4267386
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:30
- 大小:466.63KB
C语言课程设计实验设备管理.docx
《C语言课程设计实验设备管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验设备管理.docx(30页珍藏版)》请在冰豆网上搜索。
C语言课程设计实验设备管理
《程序设计基础(C)》课程设计报告
实验室设备管理系统
学生姓名:
陈广鹏
学号:
201211353
班级:
电力1201班
指导老师:
邓伟华
日期:
2013-7-5
兰州交通大学新能源与动力工程学院
1课程设计的目的………………………………………………………………2
2课程设计名称及内容…………………………………………………………2
2.1程序设计组成框图…………………………………………………………2
3任务要求………………………………………………………………………3
4课程设计报告内容……………………………………………………………3
流程图显示…………………………………………………………………3
4.2程序实现思路………………………………………………………………6
5程序演示………………………………………………………………………9
6总结……………………………………………………………………………13
参考文献…………………………………………………………………………14
附录(源代码)…………………………………………………………………28
实验室设备管理系统
1、课程设计目的
将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。
通过课程设计,学生在下述各方面的能力应该得到锻炼:
(1)进一步巩固、加深学生所学专业课程《C++程序设计语言》的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。
(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。
(3)利用所学知识,开发小型应用系统,掌握运用C++语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。
(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。
(5)掌握结构化程序设计方法,熟悉面向对象程序设计方法。
(6)熟练掌握C++语言的基本语法,灵活运用各种数据类型。
(7)进一步掌握在集成环境下如何调试程序和修改程序。
2、课程设计名称及内容
课程设计名称:
实验室设备管理系统
设计内容:
编写一个简单的实验室设备管理程序,帮助管理实验室设备信息。
要求具有设备信息管理的功能。
其中包括设备信息的录入、删除、查询和修改等功能。
还应包括对实验室信息管理的功能。
其中包括对实验室信息的录入、删除、修改和查询等功能。
2.1程序设计组成框图
3、任务和要求
运用面向对象的程序设计方法,要求选择动态数组类模板或链表类模板,任务中要运用I/O流对象对文件进行读写操作。
本题程序应提供的基本管理功能有:
1)添加:
即增加一条信息到设备信息中,或增加一条信息到实验室信息中;
2)显示:
即在屏幕上显示所有设备或实验室信息;
3)存储:
即将设备信息和实验室信息分别保存在文件中;
4)装入:
即将文件中的信息读入程序;
5)查询:
可根据设备名称查找具体情况,若找到,显示在屏幕上;
6)修改:
可修改设备信息,或对实验室信息进行修改。
4、课程设计报告内容
4.1流程图显示
4.2程序实现思路
定义一个结点类,用于存放实验室设备的各种信息;
定义一个Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象;
定义一个Shebei类,用于包装Link类及菜单操作;
定义Link类和Shebei类的成员函数,实现要求的各种功能;
Link类:
classLink//Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象
{
private:
Node*head;//链表的头指针,为Node对象类型的指针
public:
Link();//构造函数,初始化变量
boollinkIsEmpty();//判断链表是否为空
voidlinkInsert(Node*newnode);//向链表中插入新的结点
boollinkDelete(intnid);//从链表中删除的结点
voidlinkClear();//清空链表中数据
voidlinkView();//查看链表中数据
Node*linkFind(intnid);//在链表中查找id为nid结点,返回指向该结点的指针
Node*getHead();//获取头指针
};
Shebei类:
classShebei
{
private:
Linkclink;//Link对象成员
boolk;//记录数据是否被修改
public:
Shebei();
voidShebeiClear();
voidShebeiInsert();
voidShebeiDelete();
voidShebeiFind();
voidShebeiModify();
voidShebeiView();
voidShebeiLoad();
voidShebeiSave();
voidExit();//退出程序
voidshowMenu();//显示菜单
voidshowTip();//显示操作提示
voiddoMenu(charn);//执行相应菜单项功能
};
然后就是各个函数的具体定义。
菜单选择功能的实现,使用switch语句;
菜单选择函数的定义:
voidShebei:
:
showMenu()
{
cout<<"\t\t**************************************************"< cout<<"\t\t**"< cout<<"\t\t*1--清空: 清除所有设备信息*"< cout<<"\t\t**"< cout<<"\t\t*2--添加: 增加一个设备到设备信息中*"< cout<<"\t\t**"< cout<<"\t\t*3--删除: 删除指定设备数据*"< cout<<"\t\t*4--查找: 根据设备数据查找设备信息*"< cout<<"\t\t**"< cout<<"\t\t*5--修改: 修改指定设备信息*"< cout<<"\t\t**"< cout<<"\t\t*6--显示: 在屏幕上显示所有设备的信息*"< cout<<"\t\t**"< cout<<"\t\t*7--存储: 将设备信息保存在一个文件中*"< cout<<"\t\t**"< cout<<"\t\t*0--退出: 安全的退出本系统*"< cout<<"\t\t**************************************************"< } voidShebei: : showTip() { cout< cout<<"****************操作完成*********************"< cout<<"**************选择0-7继续*****************"< cout<<"请选择: "; } voidShebei: : doMenu(charn) { 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': 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++的运用是相当广泛的,才拿到题目的时候,我真的不知道该怎么办,但随着慢慢的设计,思路也总算有了,这样才能继续进行下去,这时我才真正认识到了C+++的功能原来是那么的多。 一个复杂的实验室设备管理系统,经过500-600行的代码就可以完完全全的达到,这是让我非常惊讶的,但相对,如今的C++也是非常难的,这学期学到的一些内容,都是C++的重点,但学下来以后感觉还是很难所以必须先打好基础,基础好了,学什么都会容易很多。 这次的程序设计让我重新认识到了C++,这是一门非常重要的科目,我们必须付出很多倍的努力学习它,才能熟练地掌握它。 源代码 #include #include #include #include #include usingnamespacestd; classNode//结点类,用于存放客户的各种信息 { public: longid;//实验设备编号 stringname;//名称 stringtype;//设备类型 stringsuoshushiyanshi;//实验设备所属实验室 stringbuytime;//购买时间 stringprice;//价格 stringamount;//库存量 stringshengchanriqi;//生产日期 stringshiyongshouming;//使用寿命 stringweight;//重量 Node*next;//指向下一结点的指针 Node(longid=000,stringnname="noname",stringntype="unkown",stringnsuoshushiyanshi="unknow", stringnbuytime="unknow",stringnprice="unknow",stringnamount="unknow",stringnshengchanriqi="unkown", stringnshiyongshouming="unknow",stringnweight="unknow");//构造函数,初始化变量 }; classLink//Link类,把数据以链表的形式存储,链表的每个结点为一个Node对象 { private: Node*head;//链表的头指针,为Node对象类型的指针 public: Link();//构造函数,初始化变量 boollinkIsEmpty();//判断链表是否为空 voidlinkInsert(Node*newnode);//向链表中插入新的结点 boollinkDelete(intnid);//从链表中删除的结点 voidlinkClear();//清空链表中数据 voidlinkView();//查看链表中数据 Node*linkFind(intnid);//在链表中查找id为nid结点,返回指向该结点的指针 Node*getHead();//获取头指针 }; Node: : Node(longnid,stringnname,stringntype,stringnsuoshushiyanshi, stringnbuytime,stringnprice,stringnamount,stringnshengchanriqi, stringnshiyongshouming,stringnweight) { id=nid; name=nname; type=ntype; suoshushiyanshi=nsuoshushiyanshi; buytime=nbuytime; price=nprice; amount=namount; shengchanriqi=nshengchanriqi; shiyongshouming=nshiyongshouming; weight=nweight; next=NULL; } Link: : Link()//构造函数,初始化链表为空 { head=NULL; } boolLink: : linkIsEmpty()//判断链表是否为空,空则返回true { return(head==NULL); } ------共同设计 voidLink: : linkInsert(Node*newnode)//按id值从小到大的顺序,插入新的结点 { Node*p1; if(! head)//链表为空的情况 head=newnode; elseif((head->id)>(newnode->id))//插入到第一个结点的情况 { newnode->next=head; head=newnode; } else//插入到第二个及以后情况 { p1=head; while (1) { if(! (p1->next)) { p1->next=newnode; break; } elseif((p1->next)->id>newnode->id) { newnode->next=p1->next; p1->next=newnode; break; } p1=p1->next; } } } boolLink: : linkDelete(intnid)//删除结点,成功则返回true { Node*p; if(head==NULL)//链表为空的情况 returnfalse; if(head->id==nid)//删除的为第一个结点的情况 { head=head->next; returntrue; } p=head; while(p->next)//删除的为第二个及以后结点的情况 { if((p->next)->id==nid) { p->next=(p->next)->next; returntrue; } p=p->next; } returnfalse; } -------由陈广鹏设计 voidLink: : linkClear()//清空链表 { head=NULL; } Node*Link: : linkFind(intnid)//查找id值为nid的结点,返回该结点的指针 { Node*p=head;//没找到符合条件的结点的话,返回的指针值为NULL while(p) { if(p->id==nid) break; else p=p->next; } returnp; } voidLink: : linkView()//显示链表数据 { Node*p=head; while(p) { cout<<"实验设备编号: "< cout<<"名称: "< cout<<"类型: "< cout<<"所属实验室: "< cout<<"购买时间: "< cout<<"价格: "< cout<<"库存量: "< cout<<"生产日期: "< cout<<"使用寿命: "< cout<<"重量: "< cout<<"*******************************************************"< p=p->next; } } Node*Link: : getHead() { returnhead; } //类Shebei,用于包装Link类及菜单操作 classShebei { private: Linkclink;//Link对象成员 boolk;//记录数据是否被修改 public: Shebei(); voidShebeiClear(); voidShebeiInsert(); voidShebeiDelete(); voidShebeiFind(); voidShebeiModify(); voidShebeiView(); voidShebeiLoad(); voidShebeiSave(); voidExit();//退出程序 voidshowMenu();//显示菜单 voidshowTip();//显示操作提示 voiddoMenu(charn);//执行相应菜单项功能 }; Shebei: : Shebei() { Link();//调用成员对象的构造函数 ShebeiLoad();//从文件中读取数据,创建链表 k=false;//设置数据被修改 } -----------由陈军文设计 voidShebei: : ShebeiClear()//清空设备记录 { clink.linkClear(); cout<<"成功清空设备信息记录! "< } voidShebei: : ShebeiInsert()//插入设备记录 { Node*p=newNode(); cout<<"请输入设备编号: "; cin>>p->id; cout<<"请输入名称: "; cin>>p->name; cout<<"请输入类型: "; cin>>p->type; cout<<"请输入所属实验室: "; cin>>p->suoshushiyanshi; cout<<"请输入购买时间: "; cin>>p->buytime; cout<<"请输入价格: "; cin>>p->price; cout<<"请输入库存量: "; cin>>p->amount; cout<<"请输入生产日期: "; cin>>p->shengchanriqi; cout<<"请输入设备重量: "; cin>>p->weight; if(! clink.linkFind(p->id))//判断设备信息是否存在 { clink.linkInsert(p); k=true; } else cout<<"设备编号为"< "< } ----------由陈磊设计 voidShebei: : ShebeiDelete()//删除设备记录 { longi; if(clink.linkIsEmpty())//链表为空的情况 cout<<"没有设备记录! "< else { cout<<"请输入设备编号: "; cin>>i; if(clink.linkDelete(i)) { cout<<"成功删除编号为"< "< k=true; } else cout<<"没有找到编号为"< "< } } voidShebei: : ShebeiFind()//查找某编号的设备记录 { longn; Node*p; if(clink.linkIsEmpty())//链表为空的情况 cout<<"没有设备记录! "< else { cout<<"请输入要查找设备的编号: "; cin>>n; p=clink.linkFind(n);//获得找到的结点的指针 if(p)//指针值不为NULL时 { cout<<"实验设备编号: "< cout<<"名称: "< cout<<"类型: "< cout<<"所属实验室: "< cout<<"购买时间: "< cout<<"价格: "< cout<<"库存量: "< cout<<"生产日期: "< cout<<"使用寿命: "< cout<<"重量: "< } else//指针值为NULL时 cout<<"没有找到编号为"< "< } } voidShebei: : ShebeiModify()//修改某编号的设备信息 { longn; Node*p; if(clink.linkIsEmpty())//链表为空的情况 cout<<"没有设备记录! "< else { cout<<"请输入要修改设备的编号: "; cin>>n; p=clink.linkFind(n);//获得找到的结点的指针 if(p)//指针值不为NULL时 { cout<<"实验设备编号: "< cout<<"名称: "<
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 实验 设备管理
![提示](https://static.bdocx.com/images/bang_tan.gif)