资源描述
用C实现水电煤气管理系统
44
资料内容仅供参考,如有不当或者侵权,请联系本人改正或者删除。
课程设计报告
课程设计题目: 水电煤气管理系统
学生姓名:
专 业: 网络工程
班 级: 10211303
指导教师: 姜林
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
void add(Student &s)
将S添加到文件中
Public
void display()
依次显示所有的学生的信息
Public
Student
*gerStudent(string id)
得到学号为id的学生的对象指针
Public
~StuFile()
析构函数, 释放资源, 并把数组中的信息存进文件
Public
void wjf()
未缴费的学生的名单
Private
vector<Student>
*stuList;
学生信息的向量数组, 用于保存所有学生的信息
2 TeacherFile 类, 主要用于对教工信息的操作
Public
TeacherFile()
构造函数
Public
void add(Teacher&s)
将s添加到文件中
Public
void display()
依次显示所有的教师信息
Public
Teacher *getTeacher
(string id)
得到编号为id的教师的对象指针
Public
~TeacherFile()
析构函数, 释放资源, 并把数组中的信息存进文件
Public
void wjf()
未交费的教工人员名单
Private
Vector<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
函数
属性
注释
Public
Student():User(””,””,0,0,0)
构造函数
Public
Student(string i,string n,
Float w=0,float p=0,float
g=0):User(i,n,w,p,g)
构造函数 i:学号n:姓名
Public
void display()
依次显示所有的学生的信息
Public
float display()
返回学生应缴的费用
Private
float freeWater;
学生免费使用的水量
Private
float freePower;
学生免费使用的电量
Private
float freeGas;
学生免费使用的煤气量
Private
float money;
缴费
(5)Teacher.cpp
Class Teacher:virtual public User
函数
属性
注释
Public
Teacher(string i,string n,
float w=0,float p=0,float
g=0):User(I,n,w,p,g)
构造函数
Public
void display()
依次显示所有的教工信息
Public
float getMoney()
返回教工应缴的费用
(6)User.cpp
函数
属性
注释
Public
User(string i,string n,float
w=0,float p=0,float g=0)
构造函数
Public
string getId()
获取编号
Public
string getName()
获取姓名
Public
void setId(string i)
设置编号
Public
void setName(string n)
设置姓名
Public
void setWater(float w)
设置水量
Public
void setPower(float p)
设置电量
Public
void setGas(float g)
设置煤气量
Public
float getWater()
使用水量
Public
virtual void display()=0;
依次显示所有信息
Public
void setMoney(float m)
缴费
Public
virtual float getMoney()=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(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";
#endif
Main.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);
}
else
return ;
}
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();
}
else
return ;
}
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);
}
else
return ;
}
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 c[20];
do
{
cout<<" 请选择相应的功能(0-4):"<<endl;
cout<<endl;
cin>>a;
gets(c);
if(a<0||a>4)
{
cout<<endl<<endl;
cout<<"请确认您输入的数字在0~4之间!"<<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_class
class StuFile
{
vector<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 ;
}
else
{
while(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_class
class TeacherFile
{
vector<Teacher> *teaList;
public:
TeacherFile()
{
teaList=new vector<Teacher>;
ifstream*is=new ifstream(teaFileName,ios_base::in);
if(is==0)
{
cout<<"打开文件失败!"<<endl;
return ;
}
else
{
while(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;
}
}
};
#endif
Student.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 User
{
private :
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;
}
};
#endif
Teacher.cpp
#include"User.cpp"
#include"Constant.h"
#ifndef Teacher_class
#define Teacher_class
class Teacher:virtual public User
{
public :
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
展开阅读全文