水电管理系统登陆子系统

上传人:F****n 文档编号:99372989 上传时间:2019-09-18 格式:DOC 页数:12 大小:340.50KB
返回 下载 相关 举报
水电管理系统登陆子系统_第1页
第1页 / 共12页
水电管理系统登陆子系统_第2页
第2页 / 共12页
水电管理系统登陆子系统_第3页
第3页 / 共12页
水电管理系统登陆子系统_第4页
第4页 / 共12页
水电管理系统登陆子系统_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《水电管理系统登陆子系统》由会员分享,可在线阅读,更多相关《水电管理系统登陆子系统(12页珍藏版)》请在金锄头文库上搜索。

1、数据库课程实验周设计说明书水电管理系统学生姓名: 施杰明 学号: 学 院: 计算机与控制工程 专 业: 计算机科学与技术 指导教师: 熊风光 2014年 6 月 27日1. 需求分析 1.1目标设计以宿舍水电费为背景,实现水电费管理。本系统可以分为四个子系统:1.统计子系统:统计水电用量,水电费用计算,扣除水电费。2.登陆子系统:实现密码验证,不同身份的用户具有不同的权限。3.管理子系统:增加,删除,修改用户,设置水电价格。4.缴费子系统:实现查询余额,缴费功能1.2 开发和运行环境Eclipse、SQL server 2008Window 7,window 8 1.3 数据流分析 图1 顶层

2、数据流图 图2 登陆子系统图 1.4 功能模块设计 图3 系统功能模块图 1.5 本人主要工作登陆子系统 2. 水电管理系统登陆子系统数据库概要设计2.1 概念结构设计 图4登陆子系统ER图 2.2 模式转换 学生(学号,学生账号,姓名,性别,宿舍号) 账号(账号,密码,权限) 管理员(管理员编号,管理员账号,管理员身份)2.3 范式分析 学生(学号,学生账号,姓名,性别,宿舍号) 学号作为主码,学生账号,姓名,性别,宿舍号完全函数依赖于主码 学生,满足2NF。其他属性不存在对主码的传递依赖,满足3NF。学生中除 了学号没有其他决定因素,满足BCNF。 账号(账号,密码,权限) 账号作为主码,

3、密码,权限完全函数依赖于主码账号,满足2NF。其他 属性不存在对主码的传递依赖,满足3NF。账号中除了账号没有其他决定 因素,满足BCNF。 管理员(管理员编号,管理员账号,管理员身份) 管理员编号作为主码,管理员账号,管理员身份完全函数依赖于主码管 理员编号,满足2NF。其他属性不存在对主码的传递依赖,满足3NF。管理 员中除了管理员编号没有其他决定因素,满足BCNF。3.登陆子系统物理设计3.1 数据库中表的定义3.1.1学生表的定义CREATE TABLE dbo.学生(学号 varchar(20) NOT NULL,学生账号 varchar(20) NOT NULL,姓名 varcha

4、r(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 = OF

5、F, 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 (管理员编号 A

6、SC)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)W

7、ITH (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),

8、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 权限 = 学

9、生 begin set user = 权限;set pass = ;endif 权限 = 管理 begin set user = 权限;set pass = ;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 s

10、cript. */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) * )while idx 64begin select randomPwd = randomPwd

11、 + 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 登陆验证及获取返回参数CallableStatem

12、ent 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 =

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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号