C++课程设计报告---新科公司的设备管理系统(共17页)_第1页
C++课程设计报告---新科公司的设备管理系统(共17页)_第2页
C++课程设计报告---新科公司的设备管理系统(共17页)_第3页
C++课程设计报告---新科公司的设备管理系统(共17页)_第4页
C++课程设计报告---新科公司的设备管理系统(共17页)_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

1、C+课程设计报告课程设计题目新科公司的设备管理系统专 业:材料科学与工程目录(1)设计目的 (2)(2)设计要求 (2)基本要求和创新要求(3)设计方法 (3)模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)(4)总体设计 (4)设计系统的类层次,类层次中各个类的描述,类中各个成员函数(5)调试与测试 (16)调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施(6)实验总结 (17) 1.设计目的:1、目的: (1)要求学生达到熟练掌握C+语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法; (3)能够利用所学的基本知识和技能,解决简

2、单的面向对象程序设计问题。2. 设计要求: 1、 基本要求: (1)要求利用面向对象的方法以及C+的编程思想来完成系统的设计; (2)要求在设计的过程中,建立清晰的类层次; (3)在系统中至少要定义四个类,每个类中要有各自的属性和方法; (4)在系统的设计中,至少要用到面向对象的一种机制。 2、创新要求: 在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。 3. 设计方法功能:新科公司现有以下设备:普通电视机、DVD、带DVD的电视机,带DVD的电视机的售价为普通电视机和DVD单价之和的80%,要求对所有的库存设备都能按照品名进行显示、查找、增加和删除、保存的功能。 根据系统功能

3、,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; 4.总体设计1、设计思路设计四个类:设备、普通电视机、DVD、带DVD的电视机。这四个类的关系如下:设备普通电视机 DVD 带DVD的电视机2、系统功能模块图系统登录设备管理系统系统分析添加设备信息输出设备信息查询设备信息删除设备信息保存设备信息2、类的层次设计3、功能设计(1)添加删除功能:能根据设备的变动情况,添加记录;(2)删除功能

4、: 删除记录;(3)保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。(4)删除功能: 删除记录查询功能:能根据编号进行查询;5界面设计图1:运行首界面图2添加设备信息界面图3设备信息显示界面图4设备信息查询界面图5设备信息删除界面6代码设计#include#include#include#includeusing namespace std;class machine /定义machine为基类protected:char name20;float price;int num;public:machine();machine() void setname(c

5、har *names);char *getname();void setprice(float pr);float getprice();void setnum(int nn);int getnum(); /以下都为machine的派生类class TV: virtual public machine /TV和DVD都定义虚基类公有继承public:TV() ;class DVD: virtual public machinepublic:DVD() ;class DVD_TV: public TV, public DVDpublic:DVD_TV()void setnprice(float

6、p1,float p2);void machine:setname(char*names) /用来设置设备的品名strcpy(name,names);char *machine:getname() /用来获取设备的品名return name;void machine:setprice(float pr) /初始化设备价钱 price=pr;float machine:getprice() /获得设备价钱return price;void machine:setnum(int nn)num=nn; /输入进货量int machine:getnum()return num;void DVD_TV:

7、setnprice(float p1,float p2) /计算DVD_TV的方法price= (p1+p2)*0.8; machine *j1; /定义一个基类指针对象 TV T1; DVD D1; DVD_TV DT1; /以下为函数声明void add();void output();void search();void deleteinf();void save();void main()coutnn 欢迎进入新科公司设备管理系统 endlendl;cout 材料0902班二组设计 endl * * * * * * * * * * * * * * * * * * * * * * * *

8、 * * * * * * * * * * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl;loop1:cout* * 1:添加设备信息 2:显示库存设备信息 3:查询设备信息* * * * * *endl * * 4:删除设备信息 5:保存设备信息 0: 退出系统 * * * * * *endl * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *endl * * * * * * * * * * *

