C水费管理系统.docx
- 文档编号:4290051
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:20
- 大小:165.86KB
C水费管理系统.docx
《C水费管理系统.docx》由会员分享,可在线阅读,更多相关《C水费管理系统.docx(20页珍藏版)》请在冰豆网上搜索。
C水费管理系统
C++课程设计报告
题目:
水费管理系统——水费基本信息管理、查询、统计、存盘和收费管理
学生姓名:
学号:
专业班级:
同组姓名:
指导教师:
设计时间:
2008年下学期第15~16周
指导老师意见:
评定成绩:
签名:
日期:
1系统(项目)设计
1.1系统功能模块图
通过查阅相关资料和仔细分析,得出系统功能模块图如图1所示。
系统主要由用户信息管理、收费管理、查询与统计、存盘等几个功能模块组成,我负责的是收费管理、查询与统计、存盘功能。
其中收费管理包括用户本月用水量、本月所收水费、收费时间,查询与统计包括用户信息查询与收费查询与统计,存盘包括用户信息和收费信息存盘。
1.2系统登陆模块
系统登陆模块主要完成系统登陆和系统退出功能。
其详细流程图如图2所示。
1、密码输入;
2、判断密码的正确与否,即当前用户是否具有进入系统运行的权限;
3、主菜单中选择1、2、3、4,分别进入用户基本信息管理、收费管理、查询与统计、存盘操作;
4、密码错误或主菜单中选择0,退出程序;
1.3收费管理
收费管理模块主要完成对用户进行收费的功能,该模块包含用户本月所收水费、存盘等功能。
其流程图如图3所示。
1.3.1子菜单2模块
1、从子菜单2中选择1、2分别进入本月所收水费、存盘操作;
2、选择0,返回主菜单。
1.3.2本月所收水费模块
该模块主要完成对用户本月收取水费的功能,其流程图如图4所示。
1.进入子菜单2中选择1,进行用户信息的添加;
2.键盘输入要收水费用户的编、名称、收费时间和本月用水量,计算对该用户所收水费;
3.一次用户信息输入完成,系统回到上一级菜单,提示存盘;
4.输入2,进行存盘。
1.3.3存盘模块
该模块主要完成用户收费信息的存盘,详情见流程图5.所示。
1、子菜单2中选择2,进行添加用户信息和所收水费存盘;
2、继续输入用户信息或返回上级菜单。
1.4查询与统计模块
查询、统计模块主要完成对用户基本信息的和收费信息的查询和统计的功能,详情见流程图6所示。
1、从主菜单中选择3,进入查询与统计子菜单3;
2、从子菜单中选择1、2分别进行用户基本信息查询和收费记录的统计;
3、输入要查询用户的名称或编号,系统从consumer文本文档中找到要查询用户的基本信息,屏幕输出信息,返回子菜单3;
4、输入要查询用户收费记录的日期,系统从charge文本文档中找到该用户信息及收费记录,在屏幕上输出,返回子菜单3;
5、如果没找到该用户信息,返回子菜单3。
2程序源代码
#include
#include
#include
#include
#include
#defineNULL0
//定义用户基本信息类
由组员郭文君完成
//定义收费信息类
classcharge{
char*name;//用户名称
char*kind;//用户类型
floatvolumn;//本月用水量
floatmoney;//本月所收水费
char*time;//收费时间
public:
staticinti;//交费次数
charge*next;//指向charge类对象的指针
charge(char*n,char*k,floatv,floatm,char*t)
{
name=newchar[strlen(n)+1];
strcpy(name,n);
kind=newchar[strlen(k)+1];
strcpy(kind,k);
volumn=v;
money=m;
time=newchar[strlen(t)+1];
strcpy(time,t);
++i;
}
charge()
{
name=newchar[10];
kind=newchar[10];
volumn=0;
money=0;
time=newchar[10];
++i;
}
~charge()//析构函数
{
--i;
delete[]kind;
delete[]name;
delete[]time;
}
char*getname()
{
returnname;
}
char*getkind()
{
returnkind;
}
floatgetvolumn()
{
returnvolumn;
}
floatgetmoney()
{
returnmoney;
}
char*gettime()
{
returntime;
}
voidsetname(char*x)//用成员函数修改私有数据成员
{
strcpy(name,x);
}
voidsetkind(char*y)
{
strcpy(kind,y);
}
voidsetvolumn(floatz)
{
volumn=z;
}
voidsetmoney(floatp)
{
money=p;
}
voidsettime(char*q)
{
strcpy(time,q);
}
//声明运算符重载函数为charge类的友元函数
friendostream&operator<<(ostream&os,charge&ob);
friendistream&operator>>(istream&is,charge&ob);
};
intcharge:
:
i=0;
//*重载<<运算符函数*
ostream&operator<<(ostream&os,charge&ob)
{
os< returnos; } //*重载>>运算符函数* istream&operator>>(istream&is,charge&ob) { is>>ob.name; is>>ob.kind; is>>ob.volumn; is>>ob.money; is>>ob.time; returnis; } consumer*head=NULL;//用户信息类链表头初始化 charge*link=NULL;//收费标准类链表头 voidload()//从硬盘读取用户基本信息 voidsave()//将用户信息存入硬盘 由组员郭文君完成 voidCload()//从硬盘读取收费信息 { ifstreamfin("charge.txt",ios: : in|ios: : nocreate); if(! fin) { cout<<"不能打开文件"< exit(0); } else { intcount,x; fin>>count;//读入收费类型数 x=1; while(x<=count) { charge*temp=newcharge; fin>>*temp;//读入一个用户收费记录到内存 //将用户记录插入内存链表 if(link==NULL)//链表为空 { link=temp; temp->next=NULL; } else//将新节点插入到头结点之前 { temp->next=link; link=temp; } x++; } charge: : i=count; if(link==NULL)charge: : i=0; } fin.close(); } voidCsave()//将用户收费信息存入硬盘 { if(link==NULL)Cload(); ofstreamfout("charge.txt",ios: : out); //存入用户收费记录总条数,以控制读取收费记录时的循环次数 fout< : i<<""; charge*p=link; while(p! =NULL) { fout<<*p; p=p->next; } fout.close(); link=NULL; cout<<"收费信息保存成功! "< } //**用户基本信息管理*** 由组员郭文君完成 voidsub2()//子菜单2 { intx; while(x) { voidsub21(); cout<<"****水量使用管理****"< cout<<"********************"< cout<<"*1>本月所交水费*"< cout<<"*2>存盘*"< cout<<"*0>返回主菜单*"< cout<<"********************"< cout<<"*请选择: "; cin>>x; if(x>=0&&x<=2) { switch(x) { case1: sub21();break; case2: Csave();break; case0: return; } } else cout<<"选择有误,请重新选择! "< } } voidsub21() { charN[20]; charL[20]; charK[20]; floatV; charD[20]; floatP; floatsum; cout<<"请输入用户编号: "; cin>>L; cout<<"请输入用户类型: "; cin>>K; cout<<"请输入收费月份: "; cin>>D; cout<<"请输入本月用水量: "; cin>>V; if(head==NULL)load(); consumer*ptr=head; while(ptr! =NULL) { if(strcmp(ptr->getnum(),L)! =0) ptr=ptr->next; else { P=ptr->getprice(); strcpy(N,ptr->getname()); break; } } charge*temp=newcharge(N,K,V,P,D); if(link==NULL)Cload(); if(link==NULL) { link=temp; temp->next=NULL; } else { temp->next=link; link=temp; } sum=V*P; cout<<"用户"< "< "< cout<<"本月水费: "< "< charge: : i++; cout<<"用户"< "< } //*3查询、统计* //子菜单3 voidsub3() { intx; while (1) { voidsub31();//函数原型声明 voidsub32();//函数原型声明 cout<<"******查询、统计******"< cout<<"**********************"< cout<<"*1>用户信息查询;*"< cout<<"*2>收费记录统计;*"< cout<<"*0>返回主菜单;*"< cout<<"**********************"< cout<<"*请选择: "; cin>>x; if(x>=0&&x<=2) { switch(x) { case1: sub31();break; case2: sub32();break; case0: return; } } elsecout<<"选择有误,请重新选择! "< } } voidsub31()//用户信息查询 { voidsub311(); voidsub312(); intx; cout<<"******用户信息查询******"< cout<<"************************"< cout<<"*1>根据用户名称查询;*"< cout<<"*2>根据用户编号查询;*"< cout<<"*0>返回上一菜单;*"< cout<<"************************"< cout<<"*请选择: "; cin>>x; if(x>=0&&x<=2) { switch(x) { case1: sub311();break; case2: sub312();break; case0: return; } } elsecout<<"选择有误,请重新选择! "< } voidsub311()//根据用户名称查询 { charN[20]; consumer*p; cout<<"请输入要查找用户的名称: "< cin>>N; if(head==NULL)load(); p=head; while(p! =NULL) { if(strcmp(p->getname(),N)==0) { cout<<"*所查找用户的名称: "< cout<<"*用户的编号: "< cout<<"*该用户所属类型: "< cout<<"*该用户类型的价格"< return; } p=p->next; } cout<<"该用户不存在! "< return; } voidsub312()//按编号查找 { charM[20]; consumer*q; cout<<"请输入要查找用户的编号: "< cin>>M; if(head==NULL)load(); q=head; while(q! =NULL) { if(strcmp(q->getnum(),M)==0) { cout<<"*所查找用户的名称: "< cout<<"*用户的编号: "< cout<<"*该用户所属类型: "< cout<<"*该用户类型的价格"< return; } q=q->next; } cout<<"该用户不存在! "< return; } voidsub32()//收费记录统计 { charD[20]; cout<<"******收费记录统计******"< cout<<"请输入要查询的时间(时间格式: 2008/08): "; cin>>D; if(link==NULL)Cload(); charge*p=link; while(p! =NULL) { if(strcmp(p->gettime(),D)==0) { cout< "< "< cout<<"本月水费: "< "< cout< p=p->next; } elsep=p->next; } } //***主函数****
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水费 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)