1、格式、绘图、表格、插图等规准确,符合国家标准有一定篇幅,字符数不少于5000总 分100指导教师评语: 指导教师签名: 年 月 日一 问题描述:设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。二 设计思路:(一)程序功能:1.实现对用户信息的录入2.实现水电煤气数据的录入3.计算并查询用户应缴费用4.查询未缴纳费用(二)程序说明:1.在主函数过分支选择可以跳转不同的
2、功能选项进而实现2.在显示主菜单函数中,我们通过设计友好界面来与用户进行交互。在“请选择相应功能(0-4):”中使用者输入非0-4数字或其他字符时,系统提示“请检查您输入的数字在04之间!请在输入一遍!”的信息,以帮助用户进行正确选择。3.首先建立了User类,用于初始化、用水电、煤气量,又定义了缴费函数setMonery(),用在有人缴费的函数体中,从键盘输入缴的费用,一开始我们在setMoney(),中没有对缴的费用进行累加,在查询信息时现实的应缴费用不正确,经过我们的努力,检查出错误并加以改正,让程序更加完善。4.用User类派生出Student和|Teacher类,其中有计算应该缴的费
3、用,Student类比Teacher类多了免费。5.在保存文件的处理中,需考虑到“创建保存文件失败!”和“已成功保存文件!”等诸多容。 (三)文件类型: (1) Constant.h 用于存放收费标准。(2) File.cpp 该文件中有两个类:1. StuFile类,主要用于对学生信息的操作函数属性注释PublicStuFile()构造函数void add(Student &s)将S添加到文件中void display()依次显示所有的学生的信息Student*gerStudent(string id)得到学号为id的学生的对象指针StuFile()析构函数,释放资源,并把数组中的信息存进文
4、件void wjf()未缴费的学生的Privatevector*stuList;学生信息的向量数组,用于保存所有学生的信息2 TeacherFile 类,主要用于对教工信息的操作TeacherFile()void add(Teacher&将s添加到文件中依次显示所有的教师信息Teacher *getTeacher(string id)得到编号为id的教师的对象指针TeacherFile()未交费的教工人员Vector*teaLisr教工的向量数组,用于保存所有教工的信息 (3)Main.cppvoid init()新建一个学生或者教工的信息void select()查询界面,根据用户的输入来显
5、示用户想查询的信息void add()信息的录入,录入学生或者教工的水电煤气信息void handed()缴费,有学生或者教工缴费的时候调用此函数int mainMenu()主菜单,显示一个菜单,返回用户的输入void work()程序开始工作int main()主函数,程序的入口 (4)Student.cpp Class Student:virtual public UserStudent():User(“”,”,0,0,0)Student(string i,string n,Float w=0,float p=0,float g=0):User(i,n,w,p,g)构造函数 i:学号n:f
6、loat display()返回学生应缴的费用float freeWater;学生免费使用的水量float freePower;学生免费使用的电量float freeGas;学生免费使用的煤气量float money;缴费 (5)Teacher.cpp Class Teacher:Teacher(string i,string n,float w=0,float p=0,floatUser(I,n,w,p,g)依次显示所有的教工信息float getMoney()返回教工应缴的费用 (6)User.cppUser(string i,string n,float w=0,float p=0,fl
7、oat g=0)string getId()获取编号string getName()获取void setId(string i)设置编号void setName(string n)设置void setWater(float w)设置水量void setPower(float p)设置电量void setGas(float g)设置煤气量float getWater()使用水量virtual void display()=0;依次显示所有信息void setMoney(float m)virtual float getMoney()=0;应缴费用(四)UML图:StuFile+id:string
8、+name:+useWater:float+usePower:+useGas:+money:+add():void+display():+wjf():-freeWater:-freePower:-freeGas:+getMoney():User+i:+n:+w:+p:+g:+getId():+getName():+setId(string i) :+setName(string n) :+setWater(float w) :+setPower(float p) :+setGas(float g) :+getWater():三 程序代码:Constant.h/收费标准#ifndef Const
9、ant#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
10、=t.txt#endifMain.cpp#includeiomanipstringvector#includeStudent.cppTeacher.cppFile.cppusing namespace std; coutendl;1.新建教工信息n o; if(o=1) string id; string name; coutid;请输入新教工的:name; Teacher t(id,name); TeacherFile tf; tf.add(t); else if(o=2)请输入新学生的号:请输入新学生的: Student s(id,name); StuFile sf; sf.add(s);
11、 else return ;1.学生的信息n2.教师的信息n3.按号查询n4.未缴费的人员n5.不进行任何的操作n请输入你要进行的操作: StuFile sf; TeacherFile tf;该用户的信息是:|setw(18)号 setw(8) 用水量用电量用煤气量要缴的费用 sf.display(); tf.display(); else if(o=3) User *user;请输入他的号: user=sf.getStudent(id); if(user=0) user=tf.getTeacher(id); coutdisplay(); else if(o=4) sf.wjf(); tf.w
12、jf();1.对教工使用的水电煤气信息的录入endl2.对学生使用的水电煤气信息的录入3.不进行任何操作 string id; float water; float power; float gas; 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);请输入他的缴费金
13、额: float money;money;setMoney(money);缴费成功nendl 水电煤气管理系统 1.新建用户信息 2.信息查询 3.信息的录入 4.有人缴费 0.退出系统 int a; char c20; do 请选择相应的功能(0-4):a; gets(c); if(a4)请确认您输入的数字在04之间!请重新输入一遍! while(aUser.cppConstant.h#ifndef StuFile_class#define StuFile_classclass StuFile vector *stuList;public : string name; float useWa
14、ter; float usePower; float useGas; float money; StuFile() stuList=new vectorgood() Student s(, is-read(char*)&s,sizeof(Student); if(s.getId() != stuList-push_back(s); is-close(); void add(Student & stuList- void display() for(int i=0;isize();i+) Student s=stuList-at(i); s.display(); Student *getStudent(s
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1