课程设计(论文)用C++实现水电煤气管理系统.doc
课程设计报告课程设计题目:水电煤气管理系统 学生姓名: 专 业: 网络工程班 级: 10211303指导教师: 姜林 2011年 11 月 25 日 东华理工大学课程设计评分表学生姓名: 班级: 学号:课程设计题目:水电煤气管理系统项目内容满分实 评选题能结合所学课程知识、有一定的能力训练。符合选题要求(5人一题)10工作量适中,难易度合理10能力水平能熟练应用所学知识,有一定查阅文献及运用文献资料能力10理论依据充分,数据准确,公式推导正确10能应用计算机软件进行编程、资料搜集录入、加工、排版、制图等10能体现创造性思维,或有独特见解10成果质量总体设计正确、合理,各项技术指标符合要求。10说明书综述简练完整,概念清楚、立论正确、技术用语准确、结论严谨合理;分析处理科学、条理分明、语言流畅、结构严谨、版面清晰10设计说明书栏目齐全、合理,符号统一、编号齐全。格式、绘图、表格、插图等规范准确,符合国家标准10有一定篇幅,字符数不少于500010总 分100指导教师评语: 指导教师签名: 年 月 日一 问题描述:设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。二 设计思路:(一)程序功能:1.实现对用户信息的录入2.实现水电煤气数据的录入3.计算并查询用户应缴费用4.查询未缴纳费用名单(二)程序说明:1.在主函数中通过分支选择可以跳转不同的功能选项进而实现2.在显示主菜单函数中,我们通过设计友好界面来与用户进行交互。在“请选择相应功能(0-4):”中使用者输入非0-4数字或其他字符时,系统提示“请检查您输入的数字在04之间!请在输入一遍!”的信息,以帮助用户进行正确选择。3.首先建立了User类,用于初始化身份证号码、姓名、用水电、煤气量,又定义了缴费函数setMonery(),用在有人缴费的函数体中,从键盘输入缴的费用,一开始我们在setMoney(),中没有对缴的费用进行累加,在查询信息时现实的应缴费用不正确,经过我们的努力,检查出错误并加以改正,让程序更加完善。4.用User类派生出Student和|Teacher类,其中有计算应该缴的费用,Student类比Teacher类多了免费。5.在保存文件的处理中,需考虑到“创建保存文件失败!”和“已成功保存文件!”等诸多内容。 (三)文件类型: (1) Constant.h 用于存放收费标准。(2) File.cpp 该文件中有两个类:1. StuFile类,主要用于对学生信息的操作 函数属性注释PublicStuFile()构造函数Publicvoid add(Student &s)将S添加到文件中Publicvoid display()依次显示所有的学生的信息PublicStudent*gerStudent(string id)得到学号为id的学生的对象指针PublicStuFile()析构函数,释放资源,并把数组中的信息存进文件Publicvoid wjf()未缴费的学生的名单Privatevector<Student>*stuList;学生信息的向量数组,用于保存所有学生的信息2 TeacherFile 类,主要用于对教工信息的操作PublicTeacherFile()构造函数Publicvoid add(Teacher&s)将s添加到文件中Publicvoid display()依次显示所有的教师信息PublicTeacher *getTeacher(string id)得到编号为id的教师的对象指针PublicTeacherFile()析构函数,释放资源,并把数组中的信息存进文件Publicvoid wjf()未交费的教工人员名单PrivateVector<Teacher>*teaLisr教工的向量数组,用于保存所有教工的信息 (3)Main.cpp函数属性注释void init()新建一个学生或者教工的信息void select()查询界面,根据用户的输入来显示用户想查询的信息void add()信息的录入,录入学生或者教工的水电煤气信息void handed()缴费,有学生或者教工缴费的时候调用此函数int mainMenu()主菜单,显示一个菜单,返回用户的输入void work()程序开始工作int main()主函数,程序的入口 (4)Student.cpp Class Student:virtual public User函数属性注释PublicStudent():User(“”,”,0,0,0)构造函数PublicStudent(string i,string n,Float w=0,float p=0,float g=0):User(i,n,w,p,g)构造函数 i:学号n:姓名Publicvoid display()依次显示所有的学生的信息Publicfloat display()返回学生应缴的费用Privatefloat freeWater;学生免费使用的水量Privatefloat freePower;学生免费使用的电量Privatefloat freeGas;学生免费使用的煤气量Privatefloat money;缴费 (5)Teacher.cpp Class Teacher:virtual public User函数属性注释PublicTeacher(string i,string n,float w=0,float p=0,floatg=0):User(I,n,w,p,g)构造函数Publicvoid display()依次显示所有的教工信息Publicfloat getMoney()返回教工应缴的费用 (6)User.cpp函数属性注释PublicUser(string i,string n,float w=0,float p=0,float g=0)构造函数Publicstring getId()获取编号Publicstring getName()获取姓名Publicvoid setId(string i)设置编号Publicvoid setName(string n)设置姓名Publicvoid setWater(float w)设置水量Publicvoid setPower(float p)设置电量Publicvoid setGas(float g)设置煤气量Publicfloat getWater()使用水量Publicvirtual void display()=0;依次显示所有信息Publicvoid setMoney(float m)缴费Publicvirtual float getMoney()=0;应缴费用(四)UML图:StuFile+id:string+name:string+useWater:float+usePower:float+useGas:float+money:float+add():void+display():void+wjf():voidStudent-freeWater:float-freePower:float-freeGas:float+display():void+getMoney():voidUser+i:string+n:string+w:float+p:float+g:float+getId():string+getName():string+setId(string i) :string+setName(string n) :string+setWater(float w) :float+setPower(float p) :float+setGas(float g) :float+getWater():float 三 程序代码:Constant.h/收费标准#ifndef Constant#define Constant/教师const static float TwaterUnit=1;const static float TpowerUnit=1;const static float TgasUnit=1;/学生const static float SwaterUnit=1;const static float SpowerUnit=1;const static float SgasUnit=1;/保存学生信息的文件const static char* stuFlieName="s.txt"/保存教师信息的文件const static char* teaFileName="t.txt"#endifMain.cpp#include<iostream>#include<iomanip>#include<string>#include<vector>#include"Student.cpp"#include"Teacher.cpp"#include"File.cpp"using namespace std;void init()cout<<endl;cout<<"1.新建教工信息n"<<"2.新建学生信息n"<<endl;cout<<"请选择你要进行的操作:"<<endl;int o;cin>>o;if(o=1)string id;string name;cout<<"请输入新教工的身份证号:"cin>>id;cout<<"请输入新教工的姓名:"cin>>name;Teacher t(id,name);TeacherFile tf;tf.add(t);else if(o=2)string id;string name;cout<<"请输入新学生的身份证号:"cin>>id;cout<<"请输入新学生的姓名:"cin>>name;Student s(id,name);StuFile sf;sf.add(s);elsereturn ;void select()cout<<endl;cout<<"1.学生的信息n"<<"2.教师的信息n"<<"3.按身份证号查询n"<<"4.未缴费的人员名单n"<<"5.不进行任何的操作n"<<endl;cout<<"请输入你要进行的操作:"int o;cin>>o;StuFile sf;TeacherFile tf;if(o=1)cout<<"该用户的信息是:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴的费用"<<endl;sf.display();else if(o=2)cout<<"该用户的信息是:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴的费用"<<endl;tf.display();else if(o=3)User *user;StuFile sf;TeacherFile tf;string id;cout<<"请输入他的身份证号:"cin>>id;user=sf.getStudent(id);if(user=0)user=tf.getTeacher(id);if(user=0)cout<<"资料库中没有该身份证号的用户!"<<endl;return ;cout<<"该用户的信息为:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴的费用"<<endl;user->display();else if(o=4)sf.wjf();tf.wjf();elsereturn ;void add()cout<<"1.对教工使用的水电煤气信息的录入"<<endl<<"2.对学生使用的水电煤气信息的录入"<<endl<<"3.不进行任何操作"<<endl;cout<<"请输入你要进行的操作:"<<endl;int o;cin>>o;string id;float water;float power;float gas;if(o=1|o=2)User*user;StuFile sf;TeacherFile tf;cout<<"请输入他的身份证号:"cin>>id;user=sf.getStudent(id);if(user=0)user=tf.getTeacher(id);if(user=0)cout<<"资料库中没有该身份证号的用户!"<<endl;return ;cout<<"该用户的信息是:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴的费用"<<endl;user->display();cout<<"请输入他的用水量:"cin>>water;cout<<"请输入他的用电量:"cin>>power;cout<<"请输入他的用煤气量:"cin>>gas;user->setWater(water);user->setPower(power);user->setGas(gas);elsereturn ;void handed()cout<<"请输入要缴费的人的身份证号:"string id;cin>>id;User*user;StuFile sf;TeacherFile tf;user=sf.getStudent(id);if(user=0)user=tf.getTeacher(id);if(user=0)cout<<"资料库中没有该身份证号的用户!"<<endl;return ;cout<<"该用户的信息是:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴的费用"<<endl;user->display();cout<<"请输入他的缴费金额:"float money;cin>>money;user->setMoney(money);cout<<"缴费成功n"int mainMenu()cout<<endl<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" 水电煤气管理系统 "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<endl;cout<<" 1.新建用户信息"<<endl;cout<<" 2.信息查询"<<endl;cout<<" 3.信息的录入"<<endl;cout<<" 4.有人缴费"<<endl;cout<<" 0.退出系统"<<endl;int a;char c20;docout<<" 请选择相应的功能(0-4):"<<endl;cout<<endl;cin>>a;gets(c);if(a<0|a>4)cout<<endl<<endl;cout<<"请确认您输入的数字在04之间!"<<endl;cout<<"请重新输入一遍!"<<endl<<endl;while(a<0|a>4);return a;void work()switch(mainMenu()case 1:init();break;case 2:select();break;case 3:add();break;case 4:handed();break;default:break;void Menu()cout<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<" 水电煤气管理系统 "<<endl;cout<<" "<<endl;cout<<" 杨振坡 "<<endl;cout<<" "<<endl;cout<<" "<<endl;cout<<endl;system("pause");system("cls");void main()system("color 3A");Menu();char a='y'while(a='y')work();cout<<"是否继续使用该系统(y/n)"<<endl;cin>>a;File.cpp/StuFile类,对学生信息的操作/TeacherFile类,对教工信息的操作#include<iostream>#include<iomanip>#include<fstream>#include<vector>#include<string>#include"Student.cpp" #include"Teacher.cpp"#include"User.cpp"#include"Constant.h"#ifndef StuFile_class#define StuFile_classclass StuFilevector<Student> *stuList;public :string id;string name;float useWater;float usePower;float useGas;float money;StuFile()stuList=new vector<Student>ifstream *is=new ifstream("StuFileName",ios_base:in);if(is=0)cout<<"打开文件失败!"<<endl;return ;elsewhile(is->good()Student s("","");is->read(char*)&s,sizeof(Student);if(s.getId() !="")stuList->push_back(s);is->close();void add(Student &s)stuList->push_back(s);void display()for(int i=0;i<stuList->size();i+)Student s=stuList->at(i);s.display();Student *getStudent(string id)for(int i=0;i<stuList->size();i+)if(stuList->at(i).getId()=id)return &stuList->at(i);return 0;StuFile()if(stuList !=NULL && !stuList->empty()ofstream os("stuFileName",ios_base:out);for(int i=0;i<stuList->size();i+)if(stuList->at(i).getId() !="")os.write(char*)&stuList->at(i),sizeof(Student);os.close();delete stuList;void wjf()cout<<"未缴费的学生名单:"<<endl;for(int i=0;i<stuList->size();i+)Student s=stuList->at(i);if(s.getMoney()>0)cout<<"该学生的信息是:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴纳的费用"<<endl;s.display();#endif#ifndef TeaFile_class#define TeaFile_classclass TeacherFilevector<Teacher> *teaList;public:TeacherFile()teaList=new vector<Teacher>ifstream*is=new ifstream(teaFileName,ios_base:in);if(is=0)cout<<"打开文件失败!"<<endl;return ;elsewhile(is->good()Teacher s("","");is->read(char*)&s,sizeof(Teacher);if(s.getId() !="")teaList->push_back(s);is->close();Teacher *getTeacher(string id)for(int i=0;i<teaList->size();i+)if(teaList->at(i).getId()=id)return &teaList->at(i);return 0;void wjf()cout<<"教工未缴费的人员名单:"<<endl;for(int i=0;i<teaList->size();i+)Teacher t=teaList->at(i);if(t.getMoney()>0)cout<<"该教师的信息是:"<<endl;cout<<"|"<<setw(18)<<"身份证号"<<"|" <<setw(8)<<"姓名"<<"|" <<setw(8)<<"用水量"<<"|" <<setw(8)<<"用电量"<<"|" <<setw(8)<<"用煤气量"<<"|" <<setw(8)<<"要缴的费用"<<endl;t.display();void display()for(int i=0;i<teaList->size();i+)Teacher t=teaList->at(i);t.display();void add(Teacher &s)teaList->push_back(s);TeacherFile()if(teaList !=NULL && !teaList->empty()ofstream os(teaFileName,ios_base:out);for(int i=0;i<teaList->size();i+)if(teaList->at(i).getId() !="")os.write(char*)&teaList->at(i),sizeof(Teacher);os.close();delete teaList;#endifStudent.cpp#ifndef STUDENT_CLASS#define STUDENT_CLASS#include<iostream>#include<iomanip>#include<string>#include"Constant.h"#include"User.cpp"using namespace std;class Student:virtual public Userprivate :float freeWater;float freePower;float freeGas;public :Student():User("","",0,0,0)freeWater=1;freePower=2;freeGas=3;Student(string i,string n,float w=0,float p=0,float g=0):User(i,n,w,p,g)void display()cout<<"|"<<setw(18)<<id<<"|" <<setw(8)<<name<<"|" <<setw(8)<<useWater<<"|" <<setw(8)<<usePower<<"|" <<setw(8)<<useGas<<"|" <<setw(8)<<getMoney()<<endl;float getMoney()float w=SwaterUnit*(useWater>freeWater)?(useWater-freeWater):0);float p=SpowerUnit*(usePower>freePower)?(usePower-freePower):0);float g=SgasUnit*(useGas>freeGas)?(useGas-freeGas):0);return w+p+g-money;#endifTeacher.cpp#include"User.cpp"#include"Constant.h"#ifndef Teacher_class#define Teacher_classclass Teacher:virtual public Userpublic :Teacher(string i,string n,float w=0,float p=0,float g=0):User(i,n,w,p,g)void display()cout<<"|"<<setw(18)<<id<<"|" <<setw(8)<<name<<"|" <<setw(8)<<useWater<<"|" <<setw(8)<<usePower<<"|" <<setw(8)<<useGas<<"|" <<setw(8)<<getMoney()<<endl;float getMoney()float w=TwaterUnit* useWater;float p=TpowerUnit* usePower;float g=TgasUnit* useGas;return w+p+g-money;#endifUser.cpp#include<iostream>#include<iomanip>#include<string>using namespace std;#ifndef USER_CLASS#define USER_CLAS