电费管理系统E-R图及数据库表设计
- 格式:doc
- 大小:518.00 KB
- 文档页数:6
199当前配电网络中用户节点繁多,存在大量数据,相互间的关联错综复杂并且变换频繁,因而数据库设计是研究者科研的重要课题。
传统的设计方法分为两类,一类是在输电网络数据库中依据层级构造建模,搭建网状节点模型,但忽视了特殊配电网络构造,并存在后期维护工作繁琐的弊端;另一类则将线路转换为杆塔方式搭建,被设置变配和开闭装备,该方法操作简单,但数据库不易更新,灵活度不高。
1 配电网络的E-R模型搭建1.1 E-R模型下的配电网络建模(1)配电网络的实体。
E-R模型由实体,连接和属性构成。
实体作为数据目标,即应用过程中的客观事物,如配电网中的变压装置,输电线路等部分。
而相同类别的实体则构成实体类,如配电网络中的变压装置行程配电变压实体部分。
(2)配电网络的连接。
由于实体之间并不孤立并存在相互关联,而配电网络的连接代表了一个和多个实体间连接。
如配电变压装置和用电负荷间的电能供应关联。
(3)配电网络的属性。
配电网络的属性能够表述实体的特点,如配电变压装置的名字,编码,容量等相关属性数据[1]。
1.2 配电网络中的杆塔和开关在配电网络体系中,每条配电线路均包含多个杆塔和开关,并包含几十个到几百个分支线路,各部分线路采用配电变压装置的模式给使用者供电,信息量巨大,因而构建科学的信息模型对设计数据库有很大帮助。
1.3 变阻抗支路设计在整个配电网络中,线路间经过开关完成互联,而开关是物理存在的实体并不从属于相关线路。
在构建配电数据集合时,为获取线路间的关联,需串接变阻抗支路,完成上游电源部分和下游各节点间通讯。
2 E-R模型的配电网数据库设计2.1 E-R模型下配电网络数据库组成(1)线路数据库。
线路数据库基准数据组成包含信息标识,线路表述,衔接变电装置,电压层级部分。
(2)分线路数据库。
分线路数据库线路标定,线段标定,供电部分标定,并给出线路表述,线段种类,杆塔数目,阻抗和电压等级等部分。
(3)配电变压装置数据库。
配电变压装置数据集合包含名字,编码,种类,容量,供电线路标定,衔接杆编码等部分。
数据库课程设计电力公司收费系统数据库课程设计题目某电力公司收费管理信息系统专业班级姓名学号完成日期 -12-18一、课程实验目的1.经过课程设计,使学生进一步巩固所学的知识,考查学生对数据库理论及知识的理解能力和综合运用能力;2.培养学生自主学习、独立思考的能力,学会查找资料并善于分析资料的能力;3.培养学生独立设计、独立调试程序的能力;4.培养学生初步的软件设计能力,形成良好的编程风格二、课程实验要求(28)某电力公司收费管理信息系统1.实现客户信息、用电类型(类别号、类别名、电价)及业务员管理;2.实现客户用电信息管理(客户号、月份、用电类别号、用电度数);3.实现客户费用管理(客户号、月份、费用、收费标志),收费标志的默认值为‘未收’;4.实现收费登记(客户、月份、应收费用、实收费用、业务员),并自动修改收费标志(用触发器实现);5.创立触发器,实现收费时自动更加应收费用和实收费用,计算本次结余,然后修改客户信息表中的结余金额;6.创立存储过程统计指定月份应收费用和实收费用;7.创立存储过程查询指定月份未交费的用户信息,以便崔费;8.创立规则使得月份符合格式“××××年××月”,并邦定到表中相应字段;9.建立表间关系。
三、课程设计要求1.在对数据库理论及知识理解的基础上;重点是针对具体的实际问题选择并设计合适的数据库表加以应用,并在此基础上完成相关的算法与程序;2.给出系统的概要设计、详细设计;3.完成数据流程图,E-R关系图,数据库表、程序流程图、功能模块图的设计、对功能编程加以实现;4.设计必要的视图、触发器、存储过程;5.使用相关的编程工具(C#.NET)和ORACLE编写代码实现设计的数据库系统;6.完成规范化的课程设计报告的编写;7.每个同学完成一个题目,题目由老师安排。
四、实验环境VS ,SQLsever五、课程设计过程1. 根据题目写出关系模型如下:①客户(客户号、客户名、地址、联系方式)②用电类型(类别号、编号、类别名、电价)③员工(员工号、姓名、性别、联系方式)④用电信息(客户号、月份、类别号、用电度数)⑤费用管理(客户号、月份、费用、收费标志)⑥收费登记(客户号、月份、应收费用、实收费用、员工号)⑦结余登记(客户号、月份、应收费用、实收费用、结余费用)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('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',' -12-01','100'); Insert into 用电信息 values('00001','ABE',' -12-01','220'); Insert into 用电信息 values('00002','ABC',' -12-01','110'); Insert into 用电信息 values('00003','ABE',' -11-01','125'); Insert into 用电信息 values('00003','ABE',' -12-01','105'); Insert into 用电信息 values('00004','ABC',' -12-01','200'); Insert into 用电信息 values('00005','ABC',' -12-01','102'); Insert into 用电信息 values('00006','ABC',' -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 收费登记.月份=@month endgo存储过程2:未收费create procedure ch_procedure02 @month dateasbeginselect 客户号,月份,结余费用from 结余登记where 结余登记.月份=@month order 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();{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 { }}运行结果如图所示:(注应该先选中,在修改,目的改主码)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();tryif (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 { }}}}七、运行结果展示:触发器实现自动修改和计算:每当添加一个新值,收费标志自动改成未收存储过程的实现,实现存储指定日期的应收费用和实收费用八、总结与心得体会经过几月的课程设计,还是简单地完成了“某电力公司收费管理信息系统”题目的相关要求。
数据库表设计—⽔电费缴费系统⽔电缴费管理系统数据表设计SQL建表脚本:1--建表2--管理⼈员表 admin3create table admin(4 admin_id varchar2(3) not null,5 admin_loginname varchar2(8) not null,6 admin_password varchar2(6) not null,7 admin_username varchar2(4) not null,8constraint pk_admin primary key(admin_id)9 );10 comment on column admin.admin_id is'管理员编号';11 comment on column admin.admin_loginname is'管理员登录⽤户名';12 comment on column admin.admin_password is'管理员登录密码';13 comment on column admin.admin_username is'管理员姓名';14--⽤户基本信息表 user15create table users(16user_id varchar2(10) not null,17 user_loginname varchar2(8) not null,18 user_password varchar2(6) not null,19 user_username varchar2(4) not null,20 user_address varchar2(20) not null,21 user_phone number(11) not null,22constraint pk_users primary key(user_id)23 );24 comment on column er_id is'⽤户编号';25 comment on column er_loginname is'⽤户登录名';26 comment on column er_password is'⽤户登录密码';27 comment on column er_username is'⽤户姓名';28 comment on column er_address is'⽤户地址';29 comment on column er_phone is'⽤户电话';30--⽔表 water31create table water(32 water_id varchar2(10) not null,33 userid varchar2(10) not null,34 water_count number(3,2) not null,35 water_time date not null,36 water_status number(1) not null,37 water_priceid varchar2(10) not null,38 water_beforecount number(3,2) not null,39constraint pk_water primary key(water_id)40 );41 comment on column water.water_id is'⽔表编号';42 comment on column erid is'⽤户编号';43 comment on column water.water_count is'⽔表跑数';44 comment on column water.water_time is'⽔表时间';45 comment on column water.water_status is'⽔费缴费状态';46 comment on column water.water_priceid is'⽔费价格编号';47 comment on column water.water_beforecount is'上⽉⽔表跑数'; 48--⽔表 power49create table power(50 power_id varchar2(10) not null,51 userid varchar2(10) not null,52 power_count number(3,2) not null,53 power_time date not null,54 power_status number(1) not null,55 power_priceid varchar2(10) not null,56 power_beforecount number(3,2) not null,57constraint pk_power primary key(power_id)58 );59 comment on column power.power_id is'电表编号';60 comment on column erid is'⽤户编号';61 comment on column power.power_count is'电表跑数';62 comment on column power.power_time is'电表时间';63 comment on column power.power_status is'电费缴费状态';64 comment on column power.power_priceid is'电费价格编号';65 comment on column power.power_beforecount is'上⽉电表跑数'; 66--价格表 money67create table price(68 price_id varchar2(10) not null,69 price_time date not null,70 isactive number(1) not null,71 waterprice number(2,2) not null,72 powerprice number(2,2) not null,73constraint pk_price primary key(price_id)74 );75 comment on column price.price_id is'价格编号';76 comment on column price.price_time is'价格⽇期';77 comment on column price.isactive is'价格状态';78 comment on column price.waterprice is'⽔费价格';79 comment on column price.powerprice is'电费价格';管理员表:⽤户表:⽔费表:电费表:价格表:。
学校水电交费系统E —R 图:1 NNN 1 N转化的关系模式如下:学生关系模式(智能卡号,姓名,学号,宿舍号) 教师关系模式(智能卡号,姓名,门牌号) 水关系模式(水单价,水类型) 电关系模式(电单价,电类型)水费关系模式(实用吨数,智能卡号,水单价,应交费用,上月水表数,本月水表数) 电费关系模式(实用电数,智能卡号,电单价,应交费用,上月电表数,本月电表数)建立水电缴费数据库SDJF数据库中新建6张表格(每个对象对应一张)学生 水费教师 电 电费 智能卡号姓名 门牌号实用吨数 本月水表读数 上月水表读数 上月电表数姓名 实用电数 本月电表数 智能卡号 宿舍号 学号 水类型 水单价 电单价 电类型 应交费用 应交费用水学生表student的结构列名描述数据类型允许空值说明card 智能卡号Char(12) No 主键S_name 姓名Char(8) yesS_no 学号Char(8) yesS_room 宿舍号Char(4)no教师表teacher的结构列名描述数据类型允许空值说明card 智能卡号Char(12)No 主键T_name 姓名Char(8)YesT_room 门牌号Char(4)no水表water的结构列名描述数据类型允许空值说明W_price 水单价Char(6)No 主键W_type 用水类型Char(4)yes电表electric的结构列名描述数据类型允许空值说明E_price 电单价Char(6)No 主键E_type 用电类型Char(4)yes水费表Watercost的结构列名描述数据类型允许空值说明Weight 实用吨数Char(10)No 主键Card 智能卡号Char(12)No 主键(同时是外键)W_price 水单价Char(6)No 主键(同时是外键)Cost 应缴费用CHAR(8) NoAmonth 上月水表数Char(7)NoPmonth 本月水表数Char(7) no水费表electriccost的结构列名描述数据类型允许空值说明degree 实用度数Char(10)No 主键Card 智能卡号Char(12)No 主键(同时是外键)E_price 电单价Char(6)No 主键(同时是外键)Cost 应缴费用CHAR(8) NoAmonth 上月电表数Char(7)NoPmonth 本月电表数Char(7) no。
数据库设计(⼀)E-R图数据库设计定义: 指的是将应⽤中涉及的数据实体及这些数据实体之间的关系,进⾏规划和结构化的过程。
影响数据库系统效率的因素:数据库中创建的数据结构种类,以及在数据实体之间建⽴的关系好的设计:效率⾼,便于进⼀步扩展,使应⽤程序的开发变得容易糟糕的设计:效率低下,更新和检索数据时会出现许多问题。
⼀、设计的步骤:⼀般在项⽬开发需要经过:需求分析、概要设计、详细设计、代码编写、运⾏测试和部署上线这⼏个阶段,⽽数据设计在这⼏个阶段主要做的事,如下:(当然上线后有时也会出现改需求,动代码动数据库)//数据库设计时需要注意的需求分析阶段:分析客户业务和数据处理需求概要设计阶段:绘制数据库的E-R图,⽤于在项⽬团队内部、设计⼈员和客户之间的沟通,确认需求信息的正确性和完整性。
详细设计阶段:将E-R 图转换为多张表,进⾏逻辑设计,确认各表的主外键,并应⽤数据库设计的三⼤范式进⾏审核。
经项⽬开会讨论确定后,根据项⽬的技术实现、团队开发能⼒进⾏项⽬的成本预算,选择具体的数据库进⾏物理实现,之后就是开发应⽤程序注意:在需求分析阶段的重点是调查、收集并分析客户业务的数据需求、处理需求、安全性与完整性需求。
常⽤的需求调研⽅法:在客户的公司跟班实习、组织召开调查会、邀请专⼈介绍、设计调查表并请⽤户填写和查阅与业务相关的数据记录等。
常⽤的需求分析⽅法:调查客户的公司组织情况、各部门的业务需求情况、协助客户分析系统的各种业务需求和确定新系统的边界。
//在进⾏数据库系统分析时可参考的基本步骤1、收集信息:创建数据库之前,必须充分理解数据库需要完成的任务和功能,了解数据库需要存储哪些数据、实现哪些功能2、标识实体:收集信息后,标识数据库要管理的关键对象或实体。
(实体⼀般是名词,⼀个实体只描述⼀件事情,不能出现含义相同的实体,⽽且实体可以是有形的事物(如⼈或产品),也可以是⽆形的事物(如部门,时间))3、标识每个实体需要存储的详细信息:将数据库中的主要实体标⽰为表的候选实体以后,就要标识每个实体存储的详细信息,也称为该实体的属性,这些属性将组成表中列。
专业班级:计科10102班学号:************姓名:********指导教师: ********一课程设计的目的和意义《C++与面向对象程序设计》是计算机专业的一门专业基础课,主要内容是介绍C++语言中的数据类型,运算,语句结构及其程序设计的基本方法。
C++是当今最流行的高级程序设计语言之一,应用十分广泛。
它也是一门复杂的语言,与C语言兼容,既支持结构化的程序设计方法,也支持面向对象的程序设计方法。
《C++课程设计》是在学生学习完上述课程以后进行的设计性试验课程,面向对象的思想只有通过具体的程序才能真正掌握,故在我们学习完《C++与面向对象程序设计》课程后,开设C++课程设计实验课程。
目的是使学生能够更好地掌握C++课程设计语言,更深地理解面向对象程序设计的基本概念与方法,要求我们达到熟练掌握C++语言的基本知识和技能;基本掌握面向对象程序设计的思想和方法;能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题,提高动手编程解决实际问题的能力,并为后续专业课程的学习奠定程序设计基础。
通过做课程实验,我们应能加深对讲授内容的理解,积累经验,学会独立上机调试程序;并且逐步达到综合运用封装,继承和多态等C++难点知识,真正掌握C++语言的精华,从而熟练应用C++程序设计语言。
本次课程设计要求使用C++编译有关链表的程序。
完成我们所选的课题。
我们小组选的课题是电费管理系统。
我们通过链表完成对用户基本信息的一般性管理工作:用户及用户基本信息的增加、修改和删除和对用户用电情况与显示用户所缴电费情况的记录等功能。
在我的链表中是对用户的缴费情况记录的一个链表,要求将用户的基本信息、用电情况、所缴电费及电费余额以数据文件的形式存储,所有的用户基本情况均以文件操作的方式进行。
在查找时,以记录的“用户姓名”或“身份证”为关键字进行查找。
但由于我们知识的有限性,我们只能对信息进行简单的处理,希望我们能在以后的学习中进一步改善。
DBMS-数据库设计与E-R模型:E-R模型、约束、E-R图、E-R扩展特性、E-R图转换。
设计过程概览1. 设计阶段·最初阶段:刻画未来数据库⽤户的数据需求,产品为⽤户需求规格说明;·概念设计阶段(conceptual-design phase):(关注描述抽象数据及其联系,通常使⽤实体-联系模型)概念模式:定义数据库中表⽰的实体、实体的属性、实体之间的联系以及实体和联系上的约束。
概念设计阶段需要完成1.选择数据模型,并采⽤所选数据模型的概念将需求转化为数据库的概念模式2.指明企业的功能需求,完善概念模式:在功能需求规格说明(specification of functional requirement)中描述在数据上进⾏的各类操作/事务。
设计者检查概念模式确保功能需求满⾜、所有数据需求都满⾜且互相不冲突;·逻辑设计阶段(logical-design phase):将(通常以实体-联系模型定义)⾼层概念模式映射到数据库系统的(通常为关系数据模型的)实现数据模型上。
·物理设计阶段(physical-design phase):指明数据库的物理特征(包括⽂件组织格式和索引结构的选择)。
2. 设计选择设计数据库模式时必须避免两个主要缺陷:·冗余:重复存储信息;·不完整实体-联系模型数据库的设计主要涉及数据库模式的设计。
E-R数据模型是⼀个⼴泛⽤于数据库设计的数据模型,提供了⼀个⽅便的图形化表⽰⽅法以查看数据、联系和约束。
实体-联系(entity-relationship, E-R)模型采⽤三个基本概念:实体集、联系集、属性。
1. 实体集数据库包括⼀组实体集,每个实体集包括任意数量的相同类型的实体。
实体是在现实世界中存在并且区别于其他对象的对象。
我们通过把每个实体痛描述该实体的⼀组属性相关联来表⽰区别。
相同类型的实体的集合为实体集。
实体(entity):现实世界中可区别于所有其他对象的⼀个”事物“或”对象“。
量分段定价,用电价格随用电量增加呈阶梯状逐级递增。
居民对于缴纳电费的方式也有了更多的需求,人们不再满足于到达指定地点缴纳电费,人们希望能用更智能、更透明的方式实现电费的缴纳。
1 需求分析智能电费管理系统主要包括两类用户:一类是城镇居民用电用户,另一类是负责管理区域用电的电网职员。
■1.1 用户对系统的要求(1)信息要求当用户的信息被系统录入之后,用户可以登录系统,查询账户信息,可以看到自己的信息,以及分管该用电区域业务员的信息。
如果用户信息有误或者信息有缺失,用户可以在系统中对相关信息进行修改。
(2)处理要求当需要交纳电费时,用户可以在系统中看到账户的余额和每月的用电量,可以在该系统上进行缴费,实现智能化的缴费。
如果账户余额不足,可以通过系统对账户进行充值。
(3)安全要求系统应对不同用户设置不同的权限,区分不同的用户,让每个用户只能看到自己的信息。
对于用户登录的口令要求一定的强度,避免出现弱口令。
同时在存储客户信息时采用密文存储而不能采用明文,防止用户的隐私遭到泄露。
系统应保持各种数据间相互联系的正确性以及相同的数据在不同记录中的一致性。
■1.2 业务人员对系统的要求(1)信息要求业务员可以查看自己所管理地区的用户信息,也可以及时查看未缴费用户的信息。
同时业务员可以观察到每月该地区的用电情况,以及用电的高峰和低谷时期,可以对用电情(3)安全要求系统应对不同的业务员建立不同的视图,该视图保存了该业务员管理的用户的信息,业务员只能查看管理的用户的信息,无权查看其它用户的信息。
业务员录入信息时应保持各种信息记录的完整性,信息记录内容不能为空。
数据库同时要对业务员的各种操作进行备份,当信息丢失时能够进行有效的信息恢复。
2 系统功能的设计和划分根据如上的需求分析,我们将本系统按照所完成的功能分成以下几部分:第一部分:用户管理部分。
第二部分:业务员管理部分■2.1 用户管理部分(1)处理用户登录;(2)处理用户忘记密码;(3)用户可以查询用电情况;(4)用户可以给账户充值;(5)用户可以缴纳电费;(6)用户可以查询缴费情况;(7)用户可以修改用户自己密码,手机号等信息。
计算机操作系统课程设计任务书课程设计报告课程名称数据库原理课题名称学生宿舍水电费管理系统专业软件工程班级学号姓名指导教师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设计人机友好界面,功能安排合理,操作使用方便,并且进一步考虑系统在安全性,完整性,并发控制,备份和恢复等方面的功能要求。