电煤气管理系统设计说明书.docx

上传人:b****1 文档编号:13697375 上传时间:2023-06-16 格式:DOCX 页数:44 大小:101.17KB
下载 相关 举报
电煤气管理系统设计说明书.docx_第1页
第1页 / 共44页
电煤气管理系统设计说明书.docx_第2页
第2页 / 共44页
电煤气管理系统设计说明书.docx_第3页
第3页 / 共44页
电煤气管理系统设计说明书.docx_第4页
第4页 / 共44页
电煤气管理系统设计说明书.docx_第5页
第5页 / 共44页
电煤气管理系统设计说明书.docx_第6页
第6页 / 共44页
电煤气管理系统设计说明书.docx_第7页
第7页 / 共44页
电煤气管理系统设计说明书.docx_第8页
第8页 / 共44页
电煤气管理系统设计说明书.docx_第9页
第9页 / 共44页
电煤气管理系统设计说明书.docx_第10页
第10页 / 共44页
电煤气管理系统设计说明书.docx_第11页
第11页 / 共44页
电煤气管理系统设计说明书.docx_第12页
第12页 / 共44页
电煤气管理系统设计说明书.docx_第13页
第13页 / 共44页
电煤气管理系统设计说明书.docx_第14页
第14页 / 共44页
电煤气管理系统设计说明书.docx_第15页
第15页 / 共44页
电煤气管理系统设计说明书.docx_第16页
第16页 / 共44页
电煤气管理系统设计说明书.docx_第17页
第17页 / 共44页
电煤气管理系统设计说明书.docx_第18页
第18页 / 共44页
电煤气管理系统设计说明书.docx_第19页
第19页 / 共44页
电煤气管理系统设计说明书.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

电煤气管理系统设计说明书.docx

《电煤气管理系统设计说明书.docx》由会员分享,可在线阅读,更多相关《电煤气管理系统设计说明书.docx(44页珍藏版)》请在冰点文库上搜索。

电煤气管理系统设计说明书.docx

电煤气管理系统设计说明书

*******************

实践教学

*******************

 

兰州理工大学

计算机与通信学院

2011年秋季学期

 

面向对象课程设计

 

题目:

电煤气管理系统

专业班级:

计算机科学与技术四班

姓名:

霍雪萍

学号:

10240442

指导教师:

朱红蕾

成绩:

____________________

 

 

序言

近年来,在计算机软件业,面向对象程序设计的思想已经被越来越多的软件设计人员所接受。

不仅因为它是一种最先进的,新颖的计算机程序设计思想,最主要的是这种新的思想更接近人的思维活动,人们利用这种思想进行程序设计时,可以很大程度地提高编程能力,减少软件维护的开销。

面向对象程序设计方法是通过增加软件的可扩充性和可重用性来提高程序员的编程能力。

随着计算机在我国广泛而深入的应用,在分析和开发计算机系统软件和应用软件的过程中,迫切需要掌握各种数据结构的描述方法以及相应的处理算法。

因此面向对象程序设计知识是计算机相关科学的学生和从事计算机应用的技术人员必备的专业基础知识。

著名的瑞士计算机科学家沃思提出:

对象+消息=程序。

摘要

电煤气管理系统程序的设计与实现,该程序具有登记费用,查询费用及住户信息管理等功能。

在课程设计中,程序设计语言采用VisualC++,程序运行平台为WindowsXP。

对于在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。

程序通过调试运行,实现了最初的设计目标,并且经过适当完善后,在实际中可以解决更多的问题。

关键词电煤气管理系统;程序设计;C++

 

第1章需求分析

本程序是一个水电气管理信息系统,能够对高校的水电气费用进行理,

包括了成员基本信息,如学号、编号、姓名、成员水电气的用量;程序的用

途包括缴纳水电气费、查询一个同学水电气费用量"、查看所有同学的缴费情

况、增加学生信息、删除学生信息、退出系统等。

在设计时也考虑到学生和

教师在用水电气时的不同,学生可以免费使用一定额度的水电气,超过这个

额度的以后必须付费,且付费部分水电气费的价格要高于教工的收费标准,

该措施的实行是为了鼓励同学们节约用水,以免造成不必要的资源浪费。

软件主要是为了学校的管理人员提供便捷,以更快的完成水电气费用的收缴。

该软件本着简洁明了,实用稳定与与一体。

 

第2章设计

1.设计思想:

设计面向对象的程序设计语言,首先考虑的肯定是要设计类。

程序设计了四个类,两个是学生类,两个是教师类。