9、 * * * * * * * * * * * * * * * * * * * * * * * *choose; switch(choose) case 0: cout欢迎再次使用本系统!再见!endl; exit(0); break; case 1: add(); coutendl; goto loop1; break; case 2: output(); coutendl; goto loop1; break; case 3: search(); coutendl; goto loop1; break; case 4: deleteinf(); coutendl; goto loop1; b

10、reak; case 5: save(); coutendl; goto loop1; break; default: cout输入无效!请重新输入!endl; break; void add()char names20;int kind,choose; coutkind;while(kind3) coutkind;coutnames;switch(kind)case 1:j1=&T1;break; case 2:j1=&D1;break;case 3:j1=&DT1;break;if(kind=1|kind=2) j1-setname(names); float price; int n;

11、coutprice; j1-setprice(price);coutn;j1-setnum(n); cout该设备的相关信息为:endl; cout该设备编号为:kind 名称为:getname() 价格为:getprice()本次进货量为:getnum()setname(names); DT1.setname(names); float price1,price2,n;coutprice1;coutprice2;coutn;j1-setnum(n);DT1.setnprice(price1,price2); cout该产品的相关信息为:endl;cout该设备编号为:3 名称为:DT1.ge

12、tname() 价格为:getprice()库存为:getnum()endl; coutchoose;while(choose!=1 &choose!=2) coutchoose;if(choose=1)save();void output()ifstream infile(新科公司设备管理系统.txt,ios:in);cout从文件中读取的数据如下:endl;char line101;for(int i=1;i=3;i+) infile.getline(line,100); coutlineendl;infile.close();void search() char line100;int

13、i=1,n;coutn;ifstream infile(新科公司设备管理系统.txt,ios:in);while(!infile.eof() infile.getline(line,100); if(i=n) coutlineendl; break; i+; if(infile.eof() cout没找到相应的产品!endl;void deleteinf()ifstream ifile(新科公司设备管理系统.txt);ofstream ofile(temp.txt);char line100;int i=1,n; coutn; while(!ifile.eof() ifile.getline(

14、line,100); /读取完之后,从读取的内容中删除该终止字符if(i!=n)ofilelineendl;i+;ifile.close();ofile.close();system(del 新科公司设备管理系统.txt);system(rename temp.txt,新科公司设备管理系统.txt);cout该产品已成功删除!endl;coutnumber;if(number=1)output();void save()ofstream ofile(新科公司设备管理系统.txt,ios_base:app);/写入文件ofile 该设备名称为:getname() 价格为:getprice()设备

15、库存为:getnum()endl;ofile.close();cout该厂品信息已存入文件!endl;5.调试与测试(1)调试方法:在编译连接前先进行静态检查,对每个函数模块出现的细节语法错误逐步改正。再进行系统编译连接,根据编译器提示错误类型逐个修正。调试一个函数模块的程序时,将其他模块及相应的函数定义用注释语句注释,至顶向下,顺序化,模块化。(2)测试遇到的问题及解决:(1)输入的数据无法查找。解决方法:调用嵌套查找函数,将实参传递至相应形参,定位数据,并输出。(2)测试某段文本,当出现句子“真便宜!)这令”后,出现严重乱码错误。经过仔细排查,发现是分句函数引起的问题,原因是“!”的后一个字节,和“)”的前一个字节,正好是句号“。”的两个字节,由此导致错误分句。查出此错误后,顺利解决此问题。(3)测试某段文本,检查文本向量序列时,发现其句数,与真实情况不符。经过排查,程序某处,pos值应该为-1才能应对所有可能出现的情况。6.实验总结:(1)刚开始,本来是想用两三个类来封装所有信息和功能函数,但由于类成员相互调用、文件读写等老出现错误和问题,所有基本上没有使用这种方法。经过查阅相关资料和参考指导老师给出的模型,决定采用一个类加一个主函数的办法来实现全部功能。显然这种方法不适合C+面向对象的要求,由

温馨提示

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

评论

0/150

提交评论