用C实现水电煤气管理系统方案.docx
《用C实现水电煤气管理系统方案.docx》由会员分享,可在线阅读,更多相关《用C实现水电煤气管理系统方案.docx(33页珍藏版)》请在冰豆网上搜索。
用C实现水电煤气管理系统方案
课程设计报告
课程设计题目:
水电煤气管理系统
学生:
专业:
网络工程
班级:
10211303
指导教师:
林
2011年11月25日
东华理工大学
课程设计评分表
学生:
班级:
学号:
课程设计题目:
水电煤气管理系统
项目容
满分
实评
选
题
能结合所学课程知识、有一定的能力训练。
符合选题要求
(5人一题)
10
工作量适中,难易度合理
10
能
力
水
平
能熟练应用所学知识,有一定查阅文献及运用文献资料能力
10
理论依据充分,数据准确,公式推导正确
10
能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等
10
能体现创造性思维,或有独特见解
10
成
果
质
量
总体设计正确、合理,各项技术指标符合要求。
10
说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰
10
设计说明书栏目齐全、合理,符号统一、编号齐全。
格式、绘图、表格、插图等规准确,符合国家标准
10
有一定篇幅,字符数不少于5000
10
总分
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()
构造函数
Public
voidadd(Student&s)
将S添加到文件中
Public
voiddisplay()
依次显示所有的学生的信息
Public
Student
*gerStudent(stringid)
得到学号为id的学生的对象指针
Public
~StuFile()
析构函数,释放资源,并把数组中的信息存进文件
Public
voidwjf()
未缴费的学生的
Private
vector
*stuList;
学生信息的向量数组,用于保存所有学生的信息
2TeacherFile类,主要用于对教工信息的操作
Public
TeacherFile()
构造函数
Public
voidadd(Teacher&s)
将s添加到文件中
Public
voiddisplay()
依次显示所有的教师信息
Public
Teacher*getTeacher
(stringid)
得到编号为id的教师的对象指针
Public
~TeacherFile()
析构函数,释放资源,并把数组中的信息存进文件
Public
voidwjf()
未交费的教工人员
Private
Vector
*teaLisr
教工的向量数组,用于保存所有教工的信息
(3)Main.cpp
函数
属性
注释
voidinit()
新建一个学生或者教工的信息
voidselect()
查询界面,根据用户的输入来显示用户想查询的信息
voidadd()
信息的录入,录入学生或者教工的水电煤气信息
voidhanded()
缴费,有学生或者教工缴费的时候调用此函数
intmainMenu()
主菜单,显示一个菜单,返回用户的输入
voidwork()
程序开始工作
intmain()
主函数,程序的入口
(4)Student.cpp
ClassStudent:
virtualpublicUser
函数
属性
注释
Public
Student():
User(“”,””,0,0,0)
构造函数
Public
Student(stringi,stringn,
Floatw=0,floatp=0,float
g=0):
User(i,n,w,p,g)
构造函数i:
学号n:
Public
voiddisplay()
依次显示所有的学生的信息
Public
floatdisplay()
返回学生应缴的费用
Private
floatfreeWater;
学生免费使用的水量
Private
floatfreePower;
学生免费使用的电量
Private
floatfreeGas;
学生免费使用的煤气量
Private
floatmoney;
缴费
(5)Teacher.cpp
ClassTeacher:
virtualpublicUser
函数
属性
注释
Public
Teacher(stringi,stringn,
floatw=0,floatp=0,float
g=0):
User(I,n,w,p,g)
构造函数
Public
voiddisplay()
依次显示所有的教工信息
Public
floatgetMoney()
返回教工应缴的费用
(6)User.cpp
函数
属性
注释
Public
User(stringi,stringn,float
w=0,floatp=0,floatg=0)
构造函数
Public
stringgetId()
获取编号
Public
stringgetName()
获取
Public
voidsetId(stringi)
设置编号
Public
voidsetName(stringn)
设置
Public
voidsetWater(floatw)
设置水量
Public
voidsetPower(floatp)
设置电量
Public
voidsetGas(floatg)
设置煤气量
Public
floatgetWater()
使用水量
Public
virtualvoiddisplay()=0;
依次显示所有信息
Public
voidsetMoney(floatm)
缴费
Public
virtualfloatgetMoney()=0;
应缴费用
(四)UML图:
StuFile
+id:
string
+name:
string
+useWater:
float
+usePower:
float
+useGas:
float
+money:
float
+add():
void
+display():
void
+wjf():
void
Student
-freeWater:
float
-freePower:
float
-freeGas:
float
+display():
void
+getMoney():
void
User
+i:
string
+n:
string
+w:
float
+p:
float
+g:
float
+getId():
string
+getName():
string
+setId(stringi):
string
+setName(stringn):
string
+setWater(floatw):
float
+setPower(floatp):
float
+setGas(floatg):
float
+getWater():
float
三.程序代码:
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
#include
#include
#include
#include"Student.cpp"
#include"Teacher.cpp"
#include"File.cpp"
usingnamespacestd;
voidinit()
{
cout<cout<<"1.新建教工信息\n"
<<"2.新建学生信息\n"<cout<<"请选择你要进行的操作:
"<into;
cin>>o;
if(o==1)
{
stringid;
stringname;
cout<<"请输入新教工的号:
";
cin>>id;
cout<<"请输入新教工的:
";
cin>>name;
Teachert(id,name);
TeacherFiletf;
tf.add(t);
}
elseif(o==2)
{
stringid;
stringname;
cout<<"请输入新学生的号:
";
cin>>id;
cout<<"请输入新学生的:
";
cin>>name;
Students(id,name);
StuFilesf;
sf.add(s);
}
else
return;
}
voidselect()
{
cout<cout<<"1.学生的信息\n"
<<"2.教师的信息\n"
<<"3.按号查询\n"
<<"4.未缴费的人员\n"
<<"5.不进行任何的操作\n"<cout<<"请输入你要进行的操作:
";
into;
cin>>o;
StuFilesf;
TeacherFiletf;
if(o==1)
{
cout<<"该用户的信息是:
"<cout<<"|"<<<<<<sf.display();
}
elseif(o==2)
{
cout<<"该用户的信息是:
"<cout<<"|"<<<<<<tf.display();
}
elseif(o==3)
{
User*user;
StuFilesf;
TeacherFiletf;
stringid;
cout<<"请输入他的号:
";
cin>>id;
user=sf.getStudent(id);
if(user==0)
user=tf.getTeacher(id);
if(user==0)
{
cout<<"资料库中没有该号的用户!
"<return;
}
cout<<"该用户的信息为:
"<cout<<"|"<<<<<<user->display();
}
elseif(o==4)
{
sf.wjf();
tf.wjf();
}
else
return;
}
voidadd()
{
cout<<"1.对教工使用的水电煤气信息的录入"<<<"2.对学生使用的水电煤气信息的录入"<<<"3.不进行任何操作"<cout<<"请输入你要进行的操作:
"<into;
cin>>o;
stringid;
floatwater;
floatpower;
floatgas;
if(o==1||o==2)
{
User*user;
StuFilesf;
TeacherFiletf;
cout<<"请输入他的号:
";
cin>>id;
user=sf.getStudent(id);
if(user==0)
user=tf.getTeacher(id);
if(user==0)
{
cout<<"资料库中没有该号的用户!
"<return;
}
cout<<"该用户的信息是:
"<cout<<"|"<<<<<<user->display();
cout<<"请输入他的用水量:
";
cin>>water;
cout<<"请输入他的用电量:
";
cin>>power;
cout<<"请输入他的用煤气量:
";
cin>>gas;
user->setWater(water);
user->setPower(power);
user->setGas(gas);
}
else
return;
}
voidhanded()
{
cout<<"请输入要缴费的人的号:
";
stringid;
cin>>id;
User*user;
StuFilesf;
TeacherFiletf;
user=sf.getStudent(id);
if(user==0)
user=tf.getTeacher(id);
if(user==0)
{
cout<<"资料库中没有该号的用户!
"<return;
}
cout<<"该用户的信息是:
"<cout<<"|"<<<<<<user->display();
cout<<"请输入他的缴费金额:
";
floatmoney;
cin>>money;
user->setMoney(money);
cout<<"缴费成功\n";
}
intmainMenu()
{
cout<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"☆☆"<cout<<"☆水电煤气管理系统☆"<cout<<"☆☆"<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<cout<<"1.新建用户信息"<cout<<"2.信息查询"<cout<<"3.信息的录入"<cout<<"4.有人缴费"<cout<<"0.退出系统"<inta;
charc[20];
do
{
cout<<"请选择相应的功能(0-4):
"<cout<cin>>a;
gets(c);
if(a<0||a>4)
{
cout<cout<<"请确认您输入的数字在0~4之间!
"<cout<<"请重新输入一遍!
"<}
}
while(a<0||a>4);
returna;
}
voidwork()
{
switch(mainMenu())
{
case1:
init();
break;
case2:
select();
break;
case3:
add();
break;
case4:
handed();
break;
default:
break;
}
}
voidMenu()
{
cout<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<<"☆☆"<cout<<"☆水电煤气管理系统☆"<cout<<"☆☆"<cout<<"☆振坡☆"<cout<<"☆☆"<cout<<"☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆"<cout<system("pause");
system("cls");
}
voidmain()
{
system("color3A");
Menu();
chara='y';
while(a=='y')
{
work();
cout<<"是否继续使用该系统(y/n)"<cin>>a;
}
}
File.cpp
//StuFile类,对学生信息的操作
//TeacherFile类,对教工信息的操作
#include
#include
#include
#include
#include
#include"Student.cpp"
#include"Teacher.cpp"
#include"User.cpp"
#include"Constant.h"
#ifndefStuFile_class
#defineStuFile_class
classStuFile
{
vector*stuList;
public:
stringid;
stringname;
floatuseWater;
floatusePower;
floatuseGas;
floatmoney;
StuFile()
{
stuList=newvector;
ifstream*is=newifstream("StuFileName",ios_base:
:
in);
if(is==0)
{
cout<<"打开文件失败!
"<return;
}
else
{
while(is->good())
{
Students("","");
is->read((char*)&s,sizeof(Student));
if(s.getId()!
="")
{
stuList->push_back(s);
}
}
}
is->close();
}
voidadd(Student&s)
{
stuList->push_back(s);
}
voiddisplay()
{
for(inti=0;isize();i++)
{
Students=stuList->at(i);
s.display();
}
}
Student*getStudent(s