《2022年C++:水费管理系统 .pdf》由会员分享,可在线阅读,更多相关《2022年C++:水费管理系统 .pdf(24页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 C+ 课程设计报告题目:水费管理系统水费基本信息管理、查询、统计、存盘和收费管理学生姓名:学号:专业班级:同组姓名 : 指导教师:设计时间: 2008 年下学期第 1516周指导老师意见: 评定成绩 : 签名 : 日期 : 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 24 页 - - - - - - - - - 1 系统(项目)设计11 系统功能模块图通过查阅相关资料和仔细分析,得出系统功能模块图如图1 所示。系统主要由用户信息管理、收费管理、查询与统计、存盘等几个
2、功能模块组成,我负责的是收费管理、查询与统计、存盘功能。其中收费管理包括用户本月用水量、本月所收水费、收费时间,查询与统计包括用户信息查询与收费查询与统计,存盘包括用户信息和收费信息存盘。12 系统登陆模块系统登陆模块主要完成系统登陆和系统退出功能。其详细流程图如图2 所示。1、密码输入;2、判断密码的正确与否,即当前用户是否具有进入系统运行的权限;3、主菜单中选择 1、2、3、4,分别进入用户基本信息管理、收费管理、查询与水 费 管 理 系 统收 费 管 理用户信息管理查询 .统计时间编号修改删除添加本月用水量查询水费统计本月收水费收费时间时间记 录图 1 水费管理系统模块名师资料总结 -
3、- -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 24 页 - - - - - - - - - 统计、存盘操作;4、密码错误或主菜单中选择0,退出程序;准备登 录 系 统输 入 密 码判 断 权 限主 菜 单操作是否0 1 2 3 4 子 菜 单操作退出图 2 水费管理系统流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 24 页 - - - - - - - - -
4、 13 收费管理收费管理模块主要完成对用户进行收费的功能,该模块包含用户本月所收水费、存盘等功能。其流程图如图3 所示。131 子菜单 2模块1、从子菜单 2 中选择 1、2 分别进入本月所收水费、存盘操作;2、选择 0,返回主菜单。132 本月所收水费模块该模块主要完成对用户本月收取水费的功能,其流程图如图4 所示。1. 进入子菜单2中选择 1,进行用户信息的添加;2. 键盘输入要收水费用户的编、名称、收费时间和本月用水量,计算对该用户所收水费;3. 一次用户信息输入完成,系统回到上一级菜单,提示存盘;4. 输入 2,进行存盘。主菜单操作0 退出子菜单 2 2 操作选择1 2 进入收费管理操
5、作0 0 图 3 子菜单 2 流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 24 页 - - - - - - - - - 133 存盘模块该模块主要完成用户收费信息的存盘,详情见流程图5.所示。1、子菜单 2 中选择 2,进行添加用户信息和所收水费存盘;2、继续输入用户信息或返回上级菜单。子菜单 2 1 添加用户信息键盘输入计算水费图 4 本月所收水费流程图子菜单2 添加用户信息1 键盘输入计算水费存 盘图 5 存盘操作流程图名师资料总结 - - -精品资料欢迎下
6、载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 24 页 - - - - - - - - - 14 查询与统计模块查询、统计模块主要完成对用户基本信息的和收费信息的查询和统计的功能,详情见流程图6 所示。1、从主菜单中选择3,进入查询与统计子菜单3;2、从子菜单中选择1、2 分别进行用户基本信息查询和收费记录的统计;3、输入要查询用户的名称或编号, 系统从 consumer文本文档中找到要查询用户的基本信息,屏幕输出信息,返回子菜单3;4、输入要查询用户收费记录的日期,系统从charge文本文档中找到该用户信
7、息及收费记录,在屏幕上输出,返回子菜单3;5、如果没找到该用户信息,返回子菜单3。主菜单操作退出0 3 子菜单 31. 用户信息查询2. 用户收费记录统计输入查询条件是否找到信息是屏幕输出用户信息或收费记录否0 图 6 查询与统计模块流程图名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 24 页 - - - - - - - - - 2 程序源代码#include #include #include #include #include #define NULL 0 /定义用
8、户基本信息类由组员郭文君完成/定义收费信息类class charge char * name; /用户名称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 charstrle
9、n(k)+1; strcpy(kind,k); volumn=v; money=m; time=new charstrlen(t)+1; strcpy(time,t); +i; charge() name=new char10; kind=new char10; volumn=0; money=0; time=new char10; +i; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 24 页 - - - - - - - - - charge()/析构函数 -i; d
10、elete kind; delete name; delete time; char *getname() return name; char *getkind() return kind; float getvolumn() return volumn; float getmoney() return money; char *gettime() return time; void setname(char *x)/ 用成员函数修改私有数据成员 strcpy(name,x); void setkind(char *y) strcpy(kind,y); void setvolumn(float
11、 z) volumn=z; void setmoney(float p) money=p; void settime(char *q) 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 24 页 - - - - - - - - - strcpy(time,q); /声明运算符重载函数为charge 类的友元函数friend ostream & operator (istream & is, charge &ob); ; int charge:i=0; /*重载 运算符函数*
12、 ostream & operator (ostream & os,charge &ob) osob.name ob.kind ob.volumn ob.money ob.time运算符函数* istream & operator (istream & is,charge &ob) isob.name; isob.kind; isob.volumn; isob.money; isob.time; return is; consumer *head=NULL;/ 用户信息类链表头初始化charge *link=NULL; /收费标准类链表头void load()/ 从硬盘读取用户基本信息void
13、 save() /将用户信息存入硬盘由组员郭文君完成void Cload() /从硬盘读取收费信息 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 /将新节点插入到头结点之前 temp-next = link; link=temp; x+; charge:i=count; i
14、f(link = NULL) charge:i=0; fin.close(); void Csave() /将用户收费信息存入硬盘 if(link=NULL) Cload(); ofstream fout(charge.txt,ios:out); /存入用户收费记录总条数,以控制读取收费记录时的循环次数foutcharge:i ; charge *p=link; while(p!=NULL) foutnext; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 24 页
15、- - - - - - - - - fout.close(); link=NULL; cout 收费信息保存成功!endlendl; /* 用户基本信息管理* 由组员郭文君完成void sub2()/ 子菜单 2 int x; while(x) void sub21(); cout*水量使用管理 *endl; cout*endl; cout 本月所交水费*endl; cout 存盘*endl; cout 返回主菜单*endl; cout*endl; coutx; if(x=0&x=2) switch(x) case 1:sub21();break; case 2:Csave();break;
16、case 0:return; else cout 选择有误,请重新选择!endlendl; void sub21() char N20; char L20; char K20; float V; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 24 页 - - - - - - - - - char D20; float P; float sum; coutL; coutK; coutD; coutV; if(head = NULL) load(); consumer *
17、 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=new charge(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 用户 N D的用水量为: V 吨。 endl; cou
18、t 本月水费: sum 元。 endlendl; charge:i+; cout 用户 N D水费记录完成,储存请选择存盘!endlendl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 12 页,共 24 页 - - - - - - - - - /*3 查询、统计 * / 子菜单 3 void sub3() int x; while(1) void sub31(); /函数原型声明void sub32(); /函数原型声明cout*查询、统计 *endl; cout*endl;
19、 cout 用户信息查询;*endl; cout 收费记录统计;*endl; cout 返回主菜单;*endl; cout*endl; coutx; if(x=0&x=2) switch(x) case 1:sub31();break; case 2:sub32();break; case 0:return; else cout 选择有误,请重新选择!endlendl; void sub31()/ 用户信息查询 void sub311(); void sub312(); int x; cout*用户信息查询*endl; cout*endl; cout 根据用户名称查询;*endl; cout
20、根据用户编号查询;*endl; cout 返回上一菜单;*endl; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 13 页,共 24 页 - - - - - - - - - cout*endl; coutx; if(x=0&x=2) switch(x) case 1:sub311();break; case 2:sub312();break; case 0:return; else cout选择有误,请重新选择!endlendl; void sub311() /根据用户名称查询
21、char N20; consumer *p; cout请输入要查找用户的名称:N; if(head=NULL) load(); p=head; while(p!=NULL) if(strcmp(p-getname(),N)=0) cout* 所查找用户的名称:getname()endl; cout* 用户的编号:getnum()endl; cout* 该用户所属类型:getkind()endl; cout* 该用户类型的价格getprice()next; cout 该用户不存在!endl; return ; void sub312()/ 按编号查找 char M20; consumer *q;
22、 cout 请输入要查找用户的编号:M; 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 14 页,共 24 页 - - - - - - - - - if(head=NULL) load(); q=head; while(q!=NULL) if(strcmp(q-getnum(),M)=0) cout* 所查找用户的名称:getname()endl; cout* 用户的编号:getnum()endl; cout* 该用户所属类型:getkind()endl; cout* 该用户类型的
23、价格getprice()next; cout 该用户不存在!endl; return ; void sub32() /收费记录统计 char D20; cout*收费记录统计*endl; coutD; if(link=NULL) Cload(); charge *p=link; while(p!=NULL) if(strcmp(p-gettime(),D)=0) coutgetname() D的 用 水 量 为 :getvolumn()吨。 endl; cout本月水费:getmoney()*p-getvolumn()元。 endl; coutnext; else p=p-next; /* 主
24、函数 * 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 15 页,共 24 页 - - - - - - - - - int main() int i; char pwd10; int count=0; while(1) coutpwd; if(strcmp(pwd,water)!=0)/密码错误 cout密码错误,请重新输入!endl; count+; else break;/密码正确if(count = 3) cout密码已输错三次!请重新运行程序!endl; return 0;
25、 while(1)/ 主菜单 cout* 总管理系统*endl; cout*endl; cout 用户信息管理;*endl; cout 水费信息管理;*endl; cout 查询、统计;*endl; cout 存盘;*endl; cout 退出;*endl; cout*endl; couti; switch(i) case 1:sub1();break; case 2:sub2();break; case 3:sub3();break; case 4:save();Csave();break; case 0:return 0; 名师资料总结 - - -精品资料欢迎下载 - - - - - -
26、- - - - - - - - - - - - 名师精心整理 - - - - - - - 第 16 页,共 24 页 - - - - - - - - - 3 系统测试系统各功能的运行时界面及使用说明。1、程序运行主菜单图 7 主菜单3、收费管理功能图 8 收费管理菜单名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 17 页,共 24 页 - - - - - - - - - 4输入水费用户信息图 9 用户信息输入4、计算水费并输出图 10 计算并输出该用户水费信息名师资料总结 - -
27、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 18 页,共 24 页 - - - - - - - - - 6、存盘并返回上级菜单图 11 水费信息存盘7、查询和统计功能图 12 查询、统计菜单8、用户信息查询名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 19 页,共 24 页 - - - - - - - - - 图13 用户信息查询9、由名称查询图 13 由名称查询名师资料总结 - - -精
28、品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 20 页,共 24 页 - - - - - - - - - 10、由编号查询图 14 编号查询11、收费记录统计图15 收费记录统计名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 21 页,共 24 页 - - - - - - - - - 12 、存盘图 16 用户信息收费信息存盘13、退出系统图 17 退出系统名师资料总结 - - -精品资料欢迎下载
29、 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 22 页,共 24 页 - - - - - - - - - 4 小结在这次课程设计课程之前,学习C 语言和 C+过程中,我所遇到的都是一些简单的程序 ,写的也是些简单的函数程序,在实验课中才自己进行编写一些简单程序,以此巩固自己的基本知识,从中积累了些自己编程时间的知识。在这次 15、16 周的课程设计过程中,第一次接触复杂的程序,并且要自己进行编写和修改并运行测试, 从中学到了很多东西, 认识到以前对变成语言的认识不足,从中也看到了自己的很多不足,希望以后能去努力改正并多学
30、习。首先最重要的一点就是很难处理较复杂程序,看到一个程序后不知道该从哪方面着手,不懂得去分析这个程序及需要用到哪方面的知识,必须要在老师的知道下才能有些思路。 另外在分模块方面也遇到了不少麻烦,不知道如何划分模块, 并把整个程序的框架整理好,对这方面以后要重点学习加强。不过在这两周课程设计还是学到了不少东西,链表是这次课程设计中最重要的环节,通过这次学习, 基本掌握了链表的使用, 对文件的读写也有了一定的了解。还熟练掌握了流程图的制作以及截图操作,对Word 文档使用也比较的熟练了。在课程实际过程中, 花了不少时间, 学到了不少东西。 感谢易明老师在课程实际过程中的指导。名师资料总结 - -
31、-精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 23 页,共 24 页 - - - - - - - - - 5 参考文献课程设计过程中所查阅的书籍、网站等。1 谭浩强编著 .C 语言程序设计 .- 北京: 清华大学出版社,2000.1 (2007.5重印) .338 页2 陈维兴,林小茶编著 .C+面向对象程序设计 .-2版.- 北京:清华大学出版社, 2004.8(2007重印) .277 页3 刘振安等编著 .C+课程设计 .- 北京:机械工业出版社, 2007.1.224 页名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 24 页,共 24 页 - - - - - - - - -