课程设计报告.docx

上传人:b****5 文档编号:4355067 上传时间:2022-11-30 格式:DOCX 页数:43 大小:299.46KB
下载 相关 举报
课程设计报告.docx_第1页
第1页 / 共43页
课程设计报告.docx_第2页
第2页 / 共43页
课程设计报告.docx_第3页
第3页 / 共43页
课程设计报告.docx_第4页
第4页 / 共43页
课程设计报告.docx_第5页
第5页 / 共43页
点击查看更多>>
下载资源
资源描述

课程设计报告.docx

《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(43页珍藏版)》请在冰豆网上搜索。

课程设计报告.docx

课程设计报告

课程设计

课程名称:

程序设计

课题名称:

电煤气管理系统

班级:

10级计算机学班

完成人:

李佳文(24102601795)

指导教师:

陶跃进

 

 

湖南理工学院计算机学院

2012年12月21日

 

一、设计目的

设计一个电水管理信息系统,能够对高校的水电费用进行管理,包括了登记费用,查询费用,以及住户信息管理等。

在设计时要考虑到学生和教工在用水电时的不同,学生可以免费使用一定额度的水电,超过这个额度的后必须自费使用,且自费部分的水电费价格标准要高于教工的收费标准(主要是节约资源)。

二、系统的功能分

本程序是一个水电气管理信息系统,能够对高校的水电气费用进行管理,包括了成员基本信息,如学号、编号、姓名、成员水电气的用量;程序的用途包括缴纳水电气费、查询一个同学水电气费用量"、查看所有同学的缴费情况、增加学生信息、删除学生信息、退出系统等。

在设计时也考虑到学生和教师在用水电气时的不同,学生可以免费使用一定额度的水电气,超过这个额度的以后必须付费,且付费部分水电气费的价格要高于教工的收费标准,该措施的实行是为了鼓励同学们节约用水,以免造成不必要的资源浪费。

该软件主要是为了学校的管理人员提供便捷,以更快的完成水电气费用的收缴。

该软件本着简洁明了,实用稳定与与一体。

三、系统的程序设计与实现

系统的运行环境:

WIN7

开发环境(用什么语言或集成开发环境):

DevC++

1.设计思想:

设计面向对象的程序设计语言,首先考虑的肯定是要设计类。

程序设计了四个类,两个是学生类,两个是教师类。

在主函数中用动态数组,机动的分配类存,以至于不造成类存的浪费。

在本程序中涉及用户的选择,用户要根据自己的实际需要选择不同的功能,由于选择的多样性,程序中必须要有switch结构控制各个功能的选择,如果需要多次进行操作,则要在switch结构的外部,通过循环来实现。

首先该程序的第一目的是要读记事本里的内容,然后再根据用户的选项来实现各种不同的功能,当正确按照要求就可进行更进一步进行操作,直到你达到自己的目的为止。

与while结构有着相似功能的if…else在本程序中的使用也是非常普遍的。

本程序通过调用不同的函数来实现不同的功能,通过用户自己的选择可以自己进行操作,在主函数中申明的函数分别起到不同的作用,为了使主函数不过于冗繁,故在本程序中所有的子函数都是在主函数外实现的。

在子函数的函数体中为了使程序的功能和细节更加的完善,在子函数中设置菜单,这样不仅使得程序更加完善还有利于用户的操作。

使得程序更加简洁明了。

2.设计表示:

在这个电煤气管理系统中,共用到了四个类,一个是Feebz类,它起的作用是把水电煤气的用量和每个人的缴费信息结合在一起,还有<<的重载,最重要的就是那些对象都有共同的属性,通过这个类把学号、姓名、水用量、电用量、气用量集中到一起,所以才能设计一个类;另一个类就是StuMan类,这个类的作用主要就是一些功能的实现,有主菜单voidMainMenu()、交费菜单voidFeeMenu()、交费功能voidNumFee()和voidNameFee()、查询菜单voidCheckMenu()、查询功能voidNumCheck()voidNameCheck()、增加功能voidAdd()、删除菜单voidDeleteMenu()、删除功能voidNumDelete()和voidNameDelete()、查看功能voidChakan()。

具体的见下的图标所表示的关系:

函数或数据

类型

功能

Feebz和StuMan

函数成员

MainMenu()

void

主要是选择各种不同的功能

FeeMenu()

void

主要是选择用学号交费还是用姓名交费

