数据库课程设计某电力公司收费系统_第1页
数据库课程设计某电力公司收费系统_第2页
数据库课程设计某电力公司收费系统_第3页
数据库课程设计某电力公司收费系统_第4页
数据库课程设计某电力公司收费系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库课程设计 题 目 某电力公司收费管理信息系统专业班级 姓 名 学 号 完成日期 2013-12-18 一、 课程实验目的1. 通过课程设计,使学生进一步巩固所学的知识,考查学生对数据库理论及知识的理解能力和综合运用能力;2. 培养学生自主学习、独立思考的能力,学会查找资料并善于分析资料的能力;3. 培养学生独立设计、独立调试程序的能力;4. 培养学生初步的软件设计能力,形成良好的编程风格二、 课程实验要求(28)某电力公司收费管理信息系统1. 实现客户信息、用电类型(类别号、类别名、电价)及业务员管理;2. 实现客户用电信息管理(客户号、月份、用电类别号、用电度数);3. 实现客户费用管

2、理(客户号、月份、费用、收费标志),收费标志的默认值为未收;4. 实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);5. 创建触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;6. 创建存储过程统计指定月份应收费用和实收费用;7. 创建存储过程查询指定月份未交费的用户信息,以便崔费;8. 创建规则使得月份符合格式“年月”,并邦定到表中相应字段;9. 建立表间关系。三、 课程设计要求1. 在对数据库理论及知识理解的基础上;重点是针对具体的实际问题选择并设计合适的数据库表加以应用,并在此基础上完成相关的算法与程序;

3、2. 给出系统的概要设计、详细设计;3. 完成数据流程图,e-r关系图,数据库表、程序流程图、功能模块图的设计、对功能编程加以实现;4. 设计必要的视图、触发器、存储过程;5. 使用相关的编程工具(c#.net)和oracle编写代码实现设计的数据库系统;6. 完成规范化的课程设计报告的编写;7. 每个同学完成一个题目,题目由老师安排。四、 实验环境vs2010,sqlsever2008五、课程设计过程1. 根据题目写出关系模型如下: 客户(客户号、客户名、地址、联系方式) 用电类型(类别号、编号、类别名、电价) 员工(员工号、姓名、性别、联系方式) 用电信息(客户号、月份、类别号、用电度数)

4、 费用管理(客户号、月份、费用、收费标志) 收费登记(客户号、月份、应收费用、实收费用、员工号) 结余登记(客户号、月份、应收费用、实收费用、结余费用)2、根据关系模型绘制出e-r模型为:3、 创建表1.客户表create table 客户(客户号 char(5) primary key,客户名 char(4),地址 varchar(50),联系方式 char(10);插入数据:insert into 客户 values(00001,张三,市南区,0000000);insert into 客户 values(00002,李四,黄岛区,0000002);insert into 客户 values

5、(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(ab

6、d,政府,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

7、 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-

8、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-

9、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 结余

10、登记(客户号 char(5),月份 date ,应收费用 money,实收费用 money,结余费用 money, primary key (客户号,月份);4.创建触发器触发器1:计算费用create trigger change_trigger1 on 用电信息for insertas insert into 费用管理 (客户号,月份,费用)select inserted.客户号,inserted.月份,inserted.用电度数*(select 电价 from 用电类型,inserted where 用电类型.类别号=inserted.类别号)from inserted;触发器2:未收标

11、志create trigger change_trigger on 费用管理for insertas update 费用管理 set 收费标志=未收;触发器3:已收标志create trigger change_trigger3on 收费登记for updateasupdate 费用管理 set 收费标志=已收from 费用管理,insertedwhere 费用管理.客户号=inserted.客户号 and 费用管理.月份=inserted.月份;触发器4:结余登记 create trigger change_trigger4on 收费登记for update asinsert into 结余

12、登记select inserted.客户号, inserted.月份,inserted.应收费用,inserted.实收费用,inserted.实收费用-inserted.应收费用from inserted;5.建立存储存储过程1:应收费用,实收费用create procedure ch_procedure01month date asbeginselect 月份,应收费用,实收费用 from 收费登记where 收费登记.月份=monthendgo存储过程2:未收费create procedure ch_procedure02month date asbeginselect 客户号,月份,结

13、余费用 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 sec

14、urity=true; /定义连接数据源 string sql = select * from 用电信息 ; sqlconnection sqlcon = new sqlconnection(consqlserver); sqlcon.open(); sqldataadapter da = new sqldataadapter(sql, sqlcon); dataset ds = new dataset();/shengming try da.fill(ds); if (ds.tables0.rows.count 1) /判断是否有符合条件的数据记录 /将获得数据源赋予数据库控件 datagr

15、idview1.datasource = ds.tables0; 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

16、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.wind

17、ows.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 sqldataad

18、apter(strsqls, sqlcon); da.fill(ds); if (ds.tables0.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() +

19、 , + 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(保存成功, 信息提示, syste

20、m.windows.forms.messageboxbuttons.ok, system.windows.forms.messageboxicon.information); /刷新数据 string sqls = select * from 用电信息 ; sqldataadapter da1 = new sqldataadapter(sqls, sqlcon); da1.fill(ds); if (ds.tables0.rows.count 1) datagridview1.datasource = ds.tables0; catch 结果如图所示:3.修改一行信息的内容 private v

21、oid 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(请输入客户号,类别号,月份,

22、 信息提示, 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 strsq

23、ls = 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, c

24、on); /定义sql server连接对象 da.fill(ds); int tnum = datagridview1.currentrow.index;/先选中某一行 string olddate = datagridview1.rowstnum.cells月份.value.tostring(); string oldleibie = datagridview1.rowstnum.cells类别号.value.tostring(); / strsqls = string.format(update 客户 set 客户名= + textbox2.text.trim() + where 客户号

25、= + 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() + ,用电度数= + t

26、extbox4.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.dispo

27、se(); messagebox.show(修改成功, 信息提示, system.windows.forms.messageboxbuttons.ok, system.windows.forms.messageboxicon.information); /刷新数据 string sqls = select * from 用电信息; sqldataadapter da1 = new sqldataadapter(sqls, con); dataset dss = new dataset(); da1.fill(dss); if (dss.tables0.rows.count 1) datagri

28、dview1.datasource = dss.tables0; catch 运行结果如图所示:(注应该先选中,在修改,目的改主码)5. 删除一行信息的内容 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(); tr

29、y 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 类别

30、号= + 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.tables0.

31、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.

32、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, system.windows.forms.messageboxicon.information); /刷新数据 string sqls = select * fr

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论