数据库课程设计—某自来水公司收费系统
- 格式:doc
- 大小:568.00 KB
- 文档页数:15
数据库课程设计某电力公司收费系统数据库课程设计题目某电力公司收费管理信息系统专业班级姓名学号完成日期 2013-12-18地址 varchar(50),联系方式 char(10));插入数据:Insert into 客户 values('00001','张三','市南区','0000000'); Insert into 客户 values('00002','李四','黄岛区','0000002'); Insert into 客户 values('00003','王五','崂山区','0000003'); Insert into 客户 values('00004','赵兰','城阳区','0000004'); Insert into 客户 values('00005','李青','黄岛区','0000005'); Insert into 客户 values('00006','张倩','市南区','0000001');2.用电类型表Create table 用电类型(类别号 char(10) PRIMARY KEY,类别名 varchar(50),电价 money);插入数据:Insert into 用电类型 values('ABC','家庭','1.00');Insert into 用电类型 values('ABD','政府','2.00');Insert into 用电类型 values('ABE','工厂','1.50');Insert into 用电类型 values('ABF','学校','2.50');Insert into 用电类型 values('ABG','医院','0.50');3.员工表Create table 员工(员工号 char(5) PRIMARY KEY,姓名 char(20),性别 char(10),联系方式 char(20));插入数据:Insert into 员工 values('12345','李丽','女','1230000'); Insert into 员工 values('12346','王华','男','1230002'); Insert into 员工 values('12347','张悦','女','1230003');4.用电信息表Create table 用电信息(客户号 char(5) ,类别号 char(10) ,月份 date ,用电度数 char(8),primary key (客户号,类别号,月份),foreign key (客户号) references 客户(客户号),foreign key (类别号) references 用电类型(类别号));Insert into 用电信息 values('00001','ABC','2013-12-01','100'); Insert into 用电信息 values('00001','ABE','2013-12-01','220'); Insert into 用电信息 values('00002','ABC','2013-12-01','110'); Insert into 用电信息 values('00003','ABE','2013-11-01','125'); Insert into 用电信息 values('00003','ABE','2013-12-01','105'); Insert into 用电信息 values('00004','ABC','2013-12-01','200'); Insert into 用电信息 values('00005','ABC','2013-12-01','102'); Insert into 用电信息 values('00006','ABC','2013-12-01','100');5.费用管理Create table 费用管理(客户号 char(5) ,月份 date ,费用 money,收费标志 varchar(50),PRIMARY KEY (客户号,月份),foreign key (客户号) references 客户(客户号));6.收费登记Create table 收费登记(客户号 char(5),月份 date ,应收费用 money,实收费用 money,员工号 char(5),PRIMARY KEY (客户号,月份),foreign key (员工号) references 员工(员工号));7.结余登记Create table 结余登记(客户号 char(5),月份 date ,应收费用 money,实收费用 money,结余费用 money,PRIMARY KEY (客户号,月份));4.创建触发器触发器1:计算费用create trigger change_trigger1on 用电信息for insertasinsertinto 费用管理 (客户号,月份,费用)SELECT inserted.客户号,inserted.月份,inserted.用电度数*(select 电价from 用电类型,inserted where 用电类型.类别号=inserted.类别号) FROM inserted;触发器2:未收标志create trigger change_trigger on 费用管理for insertasupdate 费用管理 set 收费标志='未收';触发器3:已收标志create trigger change_trigger3on 收费登记for updateasupdate 费用管理 set 收费标志='已收'from 费用管理,insertedwhere 费用管理.客户号=inserted.客户号 and 费用管理.月份=inserted.月份;触发器4:结余登记create trigger change_trigger4on 收费登记for updateasinsert into 结余登记select inserted.客户号, inserted.月份,inserted.应收费用,inserted.实收费用,inserted.实收费用-inserted.应收费用from inserted;5.建立存储存储过程1:应收费用,实收费用create procedure ch_procedure01@month dateasbeginselect 月份,应收费用,实收费用from 收费登记where 收费登记.月份=@monthendgo存储过程2:未收费create procedure ch_procedure02@month dateasbeginselect 客户号,月份,结余费用from 结余登记where 结余登记.月份=@monthorder by 结余费用endgo6.表间关系六、代码实现过程1.显示窗体内的内容及表的内容private void Form5_Load(object sender, EventArgs e){string consqlserver = "Data Source=GXW-PC;Initial Catalog=liqiuyue0;Integrated Security=True";//string consqlserver = "Data Source=CHEN-PC;Initial Catalog=rl;Integrated Security=True";//定义连接数据源string sql = "select * from 用电信息 ";SqlConnection sqlcon = new SqlConnection(consqlserver); sqlcon.Open();SqlDataAdapter da = new SqlDataAdapter(sql, sqlcon);DataSet ds = new DataSet();//shengmingtry{da.Fill(ds);if (ds.Tables[0].Rows.Count > 1) //判断是否有符合条件的数据记录{//将获得数据源赋予数据库控件dataGridView1.DataSource = ds.Tables[0];}}catch (Exception ex){throw new Exception(ex.ToString());}finally{sqlcon.Close();sqlcon.Dispose();da.Dispose();}}结果如图所示:2.插入一行信息的代码private void label3_Click(object sender, EventArgs e){}private void button1_Click(object sender, EventArgs e){string consqlserver = "Data Source=GXW-PC;Initial Catalog=liqiuyue0;Integrated Security=True";// string sql = "select * from 客户 ";SqlConnection sqlcon = new SqlConnection(consqlserver); sqlcon.Open();try{// 首先判断输入信息是否完全if (textBox1.Text == ""){MessageBox.Show("请输入完整的数据信息", "信息提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);}else{DataSet ds = new DataSet();// 在此判断保存重复记录问题string strSqls;strSqls = string.Format("SELECT * FROM 用电信息where 客户号='" + textBox1.Text.Trim() + "'and 类别号='" + textBox2.Text.Trim() + "'and 月份='" + textBox3.Text.Trim() + "';"); //定义SQL Server连接对象SqlDataAdapter da = new SqlDataAdapter(strSqls, sqlcon);da.Fill(ds);if (ds.Tables[0].Rows.Count > 1){MessageBox.Show("已经存在", "信息提示", System.Windows.Forms.MessageBoxButtons.OK,System.Windows.Forms.MessageBoxIcon.Error);}else{strSqls = "insert into 用电信息 values ('" + textBox1.Text.Trim() + "','" + textBox2.Text.Trim() + "','" + textBox3.Text.Trim() + "','" + textBox4.Text.Trim() + "');";//定义SQL Server连接对象///////////////////SqlConnection sqlcon1 = new SqlConnection(consqlserver);SqlCommand cmd = new SqlCommand(strSqls, sqlcon1);try{sqlcon1.Open();cmd.ExecuteNonQuery();}catch { }finally{sqlcon1.Close();sqlcon1.Dispose();cmd.Dispose();}MessageBox.Show("保存成功", "信息提示", System.Windows.Forms.MessageBoxButtons.OK,rmation);//刷新数据string sqls = "select * from 用电信息 ";SqlDataAdapter da1 = new SqlDataAdapter(sqls, sqlcon);da1.Fill(ds);if (ds.Tables[0].Rows.Count > 1){dataGridView1.DataSource = ds.Tables[0]; }}}}catch { }}结果如图所示:3.修改一行信息的内容private void button2_Click(object sender, EventArgs e){string consqlserver = "Data Source=GXW-PC;Initial Catalog=liqiuyue0;Integrated Security=True";// string sql = "select * from 客户 ";SqlConnection sqlcon = new SqlConnection(consqlserver); sqlcon.Open();try{if (textBox1.Text == ""){MessageBox.Show("请输入客户号,类别号,月份", "信息提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);}else{DataSet ds = new DataSet();string strSqls = string.Format("SELECT * FROM 用电信息 where 客户号='" + textBox1.Text.Trim() + "'and 类别号='" + textBox2.Text.Trim() + "'and 月份='" + textBox3.Text.Trim() + "';"); // string strSqls = string.Format("SELECT * FROM 客户 where 客户号='" + textBox1.Text.Trim() + "'");// string strSqls = string.Format("update teacher set tname='" + textBox2.Text.Trim() + "'where tno='" + textBox1.Text.Trim() + "'");SqlConnection con = new SqlConnection(consqlserver);SqlDataAdapter da = new SqlDataAdapter(strSqls, con);//定义SQL Server连接对象da.Fill(ds);int tnum = dataGridView1.CurrentRow.Index;//先选中某一行string oldDate = dataGridView1.Rows[tnum].Cells["月份"].Value.ToString();string oldLeibie = dataGridView1.Rows[tnum].Cells["类别号"].Value.ToString();// strSqls = string.Format("update 客户 set 客户名='" + textBox2.Text.Trim() + "'where 客户号='" + textBox1.Text.Trim()+ "'update 客户 set 地址='" + textBox3.Text.Trim() + "'where 客户号='" + textBox1.Text.Trim() + "'update 客户set 联系方式='" + textBox4.Text.Trim() + "'where 客户号='" + textBox1.Text.Trim() + ""); strSqls = string.Format("update 用电信息 set 类别号='" + textBox2.Text.Trim() + "',月份='" + textBox3.Text.Trim() + "',用电度数='" + textBox4.Text.Trim() + "'where 客户号='" + textBox1.Text.Trim() + "'and 类别号='" + oldLeibie + "'and 月份='" + oldDate + "';");SqlConnection cons = new SqlConnection(consqlserver);SqlCommand cmd = new SqlCommand(strSqls, cons);try{cons.Open();cmd.ExecuteNonQuery();}catch { }finally{cons.Close();cons.Dispose();cmd.Dispose();}MessageBox.Show("修改成功", "信息提示", System.Windows.Forms.MessageBoxButtons.OK,rmation);//刷新数据string sqls = "select * from 用电信息";SqlDataAdapter da1 = new SqlDataAdapter(sqls, con); DataSet dss = new DataSet();da1.Fill(dss);if (dss.Tables[0].Rows.Count > 1){dataGridView1.DataSource = dss.Tables[0];}}}catch { }}运行结果如图所示:(注应该先选中,在修改,目的改主码)1.删除一行信息的内容private void button3_Click(object sender, EventArgs e){string consqlserver = "Data Source=GXW-PC;Initial Catalog=liqiuyue0;Integrated Security=True";SqlConnection sqlcon = new SqlConnection(consqlserver); sqlcon.Open();try{if (textBox1.Text == ""){MessageBox.Show("请选择或输入要删除的信息", "信息提示", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Warning);}else{DataSet ds = new DataSet();// 判断要删除的数据信息是否存在string strSqls;strSqls = string.Format("SELECT * FROM 用电信息where 客户号='" + textBox1.Text.Trim() + "'and 类别号='" + textBox2.Text.Trim() + "'and 月份='" + textBox3.Text.Trim() + "';"); // strSqls = string.Format("SELECT * FROM 客户where 客户号='" + textBox1.Text.Trim() + "'");//定义SQL Server连接对象SqlConnection con = new SqlConnection(consqlserver);SqlDataAdapter da = new SqlDataAdapter(strSqls, con);da.Fill(ds);if (ds.Tables[0].Rows.Count > 0){if (MessageBox.Show("确认要删除吗?", "信息提示", System.Windows.Forms.MessageBoxButtons.YesNo, System.Windows.Forms.MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes){//定义删除数据信息的SQL语句strSqls = string.Format("delete from 用电信息where 客户号='" + textBox1.Text.Trim() + "'and 类别号='" + textBox2.Text.Trim() + "'and 月份='" + textBox3.Text.Trim() + "';"); //定义SQL Server连接对象SqlConnection cons = new SqlConnection(consqlserver);SqlCommand cmd = new SqlCommand(strSqls, cons);try{cons.Open();cmd.ExecuteNonQuery();}catch { }finally{cons.Close();cons.Dispose();cmd.Dispose();}MessageBox.Show("信息删除成功", "信息提示", System.Windows.Forms.MessageBoxButtons.OK, rmation);//刷新数据string sqls = "select * from 用电信息 "; SqlDataAdapter da1 = new SqlDataAdapter(sqls, con);DataSet dss = new DataSet();da1.Fill(dss);if (dss.Tables[0].Rows.Count > 0){dataGridView1.DataSource = dss.Tables[0];}}}}}catch { }}}}七、运行结果展示:触发器实现自动修改和计算:每当添加一个新值,收费标志自动改成未收存储过程的实现,实现存储指定日期的应收费用和实收费用八、总结与心得体会通过几月的课程设计,还是简单地完成了“某电力公司收费管理信息系统”题目的相关要求。
自来水公司水费管理系统设计精编Document number:WTT-LKK-GBB-08921-EIGG-22986培训班管理系统流程和架构咨询项目物理数据库设计文档学号:4姓名:班级:软外0902文档位置版本版本日期修改总结修订人号42010-1-2可以利用视图进行查询和修改。
42010-1-3可以利用存储过程来实现数据库的自动化、系统化。
序参考文档版本日期号1.数据库原理与应用2010-1-22.数据库设计与开发2010-1-3目录实体定义 (8)<message>…………………………………………………………………………… (8)<collect>…………………………………………………………………………… (8)<paper>……………………………………………………………………………… (9)<report>…………………………………………………………………………… (9)数据库其他对象设计 (10)存储过程设计……………………………………………………………………………....... (10)视图设计 (10)数据量估计 (11)数据库安全性设计 (1)1用户设置 (11)用户组设置 (11)数据库权限设计 (11)1.物理数据库设计1.1数据库总体设计1.1.1表空间规划1.1.2数据库规划2.数据库表设计2.1实体列表( Entity List)2.3实体定义2.3.1<message >在序号处应提供超级连接到相应的数据字典别名 水费帐户基本信息表描述记录水费帐户的详细信息 到逻辑数据模型(LDM )的映射 1对多目的 记录水费帐户编号、姓名、地址等的详细信息。
事件记录水费帐户信息。
2.3.2< collect >别名 水费收取管理描述记录水费收取的信息 到逻辑数据模型(LDM )的映射 1对多目的记录水费收取的信息。
计算机操作系统课程设计任务书课程设计报告课程名称数据库原理课题名称学生宿舍水电费管理系统专业软件工程班级学号姓名指导教师2014年 05 月 12 日一、系统定义1.1 目的与要求随着科技的发展,基本上所有的具有一定数量数据的机构都开始使用计算机数据库来做管理。
几乎所有学校也都已经在使用计算机管理数据的机制,大大减少了日常任务的工作量。
该课程设计要求设计一个学生宿舍水电费的数据库管理系统,数据库中要求包含学生宿舍的基本信息,抄表信息。
要能够方便计算水电费、统计水电费使用情况,通过该课程设计,应该达到把数据库理论知识更加的巩固加深,加强动手能力与实践能力,学以致用,与现实生活中的应用充分的结合起来。
1.2项目范围项目范围:计算水电费、统计水电费;超出范围:学生在线查询水电费、自动抄表。
二、需求分析2.1 系统综合需求xx大学有多栋学生宿舍楼,每栋宿舍楼的宿舍具有自己的编号,一个宿舍成员可能来自不同的班级,一个宿舍最多住8个人。
每个宿舍都一块水表和一块电表,水电定额使用,超过定额要付费,学校给每个人的电定额10度/月,水定额4吨/月,超出部分按宿舍缴纳,如果未超出将节约量折合成水电费计入结余;学校的后勤集团每个月抄表一次,抄表后会给每个宿舍水电费通知单,如果水电费超出定额,需要交费,如不交费将停电或停水。
水电定额使用,超用量要付费,节约用量可返还水电费(返还部分打入结余)。
附表为水电费通知单、水电费、水电量统计表。
5-101宿舍水电费通知单宿舍号:5-101 抄表员号:21 日期:2013年8月应交费用 = (用水量- 用水定额)*水价+(用电量-用电定额)*电价如果实缴费用+结余大于应交费用,则多余费用自动转入上期结余系统应能够:1)后勤集团可以输入每个宿舍的水电表表底并由计算机自动计算结果、查看和打印每个宿舍水电费通知单。
2)可以按宿舍号、日期查看宿舍水电交费交费情况。
3)统计所有宿舍每个月水电使用情况、水电费情况2013-8月份用水用电情况月份:2013-082013-8月份水电交费情况月份:2013-08设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。
自来水公司营业收费系统的设计与实现摘要:现阶段,我国已经进入到了大数据时代,我国的水资源也成为大家所关注的重心,而要想在残酷的竞争中脱颖而出,就必须要加强内部管理,提高自身的综合能力,提升服务的质量。
尤其对于自来说公司来说,为客户提供高效率、高质量的服务,才是其自来水公司发展之根本。
这就需要自来水公司根据自身的特点及现状,不断的开拓市场,加大自动化系统的建设,提高收费系统的工作效率,推动自来水公司的进一步发展。
关键词:自来水公司;营业;收费系统;设计;实现引言如何完善供水行业的数据收集和分析,以达到更好的用水控制是供水行业多年来发展的方向之一。
对于供水系统信息控制和节点调控有重要的作用。
随着城市规模扩大,城市生产生活用水规模也逐日递增,为了跟上社会发展自来水行业就要不断革新自身的服务体系加强新技术新思路的引进,保证自来水供应的稳定在服务规模扩大的同时带来的信息处理要求也更大,现代的自来水供应公司对信息技术处理要求随着需要处理的数据规模扩大而随之增加,不但要及时处理大量的数据,还要保证数据处理结果准确无误,为了配合新的数据处理能力在管理模式上也进行了更改,由原本的分散式改为集中式,原来的手工管理变为了大规模信息自动化处理,以提高信息处理的效率和准确性,特别是在营收部分个自来水公司对于数据处理要求做到仔细精确能够反映实际情况,各地区基础设施布置情况不同,对于信息处理的能力也不同,存在地域性差异,但在未来的发展中一定会普及之间的差异实现自来水营收系统的统一协作。
1自来水收费管理系统的特点近几年来,我国的城镇化进程不断加快,使城市基础设施建设水平有了快速提高,人们提出了建设“智慧城市”的理念。
在此背景下,使自来水收费管理系统得到了快速发展,在不断的实践中得到了发展与创新,使其具备更强的功能性特点。
例如:1.1管理质量高可对用户实际用水量的数据信息进行收集、分析,并有效进行管理工作,有利于提高管理质量。
1.2服务性能强其管理系统包括很多的服务性功能,用户可自主查询用水信息,使消费更加透明。
武汉市自来水营业收费数据库优化方案一、对旧系统的一些问题的诊断因为数据库和应用系统本身都需要升级,所以对于旧的系统只是需要找出系统慢的根本原因,主要是指查找发现应用程序方面导致整个系统慢的问题,可以根据客户反映的应用主要慢的方面进行有针对性的查看;数据库方面因为升级后本身会有相应的优化,所以对旧的数据库系统不用做过多的调整,数据库方面主要的调整放在新的Oracle9i数据库上。
前期对旧系统的处理主要包括以下的一些步骤:1.监控现有旧系统ORACLE数据库的运行状态,找出旧系统的瓶颈所在,主要是指应用方面的问题(包括哪些SQL效率低、哪些事务占系统资源多运行时间长、表设计不合理、索引创建不当等等)。
2.针对旧系统的瓶颈根源,给出相应的解决方案建议(包括修改表结构、改变表存储参数、方式,创建索引等)。
二、根据新的规划在新的系统上安装好Oracle9i的软件并导入旧系统数据1.分析现有系统上运行的数据库应用,结合新小型机硬件配置提出新系统ORACLE架构,主要是表空间的划分,数据文件的分布等。
并在新的系统上安装好Oracle9i的软件。
2.根据新的数据库规划导入旧系统中的数据后,对Oracle9i的数据库和应用进行相应的优化调整,主要包括新数据库中的一些性能参数的调整,一些执行效率效率低的SQL的调整,以及针对在旧系统上发现的那些问题做针对性的调整。
新数据库的调整优化主要分为以下几个方面:⏹处理器⏹物理内存⏹磁盘I/O性能⏹数据库内部结构3.在新的系统上验证数据库的具体优化情况和系统瓶颈解决的情况。
三、新系统投入生产试运行后进行观察和监控。
1.查看调整的效果和进行进一步的调整优化。
2.确认新系统当前的运行状态正常。
四、调整后提供的文档。
1.ORACLE数据库软件系统安装文档,使客户能够按照此文档step by step的安装好ORACLE数据库软件。
2.ORACLE数据库优化调整方案文档,包括操作步骤、操作原因、运行结果、结果分析等内容。
自来水收费管理系统设计与实现JSP+SQL2000本设计包括:源程序+论文+录像+配置说明摘要随着城市现代化建设的快速发展,城市供水的规模越来越大,对供水的需求无论在量还是在质上都有了很大的提高,针对城市自来水管理现状的分析. 本系统使用JSP 作为前台开发工具,使用Microsoft SQL Server 2000 作为后台数据库; 利用先进的信息技术和管理方法,结合城市对优化供水的要求,进行供水信息系统的设计.论述了系统的设计和实现;介绍了系统的工作方式和关键技术的解决方法.JSP继承了所有Java语言的特点,而且发展前景十分的广阔,因此本项目使用用JSP语言作为根本,选用经典的Tomcat作为服务器平台,详细介绍了本管理系统的开发过程。
并从系统的需求分析、系统分析、详细设计的整个开发过程进行全面论述。
关键词:自来水管理水费系统 JSP 数据库目录摘要 1Abstract 11引言 32系统分析 32.1 需求分析 32.2 可行性分析 32.3 技术分析 42.3.1 动态网站技术介绍 42.3.2 程序语言的选择 43.系统总体方案设计 53.1 开发及运行环境 53.2系统功能的总体逻辑层次 63.3系统设计目标 63.4系统功能 74.系统的详细设计 84.1用户层的设计 84.2数据库层的设计 95系统功能实现 115.1打开系统首页 115.2用户登录模块 115.3系统主要功能模块的实现 135.3.1用户基本资料的更新与维护 135.3.2用户用水收费功能 165.3.3查询与统计功能 196.结论 217.致谢 22参考文献 223.4系统功能本次毕业设计自来水收费管理系统主要实现以下功能:收费功能: 实现录入数据库的功能能调用数据库的数据档案管理功能:自来水用户管理:用户基本资料(上户停表删除)管理,用户区域管理员工管理:录入、删除和维护信息员工基本信息、职务、密码维护参数管理:用水性质管理,水价类别设置。
某自来水公司收费管理系统 目录: 1. 问题描述 2. 需求分析 需求分析 系统功能结构 数据流图 3.逻辑结构设计 局部E—R图 全局E—R图 数据字典 4.物理结构设计 5.代码 6.小结
1. 问题描述(某自来水公司收费管理系统) 实现客户信息、用水类型(类别号、类别名、水价)及业务员管理; 实现客户用电信息管理(客户号、月份、用水类别号、用水量); 实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为‘未收’; 实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现); 创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额; 创建存储过程统计指定月份应收费用和实收费用; 创建存储过程查询指定月份未交费的用户信息,以便崔费; 创建规则使得月份符合格式“××××年××月”,并邦定到表中相应字段; 建立表间关系。 2. 需求分析 需求分析 随着人们生活水平的提高,传统的人工记录已经跟不上时代的发展,信息化的世界即将覆盖人们生活的点点滴滴。针对各地供水公司的水费缴费在状况,设计了能够符合适应大多数城市的水费缴费系统,采用了分布式管理的模式,能够实现数据管理以及日常维护任务,具有较好的安全性稳定性适应性,为实现水费缴费提供技术及业务指导。此自来水公司收费管理系统,遵循了科学高效/循序渐进/规划清晰的原则,能够最大程度的减少营销信息化建设所遇到的风险问题。 系统功能结构
某自来水公司收费管理系统
客户管理业务员管理用水信息管理账单查询管理费用管理
选择用水类型交费缴费统计用户信息客户费用管理收费登记结余登记客户查询
业务
员查询
按月份查询按电话查询按姓名查询按地址查询按月份查询按客户地址查询按客户姓名查询按客户电话查询
数据流图 自来水公司收费管理系统客户员工
缴费客户信息
信息一览表
客户员工缴费
3.收费登
记操作
员工信息
1.选择用水类型
使用
2.选择用水信息消费总量4.费用管理
操作
缴费
客户信息
客户员工3.1显示应收金额3.2确认实收金额3.3显示结余金额缴费
4.费用管理
员工信息1.1查询用水类别1.2查询水价查询查询用水类型表2.1查询用水吨数查询用水信息表操作导入客户信息
客户信息
3.逻辑设计结构 局部E-R图 客户客户名地址联系方式
客户号用水类型
类别名类别号水价
业务员客户用水信息
客户费用管理收费登记业务员名业务员号性别联系方式客户号月份用水量
类别号
月份费用客户号收费标志月份
客户号应收费用
员工号实收费用 全局E-R图 客户用水类型客户用水信息业务员客户费用管理
收费登记客户名地址客户号联系方式
业务员名性别联系方式业务员号类别名水价类别号交费收费使用消费缴费客户号月份费用收费标志月份员工号客户号
应收费用实收费用客户号月份用水量
类别号 数据字典 名字:客户 描述:自来水公司的客户,使用者 定义:客户=客户号+客户名+地址+联系方式 名字:员工 描述:负责收缴客户的水费 定义:员工=员工号+员工名+联系方式+性别 名字:用水类型 描述:不同用途的水价不同 定义:用水类型=类型号+类型名+水价 名字:客户用水信息 描述:每一位客户的具体信息 定义:客户用水信息=客户号+月份+类
名字:客户费用管理 描述:每一个客户费用的具体信息 定义:客户费用管理=费用编号+费用+收费标志 名字:收费登记 描述:每一位用户收费的具体信息 定义:收费登记=收费编号+月份+实收费用+应收费用 4.物理结构设计 (1)图:
(2)表格清单 (1)客户表 字段名 数据类型 可否为空 键引用 备注 客户号 Number(8) 否 主键 客户号 客户名 Char(20) 否 客户名 地址 varchar2(50) 否 地址 联系方式 number(11) 否 联系方式 (2)用水类型表
字段名 数据类型 可否为空 键引用 备注 类型号 number(4) 否 主键 类型号 类型名 char(20) 否 类型名 水价 char(10) 否 水价
(3)员工表 字段名 数据类型 可否为空 键引用 备注 员工号 Number(8) 否 主键 员工号 员工名 Char(20) 否 员工名 性别 char(10) 否 性别 联系方式 number(11) 否 联系方式
(4)客户用水信息表 字段名 数据类型 可否为空 键引用 备注 客户号 Number(8) 否 主键/外键 客户号 类型号 number(4) 否 主键/外键 类型号 月份 char(20) 否 主键 月份 用水量 char(10) 否 用水量
(5)客户费用管理 字段名 数据类型 可否为空 键引用 备注 费用编号 Number(4) 否 主键 费用编号 费用 number(4) 否 费用 收费标志 char(20) 否 收费标志
(6)收费登记 字段名 数据类型 可否为空 键引用 备注 收费编号 Number(4) 否 主键 收费编号 月份 char(20) 否 主键 月份 应收费用 Char(10) 否 外键 所属专业 实收费用 Char(10) 否 外键 所属学院 5.代码 1.客户表 create table 客户表( 客户号 number(8) constraint p_c primary key, 客户名 char(20), 地址 varchar2(50), 联系方式 number(11));
插入数据: insert into 插入数据: insert into 客户表 values(,'张三','东北林业大学',00001); insert into 客户表 values(,'张三','东北林业大学',00002); insert into 客户表 values(,'小红','东北林业大学',00003); insert into 客户表 values(,'小明','东北林业大学',00004);
2.用水类型 create table 用水类型( 类型号 number(4) constraint p_w primary key, 类型名 char(20), 水价 char(10));
插入数据: insert into 用水类型 values(01,'学校',''); insert into 用水类型 values(02,'个人',''); insert into 用水类型 values(03,'商店',''); insert into 用水类型 values(04,'食堂',''); 3.员工表 create table 员工表( 员工号 number(10) constraint p_s primary key, 员工名 char(20), 性别 char(10), 联系方式 number(11));
插入数据: insert into 员工表 values(0001,'小白','男',04510001); insert into 员工表 values(0002,'小白','女',04510002); insert into 员工表 values(0003,'小兰','女',04510003); insert into 员工表 values(0004,'小黑','男',04510004);
4.客户用水信息 create table 客户用水信息( 客户号 number(8) constraint fk_c1 references 客户表(客户号), 类型号 number(4) constraint fk_w1 references 用水类型(类型号), 月份 char(20), 用水量 char(10), primary key(客户号,类型号,月份)); 5.客户费用管理 create table 客户费用管理( 费用编号 number(4) primary key, 费用 number(4), 收费标志 char(20) default('未收') );
6.收费登记 create table 收费登记( 收费编号 number(4) primary key, 月份 char(20), 应收费用 char(10), 实收费用 char(10) );
触发器1:计算收费 create or replace trigger count before insert or update or delete on 收费登记 for each row