NumFee

void

使用学号交费

NameFee()

void

输入姓名交费

 

CheckMenu()

 

void

主要是选择用学号查询还是用姓名查询

 

NumCheck()

 

void

 

输入学号查询

 

Add()

 

void

 

使用增加功能

 

NumDelete()

 

void

 

输入学号删除

NameDelete()

void

 

输入姓名删除

数据成员

stringnumber,name;

intflag;

doublewater,power,gas;

doubleWaterprice,Powerprice,Gasprice;

3.实现注释:

在本程序中各项功能的基本都能实现,除了基本的要求能实现之外,如实现对用户信息的录入,实现水电煤气数据的录入,计算并查询用户应缴费用,查询未缴纳费用名单,还能实现对人员的删除和添加。

只要能根据要求填写信息,一般都不会出现特别严重的错误。

4.主要实现代码:

计算学生水、电、气的费用,学生每月有一定额度的水电气所以需要对学生使用水电气进行判断看是否在给定的额度之内,在这之内则不需要再付费用,如果超过则超过本分自己付费。

这里设计的电气额度都为6,价格也为0.6。

doubleFeebz:

:

GetP()

{if((power2-power1)<=6)

Powerprice=0;

else

Powerprice=0.6*(power2-power1-6);

returnPowerprice;

}

doubleFeebz:

:

GetG()

{if((gas2-gas1)<=6)

Powerprice=0;

else

Powerprice=0.6*(gas2-gas1-6);

returnPowerprice;

}

读出txt文件里的内容,需要注意的是txt里面的内容要对应程序段,不然会导致错误

ifstreamtfile("Student.txt");

while(tfile.good())

{

tfile>>St[i].number;

tfile>>St[i].name;

tfile>>St[i].water1;

tfile>>St[i].water2;

tfile>>St[i].power1;

tfile>>St[i].power2;

tfile>>St[i].gas1;

tfile>>St[i].gas2;

i++;

}

一下程序段主要实现的功能是删除,添加,查询

voidTeaMan:

:

NameDelete()//输入姓名删除