在主函数中用动态数组,机动的分配类存,以至于不造成类存的浪费。

在本程序中涉及用户的选择,用户要根据自己的实际需要选择不同的功能,由于选择的多样性,程序中必须要有switch结构控制各个功能的选择,如果需要多次进行操作,则要在switch结构的外部,通过循环来实现。

首先该程序的第一目的是要读记事本里的内容,然后再根据用户的选项来实现各种不同的功能,当正确按照要求就可进行更进一步进行操作,直到你达到自己的目的为止。

与while结构有着相似功能的if…else在本程序中的使用也是非常普遍的。

本程序通过调用不同的函数来实现不同的功能,通过用户自己的选择可以自己进行操作,在主函数中申明的函数分别起到不同的作用,为了使主函数不过于冗繁,故在本程序中所有的子函数都是在主函数外实现的。

在子函数的函数体中为了使程序的功能和细节更加的完善,在子函数中设置菜单,这样不仅使得程序更加完善还有利于用户的操作。

使得程序更加简洁明了。

2.设计表示:

在这个电煤气管理系统中,共用到了四个类,一个是Feebz类,它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有<<的重载,最重要的就是那些对象都有共同的属性,通过这个类把学号、姓名、水用量、电用量、气用量集中到一起,所以才能设计一个类;另一个类就是StuMan类,这个类的作用主要就是一些功能的实现,有主菜单voidMainMenu()、交费菜单voidFeeMenu()、交费功能voidNumFee()和voidNameFee()、查询菜单voidCheckMenu()、查询功能voidNumCheck()voidNameCheck()、增加功能voidAdd()、删除菜单voidDeleteMenu()、删除功能voidNumDelete()和voidNameDelete()、查看功能voidChakan()。

具体的见下的图标所表示的关系:

函数或数据

类型

功能

Feebz和StuMan

函数成员

MainMenu()

void

主要是选择各种不同的功能

FeeMenu()

void

主要是选择用学号交费还是用姓名交费

NumFee

void

使用学号交费

NameFee()

void

输入姓名交费

 

CheckMenu()

 

void

主要是选择用学号查询还是用姓名查询

 

NumCheck()

 

void

 

输入学号查询

 

Add()

 

void

 

使用增加功能

 

NumDelete()

 

void

 

输入学号删除

NameDelete()

void

 

输入姓名删除

数据成员

stringnumber,name;

intflag;

doublewater,power,gas;

doubleWaterprice,Powerprice,Gasprice;

3.实现注释:

在本程序中各项功能的基本都能实现,除了基本的要求能实现之外,如实现对用户信息的录入,实现水电煤气数据的录入,计算并查询用户应缴费用,查询未缴纳费用名单,还能实现对人员的删除和添加。

只要能根据要求填写信息,一般都不会出现特别严重的错误。

4.详细设计表示:

 

第3章用户手册

程序运行时,首先提示是选择学生电煤气管理系统还是选择教师电煤气管

理系统,然后是用户动态分配内存,再会继续出来一个主菜单让用户选择。

若选

择第一项缴纳水电气费,就会提示用户是用学号交费还是用姓名交费进行选择;

若选择第二项查询一个同学的水电气费用量,同样也会提示用户是用学号查询还

是用姓名查询进行选择;若选择第三项查看所有同学的缴费情况,则会出现已交

费的人员信息和未交费的人员信息;若选择第四项增加人员信息,则会出现“请

输入你要增加的学生数”的字样,然后根据提示输入每个人的人员信息;若选择

第五项删除人员信息,则会提示用户使用学号删除还是使用姓名删除;最后一项

无容置疑就是退出系统了。

另外需要提示的是输入信息的格式一定要和记事本上

的格式保持一致,否则就会出现错误。

 

第4章调试及测试

电煤气管理系统主要用于管理高校的人员使用的电煤气信息。

写该程序的首要目标就是要让它能顺利运行,运行之后再根据运行结果来找出该程序的弊端,以更好的改进这个管理系统。

可总是事与愿违,刚一写完时就一下子把我给惊懵了,几十个错误,而且各个错误看上去痘很难改。

但我并没有气馁,而是认真的去对待这些错误。

首先我是将一些简单而易见的错误给改正了,这并没有花费我多少时间。

后面都是一些比较难的错误,如Feebz(stringNum,stringName,doubleWater,doublePower,doubleGas);应该改为Feebz(stringNum=“0904032011”,stringName=“任家双”,doubleWater=0,doublePower=0,doubleGas=0);也就是后面必须得赋值。

