《软件工程》学生选课系统.docx
- 文档编号:8099099
- 上传时间:2023-05-12
- 格式:DOCX
- 页数:23
- 大小:267.13KB
《软件工程》学生选课系统.docx
《《软件工程》学生选课系统.docx》由会员分享,可在线阅读,更多相关《《软件工程》学生选课系统.docx(23页珍藏版)》请在冰点文库上搜索。
《软件工程》学生选课系统
网上选课系统课程设计手册
团队:
非你莫属
学校:
武汉轻工大学
队长:
刘一飞
时间:
2014.11
1.项目概述3
1.1开发背景3
1.2开发目的3
1.3开发运行境3
1.4系统功能3
2.需求分析3
2.1系统需求3
2.2功能需求3
2.3业务流图3
3.总体设计4
3.1基本设计概念和处理流程4
3.2系统层次模图4
3.3系统层次模块图4
3.4模块设计5
4.数据库计5
4.1数据库的逻辑设计5
4.2数据库的配置6
5.详细设计8
5.1学生登录模块的设计与实现8
5.2学生注册模块的设计与实现9
5.3学生查询模块的设计与实现9
5.4学生选课模块的设计与实现10
6测试及提交10
1.项目概述
1.1开发背景
Internet的飞速发展深刻地影响了人们的日常生活和商业运作方式。
人们打开网页浏览当天的新闻,发电子邮件给远方的朋友,使用搜索引擎查找资料,进入网上商城购买商品这一切都是在使用Internet。
社会的方方面面渗透着互
连网的应用,使得一向烦琐的手工程序变得方便,快捷,而学校网上选课系统正是基于这一思想而发展起来的。
1.2开发目的
传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的限制完成选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工作效率。
1.3开发运行环境:
开发工具:
java语言
开发环境:
JDK
1.4系统功能:
(1)登录、注册功能.
(2)选课功能
(3)查询功能
2.需求分析
2.1系统需求
用户的需求具体体现在各种学习成绩的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出。
收集基本数据、数据结构及数据处理的流程,组成一份详尽数据字典,为后面的具体设计打下基础。
2.2功能需求
通过系统功能分析,针对一般的网上选课系统,总结出如下的需求信息:
(1)学生的需求:
网上选课、选课情况查询;
(2)本系统主要实现学生信息管理和选课查询。
学生信息包括学号、姓名、班级;
课程信息包括课程名;
2.3业务流程图
3•总体设计
3.1基本设计概念和处理流程
互联网技术的飞速发展,Java等设计工具的方便实用,以及数据库技术的发展给本系统的设计和实现提供了技术上的支持。
系统基本的流程是:
用户登录->主界面->选择各项子系统。
3.2系统层次模块图
学生选课系统
3.3系统层次模块图
开棵时间
出生年月
班级
3.4模块设计
(1)用户注册模块:
填写用户名、密码、确认密码
(2)用户登录模块:
填写已注册的用户名称,填写正确的密码,进入主控制页面。
(3)用户选课模块:
。
(4)用户查询模块:
可以进行查看所选课程的操作。
4•数据库设计
4.1数据库的逻辑设计
我们选用了MicrosoftAccess2000。
数据通信接口采用ODBC。
ODBC是微软开发的一套读取数据库的解决方案,它的目的是将所有对数据库的底层操作全部隐藏在ODBC的驱动程序内核
里。
对于程序员来说,只要构建了一个指向数据库的连接,就可以采用统一的应
用程序编程接口实现对数据库的读写。
目前ODBC驱动已经提供了对大多数常
见类型数据库的支持,包括dBaseInformix,Access,SQLServer和Oracle等。
也包括了对其它类型的数据库的支持,如文本,Excel电子表格等的支持。
根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构:
1.名称:
用户信息表
表名称标识:
login
名称
字段名称
数据类型
主键
非空
用户名
UserName
文本
No
Yes
密码
Password
文本
No
No
记录:
■login:
表:
Ustrlfine
Password
yiaopzng
1234
►
1
xnhanitng
!
cht68i225
Muhaiting
xhteeisss
lishuang
xhtS81225
333
123
乂ht
sht
*
2•名称:
课程信息表
表名称标识:
kechengbiao
名称
字段名称
数据类型
主键
非空
学号
number
数字
No
Yes
姓名
name
文本
No
No
课程名称
lesson
文本
No
No
记录:
■kechengbido:
表
rLumb&r
lesson
06040B1025
卢文林
软件工程操花系统
►
60406102^
离散・J4va
6040&1023
胡中涛
离散,软件工程
604061025
卢文琳
离散,软件工程F汇编#操作莱统
604061032
李爽
离散,操作系统'
77T
T77
离散数学
4.2数据库的配置
一个真正的、完整的站点是离不开数据库的。
ODBC为应用程序提供了一种标准方法来操作相关的数据库:
管理器根据数据源提供的数据库的位置、数据库
类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。
这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。
按如下步骤可以建立一个新的系统数据源。
首先,在控制面板中双击ODBC图标,打开“ODBC数据源管理器”对话框,选择“系统DSN”选项卡,单击“添加”按钮。
如下图所示。
在“创建新数据源”对话框中,选择“DriverdoMicrosoftAccess(*mdb)作为数据库驱动程序并单击“完成”按钮。
如下图所示。
创建新数据源
二一兰引l_「完成I取消
在“ODBCMicrosoftAccess安装”对话框中,数据源名称填写为“studen”,这是程序中将要引用的。
单击“选择…”按钮,从弹出的文件窗口中选择
student.mdb文件所在的位置。
如下图所示
然后单击“确定”按钮,这样就完成了Access数据库的ODBC数据源设置。
以上步骤,通过ODBC管理器注册了一个名字为student的数据源,并且指定了数据库的驱动程序。
5•详细设计
5.1学生登录模块的设计与实现
5.1.1.登录模块
功能:
本模块主要用于对用户身份进行鉴别。
用户通过表单提供用户名和密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别。
如果身份合法,则将用户导向系统的选课页面。
输入:
用户名、密码
处理:
(1)输入用户的登录信息:
在页面提供的表单出输入用户的用户名和密码信息,点击“登录”按钮提交表单信息到身份验证页面。
或点击“重置”按钮,重新输入。
(2)用户身份进行验证:
连接数据库,打开用户数据表login,检验用户登录信息。
以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。
如果存在,继续检验输入的密码是否正确。
密码和用户名都正确,则进入选课页
面;如果用户名不存在或密码不正确,则给出登录失败的提示框。
输出:
学生选课页面
5.1.2.学生登录页面图如下图所示:
甬氏丨吹觀輔注冊I
5.2学生注册模块的设计与实现
用户£
注刑壷回逞出
5.3学生查询模块的设计与实现
il¥i
5.4学生选课模块的设计与实现
览名空J凹斷is孵rwxur¥r曲書ri^aifti+r辦工堆r斛爭棘r马克聖礙
6测试及提交
7项目小组成员及详细分工
工作任务
徐寒亭
胡中涛
卢文琳
李爽
需求分析
数据库的设计
查询功能
选课功能
登陆注册功能
查询模块
V
注册登录模块
V
数据库设计模块
V
选课模块
V
8附:
模块源代码
(1)登录模块
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
importjava.sql.*;
publicclassLoginextendsFrameimplementsActionListener{
Framef,f1;
Buttonb1;
Buttonb2;
Buttonb3;
TextFieldt1;
TextFieldt2;
Labell1;
Labell2;
Connectioncon;
Statementsql;//声明StatementX寸象
ResultSetrs;
publicLogin(){
f=newFrame("学生选课系统");
Toolkittool=f.getToolkit();
Dimensiondim=tool.getScreenSize();
f.setBounds(0,0,dim.width,dim.height);
Panelp=newPanel();
f.add(p);
l1=newLabel("用户名");
l2=newLabel("密码");
t1=newTextField(20);
t2=newTextField(20);
b1=newButton("登陆");
b2=newButton("取消");
b3=newButton("注册");
p.add(l1);
p.add(t1);
p.add(l2);
p.add(t2);
p.add(b1);
p.add(b2);
p.add(b3);
b1.addActionListener(this);
b2.addActionListener(this);
b3.addActionListener(this);
f.setVisible(true);t2.setEchoChar('*');f.addWindowListener(newWindowAdapter()
{
publicvoidwindowClosing(WindowEvente)
{System.exit(0);
}
}
);
}
publicvoidactionPerformed(ActionEvente){if(e.getSource()==b1){if(t1.getText().equals("")||t2.getText().equals("")){
JOptionPane.showMessageDialog(nuII,输入不能为空!
");
}
else{
try{Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundExceptiona){System.out.println(""+a);
}try{con=DriverManager.getConnection("jdbc:
odbc:
sun","","");sql=con.createStatement();
rs=sql.executeQuery("Select*FROMlogin");//查询数
据库
booleancheck=false;while(rs.next()){StringUserName=rs.getString
(1);//获得数
据库第二列
StringPassword=rs.getString
(2);//获得数据库第
三列
if(t1.getText().equals(UserName)&&t2.getText().equals(Password)){//判断语句
check=true;
JOptionPane.showMessageDialog(null,登陆成
功!
");
f.dispose();
newWindowBox("选课窗口");
t1.setText("");t2.setText("");break;
}
}
if(check==false){JOptionPane.showMessageDialog(null,登陆失败,请重新输入!
");
}
con.close();
}catch(SQLExceptionel){}
}
}
if(e.getSource()==b2){
t1.setText("");
t2.setText("");
}
if(e.getSource()==b3){
f.dispose();newRegist("学生选课系统注册界面");
}
}
publicvoidwindowClosing(WindowEvente){
System.exit(0);
}
publicstaticvoidmain(String[]args){
newLogin();
}
}
(2)注册模块
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
importjava.sql.*;
classRegistextendsFrameimplementsActionListener{Labellb1,lb2,lb3;TextFieldtf1,tf2,tf3;
Buttonbt1,bt2,bt3;
Regist(Strings){
super(s);setLayout(null);setBounds(0,0,900,900);setVisible(true);setResizable(false);
lb1=newLabel("用户名");
lb1.setBounds(150,100,50,20);
lb2=newLabel("密码");
lb2.setBounds(150,200,50,20);
lb3=newLabel("确认");
lb3.setBounds(150,300,50,20);
tf1=newTextField();
tf1.setBounds(200,98,200,20);
tf2=newTextField();tf2.setBounds(200,198,200,20);
tf2.setEchoChar('*');
tf3=newTextField();
tf3.setBounds(200,298,200,20);
tf3.setEchoChar('*');
bt1=newButton("注册");bt1.setBounds(200,400,100,40);
bt2=newButton("返回");bt2.setBounds(350,400,100,40);
bt3=newButton("退出");bt3.setBounds(435,400,100,40);
add(lb1);
add(lb2);
add(lb3);
add(tf1);
add(tf2);
add(tf3);
add(bt1);
add(bt2);
add(bt3);
tf3.addActionListener(this);
bt1.addActionListener(this);
bt2.addActionListener(this);
bt3.addActionListener(this);
addWindowListener(newjava.awt.event.WindowAdapter(){publicvoidwindowClosing(java.awt.event.WindowEvente){
System.exit(0);
}
}
);
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==bt1||e.getSource()==tf1||e.getSource()==tf2||e.getSource()==tf3){
if(tf1.getText().equals("")||tf2.getText().equals("")||tf3.getText().equals("")){
JOptionPane.showMessageDialog(this,情输入用户名和密码","提示",JOptionPane.ERROR_MESSAGE);〃判断文本内容语句
}
else{
if(tf2.getText().equals(tf3.getText())){
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connectioncon;
Statementsq;
ResultSetr;
Stringu,p;
con=
DriverManager.getConnection("jdbc:
odbc:
sun",null,null);
sq=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
r=sq.executeQuery("SELECT*FROMlogin");while(r.next()){
u=r.getString
(1);
if(tf1.getText().equals(u)){
JOptionPane.showMessageDialog(this用户已存在","错误",JOptionPane.ERROR_MESSAGE);
con.close();
break;//判断用户是否存在
}
elseif(r.isLast()){//判断是否已经读完整个表
u=tf1.getText();
p=tf2.getText();
sq.executeUpdate("INSERTINTOlogin(UserName,Password)VALUES("+"'"+u+"'"+","+"'"+p+"'"+")");//写入用户信息
JOptionPane.showMessageDialog(this注册成功
","提示",JOptionPane」NFORMATION_MESSAGE);
con.close();
dispose();
newLogin();
break;
}
}
tf1.setText(null);
tf2.setText(null);
tf3.setText(null);
}
catch(SQLExceptionb){
JOptionPane.showMessageDialog(this,b错误",JOptionPane.ERROR_MESSAGE);
}
catch(ClassNotFoundExceptiona){
JOptionPane.showMessageDialog(this,a错误
",JOptionPane.ERROR_MESSAGE);
}
}
else{
JOptionPane.showMessageDialog(this两次密码不一致","提示",JOptionPane.ERROR_MESSAGE);
tf2.setText(null);
tf3.setText(null);
}
}
}
elseif(e.getSource()==bt3){
System.exit(0);
}
elseif(e.getSource()==bt2){
dispose();
newLogin();
}
publicclassxuhanting1
{
publicstaticvoidmain(Stringargs[])
{
newRegist(”学生选课系统注册界面");
}
}
(3)选课模块importjava.awt.*;importjava.awt.event.*;importjava.sql.*;
classWindowBoxextendsFrameimplementsActionListener,ItemListener{
Checkboxbox1,box2,box3,box4,box5,box6;
Labell1;
Labell2;
TextFieldt1;
Labell3;
TextFieldt2;
TextAreat=newTextArea();
Buttonb1,b2;
WindowBox(Strings)
{
super(s);setLayout(newFlowLayout());12=newLabel("学号");t1=newTextField(10);
13=newLabel("姓名");
t2=newTextField(10);
b1=newButton("确定");
b2=newButton("重置");
11=newLabel("所选课程");
box仁newCheckbox"离散数学"false);
box2=newCheckbox("汇编语言"false);box3=newCheckbox("java语言设计",false);box4=newCheckbox("软件工程"false);box5=newCheckbox('操作系统"false);box6=newCheckbox("马克思政治学"false);box1.addItemListener(this);box2.addItemListener(this);box3.addItemListener(this);
box4.addItemListener(this);
box5.addItemListener(this);
box6.addItemListener(this);
add(l2);
add(t1);
add(l3);
add(t2);
add(b1);
add(b2);
add(l1);
add(box1);
add(box2);
add(box3);
add(box4);
add(box5);
add(box6);
add(t);
b1.addActionListener(this);
b2.addActionListener(this);setSize(500,500);
setVisible(true);
addW
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 学生 选课 系统