1、C语言程序设计课程设计水电煤气管理系统 JINGCHU UNIVERSITY OF TECHNOLOGY 课程设计成果 学院:_计算机工程学院_班 级: _计算机科学与技术(一) 学生姓名: 学 号: 设计地点(单位)_ A5 -101_ _设计题目:_ 电煤气管理系统_ 完成日期: 2012 年 1月 5 日 指导教师评语: _ _ _ _ 成绩(五级记分制):_ _ _ 教师签名:_ _一课程设计目的和要求 2二课题分析 2三设计 2-31. 设计思想 2.设计分析四主程序3-19五结果显示及分析19-21六感想、收获及体会21 七参考文献22附录22一课程设计目的和要求 问题描述:设计一
2、个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。基本要求:实现对用户信息的录入实现水电煤气数据的录入计算并查询用户应缴费用查询未缴纳费用名单测试数据:可选用小区物业管理部门的数据,也可采用手工输入不少于10个用户信息的数据。实现提示:用户基本信息类,教工用户信息类,学生用户信息类,收费标准类,该类存储水电煤气标准单位的收费标准,如:煤气,1.0元/立方米;不同类型人员水、
3、电、煤气信息类,这些类可以包括水表,电表,煤气表ID,抄表时间,上次抄表时间,本次抄表时间,上次抄表度数,本次抄表度数,本次使用度数,费用,是否缴费标记等信息。在实现的时候考虑继承和多态技术的合理使用。二课题分析: 本程序是一个水电气管理信息系统,能够对高校的水电气费用进行管理,包括了成员基本信息,如学号、编号、姓名、成员水电气的用量;程序的用途包括缴纳水电气费、查询一个同学水电气费用量、查看所有同学的缴费情况、增加学生信息、删除学生信息、退出系统等。在设计时也考虑到学生和教师在用水电气时的不同,学生可以免费使用一定额度的水电气,超过这个额度的以后必须付费,且付费部分水电气费的价格要高于教工的
4、收费标准,该措施的实行是为了鼓励同学们节约用水,以免造成不必要的资源浪费。该软件主要是为了学校的管理人员提供便捷,以更快的完成水电气费用的收缴。三设计1.设计思想:设计面向对象的程序设计语言,首先考虑的肯定是要设计类。程序设计了四个类,两个是学生类,两个是教师类。在主函数中用动态数组,机动的分配类存,以至于不造成类存的浪费。在本程序中涉及用户的选择,用户要根据自己的实际需要选择不同的功能,由于选择的多样性,程序中必须要有switch结构控制各个功能的选择,如果需要多次进行操作,则要在switch结构的外部,通过循环来实现。首先该程序的第一目的是要读附录里的内容,然后再根据用户的选项来实现各种不
5、同的功能,当正确按照要求就可进行更进一步进行操作,直到你达到自己的目的为止。本程序通过调用不同的函数来实现不同的功能,通过用户自己的选择可以自己进行操作,在主函数中申明的函数分别起到不同的作用,在本程序中所有的子函数都是在主函数外实现的。在子函数的函数体中为了使程序的功能和细节更加的完善,在子函数中设置菜单,这样不仅使得程序更加完善还有利于用户的操作。使得程序更加简洁明了。2设计分析:在这个电煤气管理系统中,共用到了四个类,一个是stut类,它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有赋值运算符重载、插入运算符重载,最重要的就是那些对象都有共同的属性,通过这个类把学号、姓名、
6、水用量、电用量、气用量集中到一起,所以才能设计一个类;另一个类就是arrayofStu 学生类计算类,这个类的作用主要就是一些功能的实现,有主菜单、交费菜单、交费功能和、查询菜单、查询功能、增加功能、删除菜单、删除功能、查看功能。同样定义一个teacher它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有赋值运算符重载、插入运算符重载,最重要的就是那些对象都有共同的属性,通过这个类把姓名、水用量、电用量、气用量集中到一起,所以才能设计一个类;其另一个类就是arrayofTeacher老师类数组计算,这个类的作用主要就是一些功能的实现,有主菜单、交费菜单、交费功能和、查询菜单、查询功
7、能、增加功能、删除菜单、删除功能、查看功能四主程序#include iostream#includestring#includefstream#includeiomanipusing namespace std;int count1=0,count11=0; /学生总数和交钱的人数int count2=0,count22=0;class Stupublic: Stu(double xwater=0,double xpower=0,double xgas=0,string xnum=a,string xna=a); /学生类构造函数 void operator =(Stu S); /赋值运算符重
8、载 friend ostream &operator (ostream & a,Stu &S) /插入运算符重载 asetw(8)leftS.number; asetw(8)leftS.name; asetw(8)leftS.water; asetw(8)leftS.power; asetw(8)leftS.gas; asetw(8)leftS.SGetW(); asetw(8)leftS.SGetC(); asetw(8)leftS.SGetG(); asetw(8)leftS.Stotal(); if(S.flag) a已交; else a未交; coutendl; return a; d
9、ouble SGetW(); /计算水费 double SGetC(); /计算电费 double SGetG(); /计算煤气费 double Stotal(); /计算总费用 double water,power,gas,water_rate,circuit,gas_rate,total; int flag; string number,name;Stu:Stu(double xwater,double xpower,double xgas,string xnum,string xna) /学生类构造函数 water=xwater; power=xpower; gas=xgas; numb
10、er=xnum; name=xna; flag=0;void Stu:operator =(Stu S) /赋值运算符重载 name=S.name; number=S.number; water=S.water; power=S.power; gas=S.gas;double Stu:SGetW( ) /计算水费if(water10) water_rate=0;else water_rate=4.2*(water-10); return water_rate;double Stu:SGetC() /计算电费if(power10) circuit=0;else circuit=0.6*(powe
11、r-10); return circuit; double Stu:SGetG() /计算煤气费if(gasstudenti.number;fstudenti.name;fstudenti.water;fstudenti.power;fstudenti.gas;i+;f.close();count1=i;couttt 注册成功endl;void arrayofStu:naj( ) /输入姓名交费 char ch; double money,money2; coutttt欢迎使用姓名交费功能endl; string na; cout请输入学生姓名:na; int fl=0; for(int i=
12、0;icount1;i+) if(na=studenti.name) fl=1; if(studenti.flag) cout该学生已缴纳过费用endl; else cout你应该交studenti.Stotal()钱endl; cout确定是否真的现在交费 (Y/N)ch; if(ch=Y|ch=y) studenti.flag=1; cout你实际交的钱是:money; if(moneystudenti.Stotal() cout找零money-studenti.Stotal()钱money) cout交的钱不够,还应交studenti.Stotal()-money钱endl; coutm
13、oney2; cout交费成功endl; count11+; xuesheng(); else xuesheng(); if(!fl) cout没有这个学生endl; void arrayofStu:numj( ) /输入学号交费 coutttt欢迎使用学号交费功能endl; string num;double money,money2;char ch; cout请输入学生学号:num; int fl=0; for(int i=0;icount1;i+) if(num=studenti.number) if(studenti.flag) fl=1; cout该学生已缴纳过费用endl; els
14、e cout你应该交studenti.Stotal()钱endl; cout确定是否真的现在交费 (Y/N)ch; if(ch=Y|ch=y) studenti.flag=1; cout你实际交的钱是:money; if(moneystudenti.Stotal() cout找零money-studenti.Stotal()钱money) cout交的钱不够,还应交studenti.Stotal()-money钱endl; coutmoney2; cout交费成功endl; count11+; xuesheng(); else xuesheng(); if(!fl) cout没有这个学生end
15、l; void arrayofStu:add() /增加学生coutttt欢迎使用增加学生功能endl;cout请输入学生的姓名:studentcount1.name;cout请输入学生的学号:studentcount1.number;cout请输入学生的用水量:studentcount1.water;cout请输入学生的用电量:studentcount1.power;cout请输入学生的用煤气量:studentcount1.gas;count1+;coutttt学生信息已被成功的增加!endl;void arrayofStu:nad( ) /按姓名删除 coutttt欢迎使用姓名删除学生功能
16、endl; /*coutstudent0; coutendlstudent0.name;*/int fl=0; int i,j; string na;cout请输入要删除学生的姓名na;for(i=0;icount1;i+)if(na=studenti.name) fl=1;break;if(fl) for(j=i;jcount1-1;j+) studentj=studentj+1;count1-;cout你已成功删除学生信息endl;else cout没有这个学生endl;void arrayofStu:display() int i; if(count11=0) cout暂时还无学生交费e
17、ndl; elsecout已交费人员信息endl; cout学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 是否交费endl; for( i=0;icount1;i+) if(studenti.flag) coutstudenti; if(count11=count1) cout所有学生均以交费endl; else cout未交费人员信息endl; cout学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 是否交费endl; for(i=0;icount1;i+) if(!studenti.flag) coutstudenti;void arrayofStu:nu
18、md( ) /按学号删除coutttt欢迎使用学号删除学生功能endl;int fl=0; int i,j;string num;cout请输入要删除学生的学号num;for(i=0;icount1;i+)if(num=studenti.number) fl=1;break;if(fl)for(j=i;jcount1-1;j+) studentj=studentj+1;count1-;cout你已成功删除学生信息endl;else cout没有这个学生endl;void arrayofStu:nacheck( ) /姓名查询 coutttt欢迎使用姓名查询学生功能endl;int i,fl=0
19、; string na; cout请输入要查找的姓名na;for(i=0;icount1;i+) if(na=studenti.name) fl=1;break;if(fl) cout学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 是否交费endl; coutstudentiendl;else cout没有这个学生endl;void arrayofStu:numcheck() /学号查询 coutttt欢迎使用学号查询学生功能endl; int i,fl=0;string num;cout请输入要查找的学号num;for(i=0;icount1;i+) if(num=stude
20、nti.number) fl=1;break;if(fl)cout学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 是否交费endl; coutstudentiendl;else cout没有这个学生endl;void arrayofStu:save() ofstream f(Stu2.txt); f学号 姓名 用水量 用电量 用煤气量 水费 电费 煤气费 总额 是否交费endl;for(int i=0;icount1;i+) fstudentiendl; f.close(); cout恭喜你,文件已成功保存endl;void arrayofStu:delet() /删除学生菜单
21、 int choice; couttttt*endl; couttttt 删除信息endl; couttttt 1,按学号删除endl; couttttt 2,按姓名删除endl; couttttt 3,返回主菜单endl; couttttt 0,返回上一层endl; couttttt*endl; while(1) cout请输入你的选择choice; switch(choice) case 1: numd(); break; /学号删除 case 2: nad(); break; /姓名删除 case 3: xuesheng(); break; /返回学生管理主菜单 case 0: amend(); break; /返回上一层 if(choice=0) break; void arrayofStu:jiaofei() /学生缴费菜单 int choice; couttttt*endl; couttttt*-学生缴费-*endl; couttttt*1,输入学号交费*endl; couttttt*2,输入姓名交费*endl; coutttt
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1