还有一个令我比较头疼的就是“>>”的重载,我开始没有用友元函数来写,后来想到了可还是不对,得必须把这个友元函数写在类里面,其正确答案就是:

friendostream&operator<<(ostream&out,Feebz&r)

{out<

out<

out<

out<

out<

out<

out<

out<

out<

if(r.flag)

out<<"已交"<

else

out<<"未交"<

returnout;

}

接下来的另一个问题就是如何读文件里的内容,这对我来说绝对是个头疼的问题,因为当时在上课时我这部分内容学的就不是很好,于是就自己看课本,将书上的第十一章全看了一遍,终于对这个知识点有了一个大概的理解,写出了这段程序,如下:

ifstreamtfile("student.txt");

while(tfile.good())

{

tfile>>St[i].number;

tfile>>St[i].name;

tfile>>St[i].water;

tfile>>St[i].power;

tfile>>St[i].gas;

i++;

}

tfile.close();

最后一个难解的问题就是errorC2668:

'StuMan:

:

StuMan':

ambiguouscalltooverloadedfunction这段提示,然后经过在网上的了解,终于将它给改正过来了。

这时我感觉自己越来越接近胜利了,可始终还是有一个错误,而且错误是在主函数中,最后经过仔细的思考,原来是没有创立对象,直接写了StuMan.MainMenu(),可事实上应该是StuManxuesheng;xueshengMainMenu();在解决这些问题期间,对我来说最难解决的就是在文件的读取方面,在没有写这个程序之前我对磁盘文件可谓是一无所知,但这个程序必须要用到磁盘文件,在运用这个知识点时错误就不停的出现,就像文件的读入,本来应是ofile<<,但由于对问题的不深,我总是写成ofile>>,虽然这些都是些小问题,可写程序本身就是件很严谨的事情,一个小错误都不能错误,否则这程序还是不能运行,所以我们不可以忽略它们,我们在平时多注意点就会很容易的避免这些错误,同时也就会节省很多的时间。

在写这个程序花的时间很长,可能是由于在家的缘故,没有集中的时间去做这个工作,通常是集中花几天时间先写一点,然后就停了几天,结果再到写的时候,就又忘记了当时的思路,结果就做了很多的无用功。

所以写程序时一定不能三心二意,要集中一段时间将它写完,这样不仅能节省许多时间,而且还能提高程序的准确性。

运行实例:

若选学生电煤气管理系统,则会出现以下画面:

然后继续按要求输入,就会出现以下的菜单,如下图:

出现这个画面后,接着就是继续按照要求来写,如选3,就会得到如下想要的结果:

 

第五章附录源程序

StuMan.h

#include"iostream"

#include"string"

#include"cstdlib"

#include"iomanip"

#include"fstream"

usingnamespacestd;

intns,nt;

classFeebz学生的信息类

{

public:

Feebz(stringNum="0904032011",stringName="任家双",doublewater=1,doublepower=0,doublegas=10);构造函数

friendostream&operator<<(ostream&out,Feebz&r)运算符重载

{out<

out<

out<

out<

out<

out<

out<

out<

out<

if(r.flag)

out<<"已交";

else

out<<"未交";

returnout;

}

voidoperator=(Feebzr);运算符重载

doubleGetW();计算学生水费

doubleGetP();计算学生电费

doubleGetG();计算学生气费

doubleGetTotal(){returnGetW()+GetP()+GetG();}计算学生总费用

stringnumber,name;

intflag;

doublewater,power,gas,Waterprice,Powerprice,Gasprice;

};

Feebz:

:

Feebz(stringNum,stringName,doubleWater,doublePower,doubleGas)

构造函数

{number=Num;

name=Name;

water=Water;

power=Power;

gas=Gas;

flag=0;

}

voidFeebz:

:

operator=(Feebzr)赋值运算符重载

{name=r.name;

number=r.number;

water=r.water;

power=r.power;

gas=r.gas;

}

doubleFeebz:

:

GetW()计算学生水费

{

if(water<=6)

Waterprice=0;

else

Waterprice=0.6*(water-6);

returnWaterprice;

}

doubleFeebz:

:

GetP()计算学生电费

{if(power<=6)

Powerprice=0;

else

Powerprice=0.6*(power-6);

returnPowerprice;

}

doubleFeebz:

:

GetG()计算学生气费

{if(gas<=6)

Powerprice=0;

else

Powerprice=0.6*(gas-6);

returnPowerprice;

}

classStuMan学生管理类

