水费管理系统设计论文1.docx
《水费管理系统设计论文1.docx》由会员分享,可在线阅读,更多相关《水费管理系统设计论文1.docx(31页珍藏版)》请在冰点文库上搜索。
水费管理系统设计论文1
计算机与信息工程学院
《数据库语言》课程设计说明书
(数据库方向)
班级:
计算机06-7班
学号:
姓名:
《数据库设计》课程设计任务书及综合评定
学生姓名:
班级:
计算机06-7班
专业:
E-Mail:
指导教师(签字):
起止时间:
设计题目名称
水费管理系统的设计
数据库名称
suifei
密码
无
设计主要内容及目标:
水费管理系统是典型的信息管理系统,提供从原始用户的水费基础数据的录入或每月用户水费基础数据的自动生成,到用户水费的计算、存储和显示,用户水费的简单查询,以及用户登录界面等核心功能。
系统前端开发工具采用MicrosoftVisualStudio2005,后台数据库采用SQLServer2000。
设计主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
水费管理系统是针对目前水费收缴困难麻烦等情况下设计出的管理软件,是一个实用的管理信息系统,管理员可以通过相应的模块,对数据库中的信息进行更新、删除和查询,对水费基本用量信息报表生成,对使用该系统的管理员信息进行更新、删除,还有操作员管理,权限设置,密码修改,数据备份与系统恢复等其他系统管理功能。
因为本系统具有高透明性,所以相关用户可以对水的使用缴费信息以及资费信息进行查询。
答辩及综合评定:
评阅教师(签字):
年月日
综合评定
成绩
教研室主任签字
摘要
水费管理系统是针对目前水费收缴困难麻烦等情况下设计出的管理软件,是一个实用的管理信息系统,管理员可以通过相应的模块,对数据库中的信息进行更新、删除和查询,对水的基本用量信息报表生成,对使用该系统的管理员信息进行更新、删除,还有操作员管理,权限设置,密码修改,数据备份与系统恢复等其他系统管理功能。
因为本系统具有高透明性,所以相关用户可以对水的使用缴费信息以及资费信息进行查询。
水费管理系统是典型的信息管理系统(MIS),该系统采用客户/服务器(C/S)体系结构,是目前计算机网络系统最先进的体系,其特点是把整个系统分成前台(客户机)和后台(主机)两个部分。
前台采用MicrosoftVisualStudio2005,后台数据库采用SQLServer2000。
对于前者要求建立起数据一致性和完整性强、数据安全性好的库。
而对于后者则要求应用程序功能完备,易使用等特点。
通过本系统的应用,可以加强对水电使用信息的管理,减轻管理员的工作负担,提高工作效率。
使用户可以更及时有效的查询并交纳水电费,实现水电缴费管理的科学化、现代化。
关键词:
水费管理系统,MicrosoftVisualStudio2005,SQLServer2000
第1章绪论
随着改革开放的深入发展,社会主义市场经济的建立,原始的收费系统为手工操作,不能及时有效的反映收缴的情况,而且不能跨地区收费,以及不能集中的管理给管理人员带来不必要的麻烦。
另外,以往用户交费必须到指定的地点进行,因此该系统的设计为用户带来了很大的便利,可以就近交费,也使用户及管理者节约了很多时间。
数据的统一集中也给小区的物业管理部门的管理分析以及领导者的决策带来了很大帮助。
水费管理系统是每一个水资源管理机构管理水资源用户及水费缴纳情况的不可缺少的一个管理信息系统,它的内容对于水资源管理机构的管理者来说是至关重要的,所以水费管理系统应该能够为每一个水资源管理机构的管理者提供充足的信息和快捷的查询手段,大大的方便水资源管理机构的管理者的合理管理。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对水资源用户及水费缴纳情况进行管理,具有着手工管理所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高水资源用户及水费缴纳情况管理的效率,也是水资源管理机构帐收费的科学化、正规化管理,与先进科学技术接轨的重要条件。
因此,开发这样一套管理软件成为很有必要的事情,对于我们即将计算机专业毕业的学生来说,也是一次将计算机应用于现实管理的一次很有意义的实践活动。
本系统采用客户/服务器(C/S)体系结构,客户/服务器体系结构的另一个特点是它的开放性,所谓开放性,即是在网络构成方面,可与多种软、硬件系统相连接,这就使得在前台端构成多种类客户机并存成为现实。
这样,在新旧系统更替时,可充分利用原有系统的软、硬件资源。
该系统功能较齐全,用户界面好,使用性强,可靠性好,明显提高用电与收费管理的工作效率。
总体技术达到省内行业先进水平,其中水费管理、语音查询功能达到省内行业先进水平,具有较好的推广和应用价值。
本设计主要分为五个阶段这其中包括:
需求分析阶段,概念模型设计阶段,逻辑设计阶段,物理设计阶段及系统测试阶段,介绍程序的测试方法和测试结果。
第2章需求分析
随着城市人口的增多,以及人民生活水平的提高,各种用电器大量涌入寻常百姓家,致使用用水量大涨,给水费收缴人员的管理带来了很大的不便,常常在自己的办公桌上着一叠叠得计录册,很难在其中进行查询及修改操作,为了减轻水费收缴人员的工作负荷,同时也为了方便用户对水用量及水收费情况的查询,我们决定设计一个应用软件系统也就是水费管理系统。
2.1建立数据库
建立水费管理系统的数据库,在这个数据库中建立这三表,它们分别是水费表、水价表、操作员表,并从中获得三个实体:
水费表:
用户编号、用户姓名、用户地址、抄表年月、水表编号、水表量程、水表倍率、上月读数、本月读数、外加水量、水价类型
水价表:
水价类型、水价名称、水价、起始年月、终止年月
操作员表:
操作员名称、出库药品类型、操作员密码、操作员级别
2.2访问、操作并连接数据库
这次水费管理系统一般按照以下三步曲进行:
首先,是建立与水费管理系统的数据库的连接。
其次,读取或查询数据库中记录,并显示在窗口中的各个可视控件中。
最后,编辑数据并提交,完成数据插入、修改或删除等各种操作。
以上三步完成以后,在进行与前台进行连接,在这之中,我们也可以进行数据的添加、修改、删除的操作,这样做可以完善数据库,同时,也要做水费管理系统的数据库备份,以便以后的操作。
2.3水费管理系统的结构图:
.
图2-1水费管理系统结构图
第3章数据库设计
数据库是一种存储数据并对数据进行操作的工具。
数据库的作用在于组织和表达信息,简而言之,数据库就是信息的集合。
计算机的数据库可以分为两类:
非关系数据库(flat-file)和关系数据库(relational)。
关系数据库中包含了多个数据表的信息,数据库含有各个不同部分的术语,象记录、域等。
新建一个数据库
创建任何一个数据库的第一步是仔细的规划数据库,设计必须是灵活的、有逻辑的。
创建一个数据库结构的过程被认为是数据模型设计。
1.标识需要的数据;
2.收集被标识的字段到表中;
3.标识主关键字字段;
4.绘制一个简单的数据图表;
5.规范数据;
6.标识指定字段的信息;
7.创建物理表。
修改已建的数据库
数据库的修改分为:
添加、编辑和删除记录。
这三种操作均可由VisualBasic创建的程序来完成,下面的章节将详细描述实现的具体方法。
实现数据库之间的联系
数据库之间的关系指明两个库之间共享一个共同的关键字值。
一个连接是指一种虚拟的表,这种表是在当用户要求从相互关联的各个不同的表中获取信息时建立的,关键字段用于在相互连接的不同表中查找匹配的记录。
一个更高级的连接形式称为自连接。
这种连接是指一个表被连接到它自己的一个字段,或在不同的纪录中由重复数据的组合字段。
数据库中有三种不同类型的关键字:
主关键字、组合关键字和外关键字。
在表中使用的关键字类型用于描述库表示什么以及在数据库中如何与其它的库建立关系。
3.1概念模型设计
根据水资源管理机构提供的水费管理信息,预测开发的管理系统的达到的功能如下:
第一部分:
系统用户管理
要求:
用户分四类:
超级用户[一切功能可用]、管理员[不可添加系统用户、修改用户密码]、收费员[仅可查询信息、收费功能]
第二部分:
水费管理
要求:
实现缴纳水费及查询缴费情况。
第三部分:
用户管理
要求:
实现编辑用户和浏览用户信息
第四部分环境设置
要求:
实现缴费月份及当前水价的设置
3.1.1水费管理系统E-R图
1.水费管理数据库设计
nm
nn
mm
图3-1水费管理
2.计费信息
图3-2计费信息
3.帐目信息
图3-3账目信息
4.资费信息库设计
图3-4资费管理
5.权限信息库设计
图3-5权限维护
6.水费基本信息库,资费信息库及权限信息库的相互关系
图3-6水量管理
3.2逻辑模型设计
水费管理系统数据库中各个表的设计结果如下面所示,每个表格表示在数据库中的一个表。
这些表单的创建为以后数据窗口的创建和设计提供最有利的前提和基础。
通过E/R模型到关系模型的转化,可以得到如下关系模式:
水费信息实体集转换关系为:
水费表(用户编号,用户姓名,用户地址,抄表年月,水表编号,水表量程,水表倍率,上月读数,本月读数,外加水量,水价类型)
水价实体集转换关系为:
水价表(水价类型,水价名称,水价,起始年月,终止年月)
操作员实体集转换关系为:
操作员表(操作员名称,出库药品类型,操作员密码,操作员级别)
3.3物理模型设计
用SQL实现设计实现该设计的环境为C#+SQLServer2000.
3.3.1建立水费表:
createtable水费表
(用户编号char(11),
用户姓名char(10),
用户地址varchar2(50),
抄表年月char(6),
水表编号char(10),
水表量程number(9,1)default9999.9notnullcheck(水表量程in(9999.9,99999.9,999999.9)),
水表倍率intdefault1notnull,
上月读数number(9,1)notnull,
本月读数number(9,1)default-1notnull,
外加水量number(9,0)default0notnull,
本月水量number(9,0)default0,
水价类型number(2,0)default1notnullcheck(水价类型>=1and水价类型<=50),
本月水费number(9,2)default0.00,
primarykey(用户编号,抄表年月)
3.3.2建立水价表:
createtable水价表
(水价类型number(2,0)default1check(水价类型>=1and水价类型<=50),
水价名称char(20),
水价number(9,3)default0.000notnull,
起始年月char(6),
终止年月char(6),
primarykey(水价类型,起始年月,终止年月)
3.3.3建立游标和存储过程
--游标(本月参数生成)
DECLARE
v_本月抄表年月char(6):
='&本月抄表年月';
v_上月抄表年月char(6);
v_用户编号水费表.用户编号%TYPEDEFAULT'1';
v_用户姓名水费表.用户姓名%TYPE;
v_用户地址水费表.用户地址%TYPE;
v_水表编号水费表.水表编号%TYPE;
v_水表量程水费表.水表量程%TYPEDEFAULT9999.9;
v_水表倍率水费表.水表倍率%TYPEDEFAULT1;
v_本月读数水费表.上月读数%TYPEDEFAULT0;
v_水价类型水费表.水价类型%TYPEDEFAULT1;
BEGIN
IFsubstr(v_本月抄表年月,5,2)>='02'andsubstr(v_本月抄表年月,5,2)<='12'THEN
v_上月抄表年月:
=TO_CHAR(TO_NUMBER(v_本月抄表年月)-1);
ELSE
v_上月抄表年月:
=TO_CHAR(TO_NUMBER(SUBSTR(v_本月抄表年月,1,4))-1)+'12';
ENDIF;
DECLARE
CURSORcur_水费表IS
SELECT用户编号,用户姓名,用户地址,水表编号,水表量程,水表倍率,本月读数,水价类型FROM水费表WHERE抄表年月=v_上月抄表年月;
BEGIN
deletefrom水费表where抄表年月=v_本月抄表年月;
OPENcur_水费表;
LOOP
FETCHcur_水费表INTOv_用户编号,v_用户姓名,v_用户地址,v_水表编号,v_水表量程,v_水表倍率,v_本月读数,v_水价类型;
EXITWHENcur_水费表%NOTFOUND;
INSERTINTO水费表(用户编号,用户姓名,用户地址,抄表年月,水表编号,水表量程,水表倍率,上月读数,本月读数,外加水量,水价类型)
VALUES(v_用户编号,v_用户姓名,v_用户地址,v_本月抄表年月,v_水表编号,v_水表量程,v_水表倍率,v_本月读数,-1,0,v_水价类型);
ENDLOOP;
CLOSEcur_水费表;
END;
END;
--select用户姓名,水表倍率,上月读数,本月读数,外加水量,本月水量,本月水费,抄表年月,水价类型from水费表;
--存储过程(本月水量水费计算)
createorreplaceprocedurecaculate_sf(v_nianyueinchar)
as
begin
update水费表set本月水量=(本月读数-上月读数)*水表倍率+外加水量
where本月读数>=上月读数and本月读数<>-1and抄表年月=v_nianyue;
update水费表set本月水量=(水表量程-上月读数+本月读数+0.1)*水表倍率+外加水量
where本月读数<上月读数and本月读数<>-1and抄表年月=v_nianyue;
update水费表set本月水费=本月水量*(select水价from水价表where水价表.水价类型=水费表.水价类型
and抄表年月>=起始年月and抄表年月<=终止年月)where本月水量>=0and抄表年月=v_nianyue;
end;
--执行存储过程
executecaculate_sf('200701');
第4章系统具体实现
4.1程序运行时用户管理界面:
流程图:
4.2查询用户模块界面:
流程图:
图4-2查询用户界面
4.3管理员界面
图4-3管理信息
4.4数据库的备份实现
图4-4查询库存药品信息
4.5日历查询界面:
图4-5查询出库药品信息
第5章结论
水费管理系统是每一个水资源管理机构管理水资源用户及水费缴纳情况的不可缺少的一个管理信息系统,它的内容对于水资源管理机构的管理者来说是至关重要的,所以水费管理系统应该能够为每一个水资源管理机构的管理者提供充足的信息和快捷的查询手段,大大的方便水资源管理机构的管理者的合理管理。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对水资源用户及水费缴纳情况进行管理,具有着手工管理所无法比拟的优点,如:
检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高水资源用户及水费缴纳情况管理的效率,也是水资源管理机构帐收费的科学化、正规化管理,与先进科学技术接轨的重要条件。
水费管理系统是一个实用的管理信息系统,管理员可以通过相应的模块,对数据库中的信息进行更新、删除和查询,对水的基本用量信息报表生成,对使用该系统的管理员信息进行更新、删除,还有操作员管理,权限设置,密码修改,数据备份与系统恢复等其他系统管理功能。
因为本系统具有高透明性,所以相关用户可以对水的使用缴费信息以及资费信息进行查询。
第6章总结
水费管理系统是针对目前水费收缴困难麻烦等情况下设计出的管理软件,是一个实用的管理信息系统,管理员可以通过相应的模块,对数据库中的信息进行更新、删除和查询,对水的基本用量信息报表生成,对使用该系统的管理员信息进行更新、删除,还有操作员管理,权限设置,密码修改,数据备份与系统恢复等其他系统管理功能。
因为本系统具有高透明性,所以相关用户可以对水的使用缴费信息以及资费信息进行查询。
在此期间本人阅读了大量C#及管理信息系统的教程,收获非浅,比如:
之前本人对DATA及ADOBC控件不熟悉,通过这次毕业设计,我能熟练的操作这两个控件;再比如说在用COMBO控件时不知道如何向其中添加列表项,走了许多弯路,查询了众多资料,最后终于找到了一种捷径的方法,解决了我设计中的一大难题。
因此,在本次的课程设计中,为搞清控件的使用方法、编程的各个难点、掌握面向对象的编程思想,本人查过相关的教材、查询过相关的网站、请教过指导教师。
在摸索中学习,在困惑中探索,终于探究了一套较好的学习面向对象的程序设计的方法。
但是由于课程设计时间较短,所以该系统还有许多不尽如人意的地方,比如联机文档比较少,用户界面不够美观,出错处理不完善等多方面问题。
这些都有待进一步改善。
参考文献
1闪四清.《数据库系统原理与应用教程》清华大学出版社,2003:
6-10
2微软公司.《MicrosoftSQLServer2000》北京电子出版社,2002:
8-10
3萨师煊、王珊.《数据库系统理论》高等教育出版社,2000.2:
6-10
4薛华成《管理信息系统》清华大学出版社9-16
5杨文龙《软件工程》电子工业出版社11-13
附录
用户管理的代码如下:
namespaceSQLpractice
{
publicpartialclass添加用水户:
Form
{
public添加用水户()
{
InitializeComponent();
}
privatevoidbutton1_Click(objectsender,EventArgse)
{
intpos=Form1.messageG.IndexOf("");
//-----------------------------------------------------------------------------
connection5=newSqlConnection(@"DataSource=(local);IntegratedSecurity=SSPI;"+
"InitialCatalog="+Form1.messageG.Substring(0,pos));
//从第一个from1的textBox1中得到要用到的数据库的名字.
connection5.Open();
//连接数据库
//-----------------------------------------------------------------------------
stringstr1="insertinto水费表values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"',200809,'"+textBox5.Text+"',9999.9,10,-1,0,0,0,'"+textBox5.Text+"',0,0)";
SqlCommandmycom=newSqlCommand(str1,connection5);
mycom.ExecuteNonQuery();
MessageBox.Show("添加成功");
}
}
}
管理员代码如下:
namespaceSQLpractice
{
publicpartialclassForm4:
Form
{
publicboolmodifi=false;
publicForm4()
{
InitializeComponent();
}
privatevoid添加管理员ToolStripMenuItem_Click(objectsender,EventArgse)
{
Form3f3=newForm3();
f3.Show();
}
privatevoidForm4_Load(objectsender,EventArgse)
{
intpos=Form1.messageG.IndexOf("");
connection4=newSqlConnection(@"DataSource=(local);IntegratedSecurity=true;"+
"InitialCatalog="+Form1.messageG.Substring(0,pos));
//从第一个from1的textBox1中得到要用到的数据库的名字.
connection4.Open();
//连接数据库
//-----------------------------------------------------------------------------
SqlCommandcommand=connection4.CreateCommand();
command.CommandText="SELECT*FROM操作员档案";
//建立数据库命令列表
inform=newSqlDataAdapter();
inform.SelectCommand=command;
cb=newSqlCommandBuilder(inform);
//实例化SqlCommandBuilder对象否则无法进行数据刷新
this.dataSet1.Clear();
inform.Fill(dataSet1,"操作员档案");
//找到数据集dataSet1就是找到了一个可以接水的容器
dataGrid1.SetDataBinding(dataSet1,"操作员档案");
label1.DataBindings.Add("Text",dataSet1,"操作员档案.操作员名称");
textBox2.DataBindings.Add("Text",dataSet1,"操作员档案.操作员密码");
textBox3.D