资源描述
通信与信息工程学院
面向对象技术课程设计
一、课程设计目的
(1)要求学生达到熟练掌握C++语言的基本知识和技能;
(2)基本掌握面向对象程序设计的基本思路和方法;
(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
二、程序设计要求
1、基本功能:设计一个高校水电管理信息系统,能够对高校的水电费用进行管理,包括登记费用、查询费用和住户信息管理等。完成如下功能:⑴实现对用户信息的录入。⑵实现水电数据的录入。⑶计算并查询用户应缴费用。(4)显示当前系统中所有学生和教工的记录(5)可根据查询结果对相应的记录进行修改(6)计算电费和水费。
2、程序主菜单:教师水电费管理,学生水电费管理,退出系统三个选项
3、 设计流程图:画出本程序的总体设计流程图(手画)
4、 功能框图:画出本程序的功能框图(手画)
三、程序功能设计
1、功能设计:添加功能 查询功能 显示功能 编辑功能 删除功能 统计功能 保存功能 读取功能 计算水费和电费
2、组员分工:赵政 类的定义 马晶晶 史娟丽 杨洁 功能的实现 姜田茹 界面设计
设计思路:
1、在主函数中通过分支选择实现不同的功能。
2、在菜单函数中,通过设计界面与用户进行交互。
3、定义一个使用者类,在类的内部定义各种函数,实现显示、修改、删除、查询、统计用户信息等功能。
四、程序数据结构(手写)
五、程序函数设计(手写)
六、程序源代码(此部分可打印)
七 截图(手写)
八 心得(手写)
附录:程序源代码
#include<iostream>
#include<string>
const int TMAX=50;
using namespace std;
class Person
{
public:
int num;
string name;
string sex;
int age;
double water;
double power;
public:
Person(int n=0,string nm="",string s="",int a=0,double w=0.0,double p=0.0)
{
num=n;
name=nm;
sex=s;
age=a;
water=w;
power=p;
};
virtual void Input(){};
virtual void Output(){};
int GetNum(){return num;}
string GetName(){return name;}
double GetWater(){return water;}
double GetPower(){return power;}
};
class Teacher:virtual public Person
{
public:
string depart;
double watermoney;
double powermoney;
int choice1;
int choice2;
public:
Teacher(int n=0,string nm="",string s="男",int a=0,string d="任课教师",double w=0.0, double p=0.0, double wm=0.0, double pm=0.0)
:Person(n,nm,s,a,w,p),depart(d)
{
watermoney=wm;
powermoney=pm;
};
void Input()
{
cout<<"请输入编号:"<<endl;
cin>>num;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请选择性别:";
cout<<"(1.男 2.女)"<<endl;
cout<<"请输入你的选择"<<endl;
cin>>choice2;
switch(choice2)
{
case 1:sex="男";break;
case 2:sex="女";break;
default:cout<<"输入错误。"<<endl;
break;
}
cout<<"请输入年龄:"<<endl;
cin>>age;
cout<<"请选择工作部门:"<<endl;
cout<<"1.任课教师"<<"2.教务处"<<"3.财政处"<<"4.校团委"<<endl;
cout<<"请输入你的选择"<<endl;
cin>>choice1;
switch(choice1)
{
case 1:depart="任课教师";
break;
case 2:depart="教务处";
break;
case 3:depart="财政处";
break;
case 4:depart="校团委";
break;
default:cout<<"输入错误。"<<endl;
break;
}
cout<<"请输入本月的用水量"<<endl;
cin>>water;
cout<<"请输入本月的用电量"<<endl;
cin>>power;
watermoney=0.5*water;
powermoney=0.5*power;
}
void Output()
{
cout<<" "<<num
<<" "<<name
<<" "<<sex
<<" "<<age
<<" "<<depart
<<" "<<water
<<" "<<power
<<" "<<watermoney
<<" "<<powermoney
<<endl;
}
};
class Student:virtual public Person
{
public:
string bj;
double watermoney;
double powermoney;
int choice1;
int choice2;
public:
Student(int n=0,string nm="",string s="男",int a=0,string z="",double w=0.0, double p=0.0, double wm=0.0, double pm=0.0)
:Person(n,nm,s,a,w,p),bj(z)
{
watermoney=wm;
powermoney=pm;
};
void Input()
{
cout<<"请输入学号:"<<endl;
cin>>num;
cout<<"请输入姓名:"<<endl;
cin>>name;
cout<<"请选择性别:";
cout<<"(1.男 2.女)"<<endl;
cout<<"请输入你的选择"<<endl;
cin>>choice2;
switch(choice2)
{
case 1:sex="男";break;
case 2:sex="女";break;
default:cout<<"输入错误。"<<endl;break;
}
cout<<"请输入年龄:"<<endl;
cin>>age;
cout<<"请选择所在班级:"<<endl;
cout<<"1.通信1201班"<<"2.通信1202班"<<"3.通信1203班"<<"4.通信1204班"<<endl;
cout<<"请输入你的选择"<<endl;
cin>>choice1;
switch(choice1)
{
case 1:bj="通信1201班";break;
case 2:bj="通信1202班";break;
case 3:bj="通信1203班";break;
case 4:bj="通信1204班";break;
default:cout<<"输入错误。"<<endl;break;
}
cout<<"请输入本月的用水量"<<endl;
cin>>water;
cout<<"请输入本月的用电量"<<endl;
cin>>power;
watermoney=0.5*(water-10);
powermoney=0.5*(power-10);
}
void Output()
{
cout<<""<<num
<<""<<name
<<""<<sex
<<""<<age
<<""<<bj
<<""<<water
<<""<<power
<<""<<watermoney
<<""<<powermoney
<<endl;
}
};
class Stu_Manage
{
Student Stu[TMAX];
int top;//top
public:
Stu_Manage(){top=0;}
void Add();
void Show();
void Search();
void Edit();
void Delete();
void Total();
};
void Stu_Manage::Add()
{
if(top>=TMAX)
{
cout<<"用户已满"<<endl;
return;
}
Student s;
cout<<"输入新添加的人员的信息"<<endl;
s.Input();
for(int i=0;i<top;i++)
if (s.GetNum()==Stu[i].GetNum())
{
cout<<"该编号的人员已存在"<<endl;
return;
}
Stu[top]=s;
top=top+1;
cout<<"添加成功!"<<endl;
}
void Stu_Manage::Show()
{
if(top==0)
{
cout<<"无数据!"<<endl;
return;
}
cout<<""<<"学号"
<<""<<"姓名"
<<""<<"性别"
<<""<<"年龄"
<<""<<"班级"
<<""<<"用水量"
<<""<<"用电量"
<<""<<"水费"
<<""<<"电费"
<<endl;
for(int i=0;i<top;i++)
Stu[i].Output();
}
void Stu_Manage::Search()
{
if(top==0)
{
cout<<"当前系统中没有存储记录"<<endl;
return;
}
int choice;
cout<<"请选择查找方式:1.按姓名查询 2.按用水量查询 3.按用电量查询"<<endl;
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"请输入要查找的姓名"<<endl;
string name;
cin>>name;
cout<<""<<"学号"
<<""<<"姓名"
<<""<<"性别"
<<""<<"年龄"
<<""<<"班级"
<<""<<"用水量"
<<""<<"用电量"
<<""<<"水费"
<<""<<"电费"
<<endl;
for(int i=0;i<top;i++)
{
if(Stu[i].GetName()==name)
{
Stu[i].Output();
}
}
return;
cout<<"查无此人!"<<endl;
}break;
case 2:
{
cout<<"请输入要查找的水量:"<<endl;
double water;
cin>>water;
cout<<""<<"学号"
<<""<<"姓名"
<<""<<"性别"
<<""<<"年龄"
<<""<<"班级"
<<""<<"用水量"
<<""<<"用电量"
<<""<<"水费"
<<""<<"电费"
<<endl;
for(int i=0;i<top;i++)
{
if(Stu[i].GetWater()==water)
{
Stu[i].Output();
}
}
return;
cout<<"查无此人!"<<endl;
}break;
case 3:
{
cout<<"请输入要查找的电量:"<<endl;
double power;
cin>>power;
cout<<""<<"学号"
<<""<<"姓名"
<<""<<"性别"
<<""<<"年龄"
<<""<<"班级"
<<""<<"用水量"
<<""<<"用电量"
<<""<<"水费"
<<""<<"电费"
<<endl;
for(int i=0;i<top;i++)
{
if(Stu[i].GetPower()==power)
{
Stu[i].Output();
}
}
return;
cout<<"查无此人!"<<endl;
}break;
default :cout<<"无此选项!请重试!"<<endl;break;
}
}
void Stu_Manage::Edit()
{
if(top==0)
{
cout<<"当前系统中没有存储记录!"<<endl;
return;
}
int num;
cout<<"请输入要查找的学号:"<<endl;
cin>>num;
for(int i=0;i<top;i++)
{
if(Stu[i].GetNum()==num)
{
cout<<"请对这位学生的信息进行修改:"<<endl;
Stu[i].Input();
cout<<"修改成功"<<endl;return;
}
}
cout<<"查无此人"<<endl;
}
void Stu_Manage::Delete()
{
if(top==0)
{
cout<<"当前系统中没有存储记录!"<<endl;
return;
}
cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"请输入编号:";
int num;
cin>>num;
for(int i=0;i<top;i++)
{
if(num==Stu[i].num)
{
cout<<"是否确认删除? 1、是 2、否 "<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
for(int j=i;j<top-1;j++)
Stu[j]=Stu[j+1];
cout<<"删除成功!"<<endl;
top--;
};break;
case 2:
return;
default:cout<<"无此项,失败!"<<endl;
break;
}return;
}
}
cout<<"无此人!"<<endl;
};
break;
case 2:
{
cout<<"请输入姓名:";
string name;
cin>>name;
for(int i=0;i<top;i++)
{
if(name==Stu[i].name)
{
cout<<"是否确认删除? 1、是 2、否 "<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
for(int j=i;j<top-1;j++)
Stu[j]=Stu[j+1];
cout<<"删除成功!"<<endl;
top--;
};break;
case 2:
return;
default:cout<<"无此项,失败!"<<endl;break;
}return;
}
}
cout<<"无此人!"<<endl;
};break;
default:cout<<"没有此项,失败:"<<endl;break;
}
}
void Stu_Manage::Total()
{
cout<<"1 学生所用水电量的总量 2 学生总的水电费 "<<endl;
int choice;
cout<<"请输入你的选择"<<endl;
cin>>choice;
switch(choice)
{
case 1:
{
double zwater=0.0, zpower=0.0;
for(int i=0; i<top; i++)
{
zwater+=Stu[i].water;
zpower+=Stu[i].power;
}
cout<<"学生的总用水量为"<<zwater<<endl;
cout<<"学生的总用电量为"<<zpower<<endl;
}break;
case 2:
{
double zwatermoney=0.0, zpowermoney=0.0;
for(int i=0; i<top; i++)
{
zpowermoney+=Stu[i].powermoney;
zwatermoney+=Stu[i].watermoney;
}
cout<<"学生的总水费为"<<zwatermoney<<endl;
cout<<"学生的总电费为"<<zpowermoney<<endl;
}break;
default:cout<<"输入错误。请重新输入"<<endl;break;
}
}
class Tea_Manage
{
Teacher Tea[TMAX];
int top;
public:
Tea_Manage(){top=0;}
void Add();
void Show();
void Search();
void Edit();
void Delete();
void Total();
};
void Tea_Manage::Add()
{
if(top>=TMAX)
{
cout<<"用户已满"<<endl;
return;
}
Teacher t;
cout<<"输入新添加的人员的信息"<<endl;
t.Input();
for(int i=0;i<top;i++)
if (t.GetNum()==Tea[i].GetNum())
{
cout<<"该编号的人员已存在"<<endl;
return;
}
Tea[top]=t;
top=top+1;
cout<<"添加成功!"<<endl;
}
void Tea_Manage::Show()
{
if(top==0)
{
cout<<"无数据!"<<endl;
return;
}
cout<<""<<"编号"
<<""<<"姓名"
<<""<<"性别"
<<""<<"年龄"
<<""<<"部门"
<<""<<"用水量"
<<""<<"用电量"
<<""<<"水费"
<<""<<"电费"
<<endl;
for(int i=0;i<top;i++)
Tea[i].Output();
}
void Tea_Manage::Search()
{
if(top==0)
{
cout<<"当前系统中没有存储记录"<<endl;
return;
}
int choice;
cout<<"请选择查找方式:1.按姓名查询 2.按用水量查询 3.按用电量查询"<<endl;
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"请输入要查找的姓名"<<endl;
string name;
cin>>name;
cout<<" "<<"编号"
<<" "<<"姓名"
<<" "<<"性别"
<<" "<<"年龄"
<<" "<<"部门"
<<" "<<"用水量"
<<" "<<"用电量"
<<" "<<"水费"
<<" "<<"电费"
<<endl;
for(int i=0;i<top;i++)
{
if(Tea[i].GetName()==name)
{
Tea[i].Output();
}
}
return;
cout<<"查无此人!"<<endl;
}break;
case 2:
{
cout<<"请输入要查找的水量:"<<endl;
double water;
cin>>water;
cout<<""<<"编号 "<<" "<<" 姓名 "<<" "<<" 性别 "<<" "<<" 年龄 "<<" "<<" 部门 "<<"用水量"<<"用电量"<<"水费"<<"电费"<<endl;
for(int i=0;i<top;i++)
{
if(Tea[i].GetWater()==water)
{
Tea[i].Output();
}
}
return;
cout<<"查无此人!"<<endl;
}break;
case 3:
{
cout<<"请输入要查找的电量:"<<endl;
double power;
cin>>power;
cout<<" "<<"编号 "<<" "<<" 姓名 "<<" "<<" 性别 "<<" "<<" 年龄 "<<" "<<" 部门 "<<"用水量"<<"用电量"<<"水费"<<"电费"<<endl;
for(int i=0;i<top;i++)
{
if(Tea[i].GetPower()==power)
{
Tea[i].Output();
}
}
return;
cout<<"查无此人!"<<endl;
}break;
default:cout<<"无此选项!请重试!"<<endl;
break;
}
}
void Tea_Manage::Edit()
{
if(top==0)
{
cout<<"当前系统中没有存储记录!"<<endl;
return;
}
int num;
cout<<"请输入要查找的教编号:"<<endl;
cin>>num;
for(int i=0;i<top;i++)
{
if(Tea[i].GetNum()==num)
{
cout<<"请对这位教师的信息进行修改:"<<endl;
Tea[i].Input();
cout<<"修改成功"<<endl;
return;
}
}
cout<<"查无此人"<<endl;
}
void Tea_Manage::Delete()
{
if(top==0)
{
cout<<"当前系统中没有存储记录!"<<endl;
return;
}
cout<<"1、按编号查找删除 2、按姓名查找删除"<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
cout<<"请输入编号:";
int num;
cin>>num;
for(int i=0;i<top;i++)
{
if(num==Tea[i].num)
{
cout<<"是否确认删除? 1、是 2、否 "<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
for(int j=i;j<top-1;j++)
Tea[j]=Tea[j+1];
cout<<"删除成功!"<<endl;
top--;
};
break;
case 2:
return;
default:cout<<"无此项,失败!"<<endl;
break;
}return;
}
}
cout<<"无此人!"<<endl;
};
break;
case 2:
{
cout<<"请输入姓名:";
string name;
cin>>name;
for(int i=0;i<top;i++)
{
if(name==Tea[i].name)
{
cout<<"是否确认删除? 1、是 2、否 "<<endl;
int choice;
cin>>choice;
switch(choice)
{
case 1:
{
for(int j=i;j<top-1;j++)
Tea[j]=Tea[j+1];
cout<<"删除成功!"<<endl;
top--;
};
break;
case 2:
return;
default:cout<<"无此项,失败!"<<endl;
break;
}return;
}
}
cout<<"无此人!"<<endl;
};
break;
default:cout<<"没有此项,失败:"<<endl;
break;
}
}
void Tea_Manage::Total()
{
cout<<"1 教师所用水电量的总量 2 教师总的水电费 "<<endl;
int choice;
cout<<"请输入你的选择"<<endl;
cin>>choice;
switch(choice)
{
case 1:
{
double zwater=0.0, zpower=0.0;
for(int i=0; i<top; i++)
{
zwater+=Tea[i].water;
zpower+=Tea[i].power;
}
cout<<"教师的总用水量为"<<zwater<<endl;
cout<<"教师的总用电量为"<<zpower<<endl;
}break;
case 2:
{
double zwatermoney=0.0, zpowermoney=0.0;
for(int i=0;i<top;i++)
{
zwatermoney+=Tea[i].watermoney;
zpowermoney+=Tea[i].powermoney;
}
cout<<"教师的总水费为"<<zwatermoney<<endl;
cout<<"教师的总电费为"<<zpowermoney<<endl;
}break;
default:cout<<"输入错误。请重新输入"<<endl;break;
}
}
void TeaMenu();
void StuMenu();
int main()
{
int choice;
do
{
cout<<"\n================================================================================\n"<<endl;
cout<<" 高校水电费管理系统 \n"<<endl;
cout<<"\n"<<endl;
cout<<"\t1=>教师水电费管理\t2=>学生水电费管理\t0=>退出系统 "<<endl;
cout<<"\n"<<endl;
cout<<"\n请输入您的选择:";
cin>>choice;
switch(choice)
{
case 1:TeaMenu();break;
case 2:StuMenu();break;
case 0:cout<<"\n您已安全退出系统."<<endl;break;
default:cout<<"\n没有此选项.请重选."<<endl;break;
}
}
while(choice!=0);
cout<<"\n------------------------------欢迎您下次再使用!---------------------------------"<<endl;
return 0;
}
void TeaMenu()
{
Tea_Manage t;
int choice;
while(choice!=0)
{
cout<<"\n================================================================================\n"<<endl;
cout<<"\n 教师水电费管理"<<endl;
cout<<"\n"<<endl;
cout<<" 1.添加 2.查找 3.修改 4.删除 5.显示 6.保存 7.读取 8.统计 0.退出 "<<endl;
cout<<"\n"<<endl;
cout<<"\n输入您操作的选项:";
cin>>choice;
switch(choice)
{
case 1:t.Add();break;
case 2:t.Search();break;
case 3:t.Edit();break;
case 4:t.Delete();break;
case 5:t.Show();break;
case 8:t.Total();break;
case 0:cout<<"退出成功!"<<endl;break;
default:cout<<"无此选项!请重试!"<<endl;break;
}
}
}
void StuMenu()
{
Stu_Manage s;
int choice;
while(choice!=0)
{
cout<<"\n================================================================================\n"<<endl;
cout<<"\n 学生水电费管理"<<endl;
cout<<"\n"<<endl;
cout<<" 1.添加 2.查找 3.修改 4.删除 5.显示 6.保存 7.读取 8.统计 0.退出 "<<endl;
cout<<"\n"<<endl;
cout<<"\n输入您操作的选项:";
cin>>choice;
switch(choice)
{
case 1:s.Add();break;
case 2:s.Search();break;
case 3:s.Edit();break;
case 4:s.Delete();break;
case 5:s.Show();break;
case 8:s.Total();break;
case 0:cout<<"退出成功!"<<endl;break;
default:cout<<"无此选项!请重试!"<<endl;break;
}
}
}
七、 程序调试结果
毕业设计(论文)原创性声明和使用授权说明
原创性声明
本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。尽我所知,除文中特别加以标注和致谢的地方外,不包含其他人或组织已经发表或公布过的研究成果,也不包含我为获得 及其它教育机构的学位或学历而使用过的材料。对
展开阅读全文