{public:

StuMan(intsz=50){size=sz;St=newFeebz[size];}构造函数

~StuMan(){delete[]St;}析构函数

voidMainMenu();主菜单

voidFeeMenu();学生交费菜单

voidNumFee();输入学号交费

voidNameFee();输入姓名交费

voidCheckMenu();学生查询菜单

voidNumCheck();输入学号查询

voidNameCheck();输入姓名查询

voidAdd();增加学生功能

voidDeleteMenu();学生删除菜单

voidNumDelete();输入学号删除

voidNameDelete();输入姓名删除

voidRegist();

voidChakan();学生查看作用

private:

intsize;

Feebz*St;

};

voidStuMan:

:

MainMenu()主菜单

{system("cls");

intchoice;

cout<<"*************************************"<

cout<<"欢迎使用学生水电气费管理系统"<

cout<<"1.缴纳水电气费"<

cout<<"2.查询一个同学水电气费用量"<

cout<<"3.查看所有同学的缴费情况"<

cout<<"4.增加学生信息"<

cout<<"5.删除学生信息"<

cout<<"6.退出系统"<

cout<<"*************************************"<

while

(1)

{

cout<<"请选择:

";

cin>>choice;

switch(choice)

{case1:

FeeMenu();break;

case2:

CheckMenu();break;

case3:

Chakan();break;

case4:

Add();break;

case5:

DeleteMenu();break;

default:

break;

}if(choice==6)break;}

}

voidStuMan:

:

Regist()

{inti=0;

ifstreamtfile("student.txt");

while(tfile.good())

{

tfile>>St[i].number;

tfile>>St[i].name;

tfile>>St[i].water;

tfile>>St[i].power;

tfile>>St[i].gas;

i++;

}

tfile.close();

ns=i;

}

voidStuMan:

:

FeeMenu()学生交费菜单

{system("cls");

intchoice;

cout<<"********************"<

cout<<"学生交费菜单"<

cout<<"1.按照学号交费"<

cout<<"2.按照姓名交费"<

cout<<"3.返回主菜单"<

cout<<"4.退出系统"<

cout<<"********************"<

while

(1)

{

cout<<"请选择:

";

cin>>choice;

switch(choice)

{

case1:

NumFee();break;

case2:

NameFee();break;

case3:

system("cls");

MainMenu();break;

default:

exit

(1);

}

if(choice==3)break;

}

}

voidStuMan:

:

NumFee()输入学号交费

{stringnumber;

floatmoney;

intflag=0,flag1=0;

cout<<"欢迎使用交费功能"<

cout<<"请输入学生学号:

";

cin>>number;

for(inti=0;i

if(number==St[i].number)

{flag1=1;

cout<<"该同学应该交费共"<

cout<<"该同学实际交钱:

";

cin>>money;

if(money

{cout<<"该同学需再补交"<

St[i].flag=0;

MainMenu();

}

else

{cout<<"该同学交费成功,且找零钱为"<

St[i].flag=1;

MainMenu();

}break;

}

if(!

flag1)

{system("cls");

cout<<"该学生的学号输入错误,请重新使用该功能!

"<

NumFee();

}

}

voidStuMan:

:

NameFee()输入姓名交费

{stringname;

floatmoney;

intflag=0,flag1=0;

cout<<"欢迎使用交费功能"<

cout<<"请输入学生姓名:

";

cin>>name;

for(inti=0;i

if(name==St[i].name)

{flag1=1;

cout<<"该同学应该交费共"<

cout<<"该同学实际交钱:

";

cin>>money;

if(money

{cout<<"该同学需再补交"<

St[i].flag=0;

MainMenu();

}

else

{cout<<"该同学交费成功,且找零钱为"<

St[i].flag=1;

MainMenu();

}break;

}

if(!

flag1)

{system("cls");

cout<<"该学生的姓名输入错误,请重新使用该功能!

"<

NameFee();

}

}

voidStuMan:

:

CheckMenu()学生查询菜单

{system("cls");

intchoice;

cout<<"********************"<

cout<<"学生查询菜单"<

cout<<"1.按照学号查询"<

cout<<"2.按照姓名查询"<

cout<<"3.返回主菜单"<

cout<<"4.退出系统"<

cout<<"********************"<

while

(1)

{

cout<<"请选择:

"<

cin>>choice;

switch(choice)

{case1:

NumCheck();break;

case2:

NameCheck();break;

case3:

system("cls");

MainMenu();break;

default:

exit

(1);

}if(choice==3)break;

}

}

voidStuMan:

:

NumCheck()输入学号查询

{stringnumber;

in

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

当前位置:首页 > 经管营销 > 销售营销

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2