电费管理系统课程设计报告.docx
《电费管理系统课程设计报告.docx》由会员分享,可在线阅读,更多相关《电费管理系统课程设计报告.docx(30页珍藏版)》请在冰豆网上搜索。
电费管理系统课程设计报告
C++课程设计报告
课题:
电费管理系统
专业班级:
网络工程***班
学号:
************
姓名:
********
指导教师:
********
评阅意见:
评定成绩:
指导老师签名:
年月日
一课程设计的目的和意义
《C++与面向对象程序设计》是计算机专业的一门专业基础课,主要内容是介绍C++语言中的数据类型,运算,语句结构及其程序设计的基本方法。
C++是当今最流行的高级程序设计语言之一,应用十分广泛。
它也是一门复杂的语言,与C语言兼容,既支持结构化的程序设计方法,也支持面向对象的程序设计方法。
《C++课程设计》是在学生学习完上述课程以后进行的设计性试验课程,面向对象的思想只有通过具体的程序才能真正掌握,故在我们学习完《C++与面向对象程序设计》课程后,开设C++课程设计实验课程。
目的是使学生能够更好地掌握C++课程设计语言,更深地理解面向对象程序设计的基本概念与方法,要求我们达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,提高动手编程解决实际问题的能力,并为后续专业课程的学习奠定程序设计基础。
通过做课程实验,我们应能加深对讲授内容的理解,积累经验,学会独立上机调试程序;并且逐步达到综合运用封装,继承和多态等C++难点知识,真正掌握C++语言的精华,从而熟练应用C++程序设计语言。
本次课程设计要求使用C++编译有关链表的程序。
完成我们所选的课题。
我们小组选的课题是电费管理系统。
我们通过链表完成对用户基本信息的一般性管理工作:
用户及用户基本信息的增加、修改和删除和对用户用电情况与显示用户所缴电费情况的记录等功能。
在我的链表中是对用户的缴费情况记录的一个链表,要求将用户的基本信息、用电情况、所缴电费及电费余额以数据文件的形式存储,所有的用户基本情况均以文件操作的方式进行。
在查找时,以记录的“用户姓名”或“身份证”为关键字进行查找。
但由于我们知识的有限性,我们只能对信息进行简单的处理,希望我们能在以后的学习中进一步改善。
二需求分析
2.1电费管理系统功能分析
电费管理系统总共分三个链表,用户基本信息链表,用电量的链表,缴费情况链表。
电费管理系统功能分六个模块:
添加用户,显示所有用户,修改用户信息,保存用户信息,读取用户信息,查询用户信息;
此系统将要能够实现后台对用户的设置包括(增、删、查、改)以及前台用户的查询;
2.2电费管理系统流程图
图2-1电费管理系统流程图
三系统设计
3.1个人负责模块功能分析
图3-1电费管理系统层次图
模块:
此模块为缴费链表
此程序中我主要负责此链表的编写,此模块将实现客户的缴费管理和余额查询,同时用户的基本资料也一并显示;
1、添加用户:
录入用户的基本信息,包括用户姓名和账号;
2、显示所有用户缴费情况:
自动列出所有保存过的用户缴费信息;
3、修改用户缴费信息:
可对系统中已录入的用户缴费信息进行修改;
4、保存用户缴费信息:
将录入的用户缴费信息保存在文件中,以便下次再打开系统时,录入的用户缴费信息还在。
5、读取用户缴费信息:
将保存在文件中的用户缴费信息读取出来。
6、查询用户缴费信息:
每个用户可以匿名查询所有用户缴费情况,可以按不同的条件进行查询,如输如账号进行查询,或者输入姓名进行查询。
3.2类、函数及说明
定义的类:
1、classpay//定义一个缴费的类
{
private:
charname[20];//用户姓名
charnum[20];//用户身份证号码
charjine[20];//缴费金额
charbalance[20];//电费余额
charydl[20];//用电量
public:
pay*next;//定义一个指针
public:
voidSetName(char[]);//设置用户名
char*GetName();
voidSetNum(char[]);//设置用户账号
char*GetNum();
voidSetjine(char[]);//录入用户缴费金额
char*Getjine();
voidSetydl(char[]);//录入用户用电量
char*Getydl();
voidSetbalance(char[]);//计算并显示用户余额
char*Getbalance();
voidInput();
voidDisplay();
};
2、
classpaylist//定义一个用户缴费菜单类
{
public:
pay*pHead;//定义一个头指针
public:
paylist();//无参数构造函数
voidAddpays();//添加多个用户
voidDisplay();//显示所有用户信息
voidSave(charfileName[]);//保存所有用户信息到文件
voidLoad(charfileName[]);//从文件中读取用户信息
~paylist();//析构函数,释放资源
voidMenu();//处理用户信息模块菜单
voidMenu_1();
voidMainMenu_1();
voidMenu_2();
voidMenu_3();
voidpayMenu();
voidMainMenu();
private:
voidAddpay();//添加一个用户
intMenu_1Select();//显示和处理用户信息模块菜单
intMainMenu_1Select();
intMainMenuSelect();};
四系统测试
4.1功能演示
1程序主界面
图4-1程序主界面
——>>选择1进入管理员界面
图4-2管理员进入界面
2用户缴费管理界面
——>>选择4进入缴费管理界面
图4-3用户缴费管理界面
3添加用户信息及缴费金额界面,在用户缴费信息管理界面选择1
图4-4添加用户信息及缴费金额界面
4保存录入信息
图4-5保存录入信息
5读取所保存的信息
图4-6读取所保存的信息
6显示所保存用户的缴费信息选择2
图4-7显示所保存用户的缴费信息
7在主菜单中选择2,用户登录就可以匿名查询所有用户的缴费情况.
图4-8用户登录界面
4.2存在的问题与不足
其实此系统与实际生活中所用到的电费管理系统还是有蛮大的差距的,我们一直都在努力,来缩小与之的差距。
譬如,在实际生活中,电费的价格是波动的,而我们的电费价格是规定死了的,一旦电费价格有变动,我们的这个系统将毫无意义。
另外,此系统未进行任何安全设置,管理员应该验证信息后才能登陆,这样才有实用性。
五心得体会
在为期不到两周的课程设计中,我体会颇多,学到很多东西。
我懂得了如何用MFC编写可视化界面的应用程序,利用C++课程设计这次机会,我加强了对C++的认识,复习了自己以前的知识,自己的逻辑思考能力也提高不少。
从而对MicrosoftVisualC++6.0又有了更深入的认识!
在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,比如需求分析、总体设计、数据结构设计、程序模块设计(含功能需求、用户界面设计、程序代码设计与分析、运行结果)、系统使用说明等。
总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
最重要的还是激发了我编程的兴趣和热情,让我从一个只懂得理论知识变成能做得一些小型程序,让我对编程更加热爱了。
整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。
特别是学会了在VisualC++集成开发环境中如何调试程序的方法。
当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我们的关心和帮助,诚心诚意感谢你们对我的鼓励与教导,是你们在我迷茫的时候给了我们许多提示,激发了我编程的灵感;还有,我在此也十分感谢本次课程设计中同学们对我的帮助,由于此次我们是团队合作完成电费管理系统这个程序,是我深刻的体会到团队重要性。
尽管此次课程设计很累,基本上我们都是在凌晨3、4点钟才睡,但是我们还是坚持了下来,到最后程序终于能够运行了,尽管不分功能没有实现,但这也是对我们努力后的一种回报吧课程设计后,我将和我的团队继续努力,把其中的一些缺陷和不足给弥补上,使整个程序更加的完善,更加具有实用性。
六参考文献
[1]张昕.C语言课程设计:
VisualC++环境.北京:
中国水利水电出版社,2005
[2]陈维兴,林小茶.C++面向对象程序设计教程(第三版).北京:
清华大学出版社,2005
[3]严蔚敏吴伟明数据结构(C语言版).清华大学出版社,2007
七附录源程序
(只包括主函数和用户缴费信息管理这条链表)
Pay.h
#if!
defined(PAY_H)
#definePAY_H
classpay
{
private:
charname[20];//用户姓名
charnum[20];//用户身份证号码
charjine[20];//缴费金额
charbalance[20];//电费余额
charydl[20];//用电量
public:
pay*next;
public:
voidSetName(char[]);
char*GetName();
voidSetNum(char[]);
char*GetNum();
voidSetjine(char[]);
char*Getjine();
voidSetydl(char[]);
char*Getydl();
voidSetbalance(char[]);
char*Getbalance();
voidInput();
voidDisplay();
};
#endif
Paylist.h
#if!
defined(USERLIST_H)
#defineUSERLIST_H
#include"pay.h"
classpaylist
{
public:
pay*pHead;
public:
paylist();//无参数构造函数
voidAddpays();//添加多个用户
voidDisplay();//显示所有用户信息
voidSave(charfileName[]);//保存所有用户信息到文件
voidLoad(charfileName[]);//从文件中读取用户信息
~paylist();//析构函数,释放资源
voidMenu();//处理用户信息模块菜单
voidMenu_1();
voidMainMenu_1();
voidMenu_2();
voidMenu_3();
voidpayMenu();
voidMainMenu();
private:
voidAddpay();//添加一个用户
intMenu_1Select();//显示和处理用户信息模块菜单
intMainMenu_1Select();
intMainMenuSelect();
};
#endif
Pay.cpp
#include"pay.h"
#include
usingnamespacestd;
voidpay:
:
SetName(charn[])
{
strcpy(name,n);
}
char*pay:
:
GetName()
{
returnname;
}
voidpay:
:
SetNum(charn[])
{
strcpy(num,n);
}
char*pay:
:
GetNum()
{
returnnum;
}
voidpay:
:
Setjine(charn[])
{
strcpy(jine,n);
}
char*pay:
:
Getjine()
{
returnjine;
}
voidpay:
:
Setydl(charn[])
{
strcpy(ydl,n);
}
char*pay:
:
Getydl()
{
returnydl;
}
voidpay:
:
Setbalance(charn[])
{
strcpy(balance,ydl);
}
char*pay:
:
Getbalance()
{
return0;
}
voidpay:
:
Setbalance(charn[])
{
strcpy(balance,ydl);
}
char*pay:
:
Getbalance()
{
return0;
}
voidpay:
:
Input()
{
charch[20];
cout<<"姓名:
";
cin.getline(ch,'\n');
SetName(ch);
cout<<"账号:
";
cin.getline(ch,'\n');
SetNum(ch);
cout<<"预存电费:
"
;
cin.getline(ch,'\n');
Setjine(ch);
cout<<"用电量:
";
cin.getline(ch,'\n');
Setydl(ch);
cout<<"电费余额:
";
cin.getline(ch,'\n');
Setbalance(ch);
}
voidpay:
:
Display()
{
cout<<"\t"<}
Paylist.cpp
#include"paylist.h"
#include
#include
usingnamespacestd;
paylist:
:
paylist()
{
pHead=NULL;
};
voidpaylist:
:
Addpay()
{
pay*pCurrent;
if(pHead==NULL)
{
pHead=newpay();
pHead->Input();
pHead->next=NULL;
}
else
{
pCurrent=pHead;
while(pCurrent->next!
=NULL)
pCurrent=pCurrent->next;
pCurrent->next=newpay();
pCurrent=pCurrent->next;
pCurrent->Input();
pCurrent->next=NULL;
}
};
voidpaylist:
:
Addpays()
{
intn;
cout<<"请输入用户数量:
";
cin>>n;
getchar();
if(n<=0)
return;
for(inti=1;i<=n;i++)
{
Addpay();
}
};
voidpaylist:
:
Display()
{
cout<<"\t--------------------------------------------------------------------"<cout<<"\t姓名"<<"\t身份证号"<<"\t预存电费(元)"<<"\t用电量(度)"<<"\t余额(元)"<cout<<"\t--------------------------------------------------------------------"<pay*pCurrent;
pCurrent=pHead;
while(pCurrent!
=NULL)
{
pCurrent->Display();
pCurrent=pCurrent->next;
}
cout<<"\t--------------------------------------------------------------------"<};
paylist:
:
~paylist()
{
if(pHead!
=NULL)
{
pay*pCurrent;
pCurrent=pHead;
while(pCurrent->next!
=NULL)
{
pHead=pHead->next;
free(pCurrent);
pCurrent=pHead;
}
free(pCurrent);
}
};
voidpaylist:
:
Save(charfileName[])
{
ofstreamoFile(fileName,ios:
:
out|ios:
:
binary);
if(!
oFile)
{
cout<<"\t文件“"<"<return;
}
pay*pCurrent;
pCurrent=pHead;
while(pCurrent!
=NULL)
{
oFile.write((char*)pCurrent,sizeof(*pCurrent));
pCurrent=pCurrent->next;
}
cout<<"\t用户信息保存成功!
"<oFile.close();
};
voidpaylist:
:
Load(charfileName[])
{
ifstreamiFile(fileName,ios:
:
in|ios:
:
binary);
if(!
iFile)
{
cout<<"\t文件“"<"<return;
}
if(iFile.peek()!
=EOF)
{
pHead=newpay();
iFile.read((char*)pHead,sizeof(*pHead));
}
else
{
pHead=NULL;
return;
}
pay*pCurrent;
pCurrent=pHead;
while(iFile.peek()!
=EOF)
{
pCurrent->next=newpay();
iFile.read((char*)&(*(pCurrent->next)),sizeof(*(pCurrent->next)));
pCurrent=pCurrent->next;
}
pCurrent->next=NULL;
cout<<"\t读取成功!
"<iFile.close();
};
intpaylist:
:
MainMenuSelect()
{
chars[2];
intcn;
cout<cout<cout<<"+----------------------------+"<cout<<"||"<cout<<"|用户缴费信息管理|"<cout<<"||"<cout<<"|----------------------------|"<cout<<"|1.添加用户信息及缴费金额|"<cout<<"|----------------------------|"<cout<<"|2.显示所有用户余额情况|"<cout<<"|----------------------------|"<cout<<"|3.保存用户缴费记录|"<cout<<"|----------------------------|"<cout<<"|4.读取用户缴费记录|"<cout<<"|----------------------------|"<cout<<"|5.修改用户缴费信息|"<cout<<"|----------------------------|"<cout<<"|0.返回主菜单|"<cout<<"+----------------------------+"<cout<<"请选择0-5:
"<for(;;)
{
gets(s);
cn=atoi(s);
if(cn>5)
cout<<"\n\t您的输入有误,请重选0-5:
";
else
break;
}
returncn;
};
intpaylist:
:
MainMenu_1Select()
{
charss[2];
intcn;
cout<<"+------------------------------------------------+"<cout<<"|欢迎进入管理员界面|"<cout<<"|--------------------------+---------------------|"<cout<<"+--------------------------+---------------------+"<cout<<"|查询用户信息:
1|用户基本信息管理:
2|"<cout<<"+--------------------------+---------------------+"<cout<<"+用户用电量管理:
3|用户缴费管理:
4|"<cout<<"+----------------------+-------------------------+"<cout<<"|返回主菜单:
0|"<cout<<