{stringname;

intitem=1,i,j;

cout<<"欢迎使用删除功能"<

cout<<"请输入要删除教师的姓名:

";

cin>>name;

for(i=0;i

if((name==Te[i].name))

{item=0;

j=i;

break;

}

if(!

item)

for(j=i;j

Te[j]=Te[j+1];

cout<<"该教师的信息已被删除!

"<

if(item)

{system("cls");

cout<<"该教师的姓名输入错误,请重新使用该功能!

"<

NameDelete();

}

}

voidTeaMan:

:

Add()//增加教师功能

{intn,i,j=1;

cout<<"请输入你要增加的教师数:

";

cin>>n;

i=nt;

for(;nt

{cout<<"请输入第"<

"<

cin>>Te[nt].number;

cin>>Te[nt].name;

cin>>Te[nt].water1;

cin>>Te[nt].water2;

cin>>Te[nt].power1;

cin>>Te[nt].power2;

cin>>Te[nt].gas1;

cin>>Te[nt].gas2;

j++;

}

}

 

voidTeaMan:

:

Chakan()//教师查看功能

{inti;

cout<<"已交费教师信息"<

cout<<"编号"<<"姓名"<<"上用水量"<<"本用水量"<<"上用电量"<<"本用电量"<<"上用煤气量"<<"本用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"交费否"<

for(i=0;i

if(Te[i].flag)

cout<

cout<

cout<

cout<

cout<<"未交费教师信息"<

cout<<"编号"<<"姓名"<<"上用水量"<<"本用水量"<<"上用电量"<<"本用电量"<<"上用煤气量"<<"本用煤气量"<<"水费"<<"电费"<<"煤气费"<<"总额"<<"交费否"<

for(i=0;i

if(!

Te[i].flag)

cout<

}

注:

老师与学生的基本相似不同之处是收费的条件与价格不同;

本程序里面所说的上用水量是指上次查看时的用水量,本用水量是指本次查看时的用水量,其他的也是以此类推。

三、系统的运行结果与分析

系统运行的主界面

学生电煤气管理系统

查询所有学生的缴费情况

老师电煤气管理系统的主界面

查询所有教师的缴费情况

分析与总结

电煤气管理系统主要用于管理高校的人员使用的电煤气信息。

写该程序的首要目标就是要让它能顺利运行,运行之后再根据运行结果来找出该程序的弊端,以更好的改进这个管理系统。

可总是事与愿违,刚一写完时就一下子把我给惊懵了,几十个错误,而且各个错误看上去痘很难改。

但我并没有气馁,而是认真的去对待这些错误。

首先我是将一些简单而易见的错误给改正了,这并没有花费我多少时间。

后面都是一些比较难的错误,如Feebz(stringNum,stringName,doubleWater,doublePower,doubleGas);应该改为Feebz(stringNum=“0904032011”,stringName=“任家双”,doubleWater=0,doublePower=0,doubleGas=0);也就是后面必须得赋值。

还有一个令我比较头疼的就是“>>”的重载,我开始没有用友元函数来写,后来想到了可还是不对,得必须把这个友元函数写在类里面,其正确答案就是:

friendostream&operator<<(ostream&out,Feebz&r)//运算符重载

{

out<

out<

out<

out<

out<

out<

out<

out<

out<

out<

out<

out<

if(r.flag)

out<<"已交";

else

out<<"未交";

returnout;

}

接下来的另一个问题就是如何读文件里的内容,这对我来说绝对是个头疼的问题,因为当时在上课时我这部分内容学的就不是很好,于是就自己看课本,将书上的第十一章全看了一遍,终于对这个知识点有了一个大概的理解,写出了这段程序,如下:

ifstreamtfile("student.txt");

while(tfile.good())

{

ttfile>>St[i].number;

tfile>>St[i].name;

tfile>>St[i].water1;

tfile>>St[i].water2;

tfile>>St[i].power1;

tfile>>St[i].power2;

tfile>>St[i].gas1;

tfile>>St[i].gas2;

i++;

}

tfile.close();

最后一个难解的问题就是errorC2668:

'StuMan:

:

StuMan':

ambiguouscalltooverloadedfunction这段提示,然后经过在网上的了解,终于将它给改正过来了。

这时我感觉自己越来越接近胜利了,可始终还是有一个错误,而且错误是在主函数中,最后经过仔细的思考,原来是没有创立对象,直接写了StuMan.MainMenu(),可事实上应该是StuManxuesheng;xueshengMainMenu();在解决这些问题期间,对我来说最难解决的就是在文件的读取方面,在没有写这个程序之前我对磁盘文件可谓是一无所知,但这个程序必须要用到磁盘文件,在运用这个知识点时错误就不停的出现,就像文件的读入,本来应是ofile<<,但由于对问题的不深,我总是写成ofile>>,虽然这些都是些小问题,可写程序本身就是件很严谨的事情,一个小错误都不能错误,否则这程序还是不能运行,所以我们不可以忽略它们,我们在平时多注意点就会很容易的避免这些错误,同时也就会节省很多的时间。

在写这个程序花的时间很长,可能是由于在家的缘故,没有集中的时间去做这个工作,通常是集中花几天时间先写一点,然后就停了几天,结果再到写的时候,就又忘记了当时的思路,结果就做了很多的无用功。

所以写程序时一定不能三心二意,要集中一段时间将它写完,这样不仅能节省许多时间,而且还能提高程序的准确性。

我觉得该系统的不足就是不能够实现查看某个人的用水量、用电量或者用气量中的一种,对于解决这个问题,我觉得应该定义子函数来提取每个人的信息。

还有一个不足就是程序感觉不够简练,有点罗嗦,这需要自己有扎实的基本功,能都用最简短的源程序代码去解决一个相同的问题。

总体来说,这次对自己的程序还是不够满意,因为由于上学期的课程很紧,不能很好的温习老师的课堂内容,但我认为这并不是主要原因,主要原因还是因为自己没有好好的学,虽然每堂课都认真的在听讲,可课后自己很少去上机练习,这就导致虽然懂了很多理论知识,可总是不能熟练的运用到实际(写程序)上来。

通过这次课程设计的教训,我并没有到无比的气馁,而是更有信心去迎接以后的学习,因为我今天认识到了自己的最本质的错误。

在这,我希望自己在接下来的一年多时间里能好好的学习,争取能学到一些对将来有用的东西,从而不会在社会的残酷竞争下落伍了。

当我们对社会的认识加深时,我们的某些观念就会更加有进步意义,更有助于我们立足社会,发展自身。

大学的四年中我肯定要具备一定的交际能力,因为交际能力在以后的发展中也起者举足轻重的作用,现在的我可以说交际能力特别的差,连和陌生人说话的勇气都没有,这是极其可悲的。

我想通过大学这个大的舞台提高自己的交际的能力。

所以我会尽量多参加学校的一些活动,提高自己的综合素养和能力。

大学四年毕业后,我希望自己能全面发展,在各方面都有极大的提高,争取做一个对社会有用的人。

附录:

系统的源程序

#include"iostream"

#include"string"

#include"cstdlib"

#include"iomanip"

#include"fstream"

usingnamespacestd;

intns,nt;

classFeebz//学生的信息类

{

public:

Feebz(stringNum="24102601795",stringName="李佳文",doublewater1=1,doublewater2=5,doublepower1=0,doublepower2=6,doublegas1=10,doublegas2=18);//构造函数

friendostream&operator<<(ostream&out,Feebz&r)//运算符重载

{

out<

out<

out<

out<

out<

out<

out<

out<

out<

out<

out<

out<

if(r.flag)

out<<"已交";

else

out<<"未交";

returnout;

}

voidoperator=(Feebzr);//运算符重载

doubleGetW();//计算学生水费

doubleGetP();//计算学生电费

doubleGetG();//计算学生气费

doubleGetTotal(){returnGetW()+GetP()+GetG();}//计算学生总费用

stringnumber,name;

intflag;

doublewater1,water2,power1,power2,gas1,gas2,Waterprice,Powerprice,Gasprice;

};

Feebz:

:

Feebz(stringNum,stringName,doubleWater1,doubleWater2,doublePower1,doublePower2,doubleGas1,doubleGas2)//构造函数

{

number=Num;

name=Name;

water1=Water1;

water2=Water2;

power1=Power1;

power2=Power2;

gas1=Gas1;

gas2=Gas2;

flag=0;

}

voidFeebz:

:

operator=(Feebzr)//赋值运算符重载

{

name=r.name;

number=r.number;

water1=r.water1;

water2=r.water2;

power1=r.power1;

power2=r.power2;

gas1=r.gas1;

gas2=r.gas2;

}

doubleFeebz:

:

GetW()//计算学生水费

{

if((water2-water1)<=6)

Waterprice=0;

else

Waterprice=0.6*(water2-water1-6);

returnWaterprice;

}

doubleFeebz:

:

GetP()//计算学生电费

{if((power2-power1)<=6)

Powerprice=0;

else

Powerprice=0.6*(power2-power1-6);

returnPowerprice;

}

doubleFeebz:

:

GetG()//计算学生气费

{if((gas2-gas1)<=6)

Powerprice=0;

else

Powerprice=0.6*(gas2-gas1-6);

returnPowerprice;

}

classStuMan//学生管理类

{public:

StuMan(intsz=50){size=sz;St=newFeebz[size];}//构造函数

~StuMan(){delete[]St;}//析构函数

voidMainMenu();//主菜单

voidFeeMenu();//学生交费菜单

voidNumFee();//输入学号交费

voidNameFee();//输入姓名交费

voidCheckMenu();//学生查询菜单

voidNumCheck();//输入学号查询

voidNameCheck();//输入姓名查询

voidAdd();//增加学生功能

voidDeleteMenu();//学生删除菜单

voidNumDelete();//输入学号删除

voidNameDelete();//输入姓名删除

voidRegist();

voidChakan();//学生查看作用

private:

intsize;

Feebz*St;

};

voidStuMan:

:

MainMenu()//主菜单

{system("cls");

intchoice;

cout<<"*************************************"<

cout<<"*欢迎使用学生水电气费管理系统*"<

cout<<"*1.缴纳水电气费*"<

cout<<"*2.查询一个同学水电气费用量*"<

cout<<"*3.查看所有同学的缴费情况*"<

cout<<"*4.增加学生信息*"<

cout<<"*5.删除学生信息*"<

cout<<"*6.退出系统*"<

cout<<"*************************************"<

while

(1)

{

cout<<"请选择:

";

cin>>choice;

switch(choice)

{case1:

FeeMenu();break;

case2:

CheckMenu();break;

case3:

Chakan();break;

case4:

Add();break;

case5:

DeleteMenu();break;

default:

break;

}if(choice==6)break;}

}

voidStuMan:

:

Regist()

{inti=0;

ifstreamtfile("Student.txt");

while(tf

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 英语

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1