版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数学与计算机学院课程设计说明书课程名称:软件工程课程设计课程代码:8404131题目:自来水收费管理系统年级/专业/班:09级软件工程四班学生姓名:学号:开始时间:2011年05月27日完成时间:2011年06月12日课程设计成绩:学习态度及平时成绩(30)技术水平与实际能力(20)创新(5)说明书(计算书、图纸、分析报告)撰写质量(45)总分(100)指导教师签名:年月日软件工程课程设计任务书学院名称:数学与计算机学院课程代码:___8404131_______专业:软件工程年级:09级一、设计题目自来水收费管理二、主要内容用户管理、抄表数据录入、用户缴费、各项信息统计查询等多个方面。三、具体要求及应提交的材料1、完成系统的需求分析通过需求分析确定系统需要处理的数据的需求,要求使用数据库的辅助设计工具(PowerDesigner等),建立业务处理模型2、完成系统概念结构设计 概念数据模型(CDM)用于完成数据库的设计,与人和数据库平台和具体数据存储结构和工具无关。首先选择局部应用画出分E-R图,最终形成系统的E-R图3、完成系统逻辑结构设计按照E-R图转换成关系模式的规则,将CDM转换成逻辑数据模型,并为每个关系模式实际主键、外键。分析关系模式中的依赖关系,对关系模式规范化处理4、完成系统物理结构设计为每个关系分配存储长度,建立数据库的索引和视图,定义关系中的主码和外码,写出关系创建和查询的SQL语句。 5、编码 选择你自己熟悉的开发工具完成一个DBS系统的编码工作。 应上交的材料: 1、课程设计报告 2、程序源代码清单四、主要技术路线提示 1、面向对象分析方法,认真阅读相关知识,完成系统的功能分析和系统设计 2选用ACCESS作为DBMS, 3选用你熟悉的语言完成数据库的读写操作 如java通过ODBCJDBC桥完成数据库的操作简单代码: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connectioncon=DriverManager.getConnection("jdbc:odbc:student","",""); Statementstmt=con.createStatement(); ResultSetrs=stmt.executeQuery("SELECT*FROMstu"); while(rs.next()) System.out.println(rs.getString("name")); rs.close(); stmt.close(); con.close();五、进度安排 1、第一周完成系统分析和设计,并进行程序开发 2、第二周完成程序开发,进行测试并分析结果,最后撰写课程设计报告六、推荐参考资料(不少于3篇)1张海藩.软件工程导论.北京:清华大学出版社,20042陈明.实用软件工程基础.北京:清华大学出版社,20033殷人昆.实用软件工程.北京:清华大学出版社,2003指导教师签名日期年月日系主任审核日期年月日
目录1前言 72需求分析 7需求概要 72.1功能分析 7用户管理 7抄表管理 7水费管理 7统计查询 8系统维护 82.2方案分析 8各角色的用例图 8用户用例图 8管理员用例图 8操作示意图 9用户操作示意图 9管理员操作示意图 103概要设计 103.1数据结构 103.2逻辑结构与物理结构 133.3功能模块划分 13抽象数据类定义 154详细设计 154.1数据类型定义 154.2主要模块内部设计 17模块1设计(实际写时用本题目对应的模块名称) 174.2.2模块2设计(实际写时用本题目对应的模块名称) 204.2.3模块3设计(实际写时用本题目对应的模块名称) 23源代码: 245实现与调试分析 255.1实现环境 255.2语言选择 25调试分析 256测试分析 256.3性能分析 277用户手册 28总结 28参考文献 28
1前言随着科学技术的发展,社会进步,计算机迅速的发展,自来水收费的方法也日新月异,以前全是由人管理的方法现存在很多的缺点:管理效率低,劳动强度大,信息处理速度低而且准确率也不够令人满意。为了提高自来水收费管理效率,减轻劳动强度提高,信息处理速度和准确性;为自来水公司提供更方便、科学的服务项目。为他们提供的一种更先进、科学的服务系统。于是我们便选择了由计算机来设计一个自来水收费管理系统的方案。让计算机对自来水收费进行自动管理,自来水公司可以直接在计算机上实现关于自来水的一些信息管理,并能在一定程度上实现自动化。我们在现行系统初步调查的基础上提出了新系统目标,即新系统建立后所要求达到的运行指标,这是系统开发和评价的依据。2需求分析需求概要针对在收费过程中出现的各类问题,我对该自来水公司从自身特点出发设计一个自来水收费管理系统,系统主要包含用户管理,抄表管理,水费管理,统计查询和系统维护。2.1功能分析用户管理用户管理模块是系统的基本功能模块,管理员能够实现对用户的基本信息档案及用户表计的设置和管理,能够添加或删除用户。抄表管理抄表管理模块提供了对手工抄表数据的采集录入功能。水费管理水费管理模块是该收费系统的核心模块,它主要是对抄表数据进行加工处理,并根据用户用水性质计算水量和水费,打印水费通知单。并能提供用户上月用水和本月用水情况的查询。统计查询可进行损漏统计分析,生成统计分析图;
能进行日供水、周供水、月供水统计分析及查询用户任何一个月的用水情况;从而支持领导办公。实现办公的现代化。系统维护该模块提供了操作员的权限管理,并提供系统备份、恢复、修复、报告等功能,以确保系统稳定安全。通过以上几个模块从而实现自来水收费过程的自动化管理。满足了当前该县供水收费的需要,使供水企业能够合理、及时、准确的收费,保证供水业务正常进行2.2方案分析各角色的用例图用户用例图
图STYLEREF1\s2SEQ图表\*ARABIC\s11用户用例图管理员用例图图STYLEREF1\s2SEQ图表\*ARABIC\s12管理员用例图操作示意图用户操作示意图图STYLEREF1\s2SEQ图表\*ARABIC\s13用户操作示意图管理员操作示意图图STYLEREF1\s2SEQ图表\*ARABIC\s14管理员操作示意图3概要设计3.1数据结构分析画出自来水收费的数据流图,根据数据流图可以知道自来水公司和各个终端用户,其中可以查询用户信息和关于自来水使用和缴费的一些信息。说明:自水公司可根据自来水收费管理软件完成自来水信息的录入、并且完成缴费清单,自来水管理系统可以根据自来水价格和水表度数打印水费单,发放清单给用户。E-R图相关设计:公司公司公司名称公司地址联系公司名称公司地址联系图3.2公司实体用户用户用户登录帐号用户消费信息用户用户地址用户名用户登录帐号用户消费信息用户用户地址用户名图用户实体图公司管理员公司管理员管理员联系方式管理员编号管理员登录帐号管理员联系方式管理员编号管理员登录帐号图公司管理员实体密码帐号地址密码帐号地址编号编号事务管理员公司1n事务管理员公司m名称管理系统名称管理系统用户n用户帐号地址帐号地址用户名消费用户名消费3.2逻辑结构与物理结构通过上述E-R图的相关分析,现在将E-R图转换成实体关系模型:公司实体(公司名称,公司地址,公司联系)用户实体(用户名称,用户地址,用户,用户消费情况,用户登录帐号)公司管理员实体(管理员帐号,管理员编号,管理员联系)3.3功能模块划分3.3.系统结构框图:自来水收费系统自来水收费系统信息查询水费管理抄表管理用户管理信息查询水费管理抄表管理用户管理各个模块描述:用户管理:管理用户,增加用户或者删除用户。抄表管理:记录水表度数录入系统。水费管理:记录用户消费信息。信息查询:查询用户消费信息。程序流图开始开始管理员?管理员?NY输入用户名和密码输入用户名和密码输入用户名和密码输入用户名和密码查询消费信息查询消费信息打印缴费单删除用户增加用户打印缴费单删除用户增加用户模块功能分析及外部设计自来水收费管理系统:用于记录智能增加、删除自来水公司用户,并且记录用户每个月的消费信息和缴纳水费,管理员可以增删用户,打印用户水费单,用户可以登录系统查询用户消费信息。用户管理功能:管理员可以通过此功能增加或者删除用户,管理自来水公司的各个用户。抄表功能:抄表员抄表之后,管理员将数据录入系统,记录用户当月消费情况。水费管理功能:管理员根据水费价格和录入的抄表数据,系统自动得出用户所需缴纳的水费。系统查询功能:用户可以根据此功能查询抄表数据和所需缴纳水费。classuser{public:user*next;public:stringaddr;//用户地址longnum;//用户编号};4详细设计4.1数据类型定义classuser{public:user*next;public:stringaddr;//用户地址longnum;//用户编号voidplay(){cout<<"用户的地址是"<<addr<<"用户的编号是"<<num<<endl;};user(stringsaddr,longsnum){addr=saddr;num=snum;}};classcla{public:cla()//构造函数{s=0;sload();}~cla()//析构函数{user*p;p=s;while(p){p=p->next;deletes;s=p;}s=0;}voidsadd();//添加voidsremove();//删除voidsamend();//修改voidmanagement();//水费管理voidssearch();//查询voidssave();//保存voidsload();//读取private:user*s;//头接点};4.2主要模块内部设计模块1设计(实际写时用本题目对应的模块名称).1模块算法管理员登录自来水管理系统之后,可以增加、删除用户,并且可以根据自来水管理系统查询用户的详细信息。并且将用户的一系列详细信息保存在文件之中。.2流程图开始开始输入用户名、密码输入用户名、密码NoYes查看用户信息删除用户增加用户查看用户信息删除用户增加用户结束结束源代码:voidcla::sadd()//添加{user*q;stringaddr1;longnum1;system("cls");cout<<"\n**增加的用户**\n"<<endl;cout<<"请输入用户的(中间用空格间隔)"<<endl;cout<<"用户地址用户编号:"<<endl;cin>>addr1>>num1;q=newuser(addr1,num1);q->next=0;if(s){user*t;t=s;if(t->num==num1){cout<<"用户编号已存在,请重新输入"<<endl;return;}while(t->next){if(t->num==num1){cout<<"用户编号已存在,请重新输入"<<endl;return;}t=t->next;}t->next=q;}else{s=q;}cout<<"输入完毕"<<endl;}voidcla::sremove()//删除{system("cls");intnum1;cout<<"\n**删除用户信息**\n";cout<<"请输入想要删除用户的编号:";cin>>num1;//查找要删除的结点user*p1,*p2;p1=s;while(p1){if(p1->num==num1)break;else{p2=p1;p1=p1->next;}}//删除结点if(p1!=NULL)//若找到结点,则删除{p1->play();cout<<"确定删除吗?[Y/N]"<<endl;charc;cin>>c;if(toupper(c)!='Y')return;if(p1==s)//若要删除的结点是第一个结点{s=p1->next;deletep1;}else//若要删除的结点是后续结点{p2->next=p1->next;deletep1;}cout<<"找到用户编号为"<<num1<<"的用户,并删除\n";}else//未找到结点cout<<"未找到想要删除用户!\n";}4.2.2模块2设计(实际写时用本题目对应的模块名称)模块算法:管理员通过抄表员的抄表数据和自来水单价,可以得出用户本月应该缴纳的自来水水费,并且可以打印缴费单,用户可以根据此缴费单查询用户本月消费情况并且缴费。开始开始正确登录?正确登录?Noyes输入单价和抄表数据输入单价和抄表数据得出用户当月应缴水费得出用户当月应缴水费打印缴费单打印缴费单结束结束源代码:voidcla::management(){system("cls");longprice,read,sum;cout<<"请输入自来水价格"<<endl;cin>>price;cout<<"请输入抄表度数"<<endl;cin>>read;sum=price*read;cout<<"应缴纳水费"<<sum;}模块3设计(实际写时用本题目对应的模块名称)开始开始正确登录?No正确登录?yes录入用户信息录入用户信息保存吗?保存吗?Noyes保存用户信息保存用户信息结束结束源代码:voidcla::ssave()//保存到文件{system("cls");charc;cout<<"\n保存用户信息(将覆盖原文件),是否继续?[Y/N]:";cin>>c;if(toupper(c)!='Y')return;ofstreamtfile("date.txt",ios_base::binary);user*p=s;while(p)//写入文件{tfile<<p->addr<<"\t"<<p->num<<"\t"<<p->sum;tfile<<endl;p=p->next;}tfile.close();cout<<"保存完毕..."<<endl;}5实现与调试分析5.1实现环境硬件:装有WindowsXP的微型计算机。软件:MicrosoftVisualC++6.0。5.2语言选择本系统采用面向对象C++语言设计,实现较为方便。5.3调试分析在本程序的调试中发现了一些隐蔽的错误:例如:当用户编号已经存在的时候,输入同样的编号却可以输入用户。当添加这段代码之后就不能输入相同编号的用户了:if(t->num==num1){cout<<"用户编号已存在,请重新输入"<<endl;return;}while(t->next){if(t->num==num1){cout<<"用户编号已存在,请重新输入"<<endl;return;}6测试分析6.1测试用例以及测试结果:功能模块正确输入预期结果错误输入预期结果测试结果添加新用户管理员帐号:输入管理员身份证号管理员密码:输入管理员预设密码正确登陆管理员帐号:错误输入(正确输入)管理员密码:正确输入(错误输入)对不起!输入错误,请重新输入!性能正常删除用户管理员帐号输入管理员身份证号管理员密码:输入管理员预设密码正确登陆管理员帐号错误输入(正确输入)管理员密码:正确输入(错误输入)对不起!输入错误,请重新输入!性能正常修改用户信息管理员帐号输入管理员身份证号管理员密码:输入管理员预设密码正确登陆管理员帐号错误输入(正确输入)管理员密码:正确输入(错误输入)对不起!输入错误,请重新输入!性能正常用户水费管理管理员帐号输入管理员身份证号管理员密码:输入管理员预设密码用户帐号:123456用户密码:123正确输入管理员帐号错误输入(正确输入)管理员密码:正确输入(错误输入)用户帐号:其它帐号用户密码:其它密码对不起!输入错误,请重新输入!输入错误,请重新输入!性能正常查询用户信息管理员帐号输入管理员身份证号管理员密码:输入管理员预设密码正确输入管理员帐号错误输入(正确输入)管理员密码:正确输入(错误输入)对不起!输入错误,请重新输入!性能正常保存至文档管理员帐号:123456用户密码:123正确输入管理员帐号其它帐号用户密码:其它密码对不起!输入错误,请重新输入!性能正常6.3性能分析采用黑盒测试分析方法,黑盒测试法用于测试软件功能,经测试之后,性能如下:添加新用户:管理员通过此功能完成新用户的添加工作。删除用户:管理员通过此功能可以完成删除已经不存在的用户。修改用户信息:管理员通过此功能完成对已经存在的用户信息的修改工作。用户水费管理:管理员通过此功能可以录入抄表数据,计算用户本月消费信息并且可以打印报表,用户通过此功能可以查询本月消费等方面的信息。查询用户信息:管理员通过此功能可以查询用户的信息,用户编号、住址等。保存至文档:管理员通过此功能可以保存用户信息至文档。由于技术上的限制,只能做出如此简单的系统,系统虽简单,但是基本能完成自来水管理方面的信息,还无法设计登录界面的问题,但是通过此次实训,了解了很多制作软件的流程,希望以后能够制作出更加精致的系统。7用户手册管理员方面:管理员需注意,登录系统的时候,管理员帐号需采用管理员身份证号码,管理员密码由管理员设置。正确登录之后方可进入管理员管理界面。用户方面:用户需注意,用户帐号乃系统自动设置,帐号是123456,用户密码是123三位数,其它帐号和密码均不能登录此系统。总结本系统是自来水收费管理系统,能智能实现自来水收费方面的功能,自来水公司管理员可以实现管理用户功能,用户申报许可之后,管理员可以添加用户,当用户不存在的时候,管理员可以通过此系统删除用户,还可以查询用户方面的信息,并且将用户的一些信息保存之文档之中。此系统可以在装有WindowsXP的微型计算机上实现。采用的语言是VisualC++面向对象语言。通过本次课程设计,了解了很多软件设计的流程。虽然运用的时候还是有一些生疏,但是还是能大致完成。希望通过本次课程设计能为自来水管理方面出一份力。在这次实训中,获得了很多制作经验,但是需要知道,系统还是不完善了,由于能力有限,因此还有待完善。参考文献1张海藩.软件工程导论.北京:清华大学出版社,20042陈明.实用软件工程基础.北京:清华大学出版社,20033殷人昆.实用软件工程.北京:清华大学出版社,2003#include<iostream>#include<iomanip>#include<fstream>#include<string>usingnamespacestd;classuser{public:user*next;public:stringadd;//地址longnum;//编号intx,y,z;//月份,用水量,自来水价格voidplay(){cout<<add<<"编号是"<<num<<endl;};user(stringsadd,longsnum,intsx,intsy,intsz){add=sadd;num=snum;x=sx;y=sy;z=sz;}};classcla{public:cla()//构造函数{stu=0;sload();}~cla()//析构函数{user*p;p=stu;while(p){p=p->next;deletestu;stu=p;}stu=0;}voidsadd();//添加voidsremove();//删除voidsamend();//修改voidssearch();//查询voidssave();//保存voidsload();voidsmoney();//用户水费计算private:user*stu;//头接点};voidcla::smoney()//用户水费计算{user*p1,*p2;p1=stu;longnum1;intx1;//消费月份system("cls");cout<<"请输入用户编号"<<endl;cin>>num1;cout<<"请输入用户用水月份"<<endl;cin>>x1;while(p1){if(p1->num==num1&&p1->x==x1)break;else{p2=p1;p1=p1->next;}}if(p1!=NULL&&p1->num==num1&&p1->x==x1){p1=p1->next;cout<<"此月用户缴纳水费是:"<<p1->y*p1->z<<endl;cout<<"计算完毕"<<endl;}}voidcla::sadd()//添加{user*q;stringadd1;longnum1;intx1,y1,z1;system("cls");cout<<"\n**增加的用户**\n"<<endl;cout<<"请输入用户的(中间用空格间隔)"<<endl;cout<<"地址编号月份用水量自来水价格:"<<endl;cin>>add1>>num1>>x1>>y1>>z1;q=newuser(add1,num1,x1,y1,z1);q->next=0;if(stu){user*t;t=stu;if(t->x==x1&&t->num==num1){cout<<"该用户该月份已存在,请重新输入"<<endl;return;}while(t->next){if(t->x==x1&&t->num==num1){cout<<"该用户该月份已存在,请重新输入"<<endl;return;}t=t->next;}t->next=q;}else{stu=q;}cout<<"输入完毕"<<endl;}voidcla::sremove()//删除{system("cls");intnum1;intx1;cout<<"\n**删除用户信息**\n";cout<<"请输入想要删除用户编号:";cin>>num1;cout<<"请输入需要删除的该用户月份"<<endl;cin>>x1;//查找要删除的结点user*p1,*p2;p1=stu;while(p1){if(p1->num==num1&&p1->x==x1)break;else{p2=p1;p1=p1->next;}}//删除结点if(p1!=NULL&&p1->num==num1&&p1->x==x1)//若找到结点,则删除{p1->play();cout<<"确定删除吗?[Y/N]"<<endl;charc;cin>>c;if(toupper(c)!='Y')return;if(p1==stu)//若要删除的结点是第一个结点{stu=p1->next;deletep1;}else//若要删除的结点是后续结点{p2->next=p1->next;deletep1;}cout<<"找到编号为"<<num1<<"的用户,并删除该月份的信息\n";}else//未找到结点cout<<"未找到想要删除的用户!\n";}voidcla::samend()//修改{system("cls");longnum1;intx1;cout<<"\n**修改用户信息**\n";cout<<"输入要修改用户的编号";cin>>num1;cout<<"请输入该用户月份"<<endl;cin>>x1;//查找要修改的结点user*p1,*p2;p1=stu;while(p1){if(p1->num==num1&&p1->x==x1)break;else{p2=p1;p1=p1->next;}}if(p1!=NULL&&p1->num==num1&&p1->x==x1){cout<<"编号是"<<num1<<"月份是"<<p1->x<<"的用户的信息"<<endl;cout<<"地址"<<p1->add<<"用水量"<<p1->y<<"水价"<<p1->z<<endl;cout<<"请输入修改后的信息:用户地址月份用水量水价"<<endl;cin>>p1->add>>p1->x>>p1->y>>p1->z;cout<<"修改成功"<<endl;}else//未找到接点cout<<"未找到!\n";}voidcla::ssearch()//查询{system("cls");cout<<"\n**查询用户信息**\n"<<endl;cout<<"请输入查询方式:"<<endl;cout<<"1.按编号查询"<<endl;cout<<"2.按用户地址查询"<<endl;cout<<"3.返回"<<endl;charc;cin>>c;switch(c){case'1':{longnum1;intx1;cout<<"要查询的用户编号"<<endl;cin>>num1;cout<<"要查询的用户月份"<<endl;cin>>x1;//查找要查询的结点user*p1,*p2;p1=stu;while(p1){if(p1->num==num1&&p1->x==x1)break;else{p2=p1;p1=p1->next;}}if(p1!=NULL&&p1->num==num1&&p1->x==x1){cout<<"编号是"<<num1<<"的用户,月份是"<<p1->x<<"月。该用户的消费的信息"<<endl;cout<<"地址是:"<<p1->add<<"用水量是:"<<p1->y<<"吨缴纳的水费是:"<<p1->z*p1->y<<"元"<<endl;p1=p1->next;cout<<"查询完毕"<<endl;}else//未找到接点cout<<"未找到!\n";break;}case'2':{stringadd1;intx1;cout<<"要查询的用户地址"<<endl;cin>>add1;cout<<"请输入你需要查询的月份"<<endl;cin>>x1;//查找要查询的结点user*p1,*p2;p1=stu;while(p1){if(p1->add==add1&&p1->x==x1)break;else{p2=p1;p1=p1->next;}}if(p1!=NULL&&p1->add==add1&&p1->x==x1){cout<<add1<<"的用户"<<p1->x<<"月的消费信息是"<<endl;cout<<"编号:"<<p1->num<<"用水量:"<<p1->y<<"吨缴纳的水费是:"<<p1->z*p1->y<<"元"<<endl;p1=p1->next;cout<<"查询完毕...";}else//未找到接点cout<<"未找到!\n";break;}case'3':return;}}voidcla::ssave()//保存到文件{system("cls");charc;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汽车维修知识培训课件
- 羽绒生产知识培训课件
- 危险化学品企业特殊作业习题
- 中国青少年生殖健康可及性调查基础数据报告
- 二零二五年度会展中心场地租赁与展会服务合同3篇
- 二零二五年度快手电商内容创作者扶持协议3篇
- 二零二五年度技术转让合同标的和技术内容5篇
- 二零二五年度合伙购置住宅合伙合同6篇
- 二零二五年度互联网企业劳动合同劳动报酬保障合同3篇
- Unit2 第一课时 SectionA (1a-1d)说课稿 2024-2025学年人教版(2024)七年级英语上册
- 江西省稳派教育2025届数学高二上期末教学质量检测模拟试题含解析
- 八年级历史上册(部编版)第六单元中华民族的抗日战争(大单元教学设计)
- 2022-2023学年北京市海淀区高二(上)期末英语试卷(含答案解析)
- 2021-2022学年统编本五四制道德与法治五年级上册期末检测题及答案(共6套)
- (BRB)屈曲约束支撑施工专项方案
- 期末达标测试卷(试题)-2024-2025学年人教PEP版英语四年级上册
- 高职机电专业《液压与气动技术》说课稿
- 青岛版四年级上册简便计算400道及答案
- 员工积分制管理实施方案细则
- GB/T 19752-2024混合动力电动汽车动力性能试验方法
- 大湾区2023一2024学年第一学期末普通高中一年级联合考试地理附有答案
评论
0/150
提交评论