水电管理系统登陆子系统方案Word格式.docx
- 文档编号:21223622
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:11
- 大小:281.99KB
水电管理系统登陆子系统方案Word格式.docx
《水电管理系统登陆子系统方案Word格式.docx》由会员分享,可在线阅读,更多相关《水电管理系统登陆子系统方案Word格式.docx(11页珍藏版)》请在冰豆网上搜索。
增加,删除,修改用户,设置水电价格。
4.缴费子系统:
实现查询余额,缴费功能
1.2开发和运行环境
Eclipse、SQLserver2008
Window7,window8
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。
管理员中除了管理员编号没有其他决定因素,满足BCNF。
3.登陆子系统物理设计
3.1数据库中表的定义
3.1.1学生表的定义
CREATETABLE[dbo].[学生](
[学号][varchar](20)NOTNULL,
[学生账号][varchar](20)NOTNULL,
[][varchar](20)NULL,
[性别][nchar]
(1)NULL,
[宿舍号][varchar](20)NOTNULL,
CONSTRAINT[PK_学生_1]PRIMARYKEYCLUSTERED
(
[学号]ASC
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY],
CONSTRAINT[IX_学生]UNIQUENONCLUSTERED
)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]
)ON[PRIMARY]
3.1.2管理员表的定义
CREATETABLE[dbo].[管理员](
[管理员编号][varchar](20)NOTNULL,
[账号][varchar](20)NOTNULL,
[身份][varchar](20)NOTNULL,
[][nchar](10)NULL,
CONSTRAINT[PK_管理员]PRIMARYKEYNONCLUSTERED
[管理员编号]ASC
3.1.3账号表的定义
CREATETABLE[dbo].[账号](
[账号][varchar](20)NOTNULL,
[密码][varchar](20)NOTNULL,
[权限][varchar](20)NOTNULL,
CONSTRAINT[PK_账号]PRIMARYKEYNONCLUSTERED
[账号]ASC
3.2视图、存储过程、触发器的结构和定义
3.2.1账号视图定义
CREATEVIEW[dbo].[accontnumber]
AS
SELECT账号,密码,权限
FROMdbo.账号
3.2.2登陆存储器:
实现登陆后权限控制
ALTERprocedure[dbo].[login](zhanghaovarchar(20),passwordvarchar(20),resultvarchar(20)=nulloutput)
ASDECLARE
密码varchar(20),权限varchar(20)=null,uservarchar(20)=null,passvarchar(20)=null;
begin
select密码=密码from账号where账号=zhanghao;
if密码!
=password
begin
setresult='
0'
;
end;
else
begin
select权限=权限from账号where账号=zhanghao;
if权限='
学生'
setuser=权限;
setpass='
1206034240'
end
if权限='
管理'
begin
setuser=权限;
setpass='
654321'
end
end
3.3安全性实施
用户CREATEUSER[aa]FORLOGIN[aa]WITHDEFAULT_SCHEMA=[dbo]
应用程序角色USE[水电管理系统]
GO
/******Object:
ApplicationRole[学生]ScriptDate:
06/27/201410:
46:
31******/
/*Toavoiddisclosureofpasswords,thepasswordisgeneratedinscript.*/
declareidxasint
declarerandomPwdasnvarchar(64)
declarerndasfloat
selectidx=0
selectrandomPwd=N'
'
selectrnd=rand((CPU_BUSY%100)+((IDLE%100)*100)+
(DATEPART(ss,GETDATE())*10000)+((cast(DATEPART(ms,GETDATE())asint)%100)*1000000))
whileidx<
64
selectrandomPwd=randomPwd+char((cast((rnd*83)asint)+43))
selectidx=idx+1
selectrnd=rand()
end
declarestatementnvarchar(4000)
selectstatement=N'
CREATEAPPLICATIONROLE[学生]WITHDEFAULT_SCHEMA=[dbo],'
+N'
PASSWORD=N'
+QUOTENAME(randomPwd,'
)
EXECdbo.sp_executesqlstatement
4.登陆子系统程序设计与实现
4.1登陆验证及获取返回参数
CallableStatementc=Assist.conn.prepareCall("
{calllogin(?
?
)}"
);
//给存储过程的第一个和第二个参数设置值
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
账号
from
number
where
"
+
id);
if(Assist.rs.next())
{
Sno.setText("
JOptionPane.showMessageDialog(null,
已存在该账号"
提示"
JOptionPane.ERROR_MESSAGE);
}
4.3学生账号注册:
CallableStatement
c=Assist.conn.prepareCall("
{call
zhanghao
(?
c.setString(1,Sno.getText());
c.setString(2,
Sname.getText());
student1
c.setString(1,Ssex.getText());
Sno.getText());
c.setString(3,
Sclas.getText());
c.setString(4,
Sbirth.getText());
c.setString(5,
Snation.getText());
5.登陆子系统子系统测试
登陆测试用例账号:
1206034240密码:
654321
图5登陆界面图6登陆成功
图7注册账号
图8注册成功
注册用例账号:
12060333
6.个人体会
这次实验,我学会了在数据库里面去使用触发器,存储过程,以及视图。
用触发器去进行复杂的约束条件,用存储过程和视图作为对外的接口,实现对数据库部结构的。
存储过程可以进行增删改操作,视图进行查询操作。
外部程序访问数据库的时候,首先通过默认的用户访问的登陆的存储过程,在登陆的存储过程进行密码匹配。
通过匹配结果判断是否登陆成功,返回结果值。
如果是成功的,同时返回账号权限所对应的的应用程序角色的账号密码。
目前根据用户定义了三个应用程序角色,分别为学生,统计员,管理员,每个应用程序角色对应一定的权限。
通过用户的登录验证的应用程序将用返回的应用程序角色的账号密码个去激活应用程序与数据库之间的临时。
实现了不同的账号对数据库访问的不同权限,增加了数据库的安全性。
系统还有不足的地方,在对一些数据约束还做的不到位,在输入框的输入的值,也应该进行相应的检验,不能把所有数据都都给数据库处理。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 水电 管理 系统 登陆 子系统 方案