2022软件工程学生选课系统课程设计.docx

上传人:l*** 文档编号:11726194 上传时间:2022-04-21 格式:DOCX 页数:16 大小:36.38KB
返回 下载 相关 举报
2022软件工程学生选课系统课程设计.docx_第1页
第1页 / 共16页
2022软件工程学生选课系统课程设计.docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《2022软件工程学生选课系统课程设计.docx》由会员分享,可在线阅读,更多相关《2022软件工程学生选课系统课程设计.docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、2022软件工程学生选课系统课程设计 网上选课系统课程设计手册 团队: 学校: 队长: 时间:2022 目 录 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.

2、3 学生查询模块的设计与实现9 5.4 学生选课模块的设计与实现10 6 测试及提交 10 1.项目概述 1.1 开发背景 Internet的飞速发展深刻地影响了人们的日常生活和商业运作方式。人们打开网页浏览当天的新闻,发电子邮件给远方的朋友,使用搜索引擎查找资料,进入网上商城购买商品这一切都是在使用Internet。社会的方方面面渗透着互连网的应用,使得一向烦琐的手工程序变得方便,快捷,而学校网上选课系统正是基于这一思想而发展起来的。 1.2 开发目的 传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段内,可以不受地点和时间的限制完成

3、选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工作效率。 1.3 开发运行环境: 开发工具:java语言 开发环境:JDK 1.4 系统功能: (1) 登录、注册功能. (2) 选课功能 (3) 查询功能 2.需求分析 2.1 系统需求 用户的需求具体体现在各种学习成绩的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构及数据处理的流程,组成一份详尽数据字典,为后面的具体设计打下基础。 2.2 功能需求 通过系统功能分析,针对一般的网上选课系统,总结出如下的需求信息: (1) 学生的需求:网上选课、选课情况查询; (2) 本系统主要

4、实现学生信息管理和选课查询。 学生信息包括学号、姓名、班级; 课程信息包括课程名; 2.3 业务流程图 学生 登录 选课 查询课程 系统 管理员 选课信息 3.总体设计 3.1 基本设计概念和处理流程 互联网技术的飞速发展,Java等设计工具的方便实用,以及数据库技术的发展给本系统的设计和实现提供了技术上的支持。 系统基本的流程是:用户登录>主界面>选择各项子系统。 3.2 系统层次模块图 学生选课系统 登陆/注册 选课 查询 数据库的设计 3.3系统层次模块图 3.4模块设计 (1) 用户注册模块:填写用户名、密码、确认密码 (2) 用户登录模块:填写已注册的用户名称,填写正确的

5、密码,进入主控制页面。 (3) 用户选课模块:。 (4) 用户查询模块:可以进行查看所选课程的操作。 4.数据库设计 4.1 数据库的逻辑设计 我们选用了Microsoft Access 2000。 数据通信接口采用ODBC。ODBC是微软开发的一套读取数据库的解决方案,它的目的是将所有对数据库的底层操作全部隐藏在ODBC的驱动程序内核里。对于程序员来说,只要构建了一个指向数据库的连接,就可以采用统一的应用程序编程接口实现对数据库的读写。目前ODBC驱动已经提供了对大多数常见类型数据库的支持,包括dBase,Informix,Access,SQL Server和Oracle等。也包括了对其它类

6、型的数据库的支持,如文本,Excel电子表格等的支持。 根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构: 1. 名称:用户信息表 表名称标识:login 名称 字段名称 数据类型 主键 非空 用户名 UserName 文本 No Yes 密码 Password 文本 No No 记录: 2.名称:课程信息表 表名称标识:kechengbiao 名称 字段名称 数据类型 主键 非空 学号 number 数字 No Yes 姓名 name 文本 No No 课程名称 lesson 文本 No No 记录: 4.2数据库的配置 一个真正的、完整的站点是离不

