《软件工程》课程设计 学生选课系统Word格式文档下载.docx
- 文档编号:19384810
- 上传时间:2023-01-05
- 格式:DOCX
- 页数:26
- 大小:169.43KB
《软件工程》课程设计 学生选课系统Word格式文档下载.docx
《《软件工程》课程设计 学生选课系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《《软件工程》课程设计 学生选课系统Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
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
记录:
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=ne
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 软件工程课程设计 学生选课系统 课程设计 学生 选课 系统