高校水电费管理

青岛理工大学 C++面向对象课程设计报告

院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级

题目: 高校水电费管理系统设计_______

起迄日期: _2015.6.29~2015.7.10

设计地点: 计算机学院机房 指 导 教 师:

完成日期: 2015 年7月 10 日

任务书

题目9 “高校水电费管理系统设计” 1、问题描述

住宿学生信息包括:学号、姓名、性别、年龄、班级、用电量、用水量等信息。 教工信息包括职工号、姓名、性别、年龄、工作部门、用电量、用水量等信息。 能计算出学生和教工每月所要交的电费和水费。

定义一个人员类,实现学生和教工共同的信息和行为。

2、功能要求

(1)添加功能:程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生和教工的记录,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除功能:主要实现对已添加的学生或教工记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。 (9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

3、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;

(8)完成系统总结报告。

课程设计报告内容

一、需求分析

1.选做此课题或项的目的

1、目的:

(1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法;

(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求:

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;

(2)要求在设计的过程中,建立清晰的类层次;要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 (3)在系统的设计中,要有清晰的界面设计,同时采用文件进行读写操作。

2.程序所实现的功能

(1)添加功能:程序能够添加职工的记录和工作量,可提供选择界面供用户选择所要添加的类别,要求职工的编号要唯一,如果添加了重复职工号的职工记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据职工号、姓名等信息对已添加的职工记录进行查询。还可以按职工号对工作量进行查询。如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有职工记录和工作量统计信息,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除功能:主要实现对已添加的人员记录进行删除和工作量进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

(6)统计功能:对职工可按工作量进行统计,并排名次。

(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

二、内容设计

1.根据所选题目,给出模块图

图2.1 高校水电费管理系统模块图

2.画出主程序及其主要模块的流程图

图2.2 main()函数

图2.3 添加函数

图2.4 菜单函数

图2.5 查找函数

图2.6 修改函数

图2.7 显示函数

图2.8 删除函数

3.编写程序关键代码

void Add()//添加信息 {

Student s;

cout

for(int i=0;i

cout

stu[amount]=s;

cout

ofstream out_file("学生.txt",ios::app); //将添加记录更新到文件 if(!out_file) {

cout

out_file

void Search() //查询信息 {

int chioce; cin>>chioce; switch(chioce) {

case 1: {

string name; cin>>name; int k=0;

for(int i=0;i

if(stu[i].name==name) {

cout

k=1;

}

}

if(k==0)

cout

}break;

case 2:

{

double waters;

cin>>waters;

int k=0;

for(int i=0;i

if(stu[i].water==waters)

{

cout

k=1;

}

if(k==0)

cout

}break;

case 3:

{

double powers;

cin>>powers;

int k=0;

for(int i=0;i

if(stu[i].power==powers)

{

cout

k=1;

}

if(k==0)

cout

}break;

default:cout

break;

}

}

void Show() //显示信息

{

cout

}

void Student::Compile() //修改学生信息

{

string nums;

cin>>nums;

int k=0;

for(int i=0;i

if(stu[i].num==nums)

{

Student s;

s.Inputs();

for(int t=0;t

if(s.num==stu[t].num)

{

if(t==i) continue;

cout

return;

}

stu[i]=s;

cout

water

cout

k=1;

}

if(k==0)

cout

}

Void Delete() //删除信息

{

int chioce;

cin>>chioce;

switch(chioce)

{

case 1:

{

string nums;

cin>>nums;

int k=0;

for(int i=0;i

if(stu[i].num==nums)

{

int choice=2;

cin>>choice;

switch(choice)

{

case 1:

for(int j=i;j

stu[j]=stu[j+1];

amount--;

k=1;

break;

case 0:k=2;break;

default:cout

}

}

if(k==1)

cout

else if(k==2)

cout

else

cout

}break;

case 2:

{

cout

string names;

cin>>names;

int k=0;

for(int i=0;i

if(stu[i].name==names)

{

int choice=2;

cin>>choice;

switch(choice)

{

case 0:

k=2;break;

case 1:

for(int j=i;j

stu[j]=stu[j+1];

amount--;

k=1;

break;

default:cout

}

if(k==1)

cout

else if(k==2)

cout

}

if(k==1)

cout

}break;

default:

cout

}

}

void Total() //统计信息

{

int t=0;

for(int i=0;i

if(stu[i].flag=="否")

{

cout

water

t=1;

}

if(t==0)

cout

}

void Read() //读取信息

{

ifstream in_file("学生.txt",ios::in);

if(!in_file)

{

cout

return;

}

int i=0;

while(in_file>>stu[i].num>>stu[i].name>>stu[i].sex>>stu[i].old>>stu[i].classrome

>>stu[i].water>>stu[i].watermoney>>stu[i].power>>stu[i].powermoney>>stu[i].flag) {

cout

i++;

}

in_file.close();

}

三、调试分析

1.实际完成的情况说明(完成的功能,支持的数据类型等) 完成的功能:

(1)添加功能:程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生和教工的记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:主要实现对已添加的学生或教工记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

支持类型:编号、年龄支持int型,姓名、性别、工作部门、班级、交费情况支持string型,用电量、用水量、电费、水费支持double型。

2.程序的性能分析 程序主要使在类中操作,将所有记录存入对象数组和文件,采用顺序存储结构对数组进行操作,从而实现需要的操作。

3.上机过程中出现的问题及其解决方案

1.对类的数据成员进行定义时,起初定义为私有数据,结果继承类不能访问,这是类的访问权限出了问题,于是将其改成了公有数据成员,继承类能够对其进行访问了。

2.继承类对基类的访问出现了错误。由于Student类和Teacher类都是从Person类继承的,会出现二义性,因此将其改成虚基类,这样就不会出现二义性飞的问题。

3.由于要输入多组数据,因此要定义对象数组,而且要定义为全局变量,否则不会得到有效的修改。

4.当系统关闭以后,再打开系统进行操作,若是添加文件中已经存在的编号,还是会添加到文件中去,这是因为文件的更新和当前系统的更新不一直,因此在最开始打开系统是就应该将文件中的记录读取到当前系统中。

4.程序中可以改进的地方说明

1.程序应该可以实现输入信息的正确性,例如输入性别的时候,如果不是男或女,可以输出提示信息等。

2.对于学生所在班级、性别,老师工作部门、性别等操作可以采用选择的模式,将信息录入文件中,这样可以使输入更方便。

3.对于每一次信息的操作应该输出相应的原有信息和现有信息,以防信息出错。

青岛理工大学 C++面向对象课程设计报告

院(系): 计算机工程学院 专业: 软件工程 学生姓名: 班级

题目: 高校水电费管理系统设计_______

起迄日期: _2015.6.29~2015.7.10

设计地点: 计算机学院机房 指 导 教 师:

完成日期: 2015 年7月 10 日

任务书

题目9 “高校水电费管理系统设计” 1、问题描述

住宿学生信息包括:学号、姓名、性别、年龄、班级、用电量、用水量等信息。 教工信息包括职工号、姓名、性别、年龄、工作部门、用电量、用水量等信息。 能计算出学生和教工每月所要交的电费和水费。

定义一个人员类,实现学生和教工共同的信息和行为。

2、功能要求

(1)添加功能:程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生和教工的记录,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除功能:主要实现对已添加的学生或教工记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。 (9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

3、问题的解决方案

根据系统功能要求,可以将问题解决分为以下步骤:

(1)应用系统分析,建立该系统的功能模块框图以及界面的组织和设计; (2)分析系统中的各个实体及它们之间的关系; (3)根据问题描述,设计系统的类层次; (4)完成类层次中各个类的描述; (5)完成类中各个成员函数的定义; (6)完成系统的应用模块; (7)功能调试;

(8)完成系统总结报告。

课程设计报告内容

一、需求分析

1.选做此课题或项的目的

1、目的:

(1)要求学生达到熟练掌握C++语言的基本知识和技能; (2)基本掌握面向对象程序设计的基本思路和方法;

(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。 2、基本要求:

(1)要求利用面向对象的方法以及C++的编程思想来完成系统的设计;

(2)要求在设计的过程中,建立清晰的类层次;要分析和定义各个类,每个类中要有各自的属性和方法;要求运用面向对象的机制(继承、派生及多态性)来实现系统功能。 (3)在系统的设计中,要有清晰的界面设计,同时采用文件进行读写操作。

2.程序所实现的功能

(1)添加功能:程序能够添加职工的记录和工作量,可提供选择界面供用户选择所要添加的类别,要求职工的编号要唯一,如果添加了重复职工号的职工记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据职工号、姓名等信息对已添加的职工记录进行查询。还可以按职工号对工作量进行查询。如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有职工记录和工作量统计信息,每条记录占据一行。 (4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。 (5)删除功能:主要实现对已添加的人员记录进行删除和工作量进行删除。如果当前系统中没有相应的人员记录,则提示“记录为空!”并返回操作;否则,输入要删除的人员的编号,根据所输入的信息删除该人员记录,如果没有找到该人员信息,则提示相应的记录不存在。

(6)统计功能:对职工可按工作量进行统计,并排名次。

(7)保存功能:可将当前系统中各类人员记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的人员信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

二、内容设计

1.根据所选题目,给出模块图

图2.1 高校水电费管理系统模块图

2.画出主程序及其主要模块的流程图

图2.2 main()函数

图2.3 添加函数

图2.4 菜单函数

图2.5 查找函数

图2.6 修改函数

图2.7 显示函数

图2.8 删除函数

3.编写程序关键代码

void Add()//添加信息 {

Student s;

cout

for(int i=0;i

cout

stu[amount]=s;

cout

ofstream out_file("学生.txt",ios::app); //将添加记录更新到文件 if(!out_file) {

cout

out_file

void Search() //查询信息 {

int chioce; cin>>chioce; switch(chioce) {

case 1: {

string name; cin>>name; int k=0;

for(int i=0;i

if(stu[i].name==name) {

cout

k=1;

}

}

if(k==0)

cout

}break;

case 2:

{

double waters;

cin>>waters;

int k=0;

for(int i=0;i

if(stu[i].water==waters)

{

cout

k=1;

}

if(k==0)

cout

}break;

case 3:

{

double powers;

cin>>powers;

int k=0;

for(int i=0;i

if(stu[i].power==powers)

{

cout

k=1;

}

if(k==0)

cout

}break;

default:cout

break;

}

}

void Show() //显示信息

{

cout

}

void Student::Compile() //修改学生信息

{

string nums;

cin>>nums;

int k=0;

for(int i=0;i

if(stu[i].num==nums)

{

Student s;

s.Inputs();

for(int t=0;t

if(s.num==stu[t].num)

{

if(t==i) continue;

cout

return;

}

stu[i]=s;

cout

water

cout

k=1;

}

if(k==0)

cout

}

Void Delete() //删除信息

{

int chioce;

cin>>chioce;

switch(chioce)

{

case 1:

{

string nums;

cin>>nums;

int k=0;

for(int i=0;i

if(stu[i].num==nums)

{

int choice=2;

cin>>choice;

switch(choice)

{

case 1:

for(int j=i;j

stu[j]=stu[j+1];

amount--;

k=1;

break;

case 0:k=2;break;

default:cout

}

}

if(k==1)

cout

else if(k==2)

cout

else

cout

}break;

case 2:

{

cout

string names;

cin>>names;

int k=0;

for(int i=0;i

if(stu[i].name==names)

{

int choice=2;

cin>>choice;

switch(choice)

{

case 0:

k=2;break;

case 1:

for(int j=i;j

stu[j]=stu[j+1];

amount--;

k=1;

break;

default:cout

}

if(k==1)

cout

else if(k==2)

cout

}

if(k==1)

cout

}break;

default:

cout

}

}

void Total() //统计信息

{

int t=0;

for(int i=0;i

if(stu[i].flag=="否")

{

cout

water

t=1;

}

if(t==0)

cout

}

void Read() //读取信息

{

ifstream in_file("学生.txt",ios::in);

if(!in_file)

{

cout

return;

}

int i=0;

while(in_file>>stu[i].num>>stu[i].name>>stu[i].sex>>stu[i].old>>stu[i].classrome

>>stu[i].water>>stu[i].watermoney>>stu[i].power>>stu[i].powermoney>>stu[i].flag) {

cout

i++;

}

in_file.close();

}

三、调试分析

1.实际完成的情况说明(完成的功能,支持的数据类型等) 完成的功能:

(1)添加功能:程序能够添加不同学生和教工的记录,提供选择界面供用户选择所要添加的类别,要求编号号要唯一,如果添加了重复编号的记录时,则提示数据添加重复并取消添加。

(2)查询功能:可根据姓名、用水量、用电量信息对已添加的学生或教工记录进行查询,如果未找到,给出相应的提示信息,如果找到,则显示相应的记录信息。

(3)显示功能:可显示当前系统中所有学生和教工的记录,每条记录占据一行。

(4)编辑功能:可根据查询结果对相应的记录进行修改,修改时注意编号的唯一性。

(5)删除功能:主要实现对已添加的学生或教工记录进行删除。如果当前系统中没有相应的记录,则提示“记录为空!”并返回操作。

(6)统计功能:能根据多种参数进行统计。能统计学生和教工的用水用电量、所要交纳的电费和水费、未交纳水电费的人员信息等。

(7)保存功能:可将当前系统中各类记录存入文件中,存入方式任意。

(8)读取功能:可将保存在文件中的信息读入到当前系统中,供用户进行使用。

(9)计算电费和水费。学生每月都有一定额度的水电是免费使用的,超过的部分需要交费。

支持类型:编号、年龄支持int型,姓名、性别、工作部门、班级、交费情况支持string型,用电量、用水量、电费、水费支持double型。

2.程序的性能分析 程序主要使在类中操作,将所有记录存入对象数组和文件,采用顺序存储结构对数组进行操作,从而实现需要的操作。

3.上机过程中出现的问题及其解决方案

1.对类的数据成员进行定义时,起初定义为私有数据,结果继承类不能访问,这是类的访问权限出了问题,于是将其改成了公有数据成员,继承类能够对其进行访问了。

2.继承类对基类的访问出现了错误。由于Student类和Teacher类都是从Person类继承的,会出现二义性,因此将其改成虚基类,这样就不会出现二义性飞的问题。

3.由于要输入多组数据,因此要定义对象数组,而且要定义为全局变量,否则不会得到有效的修改。

4.当系统关闭以后,再打开系统进行操作,若是添加文件中已经存在的编号,还是会添加到文件中去,这是因为文件的更新和当前系统的更新不一直,因此在最开始打开系统是就应该将文件中的记录读取到当前系统中。

4.程序中可以改进的地方说明

1.程序应该可以实现输入信息的正确性,例如输入性别的时候,如果不是男或女,可以输出提示信息等。

2.对于学生所在班级、性别,老师工作部门、性别等操作可以采用选择的模式,将信息录入文件中,这样可以使输入更方便。

3.对于每一次信息的操作应该输出相应的原有信息和现有信息,以防信息出错。


相关内容

  • 高校节能节水情况工作报告
  • 理念为先导 制度为保障 科技为依托 加快建设资源节约型、环境友好型社会,在全社会形成资源节约的增长方式和健康文明的消费模式,是贯彻落实科学发展观的重要举措。教育资源是社会资源的重要组成部分,节约型社会呼唤节约型校园。建设节约型校园, 是高校应有的社会责任,也是高校科学发展的必然选择。 **大学在建设 ...

  • 北京高校学生食堂成本核算指导标准
  • 附件: 北京高校学生食堂成本核算指导标准 一.高校学生食堂的基本结构 高校学生食堂以学生为服务主体,具有公益性,享受国家及地方政府的免税政策及水电气价格优惠,享受免基本建设.大型设备配置成本及房屋零租赁.高校学生食堂必须形成合理伙食结构,基本伙(大众主副食)所占比例不低于55%,风味占比例不低于30 ...

  • 高等学校学生食堂伙食结构及成本核算指导意见
  • 关于印发<高等学校学生食堂伙食结构及成本核算指导意见>的通知 中高学后伙[2012]2号 各省.市.自治区高校后勤研究会(后勤协会),各相关单位: 为切实加强和规范高校学生食堂的伙食结构及成本核算工作,不断提高学生食堂管理与成本核算水平.根据教育部等五部门<关于进一步加强高等学校学 ...

  • 关于高校家属住宅物业管理的几点体会
  • 这些年高校教职工住房改革工作基本完成,原有的福利住房分配制度已逐步被货币化取代,大多数公有住房已出售给原住户.同时,各高校为保证人才引进的需要仍保留一部分周转用房,以供在相当一段时间内不能办理产权过户的教师使用,因此,出现了在同一家属社区存在住宅产权多元化问题.面对这种情况,采用原有房产行政管理的办 ...

  • 学院商业用房管理办法(讨论稿)
  • 某某高校商业用房管理办法(讨论稿) 为加强校园商业用房(以下简称商用房)的管理,营造校园周边和谐.文明.整洁的商业环境,根据西安市有关商业用房管理规定和学校有关规章制度,特制定本办法. 第一章 总则 第一条 某某学校商用房为学校所属固定资产.根据学校关于加强国有资产管理,提高资产使用效益的有关精神, ...

  • 企业后勤工作总结
  • 一、深入贯彻落实科学发展观,解放思想,全面推进党建工作 党的xx大提出要以邓小平理论和“xxxx”重要思想为指导,深入贯彻落实科学发展观,解放思想。为深入领会党的xx大会议精神,贯彻落实党提出的科学发展观,进一步理解解放思想的内涵,真正践行党的xx大会议精神,全面推进党建工作。后勤服务公司党支部多次 ...

  • 后勤保障工作总结
  • 一、以学习实践科学发展观活动为契机,坚持以思想教育为先导,牢固树立“服务到位、保障有力”的后勤服务理念。 今年3月,按照学校要求开展学习实践科学发展观活动,到8月底全部结束。我们牢牢把握“科学发展”这个主题,紧紧围绕党员干部受教育、科学发展上水平、人民群众得实惠的总体要求,结合后勤实际提出“服务到位 ...

  • 试论科研经费的管理
  • 试论科研经费的管理 近几年,随着我国经济的蓬勃发展,高校科研与政府.企业的合作联系也逐渐紧密,所承担的科研项目越来越多,科研经费也随之大幅度的增长,近来,科研经费数量的多少已成为衡量高校实力的一个重要条件.然而,如何加强科研经费的管理是目前许多高校面临的严峻问题,科研经费管理有效性差普遍存在,从政府 ...

  • 营销策划方案实施
  • 营销方案实施 人员协作篇 人员构成主要有黄丽萍.刘传云.汪芳.吴巍巍.杨杰.邹鹰.根据自身的优势和投资金的份额,任免黄丽萍作为影碟店的总经理,负责影碟店的运营管理和重大事务决策,刘传云.吴巍巍主要负责影碟产品销售和开拓,汪芳负责行政日常事务的管理,杨杰负责财务工作,邹鹰负责影碟产品的采购. 调研实施 ...