7、开数据库的。ODBC为应用程序提供了一种标准方法来操作相关的数据库:管理器根据数据源提供的数据库的位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。 按如下步骤可以建立一个新的系统数据源。 首先,在控制面板中双击ODBC图标,打开“ODBC数据源管理器”对话框,选择“系统DSN”选项卡,单击“添加”按钮。如下图所示。 在“创建新数据源”对话框中,选择“Driver do Microsoft Access(*.mdb)”作为数据库驱动程序并单击“完成”按钮。如下图所示。 在“ODBC Mi

8、crosoft Access安装”对话框中,数据源名称填写为“student”,这是程序中将要引用的。单击“选择”按钮,从弹出的文件窗口中选择student.mdb文件所在的位置。如下图所示。 然后单击“确定”按钮,这样就完成了Access数据库的ODBC数据源设置。 以上步骤,通过ODBC管理器注册了一个名字为student的数据源,并且指定了数据库的驱动程序。 5. 详细设计 5.1 学生登录模块的设计与实现 5.1.1. 登录模块 功能:本模块主要用于对用户身份进行鉴别。用户通过表单提供用户名和密码信息,系统根据用户提供的登录信息对用户进行身份查询鉴别。如果身份合法,则将用户导向系统的选

9、课页面。 输入:用户名、密码 处理: (1) 输入用户的登录信息:在页面提供的表单出输入用户的用户名和密码信息,点击“登录”按钮提交表单信息到身份验证页面。或点击“重置”按钮,重新输入。 (2) 用户身份进行验证:连接数据库,打开用户数据表login,检验用户登录信息。以输入数据“用户名”为查询条件创建数据集查看输入用户名是否存在。如果存在,继续检验输入的密码是否正确。密码和用户名都正确,则进入选课页面;如果用户名不存在或密码不正确,则给出登录失败的提示框。 输出:学生选课页面 5.1.2学生登录页面图如下图所示: 5.2 学生注册模块的设计与实现 5.3 学生查询模块的设计与实现 5.4 学

10、生选课模块的设计与实现 6 测试及提交 7 项目小组成员及详细分工 工作任务 徐寒亭 胡中涛 卢文琳 李爽 需求分析 数据库的设计 查询功能 选课功能 登陆注册功能 查询模块 注册登录模块 数据库设计模块 选课模块 8 附:模块源代码 (1)登录模块 import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; import java.sql.*; public class Login extends Frame implements ActionListener Frame f,f1; Button b

11、1; Button b2; Button b3; TextField t1; TextField t2; Label l1; Label l2; Connection con; Statement sql; /声明Statement对象 ResultSet rs; public Login() f=new Frame(“学生选课系统“); Toolkit tool=f.getToolkit(); Dimension dim=tool.getScreenSize(); f.setBounds(0,0,dim.width,dim.height); Panel p=new Panel(); f.ad

12、d(p); l1=new Label(“用户名“); l2=new Label(“密码“); t1=new TextField(20); t2=new TextField(20); b1=new Button(“登陆“); b2=new Button(“取消“); b3=new Button(“注册“); 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.addActionL

