教学设备管理系统概述Word文档下载推荐.docx
- 文档编号:17332217
- 上传时间:2022-12-01
- 格式:DOCX
- 页数:25
- 大小:74.25KB
教学设备管理系统概述Word文档下载推荐.docx
《教学设备管理系统概述Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《教学设备管理系统概述Word文档下载推荐.docx(25页珍藏版)》请在冰豆网上搜索。
(5)读取:
从文件中读取已保存了数据。
(6)删除:
从管理系统中删除一条记录。
(7)恢复:
能恢复被删除的记录。
(8)统计:
(A)统计每页合计台数及金额;
(B)累计设备的总台
数及总金额;
(C)统计单价在:
200元以下、200~800元之间和800元以上的设备总台数及总金额。
(D)以表格形式打印教学设备明细表。
(9)其它:
能够根据自己的思路设计其它功能。
3主体内容
1设计分析
根据问题描述和要求,系统要求能够添加设备,按设备编号查询修改,保存,读取,删除,恢复设备的信息。
系统既然具有”数据存盘”功能,设备数据能够保存到磁盘文件,那么也就意味着今后能够从磁盘文件读出人员数据,因此系统增加了”人员数据装入”模块,以方便用户使用,避免数据重新录入。
考虑到系统实现简捷,人员数据文件采用文本文件,人员数据文件名.
使用面向对象的程序设计思想进行分析,整个系统涉及两个类的信息和操作,设备和购置日期。
因此系统主要涉及两个大类:
设备类Equipment,日期Date。
系统的主体框架就是设备类,考虑系统操作的设备信息的数量具有不确定性,因此考虑使用链表保存,
处理设备信息。
设备类包含因此设备信息的一个不带头结点的链
表,能够对设备信息进行增,删,改,查询,基础数据设置,数据存盘,数据装入等操作的相关模块
(Add,Delete,Modify,Find,Save,Recover,Read,Statistic)作为
成员函数。
(1)系统功能模块图
3各模块的功能
(1)主函数流程
4源函数
#inelude<
iostream>
1结束
fstream>
estring>
windows.h>
usingnamespaeestd;
classDate
{
private:
intyear;
intmonth;
intday;
public:
Date(inty=0,intm=0,intd=0);
Date&
operator=(Date&
a);
voidfoutput(ofstream&
fout);
voidoutput();
voidalloutput();
};
voidDate:
:
alloutput()
cout<
<
year<
"
month<
day<
'
\t'
;
}
foutput(ofstream&
fout)
fout<
"
endl;
}
Date:
Date(inty,intm,intd){
year=y;
month=m;
day=d;
Date:
operator=(Date&
a)
year=a.year;
month=a.month;
day=a.day;
return*this;
output()
年"
月"
日
classEquipment
NULL,
intamount_=0,doubleprrice_=0);
Equipment&
operator=(Equipment&
a){
num=a.num;
strcpy(name,a.name);
strcpy(factory,a.factory);
date=a.date;
return*this;
date_
voidgive(char*factory_,Datechar*notes);
intgetNum();
intgetAmount();
doublegetPrrice();
voidsetNum();
voidsetName();
voidsetFactory();
voidsetDate();
voidsetAmount();
voidsetPrrice();
voidsetNotes();
fout);
voidEquipment:
num<
name<
date_,
*name
Date
char
factory<
date.alloutput();
amount
prrice<
notes<
give(char*factory_char*notes_)
strcpy(factory,factory_);
date=date_;
strcpy(notes,notes_);
Equipment:
Equipment(intnum_,
intamount_,doubleprrice_)
num=num_;
strcpy(name,name_);
amount=amount_;
prrice=prrice_;
strcpy(factory,"
未设置"
);
strcpy(notes,"
无"
1.
设备编号:
2.
设备名称:
3.
生产厂家:
4.
购置日期:
date.output();
5.
台数:
amount<
6.
单价:
prrice<
7.
备注:
intEquipment:
getNum()
returnnum;
getAmount()
returnamount;
doubleEquipment:
getPrrice()
returnprrice;
setNum()
请输入设备编号:
cin>
>
num;
setName()
请输入设备名称:
name;
setFactory()
请输入生产厂家的名称:
factory;
setDate()
inty,m,d;
请输入年、月、日,用空格隔开cin>
y>
m>
d;
Datea(y,m,d);
date=a;
setAmount()
请输入设备台数:
amount;
setPrrice()
请输入设备单价:
prrice;
setNotes()
请输入备注内容:
notes;
date.foutput(fout);
fout<
classList
{private:
intn,capacity;
Equipment**elem;
List();
~List();
booladd();
//添加
boolfind();
//voidmodify();
//boolSave();
//boolRead();
//voidDelete();
//voidRecover();
//voidStatistic();
//
查询
修改
设备保存
读取
删除设备记录恢复被删除的记录统计
List:
List()
n=0;
capacity=1000;
elem=newEquipment*[capacity];
=NULL;
for(inti=0;
i<
capacity;
i++)elem[i]
~List()
for(inti=0;
n;
i++)
delete[]elem[i];
elem[i]=NULL;
if(elem)delete[]elem;
elem=NULL;
boolList:
add()
if(n<
capacity)
intnum_;
charname_[20];
intamount_;
doubleprrice_;
cin>
num_;
name_;
请输入购置台数:
amount_;
prrice_;
new
elem[n]=
Equipment(num_,name_,amount_,prrice_);
n++;
returntrue;
returnfalse;
find()
请输入您需要查找的设备编号cin>
if(num_==elem[i]->
getNum())
设备信息如
查找成功!
下:
endl;
elem[i]->
output();
查找失败!
无此设备信息。
voidList:
modify()
system("
cls"
if(n>
0)
inti,num_;
boolok=false;
现有的设备编号如下:
for(i=0;
getNum()<
请输入您需要修改的设备编号:
for(i=0;
if(elem[i]->
getNum()==num_)
ok=true;
intchoice=1;
do
elem[i]->
8.退出修改
请输入您需要修
改的选项:
choice>
8)
choice;
if(choice<
1||
请重新输入!
输入错误,
choice=1;
continue;
switch(choice)
case1:
setNum();
break;
case2:
setName();
elem[i]-
break;
case3:
setFactory();
case4:
elem[i]->
setDate();
case5:
setAmount();
case6:
setPrrice();
case7:
setNotes();
case8:
}while(choice!
=8);
if(!
ok)cout<
您的输入有误!
elsecout<
现无任何设备!
Save()
ofstreamfout;
fout.open("
save.txt"
fout.put(0);
//清楚txt文档的数据
标退格
fout.seekp(-1,ios:
end);
//在txt文档中光
if(fout.fail())
找不到文件,保存失败!
returnfalse;
else
foutput(fout);
保存成功!
fout.close();
Read()
intsize;
ifstreamfin;
fin.open("
streampospos=fin.tellg();
fin.seekg(0,ios:
size=fin.tellg();
fin.seekg(pos);
if(fin.fail())
找不到文件,读取失败!
intnum_,amount_,y,m,d;
doubleprrice_;
charname_[20],factory_[30],notes_[101];
while(size!
=1){
fin>
fin>
factory_;
if(fin.eof())break;
Datedate_(y,m,d);
notes_;
elem[n]Equipment(num_,name_,amount_,prrice_);
elem[n]->
give(factory_,date_,notes_);
读取成功!
fin.close();
Delete()
请选择您要删除的设备编号:
您确定要删除此设备?
(YorN)"
charstr;
str;
if(str!
='
Y'
&
&
str!
N'
)
请重新输入:
}while(str!
if(str=='
recover.txt"
fout.app;
if(i==n-1)
elem[i]=NULL;
Equipment*tem;
tem=elem[i];
elem[i]=elem[n-
1];
elem[n-1]=tem;
delete[]elem[n-elem[n-1]=NULL;
n--;
删
除
功!
败!
您的输入有误!
成
失
Recover()
fin.seekg(0,ios:
size=fin.tellg();
fin.seekg(pos);
找不到文件,恢复失败!
name_[20],factory_[30],notes_[101];
while(!
fin.eof()&
size!
=1)
if(fin.eof())break;
Datedate_(y,m,d);
elem[n]-
恢复成功!
fin.close();
fout.open("
fout.close();
Statistic()
inti,j,n_200=0,n200_800=0,n800_=0;
doublep_200=0,p200_800=0,p800_=0;
Equipment*tem;
for(i=0;
for(j=0;
j<
n-1-i;
j++)
if(elem[j]->
getPrrice()>
elem[j+1]->
getPrrice())
tem=elem[j];
elem[j]=elem[j+1];
elem[j+1]=tem;
编号"
名称"
厂家"
日期"
\t\t"
数量"
单价"
备注"
getPrrice()<
200)
n_200+=elem[i]->
getAmount();
p_200+=elem[i]->
getAmount()*elem[i]->
getPrrice();
elseif(elem[i]->
=800)
n200_800+=elem[i]->
p200_800+=elem[i]->
n800_+=elem[i]->
p800_+=elem[i]->
getAmount()*e
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教学 设备管理 系统 概述