《软件工程》课程设计学生选课系统教案资料.docx
- 文档编号:7779340
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:26
- 大小:189.48KB
《软件工程》课程设计学生选课系统教案资料.docx
《《软件工程》课程设计学生选课系统教案资料.docx》由会员分享,可在线阅读,更多相关《《软件工程》课程设计学生选课系统教案资料.docx(26页珍藏版)》请在冰豆网上搜索。
《软件工程》课程设计学生选课系统教案资料
《软件工程》课程设计——-学生选课系统
《软件工程》课程设计手册
题目:
学生选课系统设计
2010年1月20日
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
7项目小组成员及详细分工……………………………………………………10
8附:
模块源代码………………………………………………………………11
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驱动已经提供了对大多数常见类型数据库的支持,包括dBase,Informix,Access,SQLServer和Oracle等。
也包括了对其它类型的数据库的支持,如文本,Excel电子表格等的支持。
根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构:
1.名称:
用户信息表
表名称标识:
login
名称
字段名称
数据类型
主键
非空
用户名
UserName
文本
No
Yes
密码
Password
文本
No
No
记录:
2.名称:
课程信息表
表名称标识:
kechengbiao
名称
字段名称
数据类型
主键
非空
学号
number
数字
No
Yes
姓名
name
文本
No
No
课程名称
lesson
文本
No
No
记录:
4.2数据库的配置
一个真正的、完整的站点是离不开数据库的。
ODBC为应用程序提供了一种标准方法来操作相关的数据库:
管理器根据数据源提供的数据库的位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。
这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。
按如下步骤可以建立一个新的系统数据源。
首先,在控制面板中双击ODBC图标,打开“ODBC数据源管理器”对话框,选择“系统DSN”选项卡,单击“添加”按钮。
如下图所示。
在“创建新数据源”对话框中,选择“DriverdoMicrosoftAccess(*.mdb)”作为数据库驱动程序并单击“完成”按钮。
如下图所示。
在“ODBCMicrosoftAccess安装”对话框中,数据源名称填写为“student”,这是程序中将要引用的。
单击“选择…”按钮,从弹出的文件窗口中选择student.mdb文件所在的位置。
如下图所示。
然后单击“确定”按钮,这样就完成了Access数据库的ODBC数据源设置。
以上步骤,通过ODBC管理器注册了一个名字为student的数据源,并且指定了数据库的驱动程序。
5.详细设计
5.1学生登录模块的设计与实现
5.1.1.登录模块
功能:
本模块主要用于对用户身份进行鉴别。
用户通过表单提供用户名和密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别。
如果身份合法,则将用户导向系统的选课页面。
输入:
用户名、密码
处理:
(1)输入用户的登录信息:
在页面提供的表单出输入用户的用户名和密码信息,点击“登录”按钮提交表单信息到身份验证页面。
或点击“重置”按钮,重新输入。
(2)用户身份进行验证:
连接数据库,打开用户数据表login,检验用户登录信息。
以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。
如果存在,继续检验输入的密码是否正确。
密码和用户名都正确,则进入选课页面;如果用户名不存在或密码不正确,则给出登录失败的提示框。
输出:
学生选课页面
5.1.2.学生登录页面图如下图所示:
5.2学生注册模块的设计与实现
5.3学生查询模块的设计与实现
5.4学生选课模块的设计与实现
6测试及提交
7项目小组成员及详细分工
工作任务
XXX
XXX
XXX
XXX
需求分析
数据库的设计
查询功能
选课功能
登陆注册功能
查询模块
√
注册登录模块
√
数据库设计模块
√
选课模块
√
8附:
模块源代码
(1)登录模块
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.JOptionPane;
importjava.sql.*;
publicclassLoginextendsFrameimplementsActionListener{
Framef,f1;
Buttonb1;
Buttonb2;
Buttonb3;
TextFieldt1;
TextFieldt2;
Labell1;
Labell2;
Connectioncon;
Statementsql;//声明Statement对象
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(null,"输入不能为空!
");
}
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.INFORMATION_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());
l2=newLabel("学号");
t1=newTextField(10);
l3=new
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 课程设计 学生 选课 系统 教案 资料