大学自动排课算法设计与实现课设说明书.docx

上传人:b****2 文档编号:18490814 上传时间:2023-08-18 格式:DOCX 页数:43 大小:695.79KB
下载 相关 举报
大学自动排课算法设计与实现课设说明书.docx_第1页
第1页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第2页
第2页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第3页
第3页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第4页
第4页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第5页
第5页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第6页
第6页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第7页
第7页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第8页
第8页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第9页
第9页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第10页
第10页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第11页
第11页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第12页
第12页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第13页
第13页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第14页
第14页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第15页
第15页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第16页
第16页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第17页
第17页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第18页
第18页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第19页
第19页 / 共43页
大学自动排课算法设计与实现课设说明书.docx_第20页
第20页 / 共43页
亲,该文档总共43页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

大学自动排课算法设计与实现课设说明书.docx

《大学自动排课算法设计与实现课设说明书.docx》由会员分享,可在线阅读,更多相关《大学自动排课算法设计与实现课设说明书.docx(43页珍藏版)》请在冰点文库上搜索。

大学自动排课算法设计与实现课设说明书.docx

大学自动排课算法设计与实现课设说明书

中北大学

课程设计说明书

软件工程大型实验

 

学生姓名:

史东海

学号:

0706054208

学院:

电子与计算机科学技术学院

专业:

软件工程

题目:

大学自动排课算法设计与实现系统

——登陆及用户管理子系统

成绩

 

指导教师:

宋礼鹏职称:

讲师

2010年1月21日

1.设计目的

该系统并不是所有人都能随便使用的。

系统应该有不同的权限用于排课和课表的查询,通过登陆可以解决权限问题。

而用户是会经常变动的(比如毕业生的离校),所以需要对用户进行相应的管理(如添加、删除及密码的修改),所以需要实现用户管理功能。

2.设计内容

在整个系统中本人主要负责登陆和用户管理功能的实现,同时也参加算法的设计与实现。

本系统要涉及到管理人员、教师、学生三个不同的参与者,有两个不同的权限。

管理员可以录入教师、教室、班级等基本的信息然后进行排课,而教师和学生只具有查询课表的权限。

所以在登录的时候要把不同的权限划分出来。

程序在设计好后数据库中有一个默认的管理员的用户名和密码,通过该用户名和密码可以登陆系统,然后通过用户管理模块可以添加教师、学生或管理员。

为了防止用户忘记密码,管理员可以在不知道原始密码的情况下修改用户的密码。

而教师或学生若想修改自己的密码必须输入旧密码。

3.需求描述

图1登陆及用户管理子系统用例图

 

用例描述如下:

 

表1UserManagement用例描述表

用例编号

UC00

用例名称

UserManagement

用例概述

实现用户的添加、删除及密码修改

主参与者

管理员

次要参与者

教师、学生

前置条件

用户成功登陆

后置条件

显示出添加、修改用户及密码修改的子菜单

基本事件流

1.用户点击用户管理菜单项

2.用户管理菜单项显示添加用户、删除用户、修改密码三个子菜单

扩展事件流

 

表2Login用例描述表

用例编号

UC01

用例名称

Login

用例概述

用户输入账号和密码登陆

主参与者

管理员、教师、学生

次要参与者

前置条件

用户打开应用程序

后置条件

登陆失败时显示登陆失败信息,成功时进入系统

基本事件流

1.用户输入用户信息

2.用户合法则进入系统

扩展事件流

用户不合法时,则提示登陆失败消息

表3AddUser用例描述表

用例编号

UC000

用例名称

AddUser

用例概述

实现用户的添加

主参与者

管理员

次要参与者

前置条件

管理员成功登陆,并点击了添加用户菜单项

后置条件

弹出添加用户对话框,输入用户名及密码

基本事件流

1.管理员点击添加用户菜单项

2.管理员输入用户名、密码并选择所添加用户的身份,点击确定

扩展事件流

1.若用户存在则提示“用户名已存在”

2.若没有选择用户身份则提示“请选择用户身份”

3.若用户不存在且两次输入密码不同则提示“两次输入密码不同”

4.若用户名不存在且两次输入密码相同并选择了身份,则给出“添加成功”提示

 

