教学设备管理系统概述_第1页
教学设备管理系统概述_第2页
教学设备管理系统概述_第3页
教学设备管理系统概述_第4页
教学设备管理系统概述_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

126/126中南大学《高级程序设计实践(C++)》课程设计报告设计题目指导老师设计者专业班级时刻日期目录一课题的差不多内容和要求二程序功能简介三主体内容:1设计分析2程序结构3各模块的功能及程序讲明4相关模块源程序5操作方法6试验结果7设计体会8参考文献一差不多内容和要求(一)差不多要求本设计采纳教师指导、学生自学和独立编程操作方式,先由学生查阅与本设计有关的书籍和资料,利用VisualC++6.0设计环境与开发工具,在两周时刻内,完成课程设计内容中的一个治理系统,具体要求如下:独立考虑:独立完成课程设计中各任务的设计和调试。上机预备:每次上机前,要事先编制好预备调试的程序,认真想好调试步骤和有关环境的设置方法,预备好有关的文件。数据治理:治理系统中的数据可用数据库(如Access数据库)的形式保存,也可用一般文件(文本文件或二进制文件)的形式保存。程序要求:界面美观、可操作性强、稳定性好。(二)差不多内容:教学设备治理系统为方便治理学校教学设备,编写一个教学设备治理系统软件。系统记录必须包括设备编号、设备名称、生产厂家、购置日期、台数、单价、及备注等。二程序功能简介添加:增加一台设备的记录到治理系统中。查询:能够依照设备编号查找某台设备的相关信息,若找到则显示其信息。修改:在治理系统中修改一台设备的记录。保存:将所有教学设备信息保存在一个文件中(数据库文件或一般的文本文件)。读取:从文件中读取已保存了数据。删除:从治理系统中删除一条记录。恢复:能恢复被删除的记录。统计:(A)统计每页合计台数及金额;(B)累计设备的总台数及总金额;(C)统计单价在:200元以下、200~800元之间和800元以上的设备总台数及总金额。(D)以表格形式打印教学设备明细表。其他:能够依照自己的思路设计其他功能。三主体内容1设计分析依照问题描述和要求,系统要求能够添加设备,按设备编号查询,修改,保存,读取,删除,恢复设备的信息。系统既然具有“数据存盘”功能,设备数据能够保存到磁盘文件,那么也就意味着今后能够从磁盘文件读出人员数据,因此系统增加了“人员数据装入”模块,以方便用户使用,幸免数据重新录入。考虑到系统实现简捷,人员数据文件采纳文本文件,人员数据文件名.使用面向对象的程序设计思想进行分析,整个系统涉及两个类的信息和操作,设备和购置日期。因此系统要紧涉及两个大类:设备类Equipment,日期Date。系统的主体框架确实是设备类,考虑系统操作的设备信息的数量具有不确定性,因此考虑使用链表保存,处理设备信息。设备类包含因此设备信息的一个不带头结点的链表,能够对设备信息进行增,删,改,查询,基础数据设置,数据存盘,数据装入等操作的相关模块(Add,Delete,Modify,Find,Save,Recover,Read,Statistic)作为成员函数。2程序结构(1)系统功能模块图设备管理设备管理系统添加设备信息查找设备信息修改设备信息保存设备信息读取设备信息删除设备信息恢复设备信息统计设备信息各模块的功能开始主函数流程开始创建设备对象创建设备对象显示菜单显示菜单同意输入同意输入依照输入执行操作依照输入执行操作结束退出结束退出4源函数#include<iostream>#include<fstream>#include<cstring>#include<windows.h>usingnamespacestd;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';}voidDate::foutput(ofstream&fout){ fout<<year<<""<<month<<""<<day<<endl;}Date::Date(inty,intm,intd){ year=y; month=m; day=d;}Date&Date::operator=(Date&a){ year=a.year; month=a.month; day=a.day; return*this;}voidDate::output(){ cout<<year<<"年"<<month<<"月"<<day<<"日"<<endl;}classEquipment{private: intnum;//设备编号 charname[20];//设备名称 charfactory[30];//生产厂家 Datedate;//购置日期 intamount;//台数 doubleprrice;//单价 charnotes[101];//备注public: Equipment(intnum_=0,char*name_=NULL, intamount_=0,doubleprrice_=0); Equipment&operator=(Equipment&a) { num=a.num; strcpy(name,); strcpy(factory,a.factory); date=a.date; return*this; } voidgive(char*factory_,Datedate_,char*notes); voidoutput(); voidalloutput(); intgetNum(); intgetAmount(); doublegetPrrice(); voidsetNum(); voidsetName(); voidsetFactory(); voidsetDate(); voidsetAmount(); voidsetPrrice(); voidsetNotes(); voidfoutput(ofstream&fout);};voidEquipment::alloutput(){ cout<<num<<'\t' <<name<<'\t' <<factory<<'\t'; date.alloutput(); cout<<'\t'<<amount <<'\t'<<prrice <<'\t'<<notes<<endl;}voidEquipment::give(char*factory_,Datedate_,char*notes_){ strcpy(factory,factory_); date=date_; strcpy(notes,notes_);}Equipment::Equipment(intnum_,char*name_,intamount_,doubleprrice_){ num=num_; strcpy(name,name_); amount=amount_; prrice=prrice_; strcpy(factory,"未设置"); strcpy(notes,"无");}voidEquipment::output(){ cout<<"1.设备编号:"<<num<<endl; cout<<"2.设备名称:"<<name<<endl; cout<<"3.生产厂家:"<<factory<<endl; cout<<"4.购置日期:";date.output(); cout<<"5.台数:"<<amount<<endl; cout<<"6.单价:"<<prrice<<endl; cout<<"7.备注:"<<notes<<endl;}intEquipment::getNum(){ returnnum;}intEquipment::getAmount(){ returnamount;}doubleEquipment::getPrrice(){ returnprrice;}voidEquipment::setNum(){ cout<<"请输入设备编号:"; cin>>num;}voidEquipment::setName(){ cout<<"请输入设备名称:"; cin>>name;}voidEquipment::setFactory(){ cout<<"请输入生产厂家的名称:"; cin>>factory;}voidEquipment::setDate(){ inty,m,d; cout<<"请输入年、月、日,用空格隔开:"; cin>>y>>m>>d; Datea(y,m,d); date=a;}voidEquipment::setAmount(){ cout<<"请输入设备台数:"; cin>>amount;}voidEquipment::setPrrice(){ cout<<"请输入设备单价:"; cin>>prrice;}voidEquipment::setNotes(){ cout<<"请输入备注内容:"; cin>>notes;}voidEquipment::foutput(ofstream&fout){ fout<<num<<endl; fout<<name<<endl; fout<<factory<<endl; date.foutput(fout); fout<<amount<<endl; fout<<prrice<<endl; fout<<notes<<endl;}classList{private: intn,capacity; Equipment**elem;public: List(); ~List(); booladd();//添加 boolfind();//查询 voidmodify();//修改 boolSave();//设备保存 boolRead();//读取 voidDelete();//删除设备记录 voidRecover();//恢复被删除的记录 voidStatistic();//统计};List::List(){ n=0; capacity=1000; elem=newEquipment*[capacity]; for(inti=0;i<capacity;i++)elem[i]=NULL;}List::~List(){ for(inti=0;i<n;i++) { delete[]elem[i]; elem[i]=NULL; } if(elem)delete[]elem; elem=NULL;}boolList::add(){ if(n<capacity) { intnum_; charname_[20]; intamount_; doubleprrice_; cout<<"请输入设备编号:"; cin>>num_; cout<<"请输入设备名称:"; cin>>name_; cout<<"请输入购置台数:"; cin>>amount_; cout<<"请输入设备单价:"; cin>>prrice_; elem[n]=newEquipment(num_,name_,amount_,prrice_); n++; returntrue; } returnfalse;}boolList::find(){ intnum_; cout<<"请输入您需要查找的设备编号:"; cin>>num_; for(inti=0;i<n;i++) { if(num_==elem[i]->getNum()) { cout<<"查找成功!设备信息如下:"<<endl; elem[i]->output(); returntrue; } } cout<<"查找失败!无此设备信息。"<<endl; returnfalse;}voidList::modify(){ system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"现有的设备编号如下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"请输入您需要修改的设备编号:"; cin>>num_; for(i=0;i<n;i++) { if(elem[i]->getNum()==num_) { ok=true; intchoice=1; do { system("cls"); elem[i]->output(); cout<<"8.退出修改。"<<endl; cout<<"请输入您需要修改的选项:"; cin>>choice; if(choice<1||choice>8) { cout<<"输入错误,请重新输入!"<<endl; choice=1; continue; } switch(choice) { case1: elem[i]->setNum(); break; case2: elem[i]->setName(); break; case3: elem[i]->setFactory(); break; case4: elem[i]->setDate(); break; case5: elem[i]->setAmount(); break; case6: elem[i]->setPrrice(); break; case7: elem[i]->setNotes(); break; case8: break; } }while(choice!=8); } } if(!ok)cout<<"您的输入有误!"<<endl; } elsecout<<"现无任何设备!"<<endl;}boolList::Save(){ ofstreamfout; fout.open("save.txt"); fout.put(0);//清晰txt文档的数据 fout.seekp(-1,ios::end);//在txt文档中光标退格 if(fout.fail()) { cout<<"找不到文件,保存失败!"<<endl; returnfalse; } else { for(inti=0;i<n;i++) { elem[i]->foutput(fout); } } cout<<"保存成功!"<<endl; fout.close(); returntrue;}boolList::Read(){ intsize; ifstreamfin; fin.open("save.txt"); streampospos=fin.tellg(); fin.seekg(0,ios::end); size=fin.tellg(); fin.seekg(pos); if(fin.fail()) { cout<<"找不到文件,读取失败!"<<endl; returnfalse; } else { intnum_,amount_,y,m,d; doubleprrice_; charname_[20],factory_[30],notes_[101]; n=0; while(size!=1) { fin>>num_; fin>>name_; fin>>factory_; fin>>y>>m>>d; if(fin.eof())break; Datedate_(y,m,d); fin>>amount_; fin>>prrice_; fin>>notes_; elem[n]=newEquipment(num_,name_,amount_,prrice_); elem[n]->give(factory_,date_,notes_); n++; } } cout<<"读取成功!"<<endl; fin.close(); returntrue;}voidList::Delete(){ system("cls"); if(n>0) { inti,num_; boolok=false; cout<<"现有的设备编号如下:"<<endl;; for(i=0;i<n;i++) { cout<<elem[i]->getNum()<<""; } cout<<endl; cout<<"请选择您要删除的设备编号:"; cin>>num_; for(i=0;i<n;i++) { if(elem[i]->getNum()==num_) { ok=true; system("cls"); elem[i]->output(); cout<<"您确定要删除此设备?(YorN)"<<endl; charstr; do { cin>>str; if(str!='Y'&&str!='N') { cout<<"输入错误,请重新输入:"; } }while(str!='Y'&&str!='N'); if(str=='Y') { ofstreamfout; fout.open("recover.txt"); fout.app; elem[i]->foutput(fout); fout.close(); if(i==n-1) { delete[]elem[i]; elem[i]=NULL; } else { Equipment*tem; tem=elem[i]; elem[i]=elem[n-1]; elem[n-1]=tem; delete[]elem[n-1]; elem[n-1]=NULL; } n--; cout<<"删除成功!"<<endl; } elsecout<<"删除失败!"<<endl; } } if(!ok)cout<<"您的输入有误!"<<endl; } elsecout<<"现无任何设备!"<<endl;}voidList::Recover(){ intsize; ifstreamfin; fin.open("recover.txt"); streampospos=fin.tellg(); fin.seekg(0,ios::end); size=fin.tellg(); fin.seekg(pos); if(fin.fail()) { cout<<"找不到文件,恢复失败!"<<endl; } else { intnum_,amount_,y,m,d; doubleprrice_; charname_[20],factory_[30],notes_[101]; while(!fin.eof()&&size!=1) { fin>>num_; fin>>name_; fin>>factory_; fin>>y>>m>>d; if(fin.eof())break; Datedate_(y,m,d); fin>>amount_; fin>>prrice_; fin>>notes_; elem[n]=newEquipment(num_,name_,amount_,prrice_); elem[n]->give(factory_,date_,notes_); n++; } cout<<"恢复成功!"<<endl; fin.close(); ofstreamfout; fout.open("recover.txt"); fout.put(0); fout.seekp(-1,ios::end); fout.close(); }}voidList::Statistic(){ system("cls"); inti,j,n_200=0,n200_800=0,n800_=0; doublep_200=0,p200_800=0,p800_=0; Equipment*tem; for(i=0;i<n;i++) { 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; } } } cout<<"编号"<<'\t' <<"名称"<<'\t' <<"厂家"<<'\t' <<"日期"<<"\t\t" <<"数量"<<'\t' <<"单价"<<'\t' <<"备注"<<endl; for(i=0;i<n;i++) { if(elem[i]->getPrrice()<200) { n_200+=elem[i]->getAmount(); p_200+=elem[i]->getAmount()*elem[i]->getPrrice(); } elseif(elem[i]->getPrrice()<=800) { n200_800+=elem[i]->getAmount(); p200_800+=elem[i]->getAmount()*elem[i]->getPrrice(); } else { n800_+=elem[i]->getAmount(); p800_+=elem[i]->getAmount()*elem[i]->getPrrice(); } elem[i]->alloutput(); } cout<<endl; cout<<"单价在:200元以下的设备总台数及总金额为:" <<'\t'<<n_200<<"\t\t"<<p_200<<endl; cout<<"单价在:200~800元的设备总台数及总金额为:" <<'\t'<<n200_800<<"\t\t"<<p200_800<<endl; cout<<"单价在:800元以上的设备总台数及总金额为:" <<'\t'<<n800_<<"\t\t"<<p800_<<endl; cout<<"累计所有设备的总台数及总金额为:" <<"\t\t"<<n_200+n200_800+n800_<<"\t\t"<<p_200+p200_800+p800_<<endl;}intmain(){ Listlist; intn=0; intchoice=1; system("color1C"); do { cout<<"\t\t\t\t教学设备治理系统"<<endl; cout<<"\t\t================================================="<<endl; cout<<"\t\t#\t\t1.添加设备内容。\t\t#"<<endl; cout<<"\t\t#\t\t2.查找设备内容。\t\t#"<<endl; cout<<"\t\t#\t\t3.修改设备内容。\t\t#"<<endl; cout<<"\t\t#\t\t4.保存设备记录。\t\t#"<<e

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论