C语言课程设计实验设备管理.docx

上传人:b****6 文档编号:3305766 上传时间:2022-11-21 格式:DOCX 页数:30 大小:484.49KB
下载 相关 举报
C语言课程设计实验设备管理.docx_第1页
第1页 / 共30页
C语言课程设计实验设备管理.docx_第2页
第2页 / 共30页
C语言课程设计实验设备管理.docx_第3页
第3页 / 共30页
C语言课程设计实验设备管理.docx_第4页
第4页 / 共30页
C语言课程设计实验设备管理.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

C语言课程设计实验设备管理.docx

《C语言课程设计实验设备管理.docx》由会员分享,可在线阅读,更多相关《C语言课程设计实验设备管理.docx(30页珍藏版)》请在冰豆网上搜索。

C语言课程设计实验设备管理.docx

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<<"实验设备编号:

"<id<

cout<<"名称:

"<name<

cout<<"类型:

"<type<

cout<<"所属实验室:

"<suoshushiyanshi<

cout<<"购买时间:

"<buytime<

cout<<"价格:

"<price<

cout<<"库存量:

"<amount<

cout<<"生产日期:

"<shengchanriqi<

cout<<"使用寿命:

"<shiyongshouming<

cout<<"重量:

"<weight<

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<<"设备编号为"<id<<"的的设备已存在,插入失败!

"<

}

----------由陈磊设计

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<<"实验设备编号:

"<id<

cout<<"名称:

"<name<

cout<<"类型:

"<type<

cout<<"所属实验室:

"<suoshushiyanshi<

cout<<"购买时间:

"<buytime<

cout<<"价格:

"<price<

cout<<"库存量:

"<amount<

cout<<"生产日期:

"<shengchanriqi<

cout<<"使用寿命:

"<shiyongshouming<

cout<<"重量:

"<weight<

}

else//指针值为NULL时

cout<<"没有找到编号为"<

"<

}

}

voidShebei:

:

ShebeiModify()//修改某编号的设备信息

{

longn;

Node*p;

if(clink.linkIsEmpty())//链表为空的情况

cout<<"没有设备记录!

"<

else

{

cout<<"请输入要修改设备的编号:

";

cin>>n;

p=clink.linkFind(n);//获得找到的结点的指针

if(p)//指针值不为NULL时

{

cout<<"实验设备编号:

"<id<

cout<<"名称:

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 其它考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1