表4DeleteUser用例描述表

用例编号

UC001

用例名称

DeleteUser

用例概述

实现用户的删除

主参与者

管理员

次要参与者

前置条件

管理员成功登陆,并点击了删除用户菜单项

后置条件

弹出删除用户对话框,输入用户名及密码

基本事件流

1.管理员点击删除用户菜单项

2.管理员输入用户名及密码,点击确定

扩展事件流

1.若用户名或密码错误则给出相应的提示

2.若用户名和密码正确则提示删除成功

表5ModifyPassword用例描述表

用例编号

UC002

用例名称

ModifyPassword

用例概述

实现用户密码的修改

主参与者

管理员、教室、学生

次要参与者

前置条件

用户成功登陆,并点击密码修改菜单项

后置条件

弹出密码修改对话框,输入用户名及密码

基本事件流

1.用户点击密码修改菜单项

2.用户输入用户名及密码,点击确定

扩展事件流

1.若用户名或旧密码错误则给出相应的提示

2.若用户名和密码正确则提示修改成功

4.系统详细分析设计

4.1顺序图

(1)登陆顺序图:

图2登陆顺序图

登陆首先输入用户名和密码,然后程序到数据库中查询用户名是否存在,密码是否正确,如果正确则登陆成功;不正确登陆失败,可以继续登陆或关闭登陆窗口。

(2)添加用户顺序图:

图3添加用户顺序图

管理员输用户名、密码和确认密码。

如果数据库对应表中有所输入的用户名则给出提示;没有则比较两次输入密码是否相同,相同条件成功;不同则给出相应提示。

删除用户顺序图:

图4删除用户顺序图

管理员输入用户名和密码。

如果数据库中不存在所输入的用户名则给出相应提示;存在则检查密码是否匹配,匹配则删除成功;不匹配则删除失败。

修改密码顺序图:

图5修改密码顺序图

用户输入用户名、旧密码(非管理员输入)、新密码。

程序检查数据库中所输入用户名是否存在,不存在则给出提示;存在则检查旧密码(非管理员)是否匹配,不匹配则给出提示;匹配则检查新密码是否为空,为空则给出提示;不为空则修改表中数据,密码修改成功。

4.2活动图

登陆活动图:

图6登陆活动图

登陆首先输入用户名和密码,然后程序到数据库中查询用户名是否存在,密码是否正确,如果正确则登陆成功;不正确登陆失败,可以继续登陆或关闭登陆窗口。

添加用户活动图:

图7添加用户活动图

管理员输用户名、密码和确认密码。

如果数据库对应表中有所输入的用户名则给出提示;没有则比较两次输入密码是否相同,相同条件成功;不同则给出相应提示。

删除用户活动图:

图8删除用户活动图

 

管理员输入用户名和密码。

如果数据库中不存在所输入的用户名则给出相应提示;存在则检查密码是否匹配,匹配则删除成功;不匹配则删除失败。

 

修改密码活动图:

图9修改密码活动图

 

用户输入用户名、旧密码(非管理员输入)、新密码。

程序检查数据库中所输入用户名是否存在,不存在则给出提示;存在则检查旧密码(非管理员)是否匹配,不匹配则给出提示;匹配则检查新密码是否为空,为空则给出提示;不为空则修改表中数据,密码修改成功。

 

4.3类图

图10登陆及用户管理模块类图

本系统有五个类,分别是Login、UserManagement、AddUser、DeleteUser和ModifyPassword,其中AddUser、DeleteUser、ModifyPassword是UserManagement的泛化。

4.4部署图

图11登陆及用户管理模块部署图

系统通过应用服务器与数据库连接,可分为四个模块,都可以单独编译执行。

四个模块的所有动作都需要连接到数据库并查询。

4.5构件图

图12登陆及用户管理模块构件图

本人将此系统分成了四个模块,分别是登录、添加用户、删除用户和修改密码。

在这四个子系统中,程序都是独立编写,每个程序之间通过对类的调用实现的联系。

4.6数据库表

表6教师信息表

字段名称

中文含义

字段类型

长度

是否为空

备注

Username

教师用户名

Char

20

主键

Password

教师密码

Char

20

表7学生信息表

字段名称

