C语言程序设计课程设计水电煤气管理系统.docx
《C语言程序设计课程设计水电煤气管理系统.docx》由会员分享,可在线阅读,更多相关《C语言程序设计课程设计水电煤气管理系统.docx(37页珍藏版)》请在冰点文库上搜索。
C语言程序设计课程设计水电煤气管理系统
JINGCHUUNIVERSITYOFTECHNOLOGY
课程设计成果
学院:
_计算机工程学院_____
班级:
_计算机科学与技术
(一)
学生姓名:
学号:
设计地点(单位)___A5-101_______________________
设计题目:
___电煤气管理系统___________________________
完成日期:
2012年1月5日
指导教师评语:
_______________________________________
____________________________________________________________________________________________________________________________________________________________________________________________________________________
成绩(五级记分制):
________________
教师签名:
_________________________
一.课程设计目的和要求……………………………………2
二.课题分析……………………………………2
三.设计……………………………………2-3
1.设计思想
2.设计分析
四.主程序……………………………………3-19
五.结果显示及分析…………………………………19-21
六.感想、收获及体会……………………………………21
七.参考文献……………………………………22
附录……………………………………22
一.课程设计目的和要求
问题描述:
设计一个水电管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。
在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的随便以后必须自费使用,且自费部分水电费的价格标准要高于教工的收费标准(主要是节约资源)。
基本要求:
实现对用户信息的录入
实现水电煤气数据的录入
计算并查询用户应缴费用
查询未缴纳费用名单
测试数据:
可选用小区物业管理部门的数据,也可采用手工输入不少于10个用户信息的数据。
实现提示:
用户基本信息类,教工用户信息类,学生用户信息类,收费标准类,该类存储水电煤气标准单位的收费标准,如:
煤气,1.0元/立方米;
不同类型人员水、电、煤气信息类,这些类可以包括水表,电表,煤气表ID,抄表时间,上次抄表时间,本次抄表时间,上次抄表度数,本次抄表度数,本次使用度数,费用,是否缴费标记等信息。
在实现的时候考虑继承和多态技术的合理使用。
二.课题分析:
本程序是一个水电气管理信息系统,能够对高校的水电气费用进行管理,包括了成员基本信息,如学号、编号、姓名、成员水电气的用量;程序的用途包括缴纳水电气费、查询一个同学水电气费用量"、查看所有同学的缴费情况、增加学生信息、删除学生信息、退出系统等。
在设计时也考虑到学生和教师在用水电气时的不同,学生可以免费使用一定额度的水电气,超过这个额度的以后必须付费,且付费部分水电气费的价格要高于教工的收费标准,该措施的实行是为了鼓励同学们节约用水,以免造成不必要的资源浪费。
该软件主要是为了学校的管理人员提供便捷,以更快的完成水电气费用的收缴。
三.设计
1.设计思想:
设计面向对象的程序设计语言,首先考虑的肯定是要设计类。
程序设计了四个类,两个是学生类,两个是教师类。
在主函数中用动态数组,机动的分配类存,以至于不造成类存的浪费。
在本程序中涉及用户的选择,用户要根据自己的实际需要选择不同的功能,由于选择的多样性,程序中必须要有switch结构控制各个功能的选择,如果需要多次进行操作,则要在switch结构的外部,通过循环来实现。
首先该程序的第一目的是要读附录里的内容,然后再根据用户的选项来实现各种不同的功能,当正确按照要求就可进行更进一步进行操作,直到你达到自己的目的为止。
本程序通过调用不同的函数来实现不同的功能,通过用户自己的选择可以自己进行操作,在主函数中申明的函数分别起到不同的作用,在本程序中所有的子函数都是在主函数外实现的。
在子函数的函数体中为了使程序的功能和细节更加的完善,在子函数中设置菜单,这样不仅使得程序更加完善还有利于用户的操作。
使得程序更加简洁明了。
2.设计分析:
在这个电煤气管理系统中,共用到了四个类,一个是stut类,它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有赋值运算符重载、插入运算符重载,最重要的就是那些对象都有共同的属性,通过这个类把学号、姓名、水用量、电用量、气用量集中到一起,所以才能设计一个类;另一个类就是arrayofStu学生类计算类,这个类的作用主要就是一些功能的实现,有主菜单、交费菜单、交费功能和、查询菜单、查询功能、增加功能、删除菜单、删除功能、查看功能。
同样定义一个teacher它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有赋值运算符重载、插入运算符重载,最重要的就是那些对象都有共同的属性,通过这个类把姓名、水用量、电用量、气用量集中到一起,所以才能设计一个类;其另一个类就是arrayofTeacher老师类数组计算,这个类的作用主要就是一些功能的实现,有主菜单、交费菜单、交费功能和、查询菜单、查询功能、增加功能、删除菜单、删除功能、查看功能
四.主程序
#include"iostream"
#include"string"
#include"fstream"
#include"iomanip"
usingnamespacestd;
intcount1=0,count11=0;//学生总数和交钱的人数
intcount2=0,count22=0;
classStu
{
public:
Stu(doublexwater=0,doublexpower=0,doublexgas=0,stringxnum="a",stringxna="a");//学生类构造函数
voidoperator=(StuS);//赋值运算符重载
friendostream&operator<<(ostream&a,Stu&S)//插入运算符重载
{a<a<a<a<a<a<a<a<a<if(S.flag)
a<<"已交";
elsea<<"未交";
cout<returna;
}
doubleSGetW();//计算水费
doubleSGetC();//计算电费
doubleSGetG();//计算煤气费
doubleStotal();//计算总费用
doublewater,power,gas,water_rate,circuit,gas_rate,total;
intflag;
stringnumber,name;
};
Stu:
:
Stu(doublexwater,doublexpower,doublexgas,stringxnum,stringxna)//学生类构造函数
{
water=xwater;
power=xpower;
gas=xgas;
number=xnum;
name=xna;
flag=0;
}
voidStu:
:
operator=(StuS)//赋值运算符重载
{
name=S.name;
number=S.number;
water=S.water;
power=S.power;
gas=S.gas;
}
doubleStu:
:
SGetW()//计算水费
{
if(water<10)
water_rate=0;
else
water_rate=4.2*(water-10);
returnwater_rate;
}
doubleStu:
:
SGetC()//计算电费
{
if(power<10)
circuit=0;
else
circuit=0.6*(power-10);
returncircuit;
}
doubleStu:
:
SGetG()//计算煤气费
{
if(gas<10)
gas_rate=0;
else
gas_rate=2.3*(gas-10);
returngas_rate;
}
doubleStu:
:
Stotal()//计算总的钱
{
total=SGetG()+SGetW()+SGetC();
returntotal;
}
classarrayofStu//学生类计算
{
public:
arrayofStu(intsz=1){size=sz;student=newStu[size];}//构造函数
~arrayofStu(){delete[]student;}
voidxuesheng();//学生用户主菜单
voidjiaofei();//学生交费菜单
voidregist();//登记学生
voidamend();//修改用户菜单
voidadd();//增加用户
voiddelet();//删除用户菜单
voidnad();//姓名删除
voidnumd();//学号删除
voidcheck();//查询菜单
voidnacheck();//姓名查询
voidnumcheck();//学号查询
voidnaj();//输入姓名交费
voidnumj();//输入学号交费
voiddisplay();//查看交费情况
voidsave();
private:
intsize;
Stu*student;
};
voidarrayofStu:
:
regist()//学生用户注册
{
inti=0;
ifstreamf("Stu.txt");
while(f.good())//!
f.eof()
{
f>>student[i].number;
f>>student[i].name;
f>>student[i].water;
f>>student[i].power;
f>>student[i].gas;
i++;
}
f.close();
count1=i;
cout<<"\t\t注册成功"<}
voidarrayofStu:
:
naj()//输入姓名交费
{charch;
doublemoney,money2;
cout<<"\t\t\t欢迎使用姓名交费功能"<stringna;
cout<<"请输入学生姓名:
"<cin>>na;
intfl=0;
for(inti=0;iif(na==student[i].name)
{fl=1;
if(student[i].flag)
cout<<"该学生已缴纳过费用"<else
{cout<<"你应该交"<cout<<"确定是否真的现在交费(Y/N)"<cin>>ch;
if(ch=='Y'||ch=='y')
{student[i].flag=1;
cout<<"你实际交的钱是:
"<cin>>money;
if(money>student[i].Stotal())
cout<<"找零"<if(student[i].Stotal()>money)
{cout<<"交的钱不够,还应交"<cout<<"补交:
";
cin>>money2;}
cout<<"交费成功"<count11++;
xuesheng();
}
elsexuesheng();
}
}
if(!
fl)
cout<<"没有这个学生"<}
voidarrayofStu:
:
numj()//输入学号交费
{cout<<"\t\t\t欢迎使用学号交费功能"<stringnum;doublemoney,money2;charch;
cout<<"请输入学生学号:
"<cin>>num;
intfl=0;
for(inti=0;iif(num==student[i].number)
{
if(student[i].flag)
{fl=1;cout<<"该学生已缴纳过费用"<else
{cout<<"你应该交"<cout<<"确定是否真的现在交费(Y/N)"<cin>>ch;
if(ch=='Y'||ch=='y')
{student[i].flag=1;
cout<<"你实际交的钱是:
"<cin>>money;
if(money>student[i].Stotal())
cout<<"找零"<if(student[i].Stotal()>money)
{cout<<"交的钱不够,还应交"<cout<<"补交:
";cin>>money2;}
cout<<"交费成功"<count11++;
xuesheng();
}
elsexuesheng();
}
}
if(!
fl)
cout<<"没有这个学生"<}
voidarrayofStu:
:
add()//增加学生
{cout<<"\t\t\t欢迎使用增加学生功能"<cout<<"请输入学生的姓名:
"<cin>>student[count1].name;
cout<<"请输入学生的学号:
"<cin>>student[count1].number;
cout<<"请输入学生的用水量:
"<cin>>student[count1].water;
cout<<"请输入学生的用电量:
"<cin>>student[count1].power;
cout<<"请输入学生的用煤气量:
"<cin>>student[count1].gas;
count1++;
cout<<"\t\t\t学生信息已被成功的增加!
"<}
voidarrayofStu:
:
nad()//按姓名删除
{cout<<"\t\t\t欢迎使用姓名删除学生功能"</*cout<cout<intfl=0;
inti,j;
stringna;
cout<<"请输入要删除学生的姓名"<cin>>na;
for(i=0;iif(na==student[i].name)
{fl=1;break;}
if(fl)
{for(j=i;jstudent[j]=student[j+1];
count1--;
cout<<"你已成功删除学生信息"<}
else
cout<<"没有这个学生"<}
voidarrayofStu:
:
display()
{inti;
if(count11==0)
cout<<"暂时还无学生交费"<else
{cout<<"已交费人员信息"<cout<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"是否交费"<for(i=0;iif(student[i].flag)
cout<}
if(count11==count1)cout<<"所有学生均以交费"<else
{cout<<"未交费人员信息"<cout<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"是否交费"<for(i=0;iif(!
student[i].flag)
cout<}
}
voidarrayofStu:
:
numd()//按学号删除
{cout<<"\t\t\t欢迎使用学号删除学生功能"<intfl=0;
inti,j;
stringnum;
cout<<"请输入要删除学生的学号"<cin>>num;
for(i=0;iif(num==student[i].number)
{fl=1;break;}
if(fl)
{for(j=i;jstudent[j]=student[j+1];
count1--;
cout<<"你已成功删除学生信息"<}
else
cout<<"没有这个学生"<}
voidarrayofStu:
:
nacheck()//姓名查询
{cout<<"\t\t\t欢迎使用姓名查询学生功能"<inti,fl=0;
stringna;
cout<<"请输入要查找的姓名"<cin>>na;
for(i=0;iif(na==student[i].name)
{fl=1;break;}
if(fl)
{
cout<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"是否交费"<cout<else
cout<<"没有这个学生"<}
voidarrayofStu:
:
numcheck()//学号查询
{cout<<"\t\t\t欢迎使用学号查询学生功能"<inti,fl=0;
stringnum;
cout<<"请输入要查找的学号"<cin>>num;
for(i=0;iif(num==student[i].number)
{fl=1;break;}
if(fl)
{
cout<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"是否交费"<cout<}
else
cout<<"没有这个学生"<}
voidarrayofStu:
:
save()
{ofstreamf("Stu2.txt");
f<<"学号"<<"姓名"<<"用水量"<<"用电量"<<"用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"是否交费"<for(inti=0;if<f.close();
cout<<"恭喜你,文件已成功保存"<}
voidarrayofStu:
:
delet()//删除学生菜单
{
intchoice;
cout<<"\t\t\t\t**************"<cout<<"\t\t\t\t删除信息"<cout<<"\t\t\t\t1,按学号删除"<cout<<"\t\t\t\t2,按姓名删除"<cout<<"\t\t\t\t3,返回主菜单"<cout<<"\t\t\t\t0,返回上一层"<cout<<"\t\t\t\t**************"<while
(1)
{
cout<<"请输入你的选择"<cin>>choice;
switch(choice)
{
case1:
numd();break;//学号删除
case2:
nad();break;//姓名删除
case3:
xuesheng();break;//返回学生管理主菜单
case0:
amend();break;//返回上一层
}
if(choice==0)
break;
}
}
voidarrayofStu:
:
jiaofei()//学生缴费菜单
{
intchoice;
cout<<"\t\t\t\t****************"<cout<<"\t\t\t\t*---学生缴费---*"<cout<<"\t\t\t\t*1,输入学号交费*"<cout<<"\t\t\t\t*2,输入姓名交费*"<cout<<"\t\t\t