《软件工程》课程设计学生选课系统Word格式.docx

上传人:b****8 文档编号:22100434 上传时间:2023-02-02 格式:DOCX 页数:29 大小:186.65KB
下载 相关 举报
《软件工程》课程设计学生选课系统Word格式.docx_第1页
第1页 / 共29页
《软件工程》课程设计学生选课系统Word格式.docx_第2页
第2页 / 共29页
《软件工程》课程设计学生选课系统Word格式.docx_第3页
第3页 / 共29页
《软件工程》课程设计学生选课系统Word格式.docx_第4页
第4页 / 共29页
《软件工程》课程设计学生选课系统Word格式.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

《软件工程》课程设计学生选课系统Word格式.docx

《《软件工程》课程设计学生选课系统Word格式.docx》由会员分享,可在线阅读,更多相关《《软件工程》课程设计学生选课系统Word格式.docx(29页珍藏版)》请在冰豆网上搜索。

《软件工程》课程设计学生选课系统Word格式.docx

(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

记录:

2.名称:

课程信息表

kechengbiao

学号

number

数字

姓名

name

课程名称

lesson

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附:

模块源代码

(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);

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;

登陆成功!

f.dispose();

newWindowBox("

选课窗口"

t1.setText("

t2.setText("

break;

if(check==false){

登陆失败,请重新输入!

con.close();

}catch(SQLExceptionel){}

if(e.getSource()==b2){

if(e.getSource()==b3){

f.dispose();

newRegist("

学生选课系统注册界面"

}

publicvoidwindowClosing(WindowEvente){

System.exit(0);

publicstaticvoidmain(String[]args){

newLogin();

(2)注册模块

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)

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("

Connectioncon;

Statementsq;

ResultSetr;

Stringu,p;

con=DriverManager.getConnection("

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,"

用户已存在"

错误"

con.close();

break;

//判断用户是否存在

}

elseif(r.isLast()){//判断是否已经读完整个表

u=tf1.getText();

p=tf2.getText();

sq.executeUpdate("

INSERTINTOlogin(UserName,Password)VALUES("

+"

'

+u+"

+p+"

)"

//写入用户信息

注册成功"

JOptionPane.INFORMATION_MESSAGE);

dispose();

}

}

tf1.setText(null);

tf2.setText(null);

tf3.setText(null);

}

catch(SQLExceptionb){

JOptionPane.showMessageDialog(this,b,"

catch(ClassNotFoundExceptiona){

JOptionPane.showMessageDialog(this,a,"

}

else{

JOptionPane.showMessageDialog(this,"

两次密码不一致"

tf2.setText(null);

tf3.setText(null);

elseif(e.getSource()==bt3){

System.exit(0);

elseif(e.getSource()==bt2){

dispose();

newLogin();

publicclassxuhanting1

{

publicstaticvoidmain(Stringargs[])

{

(3)选课模块

classWindowBoxextendsFrameimplementsActionListener,ItemListener

{

Checkboxbox1,box2,box3,box4,box5,box6;

Labell3;

TextAreat=newTextArea();

Buttonb1,b2;

WindowBox(Strings)

setLayout(newFlowLayout());

l2=newLabel("

学号"

t1=newTextField(10);

l3=newLabel("

姓名"

t2=newTextField(10);

b1=newButton("

确定"

b2=newButton("

重置"

l1=newLabel("

所选课程"

box1=newCheckbox("

离散数学"

false);

box2=newCheckbox("

汇编语言"

box3=newCheckbox("

java语言设计"

box4=n

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

当前位置:首页 > 总结汇报 > 实习总结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1