中文含义

字段类型

长度

是否为空

备注

Username

学生用户名

Char

20

主键

Password

教师密码

Char

20

表8管理员信息表

字段名称

中文含义

字段类型

长度

是否为空

备注

Username

管理员用户名

Char

20

主键

Password

管理员密码

Char

20

5.系统实现

5.1开发工具及系统运行环境

开发工具:

Java运行平台(JDK1.6.0_17)、MyEclipse、MicrosoftOfficeAccess2003。

运行环境:

装有Java运行平台的任何PC机。

5.2登陆及用户管理子系统实现

登陆模块伪代码如下:

Username=textfield.getText();

Password=textfield2.getText();

if(signA==true)

{

try

{

rs=sql.executeQuery("SELECT*FROMguanliyuan");

while(rs.next())

{

getUsername=rs.getString

(1);

getPassword=rs.getString

(2);

if(getUsername.equals(Username)&&getPassword.equals(Password))

{

this.dispose();

ClassroomSchedulerFramewin=newClassroomSchedulerFrame("大学自动排课系统");

sign1=true;

break;

}

}

if(sign1==false)

{

JOptionPane.showMessageDialog(this,"用户名或密码错误,请重新输入","信息提示",JOptionPane.WARNING_MESSAGE);

textfield2.setText(null);

}

}

catch(SQLExceptionee)

{

System.out.println(""+ee);

}

}

elseif(signT==true)

{

try

{

rs=sql.executeQuery("SELECT*FROMteacher");

while(rs.next())

{

getUsername=rs.getString

(1);

getPassword=rs.getString

(2);

if(getUsername.equals(Username)&&getPassword.equals(Password))

{

this.dispose();

ClassroomSchedulerFramewin=newClassroomSchedulerFrame("大学自动排课系统");

sign2=true;

break;

}

}

if(sign2==false)

{

JOptionPane.showMessageDialog(this,"用户名或密码错误,请重新输入","信息提示",JOptionPane.WARNING_MESSAGE);

textfield2.setText(null);

}

}

catch(SQLExceptionee)

{

System.out.println(""+ee);

}

}

elseif(signS==true)

{

try

{

rs=sql.executeQuery("SELECT*FROMstudent");

while(rs.next())

{

getUsername=rs.getString

(1);

getPassword=rs.getString

(2);

if(getUsername.equals(Username)&&getPassword.equals(Password))

{

this.dispose();

ClassroomSchedulerFramewin=newClassroomSchedulerFrame("大学自动排课系统");

sign3=true;

break;

}

}

if(sign3==false)

{

JOptionPane.showMessageDialog(this,"用户名或密码错误,请重新输入","信息提示",JOptionPane.WARNING_MESSAGE);

textfield2.setText(null);

}

}

catch(SQLExceptionee)

{

System.out.println(""+ee);

}

}

登陆模块窗口图如下:

图13登陆窗口图

登陆界面是运行排课程序或查课的入口,只有成功登陆才能做相应的一些操作。

当选择管理员、教师、学生不同身份登陆者的时候程序会到相应的表中查找用户名和密码,如果存在对应用户并且密码正确则登陆成功,进入系统;如果用户名或密码不正确则登陆失败并给出相应的错误提示。

添加用户的伪代码如下:

Username=textfield.getText();

Newpassword=textfield1.getText();

Newpassword2=textfield2.getText();

if(signA==true)

