网选课系统课程设计手册
团队:
学校:
队长:
时间:2014
目 录
1 项目概述 ………………………………………………………………………3
11开发背景 ………………………………………………………………………3
12 开发目 ……………………………………………………………………3
13 开发运行境 ……………………………………………………………………3
14 系统功 ………………………………………………………………………3
2需求分析 …………………………………………………………………………3
21 系统需求 ………………………………………………………………………3
22 功需求 ………………………………………………………………………3
23 业务流图 ………………………………………………………………………3
3总体设计 …………………………………………………………………………4
31 基设计概念处理流程 ……………………………………………………4
32 系统层次模图 …………………………………………………………………4
33系统层次模块图 ………………………………………………………………4
34模块设计 ………………………………………………………………………5
4数库计 …………………………………………………………………………5
41 数库逻辑设计 ……………………………………………………………5
42数库配置……………………………………………………………………6
5 详细设计 ………………………………………………………………………8
51 学生登录模块设计实现 …………………………………………………8
52 学生注册模块设计实现 …………………………………………………9
53 学生查询模块设计实现…………………………………………………9
54 学生选课模块设计实现…………………………………………………10
6 测试提交 ……………………………………………………………………10
1项目概述
11 开发背景
Internet飞速发展深刻影响日常生活商业运作方式开网页浏览天新闻发电子邮件远方朋友搜索引擎查找资料进入网商城购买商品——切Internet社会方方面面渗透着互连网应烦琐手工程序变方便快捷学校网选课系统正基思想发展起
12 开发目
传统手工选课仅复杂牵涉力理造成诸变助网选课系统学生规定选课时间段受点时间限制完成选修课申请学校方便系统进行理控制提高工作效率
13 开发运行环境
开发工具java语言
开发环境JDK
14 系统功:
(1) 登录注册功
(2) 选课功
(3) 查询功
2需求分析
21 系统需求
户需求具体体现种学成绩提供保存更新查询方面求数库结构充分满足种信息输入输出收集基数数结构数处理流程组成份详数字典面具体设计基础
22 功需求
通系统功分析针般网选课系统总结出需求信息:
(1) 学生需求:网选课选课情况查询
(2) 系统实现学生信息理选课查询
学生信息包括学号姓名班级
课程信息包括课程名
23 业务流程图
学生
登录
选课
查询课程
系统
理员
选课信息
3总体设计
31 基设计概念处理流程
互联网技术飞速发展Java等设计工具方便实数库技术发展系统设计实现提供技术支持
系统基流程:户登录->界面->选择项子系统
32 系统层次模块图
学生选课系统
登陆注册
选课
查询
数库设计
33系统层次模块图
34模块设计
(1) 户注册模块:填写户名密码确认密码
(2) 户登录模块:填写已注册户名称填写正确密码进入控制页面
(3) 户选课模块:
(4) 户查询模块:进行查选课程操作
4数库设计
41 数库逻辑设计
选Microsoft Access 2000
数通信接口采ODBCODBC微软开发套读取数库解决方案目数库底层操作全部隐藏ODBC驱动程序核里程序员说构建指数库连接采统应程序编程接口实现数库读写目前ODBC驱动已提供数常见类型数库支持包括dBaseInformixAccessSQL ServerOracle等包括类型数库支持文Excel电子表格等支持
根系统功设计求功模块划分系统信息数库列出数项数结构:
1 名称:户信息表
表名称标识:login
名称
字段名称
数类型
键
非空
户名
UserName
文
No
Yes
密码
Password
文
No
No
记录:
2名称:课程信息表
表名称标识:kechengbiao
名称
字段名称
数类型
键
非空
学号
number
数字
No
Yes
姓名
name
文
No
No
课程名称
lesson
文
No
No
记录:
42数库配置
真正完整站点离开数库ODBC应程序提供种标准方法操作相关数库:理器根数源提供数库位置数库类型ODBC驱动程序等信息建立起ODBC具体数库联系样应程序数源名提供ODBCODBC建立起相应数库连接
步骤建立新系统数源
首先控制面板中双击ODBC图标开ODBC数源理器话框选择系统DSN选项卡单击添加钮图示
创建新数源话框中选择Driver do Microsoft Access(*mdb)作数库驱动程序单击完成钮图示
ODBC Microsoft Access安装话框中数源名称填写student程序中引单击选择…钮弹出文件窗口中选择studentmdb文件位置图示
然单击确定钮样完成Access数库ODBC数源设置
步骤通ODBC理器注册名字student数源指定数库驱动程序
5 详细设计
51 学生登录模块设计实现
511 登录模块
功:模块户身份进行鉴户通表单提供户名密码信息系统根户提供登录信息户进行身份查询鉴果身份合法户导系统选课页面
输入:户名密码
处理:
(1) 输入户登录信息:页面提供表单出输入户户名密码信息点击登录钮提交表单信息身份验证页面点击重置钮重新输入
(2) 户身份进行验证:连接数库开户数表login检验户登录信息输入数户名查询条件创建数集查输入户名否存果存继续检验输入密码否正确密码户名正确进入选课页面果户名存密码正确出登录失败提示框
输出:学生选课页面
512.学生登录页面图图示:
52 学生注册模块设计实现
53 学生查询模块设计实现
54 学生选课模块设计实现
6 测试提交
7 项目组成员详细分工
工作务
徐寒亭
胡中涛
卢文琳
李爽
需求分析
数库设计
查询功
选课功
登陆注册功
查询模块
√
注册登录模块
√
数库设计模块
√
选课模块
√
8 附:模块源代码
(1)登录模块
import javaawt*
import javaawtevent*
import javaxswingJOptionPane
import javasql*
public class Login extends Frame implements ActionListener{
Frame ff1
Button b1
Button b2
Button b3
TextField t1
TextField t2
Label l1
Label l2
Connection con
Statement sql 声明Statement象
ResultSet rs
public Login(){
fnew Frame(学生选课系统)
Toolkit toolfgetToolkit()
Dimension dimtoolgetScreenSize()
fsetBounds(00dimwidthdimheight)
Panel pnew Panel()
fadd(p)
l1new Label(户名)
l2new Label(密码)
t1new TextField(20)
t2new TextField(20)
b1new Button(登陆)
b2new Button(取消)
b3new Button(注册)
padd(l1)
padd(t1)
padd(l2)
padd(t2)
padd(b1)
padd(b2)
padd(b3)
b1addActionListener(this)
b2addActionListener(this)
b3addActionListener(this)
fsetVisible(true)
t2setEchoChar('*')
faddWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
Systemexit(0)
}
}
)
}
public void actionPerformed(ActionEvent e){
if(egetSource()b1){
if(t1getText()equals()||t2getText()equals()){
JOptionPaneshowMessageDialog(null输入空)
}
else{
try{
ClassforName(sunjdbcodbcJdbcOdbcDriver)
} catch(ClassNotFoundException a){
Systemoutprintln(+a)
}
try{
conDriverManagergetConnection(jdbcodbcsun)
sqlconcreateStatement()
rssqlexecuteQuery(Select * FROM login) 查询数库
boolean check false
while(rsnext()){
String UserNamersgetString(1) 获数库第二列
String PasswordrsgetString(2) 获数库第三列
if(t1getText()equals(UserName) && t2getText()equals(Password)){ 判断语句
check true
JOptionPaneshowMessageDialog(null登陆成功)
fdispose()
new WindowBox(选课窗口)
t1setText()
t2setText()
break
}
}
if(check false){
JOptionPaneshowMessageDialog(null登陆失败请重新输入)
}
conclose()
} catch(SQLException el){}
}
}
if(egetSource()b2){
t1setText()
t2setText()
}
if(egetSource()b3){
fdispose()
new Regist(学生选课系统注册界面)
}
}
public void windowClosing(WindowEvent e){
Systemexit(0)
}
public static void main(String[] args) {
new Login()
}
}
(2)注册模块
import javaawt*
import javaawtevent*
import javaxswingJOptionPane
import javasql*
class Regist extends Frame implements ActionListener{
Label lb1 lb2 lb3
TextField tf1 tf2 tf3
Button bt1 bt2 bt3
Regist(String s){
super(s)
setLayout(null)
setBounds(00900900)
setVisible(true)
setResizable(false)
lb1 new Label(户名)
lb1setBounds(1501005020)
lb2 new Label(密码)
lb2setBounds(1502005020)
lb3 new Label(确认)
lb3setBounds(1503005020)
tf1 new TextField()
tf1setBounds(2009820020)
tf2 new TextField()
tf2setBounds(20019820020)
tf2setEchoChar('*')
tf3 new TextField()
tf3setBounds(20029820020)
tf3setEchoChar('*')
bt1 new Button(注册)
bt1setBounds(20040010040)
bt2 new Button(返回)
bt2setBounds(35040010040)
bt3 new Button(退出)
bt3setBounds(43540010040)
add(lb1)
add(lb2)
add(lb3)
add(tf1)
add(tf2)
add(tf3)
add(bt1)
add(bt2)
add(bt3)
tf3addActionListener(this)
bt1addActionListener(this)
bt2addActionListener(this)
bt3addActionListener(this)
addWindowListener(new javaawteventWindowAdapter(){
public void windowClosing(javaawteventWindowEvent e)
{
Systemexit(0)
}
}
)
}
public void actionPerformed(ActionEvent e){
if(egetSource() bt1 || egetSource() tf1 || egetSource() tf2 || egetSource() tf3){
if(tf1getText()equals()|| tf2getText()equals() || tf3getText()equals()){
JOptionPaneshowMessageDialog(this请输入户名密码提示JOptionPaneERROR_MESSAGE) 判断文容语句
}
else{
if(tf2getText()equals(tf3getText())){
try{
ClassforName(sunjdbcodbcJdbcOdbcDriver)
Connection con
Statement sq
ResultSet r
String u p
con DriverManagergetConnection(jdbcodbcsunnullnull)
sqconcreateStatement(ResultSetTYPE_SCROLL_INSENSITIVEResultSetCONCUR_UPDATABLE)
r sqexecuteQuery(SELECT * FROM login)
while(rnext()){
u rgetString(1)
if(tf1getText()equals(u)){
JOptionPaneshowMessageDialog(this户已存错误JOptionPaneERROR_MESSAGE)
conclose()
break 判断户否存
}
else if(risLast()){ 判断否已读完整表
u tf1getText()
p tf2getText()
sqexecuteUpdate(INSERT INTO login(UserNamePassword) VALUES(+'+u+'++'+p+'+)) 写入户信息
JOptionPaneshowMessageDialog(this注册成功提示JOptionPaneINFORMATION_MESSAGE)
conclose()
dispose()
new Login()
break
}
}
tf1setText(null)
tf2setText(null)
tf3setText(null)
}
catch(SQLException b){
JOptionPaneshowMessageDialog(thisb错误JOptionPaneERROR_MESSAGE)
}
catch(ClassNotFoundException a){
JOptionPaneshowMessageDialog(thisa错误JOptionPaneERROR_MESSAGE)
}
}
else{
JOptionPaneshowMessageDialog(this两次密码致提示JOptionPaneERROR_MESSAGE)
tf2setText(null)
tf3setText(null)
}
}
}
else if(egetSource() bt3){
Systemexit(0)
}
else if(egetSource() bt2){
dispose()
new Login()
}
}
}
public class xuhanting1
{
public static void main(String args[])
{
new Regist(学生选课系统注册界面)
}
}
(3)选课模块
import javaawt*
import javaawtevent*
import javasql*
class WindowBox extends Frame implements ActionListenerItemListener
{
Checkbox box1box2box3box4box5box6
Label l1
Label l2
TextField t1
Label l3
TextField t2
TextArea t new TextArea()
Button b1b2
WindowBox(String s)
{
super(s)
setLayout(new FlowLayout())
l2new Label(学号)
t1new TextField(10)
l3new Label(姓名)
t2new TextField(10)
b1new Button(确定)
b2new Button(重置)
l1new Label(选课程)
box1new Checkbox(离散数学false)
box2new Checkbox(汇编语言false)
box3new Checkbox(java语言设计false)
box4new Checkbox(软件工程false)
box5new Checkbox(操作系统false)
box6new Checkbox(马克思政治学false)
box1addItemListener(this)
box2addItemListener(this)
box3addItemListener(this)
box4addItemListener(this)
box5addItemListener(this)
box6addItemListener(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)
b1addActionListener(this)
b2addActionListener(this)
setSize(500500)
setVisible(true)
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{Systemexit(0)}
}
)
validate()}
public void itemStateChanged(ItemEvent e)
{
Checkbox box(Checkbox)egetSource()
if(boxgetState())
{
int ntgetCaretPosition()
tinsert(boxgetLabel()n)}
else
{tsetText()}
}
public void actionPerformed(ActionEvent a)
{
if(agetSource()b1)
{
Connection con
Statement sql
ResultSet rs
String number1name1lesson1 recodeinsertStr
try{
ClassforName(sunjdbcodbcJdbcOdbcDriver)
}
catch(ClassNotFoundException g){
Systemoutprintln(+g)
}
try{
conDriverManagergetConnection(jdbcodbcsun)
sqlconcreateStatement()
number1t1getText()
name1t2getText()
lesson1tgetText()
recode(+'+number1+'++'+name1+'++'+lesson1+'+)
insertStrINSERT INTO kechengbiao values+recode
sqlexecuteUpdate(insertStr)
conclose()
dispose()
RuanJian rjnew RuanJian(查询窗口)
}
catch(SQLException h)
{Systemoutprintln(h)}
}
else if(agetSource()b2)
{
t1setText()
t2setText()
tsetText()
}
}
}
public class xuhanting3
{public static void main(String args[])
{new WindowBox(选课窗口)}
}
(4)查询模块
import javaawt*
import javaawtevent*
import javasql*
import javaxswingJOptionPane
class RuanJian extends Frame implements ActionListener
{ Label lab1
TextField text1
Button b1b2
TextArea tnew TextArea()
RuanJian(String s)
{
setTitle(s)
setLayout(null)
lab1new Label(请输入学号)
text1new TextField(10)
b1new Button(确定)
b1addActionListener(this)
b2new Button(重置)
b2addActionListener(this)
lab1setBounds(12010010030)
text1setBounds(25010020030)
b1setBounds(2201805030)
b2setBounds(3201805030)
tsetBounds(100250380300)
add(lab1)
add(text1)
add(b1)
add(b2)
add(t)
setBounds(100100600600)
setVisible(true)
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
Systemexit(0)
}
}
)
validate()
}
public void actionPerformed(ActionEvent m)
{
if(mgetSource()b1)
{ String s
stext1getText()
int r1
Connection conjavasql包中Connection 连接
Statement sql数库发送sql语句
ResultSet rs处理查询结果
try{
Class forName(sunjdbcodbcJdbcOdbcDriver)建立jdbcodbc连接
}
catch(ClassNotFoundException e)
{
Systemoutprintln(+e)
}
try{
conDriverManagergetConnection(jdbcodbcsun)
sqlconcreateStatement()
rssqlexecuteQuery(select * from kechengbiao)
while(rsnext())
{ String numberrsgetString(1)
String namersgetString(2)
String lessonrsgetString(3)
if(sequals(number))
{
tappend(学号+number+\n)
tappend(姓名+name+\n)
tappend(课程+lesson+\n)
r0
break
}
}
if(sequals())
{JOptionPaneshowMessageDialog(this请输入学号警告话框JOptionPaneWARNING_MESSAGE)
}
else if(r1)
{JOptionPaneshowMessageDialog(this学号输入错误警告话框JOptionPaneWARNING_MESSAGE)
break
}
conclose()
}
catch(SQLException e)
{
Systemoutprintln(e)
}
}
else if(mgetSource()b2)
{ String s
text1setText(s)
tsetText(s)
}
}
}
public class xuhanting
{
public static void main(String args[])
{
RuanJian rjnew RuanJian(查询窗口)
}
}
文档香网(httpswwwxiangdangnet)户传
《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档