




已阅读5页,还剩7页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据库课程实验周设计说明书水电管理系统学生姓名: 施杰明 学号: 1206034240 学 院: 计算机与控制工程 专 业: 计算机科学与技术 指导教师: 熊风光 2014年 6 月 27日1. 需求分析 1.1目标设计以宿舍水电费为背景,实现水电费管理。本系统可以分为四个子系统:1.统计子系统:统计水电用量,水电费用计算,扣除水电费。2.登陆子系统:实现密码验证,不同身份的用户具有不同的权限。3.管理子系统:增加,删除,修改用户,设置水电价格。4.缴费子系统:实现查询余额,缴费功能1.2 开发和运行环境Eclipse、SQL server 2008Window 7,window 8 1.3 数据流分析 图1 顶层数据流图 图2 登陆子系统图 1.4 功能模块设计 图3 系统功能模块图 1.5 本人主要工作登陆子系统 2. 水电管理系统登陆子系统数据库概要设计2.1 概念结构设计 图4登陆子系统ER图 2.2 模式转换 学生(学号,学生账号,姓名,性别,宿舍号) 账号(账号,密码,权限) 管理员(管理员编号,管理员账号,管理员身份)2.3 范式分析 学生(学号,学生账号,姓名,性别,宿舍号) 学号作为主码,学生账号,姓名,性别,宿舍号完全函数依赖于主码 学生,满足2NF。其他属性不存在对主码的传递依赖,满足3NF。学生中除 了学号没有其他决定因素,满足BCNF。 账号(账号,密码,权限) 账号作为主码,密码,权限完全函数依赖于主码账号,满足2NF。其他 属性不存在对主码的传递依赖,满足3NF。账号中除了账号没有其他决定 因素,满足BCNF。 管理员(管理员编号,管理员账号,管理员身份) 管理员编号作为主码,管理员账号,管理员身份完全函数依赖于主码管 理员编号,满足2NF。其他属性不存在对主码的传递依赖,满足3NF。管理 员中除了管理员编号没有其他决定因素,满足BCNF。3.登陆子系统物理设计3.1 数据库中表的定义3.1.1学生表的定义CREATE TABLE dbo.学生(学号 varchar(20) NOT NULL,学生账号 varchar(20) NOT NULL,姓名 varchar(20) NULL,性别 nchar(1) NULL,宿舍号 varchar(20) NOT NULL, CONSTRAINT PK_学生_1 PRIMARY KEY CLUSTERED (学号 ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY, CONSTRAINT IX_学生 UNIQUE NONCLUSTERED (学号 ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARY3.1.2管理员表的定义CREATE TABLE dbo.管理员(管理员编号 varchar(20) NOT NULL,账号 varchar(20) NOT NULL,身份 varchar(20) NOT NULL,姓名 nchar(10) NULL, CONSTRAINT PK_管理员 PRIMARY KEY NONCLUSTERED (管理员编号 ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARY3.1.3账号表的定义CREATE TABLE dbo.账号(账号 varchar(20) NOT NULL,密码 varchar(20) NOT NULL,权限 varchar(20) NOT NULL, CONSTRAINT PK_账号 PRIMARY KEY NONCLUSTERED (账号 ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON PRIMARY) ON PRIMARY3.2 视图、存储过程、触发器的结构和定义3.2.1账号视图定义CREATE VIEW dbo.accont numberASSELECT 账号, 密码, 权限FROM dbo.账号3.2.2登陆存储器:实现登陆后权限控制ALTER procedure dbo.login (zhanghao varchar(20),password varchar(20),result varchar(20) = null output)AS DECLARE密码 varchar(20),权限 varchar(20) = null,user varchar(20) = null,pass varchar(20) = null;beginselect 密码 = 密码 from 账号 where 账号 = zhanghao;if 密码 != passwordbegin set result = 0;end;elsebeginselect 权限 = 权限 from 账号 where 账号 = zhanghao;if 权限 = 学生 begin set user = 权限;set pass = 1206034240;endif 权限 = 管理 begin set user = 权限;set pass = 654321;endend3.3安全性保密实施用户 CREATE USER aa FOR LOGIN aa WITH DEFAULT_SCHEMA=dbo应用程序角色 USE 水电管理系统GO/* Object: ApplicationRole 学生 Script Date: 06/27/2014 10:46:31 */* To avoid disclosure of passwords, the password is generated in script. */declare idx as intdeclare randomPwd as nvarchar(64)declare rnd as floatselect idx = 0select randomPwd = Nselect rnd = rand(CPU_BUSY % 100) + (IDLE % 100) * 100) + (DATEPART(ss, GETDATE() * 10000) + (cast(DATEPART(ms, GETDATE() as int) % 100) * 1000000)while idx 64begin select randomPwd = randomPwd + char(cast(rnd * 83) as int) + 43) select idx = idx + 1select rnd = rand()enddeclare statement nvarchar(4000)select statement = NCREATE APPLICATION ROLE 学生 WITH DEFAULT_SCHEMA = dbo, + NPASSWORD = N + QUOTENAME(randomPwd,)EXEC dbo.sp_executesql statementGO4登陆子系统程序设计与实现4.1 登陆验证及获取返回参数CallableStatement c=Assist.conn.prepareCall(call login (?,?,?); /给存储过程的第一个和第二个参数设置值 c.setString(2, Assist.passwrod);c.setString(1, Assist.user);c.registerOutParameter(3,java.sql.Types.VARCHAR);/注册存储过程的第三个参数 /执行存储过程 c.execute();b =c.getString(3);a = b.charAt(0);Assist.userName = b.substring(1, 3);Assist.passwrod = b.substring(4);/获取返回参数并处理Assist.conn.close();4.2 检测账号是否存在:Assist.smt=Assist.conn.createStatement();Assist.rs=Assist.smt.executeQuery(select账号fromnumberwhere账号=+id);if(Assist.rs.next()Sno.setText();JOptionPane.showMessageDialog(null,已存在该账号,提示,JOptionPane.ERROR_MESSAGE); 4.3 学生账号注册:CallableStatementc=Assist.conn.prepareCall(callzhanghao(?,?);c.setString(1,Sno.getText();c.setString(2,Sname.getText();c.execute();c=Assist.conn.prepareCall(callstudent1(?,?,?,?,?);c.setString(1,Ssex.getText();c.setString(2,Sno.getText();c.setString(3,Sclas.getText();c.setString(4,Sbirth.getText();c.setString(5,Snation.getText();c.execute();5登陆子系统子系统测试 登陆测试用例 账号:1206034240 密码:654321 图 5 登陆界面图 6 登陆成功 图 7 注册账号 图 8 注册成功注册用例 账号:120603336个人体会这次实验,我学会了在数据库里面去使用触发器,存储过程,以及视图。用触发器去进行复杂的约束条件,用存储过程和视图作为对外的接口,实现对数据库内部结构的保密。存储过程可以进行增删改操作,视图进行查询操作。外部程序访问数据库的时候,首先通过默认的用户访问的登陆的存储过程,在登陆的存储过程进行密码匹配。通过匹配结果判
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 12135-2025气瓶检验机构技术条件
- 2024年安全员考试高分题库【易错题】附答案详解
- 应急安全培训感想课件
- 2024化验员模考模拟试题【全优】附答案详解
- 2024年安全员考试高频难、易错点题附参考答案详解【巩固】
- 静脉补液在重症秋季腹泻治疗中指征与操作
- 广州现房销售合同(标准版)
- 消防物品销售合同(标准版)
- 中学生读物的管理制度(34篇)
- 2025年绿色消费理念传播策略与消费者行为引导在绿色环保食品市场的应用报告
- 2025年检查检验项目分级审核制度
- 2025年新版汉字听写大赛题库(含答案)
- 2025年供应科考试试题及答案
- 无人机装调检修工技术考核试卷及答案
- 《传感器原理及应用》课件-第8章+光电效应及光电器件
- 古诗词诵读教学设计与实施方案
- 2025年山东省政府采购评审专家考试题库附含答案
- 眼镜验光师试题(及答案)
- 2025年柳州市城中区人民法院招录聘用人员考试试题
- 2024年危险化学品典型事故案例反思
- 四川普通高中会考英语试卷及答案
评论
0/150
提交评论