{

try

{

rs=sql.executeQuery("SELECT*FROMguanliyuan");

sql=con.createStatement();

while(rs.next())

{

getUsername=rs.getString

(1);

if(getUsername.equals(Username))

{

JOptionPane.showMessageDialog(this,"用户名已存在!

","信息提示",JOptionPane.WARNING_MESSAGE);

sign=true;

break;

}

}

if(Newpassword.equals(Newpassword2)&&sign==false)

{

if(Username.equals("")&&Newpassword.equals(""))

{

JOptionPane.showMessageDialog(this,"用户名和密码不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

elseif(Username.equals(""))

{

JOptionPane.showMessageDialog(this,"用户名不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

elseif(Newpassword.equals(""))

{

JOptionPane.showMessageDialog(this,"密码不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

else

{

sql.executeUpdate("INSERTINTOguanliyuanVALUES('"+Username+"','"+Newpassword+"')");

this.dispose();

JOptionPane.showMessageDialog(this,"添加成功!

","信息提示",JOptionPane.WARNING_MESSAGE);

sign=true;

}

}

elseif(sign==false)

{

JOptionPane.showMessageDialog(this,"两次输入密码不同!

请重新输入!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

}

catch(SQLExceptionee)

{

System.out.println(""+ee);

}

sign=false;

}

if(signT==true)

{

try

{

rs=sql.executeQuery("SELECT*FROMteacher");

sql=con.createStatement();

while(rs.next())

{

getUsername=rs.getString

(1);

if(getUsername.equals(Username))

{

JOptionPane.showMessageDialog(this,"用户名已存在!

","信息提示",JOptionPane.WARNING_MESSAGE);

sign=true;

break;

}

}

if(Newpassword.equals(Newpassword2)&&sign==false)

{

if(Username.equals("")&&Newpassword.equals(""))

{

JOptionPane.showMessageDialog(this,"用户名和密码不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

elseif(Username.equals(""))

{

JOptionPane.showMessageDialog(this,"用户名不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

elseif(Newpassword.equals(""))

{

JOptionPane.showMessageDialog(this,"密码不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

else

{

sql.executeUpdate("INSERTINTOteacherVALUES('"+Username+"','"+Newpassword+"')");

this.dispose();

JOptionPane.showMessageDialog(this,"添加成功!

","信息提示",JOptionPane.WARNING_MESSAGE);

sign=true;

}

}

elseif(sign==false)

{

JOptionPane.showMessageDialog(this,"两次输入密码不同!

请重新输入!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

}

catch(SQLExceptionee)

{

System.out.println(""+ee);

}

sign=false;

}

if(signS==true)

{

try

{

rs=sql.executeQuery("SELECT*FROMstudent");

sql=con.createStatement();

while(rs.next())

{

getUsername=rs.getString

(1);

if(getUsername.equals(Username))

{

JOptionPane.showMessageDialog(this,"用户名已存在!

","信息提示",JOptionPane.WARNING_MESSAGE);

sign=true;

break;

}

}

if(Newpassword.equals(Newpassword2)&&sign==false)

{

if(Username.equals("")&&Newpassword.equals(""))

{

JOptionPane.showMessageDialog(this,"用户名和密码不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

elseif(Username.equals(""))

{

JOptionPane.showMessageDialog(this,"用户名不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

elseif(Newpassword.equals(""))

{

JOptionPane.showMessageDialog(this,"密码不能为空!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

else

{

sql.executeUpdate("INSERTINTOstudentVALUES('"+Username+"','"+Newpassword+"')");

this.dispose();

JOptionPane.showMessageDialog(this,"添加成功!

","信息提示",JOptionPane.WARNING_MESSAGE);

sign=true;

}

}

elseif(sign==false)

{

JOptionPane.showMessageDialog(this,"两次输入密码不同!

请重新输入!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

}

catch(SQLExceptionee)

{

System.out.println(""+ee);

}

}

sign=false;

}

}

elseif(signC==false)

{

JOptionPane.showMessageDialog(this,"请选择要添加用户的身份!

","信息提示",JOptionPane.WARNING_MESSAGE);

}

添加用户模块窗口图如下:

图14添加用户窗口图

添加用户模块可以向数据库中对应的表中添加新的用户。

当选择添加不同身份的用户的时候程序会到相应的表中查找所添加的用户是否存在,如果存在则给出对应提示;如果不存在则检查两次输入的密码是否相同,如果相同则添加成功,不同则给出错误提示。

删除用户模块伪代码如下:

Username=textfield.getText();

Password=textfield1.getText();

try

{

rs=sql.executeQuery("SELECT*FROMguanliyuan");

sql=con.createStatement();

while(rs.next())

{

getUsername=rs.getString

(1);

getPassword=rs.getString

(2);

if(getUsername.equals(Username)&&getPassword.equals(Password))

{

sql.executeUpdate("DELETEFROMguanliyuanWHEREname='"+Username+"'");

this.dispose();

JOption

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高中教育 > 小学教育

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2