用C实现水电煤气管理系统方案Word格式文档下载.docx
《用C实现水电煤气管理系统方案Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用C实现水电煤气管理系统方案Word格式文档下载.docx(33页珍藏版)》请在冰豆网上搜索。
格式、绘图、表格、插图等规准确,符合国家标准
有一定篇幅,字符数不少于5000
总分
100
指导教师评语:
指导教师签名:
年月日
一.问题描述:
设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。
在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。
二.设计思路:
(一)程序功能:
1.实现对用户信息的录入
2.实现水电煤气数据的录入
3.计算并查询用户应缴费用
4.查询未缴纳费用
(二)程序说明:
1.在主函数过分支选择可以跳转不同的功能选项进而实现
2.在显示主菜单函数中,我们通过设计友好界面来与用户进行交互。
在“请选择相应功能(0-4):
”中使用者输入非0-4数字或其他字符时,系统提示“请检查您输入的数字在0~4之间!
请在输入一遍!
”的信息,以帮助用户进行正确选择。
3.首先建立了User类,用于初始化、、用水电、煤气量,又定义了缴费函数setMonery(),用在有人缴费的函数体中,从键盘输入缴的费用,一开始我们在setMoney(),中没有对缴的费用进行累加,在查询信息时现实的应缴费用不正确,经过我们的努力,检查出错误并加以改正,让程序更加完善。
4.用User类派生出Student和|Teacher类,其中有计算应该缴的费用,Student类比Teacher类多了免费。
5.在保存文件的处理中,需考虑到“创建保存文件失败!
”和“已成功保存文件!
”等诸多容。
(三)文件类型:
(1)Constant.h
用于存放收费标准。
(2)File.cpp
该文件中有两个类:
1.StuFile类,主要用于对学生信息的操作
函数
属性
注释
Public
StuFile()
构造函数
voidadd(Student&
s)
将S添加到文件中
voiddisplay()
依次显示所有的学生的信息
Student
*gerStudent(stringid)
得到学号为id的学生的对象指针
~StuFile()
析构函数,释放资源,并把数组中的信息存进文件
voidwjf()
未缴费的学生的
Private
vector<
Student>
*stuList;
学生信息的向量数组,用于保存所有学生的信息
2TeacherFile类,主要用于对教工信息的操作
TeacherFile()
voidadd(Teacher&
将s添加到文件中
依次显示所有的教师信息
Teacher*getTeacher
(stringid)
得到编号为id的教师的对象指针
~TeacherFile()
未交费的教工人员
Vector<
Teacher>
*teaLisr
教工的向量数组,用于保存所有教工的信息
(3)Main.cpp
voidinit()
新建一个学生或者教工的信息
voidselect()
查询界面,根据用户的输入来显示用户想查询的信息
voidadd()
信息的录入,录入学生或者教工的水电煤气信息
voidhanded()
缴费,有学生或者教工缴费的时候调用此函数
intmainMenu()
主菜单,显示一个菜单,返回用户的输入
voidwork()
程序开始工作
intmain()
主函数,程序的入口
(4)Student.cpp
ClassStudent:
virtualpublicUser
Student():
User(“”,””,0,0,0)
Student(stringi,stringn,
Floatw=0,floatp=0,float
g=0):
User(i,n,w,p,g)
构造函数i:
学号n:
floatdisplay()
返回学生应缴的费用
floatfreeWater;
学生免费使用的水量
floatfreePower;
学生免费使用的电量
floatfreeGas;
学生免费使用的煤气量
floatmoney;
缴费
(5)Teacher.cpp
ClassTeacher:
Teacher(stringi,stringn,
floatw=0,floatp=0,float
User(I,n,w,p,g)
依次显示所有的教工信息
floatgetMoney()
返回教工应缴的费用
(6)User.cpp
User(stringi,stringn,float
w=0,floatp=0,floatg=0)
stringgetId()
获取编号
stringgetName()
获取
voidsetId(stringi)
设置编号
voidsetName(stringn)
设置
voidsetWater(floatw)
设置水量
voidsetPower(floatp)
设置电量
voidsetGas(floatg)
设置煤气量
floatgetWater()
使用水量
virtualvoiddisplay()=0;
依次显示所有信息
voidsetMoney(floatm)
virtualfloatgetMoney()=0;
应缴费用
(四)UML图:
StuFile
+id:
string
+name:
+useWater:
float
+usePower:
+useGas:
+money:
+add():
void
+display():
+wjf():
-freeWater:
-freePower:
-freeGas:
+getMoney():
User
+i:
+n:
+w:
+p:
+g:
+getId():
+getName():
+setId(stringi):
+setName(stringn):
+setWater(floatw):
+setPower(floatp):
+setGas(floatg):
+getWater():
三.程序代码:
Constant.h
//收费标准
#ifndefConstant
#defineConstant
//教师
conststaticfloatTwaterUnit=1;
conststaticfloatTpowerUnit=1;
conststaticfloatTgasUnit=1;
//学生
conststaticfloatSwaterUnit=1;
conststaticfloatSpowerUnit=1;
conststaticfloatSgasUnit=1;
//保存学生信息的文件
conststaticchar*stuFlieName="
s.txt"
;
//保存教师信息的文件
conststaticchar*teaFileName="
t.txt"
#endif
Main.cpp
#include<
iostream>
iomanip>
string>
vector>
#include"
Student.cpp"
Teacher.cpp"
File.cpp"
usingnamespacestd;
{
cout<
<
endl;
"
1.新建教工信息\n"
<
2.新建学生信息\n"
请选择你要进行的操作:
into;
cin>
>
o;
if(o==1)
{
stringid;
stringname;
cout<
请输入新教工的号:
cin>
id;
请输入新教工的:
name;
Teachert(id,name);
TeacherFiletf;
tf.add(t);
}
elseif(o==2)
请输入新学生的号:
请输入新学生的:
Students(id,name);
StuFilesf;
sf.add(s);
else
return;
}
1.学生的信息\n"
2.教师的信息\n"
3.按号查询\n"
4.未缴费的人员\n"
5.不进行任何的操作\n"
请输入你要进行的操作:
StuFilesf;
TeacherFiletf;
该用户的信息是:
|"
setw(18)<
号"
<
setw(8)<
<
用水量"
用电量"
用煤气量"
要缴的费用"
sf.display();
tf.display();
elseif(o==3)
User*user;
请输入他的号:
user=sf.getStudent(id);
if(user==0)
user=tf.getTeacher(id);
{
cout<
资料库中没有该号的用户!
return;
}
该用户的信息为:
user->
display();
elseif(o==4)
sf.wjf();
tf.wjf();
1.对教工使用的水电煤气信息的录入"
endl
2.对学生使用的水电煤气信息的录入"
3.不进行任何操作"
stringid;
floatwater;
floatpower;
floatgas;
if(o==1||o==2)
User*user;
请输入他的用水量:
water;
请输入他的用电量:
power;
请输入他的用煤气量:
gas;
setWater(water);
setPower(power);
setGas(gas);
请输入要缴费的人的号:
User*user;
user=sf.getStudent(id);
if(user==0)
user=tf.getTeacher(id);
请输入他的缴费金额:
floatmoney;
money;
setMoney(money);
缴费成功\n"
endl<
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"
☆☆"
☆水电煤气管理系统☆"
1.新建用户信息"
2.信息查询"
3.信息的录入"
4.有人缴费"
0.退出系统"
inta;
charc[20];
do
请选择相应的功能(0-4):
a;
gets(c);
if(a<
0||a>
4)
请确认您输入的数字在0~4之间!
请重新输入一遍!
while(a<
4);
returna;
switch(mainMenu())
case1:
init();
break;
case2:
select();
case3:
add();
case4:
handed();
default:
voidMenu()
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"
☆振坡☆"
system("
pause"
);
cls"
voidmain()
color3A"
Menu();
chara='
y'
while(a=='
)
work();
是否继续使用该系统(y/n)"
File.cpp
//StuFile类,对学生信息的操作
//TeacherFile类,对教工信息的操作
fstream>
User.cpp"
Constant.h"
#ifndefStuFile_class
#defineStuFile_class
classStuFile
vector<
*stuList;
public:
stringname;
floatuseWater;
floatusePower;
floatuseGas;
floatmoney;
StuFile()
stuList=newvector<
ifstream*is=newifstream("
StuFileName"
ios_base:
:
in);
if(is==0)
打开文件失败!
else
while(is->
good())
{
Students("
"
is->
read((char*)&
s,sizeof(Student));
if(s.getId()!
="
{
stuList->
push_back(s);
}
}
is->
close();
voidadd(Student&
stuList->
voiddisplay()
for(inti=0;
i<
stuList->
size();
i++)
Students=stuList->
at(i);
s.display();
Student*getStudent(s