13、istener(this); f.setVisible(true); t2.setEchoChar(*); f.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); public void actionPerformed(ActionEvent e) if(e.getSource()=b1) if(t1.getText().equals(“)|t2.getText().equals(“) JOptionPane.showMessageDialog(nul

14、l,“输入不能为空!“); else try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch(ClassNotFoundException a) System.out.println(“+a); try con=DriverManager.getConnection(“jdbc:odbc:sun“,“,“); sql=con.createStatement(); rs=sql.executeQuery(“Select * FROM login“); /查询数据库 boolean check = false; while(rs.next(

15、) String UserName=rs.getString(1); /获得数据库第二列 String Password=rs.getString(2); /获得数据库第三列 if(t1.getText().equals(UserName) && t2.getText().equals(Password) /判断语句 check = true; JOptionPane.showMessageDialog(null,“登陆成功!“); f.dispose(); new WindowBox(“选课窗口“); t1.setText(“); t2.setText(“); break;

16、if(check = false) JOptionPane.showMessageDialog(null,“登陆失败,请重新输入!“); con.close(); catch(SQLException el) if(e.getSource()=b2) t1.setText(“); t2.setText(“); if(e.getSource()=b3) f.dispose(); new Regist(“学生选课系统注册界面“); public void windowClosing(WindowEvent e) System.exit(0); public static void main(Str

17、ing args) new Login(); (2)注册模块 import java.awt.*; import java.awt.event.*; import javax.swing.JOptionPane; import java.sql.*; 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

18、(0,0,900,900); setVisible(true); setResizable(false); lb1 = new Label(“用户名“); lb1.setBounds(150,100,50,20); lb2 = new Label(“密码“); lb2.setBounds(150,200,50,20); lb3 = new Label(“确认“); lb3.setBounds(150,300,50,20); tf1 = new TextField(); tf1.setBounds(200,98,200,20); tf2 = new TextField(); tf2.setBou

19、nds(200,198,200,20); tf2.setEchoChar(*); tf3 = new TextField(); tf3.setBounds(200,298,200,20); tf3.setEchoChar(*); bt1 = new Button(“注册“); bt1.setBounds(200,400,100,40); bt2 = new Button(“返回“); bt2.setBounds(350,400,100,40); bt3 = new Button(“退出“); bt3.setBounds(435,400,100,40); add(lb1); add(lb2);

20、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(new java.awt.event.WindowAdapter() public void windowClosing(java.awt.event.WindowEvent e) Syste

21、m.exit(0); ); public void actionPerformed(ActionEvent e) 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);

22、 /判断文本内容语句 else if(tf2.getText().equals(tf3.getText() try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); Connection con; Statement sq; ResultSet r; String u, p; con = DriverManager.getConnection(“jdbc:odbc:sun“,null,null); sq=con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPD

23、ATABLE); r = sq.executeQuery(“SELECT * FROM login“); while(r.next() u =r.getString(1); if(tf1.getText().equals(u) JOptionPane.showMessageDialog(this,“用户已存在“,“错误“,JOptionPane.ERROR_MESSAGE); con.close(); break; /判断用户是否存在 else if(r.isLast() /判断是否已经读完整个表 u = tf1.getText(); p = tf2.getText(); sq.execute

24、Update(“INSERT INTO login(UserName,Password) VALUES(“+“+u+“+“,“+“+p+“+“)“); /写入用户信息 JOptionPane.showMessageDialog(this,“注册成功“,“提示“,JOptionPane.INFORMATION_MESSAGE); con.close(); dispose(); new Login(); break; tf1.setText(null); tf2.setText(null); tf3.setText(null); catch(SQLException b) JOptionPane.

25、showMessageDialog(this,b,“错误“,JOptionPane.ERROR_MESSAGE); catch(ClassNotFoundException a) JOptionPane.showMessageDialog(this,a,“错误“,JOptionPane.ERROR_MESSAGE); else JOptionPane.showMessageDialog(this,“两次密码不一致“,“提示“,JOptionPane.ERROR_MESSAGE); tf2.setText(null); tf3.setText(null); else if(e.getSource

26、()= bt3) System.exit(0); else if(e.getSource()= bt2) dispose(); new Login(); public class xuhanting1 public static void main(String args) new Regist(“学生选课系统注册界面“); (3)选课模块 import java.awt.*; import java.awt.event.*; import java.sql.*; class WindowBox extends Frame implements ActionListener,ItemListe

27、ner Checkbox box1,box2,box3,box4,box5,box6; Label l1; Label l2; TextField t1; Label l3; TextField t2; TextArea t = new TextArea(); Button b1,b2; WindowBox(String s) super(s); setLayout(new FlowLayout(); l2=new Label(“学号“); t1=new TextField(10); l3=new Label(“姓名“); t2=new TextField(10); b1=new Button

28、(“确定“); b2=new Button(“重置“); l1=new Label(“所选课程“); box1=new Checkbox(“离散数学“,false); box2=new Checkbox(“汇编语言“,false); box3=new Checkbox(“java语言设计“,false); box4=new Checkbox(“软件工程“,false); box5=new Checkbox(“操作系统“,false); box6=new Checkbox(“马克思政治学“,false); box1.addItemListener(this); box2.addItemListe

29、ner(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.addAction

30、Listener(this); setSize(500,500); setVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); validate(); public void itemStateChanged(ItemEvent e) Checkbox box=(Checkbox)e.getSource(); if(box.getState() int n=t.getCaretPosition(); t.insert(box

31、.getLabel(),n); else t.setText(“); public void actionPerformed(ActionEvent a) if(a.getSource()=b1) Connection con; Statement sql; ResultSet rs; String number1,name1,lesson1, recode,insertStr; try Class.forName(“sun.jdbc.odbc.JdbcOdbcDriver“); catch(ClassNotFoundException g) System.out.println(“+g);

32、try con=DriverManager.getConnection(“jdbc:odbc:sun“,“,“); sql=con.createStatement(); number1=t1.getText(); name1=t2.getText(); lesson1=t.getText(); recode=“(“+“+number1+“+“,“+“+name1+“+“,“+“+lesson1+“+“)“; insertStr=“INSERT INTO kechengbiao values“+recode; sql.executeUpdate(insertStr); con.close();

33、dispose(); RuanJian rj=new RuanJian(“查询窗口“); catch(SQLException h) System.out.println(h); else if(a.getSource()=b2) t1.setText(“); t2.setText(“); t.setText(“); public class xuhanting3 public static void main(String args) new WindowBox(“选课窗口“); (4)查询模块 import java.awt.*; import java.awt.event.*; impo

34、rt java.sql.*; import javax.swing.JOptionPane; class RuanJian extends Frame implements ActionListener Label lab1; TextField text1; Button b1,b2; TextArea t=new TextArea(); RuanJian(String s) setTitle(s); setLayout(null); lab1=new Label(“请输入学号“); text1=new TextField(10); b1=new Button(“确定“); b1.addAc

35、tionListener(this); b2=new Button(“重置“); b2.addActionListener(this); lab1.setBounds(120,100,100,30); text1.setBounds(250,100,200,30); b1.setBounds(220,180,50,30); b2.setBounds(320,180,50,30); t.setBounds(100,250,380,300); add(lab1); add(text1); add(b1); add(b2); add(t); setBounds(100,100,600,600); s

36、etVisible(true); addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0); ); validate(); public void actionPerformed(ActionEvent m) if(m.getSource()=b1) String s; s=text1.getText(); int r=1; Connection con;/java.sql包中Connection 连接 Statement sql;/向数据库发送sql语句 Resu

37、ltSet rs;/处理查询结果 try Class .forName(“sun.jdbc.odbc.JdbcOdbcDriver“);/建立jdbc与odbc连接 catch(ClassNotFoundException e) System.out.println(“+e); try con=DriverManager.getConnection(“jdbc:odbc:sun“,“,“); sql=con.createStatement(); rs=sql.executeQuery(“select * from kechengbiao“); while(rs.next() String nu

38、mber=rs.getString(1); String name=rs.getString(2); String lesson=rs.getString(3); if(s.equals(number) t.append(“学号:“+number+“n“); t.append(“姓名:“+name+“n“); t.append(“课程:“+lesson+“n“); r=0; break; if(s.equals(“) JOptionPane.showMessageDialog(this,“请输入学号“,“警告对话框“,JOptionPane.WARNING_MESSAGE); else if(r=1) JOptionPane.showMessageDialog(this,“学号输入错误“,“警告对话框“,JOptionPane.WARNING_MESSAGE); / break; con.close(); catch(SQLException e) System.out.println(e); else if(m.getSource()=b2) String s=“; text1.setText(s); t.setText(s);

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 策划方案

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