1、该模块主要完成对用户本月收取水费的功能,其流程图如图 4所示。1. 进入子菜单 2中选择 1,进行用户信息的添加;2. 键盘输入要收水费用户的编、名称、收费时间和本月用水量,计算对该用户所收水费;3. 一次用户信息输入完成,系统回到上一级菜单,提示存盘;4. 输入2,进行存盘。133 存盘模块 该模块主要完成用户收费信息的存盘,详情见流程图 5.所示。1、 子菜单2中选择2,进行添加用户信息和所收水费存盘;2、 继续输入用户信息或返回上级菜单。14 查询与统计模块 查询、统计模块主要完成对用户基本信息的和收费信息的查询和统计的功能,详情见流程图 6所示。1、 从主菜单中选择3,进入查询与统计子
2、菜单 3;2、 从子菜单中选择1、2分别进行用户基本信息查询和收费记录的统计;3、 输入要查询用户的名称或编号,系统从consumer文本文档中找到要查询用户的基本信息,屏幕输出信息,返回子菜单 3;4、 输入要查询用户收费记录的日期,系统从charge文本文档中找到该用户信息及收费记录,在屏幕上输出,返回子菜单 3;5、 如果没找到该用户信息,返回子菜单 3。2 程序源代码#include string.hstdlib.hfstream.hiostream.h#define NULL 0/定义用户基本信息类由组员郭文君完成/定义收费信息类class charge char * name; /
3、用户名称 char * kind; /用户类型 float volumn; /本月用水量 float money; /本月所收水费 char * time; /收费时间public: static int i; /交费次数 charge * next;/指向charge类对象的指针 charge(char * n,char * k,float v,float m,char * t) name=new charstrlen(n)+1; strcpy(name,n); kind=new charstrlen(k)+1; strcpy(kind,k); volumn=v; money=m; time
4、=new charstrlen(t)+1; strcpy(time,t); +i; charge() name=new char10; kind=new char10; volumn=0; money=0; time=new char10; charge()/析构函数 -i; delete kind; delete name; delete time; char *getname() return name; char *getkind() return kind; float getvolumn() return volumn; float getmoney() return money;
5、char *gettime() return time; void setname(char *x)/用成员函数修改私有数据成员 strcpy(name,x); void setkind(char *y) strcpy(kind,y); void setvolumn(float z) volumn=z; void setmoney(float p) money=p; void settime(char *q) strcpy(time,q); /声明运算符重载函数为charge类的友元函数 friend ostream & operator (istream & is, charge &;int
6、 charge:i=0;/*重载运算符函数 *ostream & operator os,charge &ob) osob.name ob.kindob.volumnob.moneyob.timeistream & operator is,charge & isob.name;ob.kind;ob.volumn;ob.money;ob.time; return is;consumer *head=NULL;/用户信息类链表头初始化charge *link=NULL; /收费标准类链表头void load()/从硬盘读取用户基本信息void save() /将用户信息存入硬盘void Cload
7、() /从硬盘读取收费信息 ifstream fin(charge.txt,ios:in|ios:nocreate); if(!fin) cout不能打开文件endlcount; /读入收费类型数 x=1; while(x*temp; /读入一个用户收费记录到内存 /将用户记录插入内存链表 if(link = NULL) /链表为空 link = temp; temp-next=NULL; else /将新节点插入到头结点之前next = link; link=temp; x+; charge:i=count; if(link = NULL) charge: fin.close();void
8、Csave() /将用户收费信息存入硬盘 if(link=NULL) Cload(); ofstream fout(out); /存入用户收费记录总条数,以控制读取收费记录时的循环次数 foutcharge:i charge *p=link; while(p!=NULL) foutnext; fout.close(); link=NULL; cout本月所交水费 *2存盘 *0返回主菜单 *请选择: cinx; if(x=0&xL;请输入用户类型:K;请输入收费月份:D;请输入本月用水量:V; if(head = NULL) load(); consumer * ptr=head; while
9、(ptr! if(strcmp(ptr-getnum(),L)!=0) ptr=ptr- else P=ptr-getprice(); strcpy(N,ptr-getname(); break; charge *temp=new charge(N,K,V,P,D); if(link =NULL) Cload(); if(link=NULL) link=temp; temp- else next=link; sum=V*P;用户ND的用水量为:V吨。本月水费:sum元。 charge:i+;水费记录完成,储存请选择存盘!/*3 查询、统计*/ 子菜单3 void sub3() while(1)
10、 void sub31(); /函数原型声明 void sub32();*查询、统计*用户信息查询; *收费记录统计;返回主菜单;sub31();sub32(); else cout switch(x) case 1:sub311(); case 2:sub312(); case 0: else coutgetname(),N)=0) coutgetname()*用户的编号:getnum()*该用户所属类型:getkind()*该用户类型的价格 getprice()getnum(),M)=0)q- q=q-void sub32() /收费记录统计*收费记录统计*请输入要查询的时间(时间格式:2008/08):gettime(),D)=0)getvolumn() p=p- else p=p- /*主函数*
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1