水电管理系统登陆子系统范本_第1页
水电管理系统登陆子系统范本_第2页
水电管理系统登陆子系统范本_第3页
水电管理系统登陆子系统范本_第4页
水电管理系统登陆子系统范本_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

年4月19日水电管理系统登陆子系统文档仅供参考数据库课程实验周设计说明书水电管理系统学生姓名:施杰明学号:学院:计算机与控制工程专业:计算机科学与技术指导教师:熊风光6月27日1.需求分析1.1目标设计以宿舍水电费为背景,实现水电费管理。本系统能够分为四个子系统:1.统计子系统:统计水电用量,水电费用计算,扣除水电费。2.登陆子系统:实现密码验证,不同身份的用户具有不同的权限。3.管理子系统:增加,删除,修改用户,设置水电价格。4.缴费子系统:实现查询余额,缴费功能1.2开发和运行环境Eclipse、SQLserverWindow7,window81.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学生表的定义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( [学号]ASC)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)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.3账号表的定义CREATETABLE[dbo].[账号](

[账号][varchar](20)NOTNULL,

[密码][varchar](20)NOTNULL,

[权限][varchar](20)NOTNULL,

CONSTRAINT[PK_账号]PRIMARYKEYNONCLUSTERED

(

[账号]ASC

)WITH(PAD_INDEX=OFF,STATISTICS_NORECOMPUTE=OFF,IGNORE_DUP_KEY=OFF,ALLOW_ROW_LOCKS=ON,ALLOW_PAGE_LOCKS=ON)ON[PRIMARY]

)ON[PRIMARY]3.2视图、存储过程、触发器的结构和定义3.2.1账号视图定义CREATEVIEW[dbo].[accontnumber]ASSELECT账号,密码,权限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 set@result='0'; end; else begin select@权限=权限from账号where账号=@zhanghao; if@权限='学生' begin set@user=@权限; set@pass=''; end if@权限='管理' begin set@user=@权限; set@pass='654321'; end end 3.3安全性保密实施用户CREATEUSER[aa]FORLOGIN[aa]WITHDEFAULT_SCHEMA=[dbo]应用程序角色USE[水电管理系统]GO/******Object:ApplicationRole[学生]ScriptDate:06/27/10:46:31******//*Toavoiddisclosureofpasswords,thepasswordisgeneratedinscript.*/declare@idxasintdeclare@randomPwdasnvarchar(64)declare@rndasfloatselect@idx=0select@randomPwd=N''select@rnd=rand((@@CPU_BUSY%100)+((@@IDLE%100)*100)+(DATEPART(ss,GETDATE())*10000)+((cast(DATEPART(ms,GETDATE())asint)%100)*1000000))while@idx<64beginselect@randomPwd=@randomPwd+char((cast((@rnd*83)asint)+43))select@idx=@idx+1select@rnd=rand()enddeclare@statementnvarchar(4000)select@statement=N'CREATEAPPLICATIONROLE[学生]WITHDEFAULT_SCHEMA=[dbo],'+N'PASSWORD=N'+QUOTENAME(@randomPwd,'''')EXECdbo.sp_executesql@statementGO4.登陆子系统程序设计与实现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());

c.execute();

c=Assist.conn.prepareCall("{call

student1

(?,?,?,?,?)}");

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.登陆子系统子系统测试登陆测试用例账号:密码:654321图5登陆界面 图6登陆成功图7注册账号图8注册成功注册用例账号:120603336.个人体会这次实验,我学会了在数据库里面去使用触发器,存储过程,以及视图。用触发器去进行复杂的约束条件,用存储过程和视图作为对外的接口,实现对数据库内部结构的保密。存储过程能够进行增删改操作,视图进行查询操作。外部程序访问数据库的时候,首先经过默认的

温馨提示

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

最新文档

评论

0/150

提交评论