欢迎来到课桌文档! | 帮助中心 课桌文档-建筑工程资料库
课桌文档
全部分类
  • 党建之窗>
  • 感悟体会>
  • 百家争鸣>
  • 教育整顿>
  • 文笔提升>
  • 热门分类>
  • 计划总结>
  • 致辞演讲>
  • 在线阅读>
  • ImageVerifierCode 换一换
    首页 课桌文档 > 资源分类 > DOC文档下载  

    软件工程项目学生选课系统.doc

    • 资源ID:15399       资源大小:312.45KB        全文页数:35页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    软件工程项目学生选课系统.doc

    目 录1. 项目概述31.1开发背景31.2 开发目的31.3 开发运行境31.4 系统功能32.需求分析32.1 系统需求32.2 功能需求32.3 业务流图33.总体设计43.1 基本设计概念和处理流程43.2 系统层次模图43.3系统层次模块图43.4模块设计54.数据库计54.1 数据库的逻辑设计54.2数据库的配置65. 详细设计85.1 学生登录模块的设计与实现85.2 学生注册模块的设计与实现95.3 学生查询模块的设计与实现95.4 学生选课模块的设计与实现106 测试及提交101.项目概述1.1 开发背景Internet的飞速发展深刻地影响了人们的日常生活和商业运作方式。人们打开网页浏览当天的新闻,发电子给远方的朋友,使用搜索引擎查找资料,进入网上商城购买商品这一切都是在使用Internet。社会的方方面面渗透着互连网的应用,使得一向烦琐的手工程序变得方便,快捷,而学校网上选课系统正是基于这一思想而发展起来的。1.2 开发目的传统的手工选课不仅复杂,也牵涉了很多的人力,对管理也造成了诸多不变,而借助网上选课系统,学生在规定选课时间段,可以不受地点和时间的限制完成选修课的申请,而学校也可以方便地对系统进行管理和控制,提高工作效率。1.3 开发运行环境:开发工具:java语言开发环境:JDK1.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 数据库的逻辑设计我们选用了Microsoft Access 2000。数据通信接口采用ODBC。ODBC是微软开发的一套读取数据库的解决方案,它的目的是将所有对数据库的底层操作全部隐藏在ODBC的驱动程序核里。对于程序员来说,只要构建了一个指向数据库的连接,就可以采用统一的应用程序编程接口实现对数据库的读写。目前ODBC驱动已经提供了对大多数常见类型数据库的支持,包括dBase,Informi*,Access,SQL Server和Oracle等。也包括了对其它类型的数据库的支持,如文本,E*cel电子表格等的支持。根据系统功能设计的要求以及功能模块的划分,对于系统信息数据库,可以列出以下数据项和数据结构:1. 名称:用户信息表表名称标识:login名称字段名称数据类型主键非空用户名UserName文本NoYes密码Password文本NoNo记录:2.名称:课程信息表表名称标识:kechengbiao名称字段名称数据类型主键非空*number数字NoYesname文本NoNo课程名称lesson文本NoNo记录:4.2数据库的配置一个真正的、完整的站点是离不开数据库的。ODBC为应用程序提供了一种标准方法来操作相关的数据库:管理器根据数据源提供的数据库的位置、数据库类型及ODBC驱动程序等信息,建立起ODBC与具体数据库的联系。这样,只要应用程序将数据源名提供给ODBC,ODBC就能建立起与相应数据库的连接。按如下步骤可以建立一个新的系统数据源。首先,在控制面板中双击ODBC图标,打开"ODBC数据源管理器”对话框,选择"系统DSN”选项卡,单击"添加”按钮。如下图所示。在"创建新数据源”对话框中,选择"Driver do Microsoft Access(*.mdb)”作为数据库驱动程序并单击"完成”按钮。如下图所示。在"ODBC Microsoft Access安装”对话框中,数据源名称填写为"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 项目小组成员及详细分工工作任务徐寒亭胡中涛卢文琳爽需求分析数据库的设计查询功能选课功能登陆注册功能查询模块注册登录模块数据库设计模块选课模块8 附:模块源代码(1)登录模块import java.awt.*;import java.awt.event.*;import java*.swing.JOptionPane;import java.sql.*;public class Login e*tends Frame implements ActionListener Frame f,f1; Button b1; Button b2;Button b3; Te*tField t1; Te*tField 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.add(p); l1=new Label("用户名"); l2=new Label("密码"); t1=new Te*tField(20); t2=new Te*tField(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.addActionListener(this); f.setVisible(true); t2.setEchoChar('*'); f.addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.e*it(0);); public void actionPerformed(ActionEvent e) if(e.getSource()=b1) if(t1.getTe*t().equals("")|t2.getTe*t().equals("") JOptionPane.showMessageDialog(null,"输入不能为空!"); else try Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); catch(ClassNotFoundE*ception a) System.out.println(""+a); try con=DriverManager.getConnection("jdbc:odbc:sun","",""); sql=con.createStatement(); rs=sql.e*ecuteQuery("Select * FROM login"); /查询数据库 boolean check = false; while(rs.ne*t() String UserName=rs.getString(1); /获得数据库第二列 String Password=rs.getString(2); /获得数据库第三列 if(t1.getTe*t().equals(UserName) && t2.getTe*t().equals(Password) /判断语句 check = true; JOptionPane.showMessageDialog(null,"登陆成功!");f.dispose(); new WindowBo*("选课窗口"); t1.setTe*t(""); t2.setTe*t(""); break; if(check = false) JOptionPane.showMessageDialog(null,"登陆失败,请重新输入!"); con.close(); catch(SQLE*ception el) if(e.getSource()=b2) t1.setTe*t(""); t2.setTe*t(""); if(e.getSource()=b3)f.dispose();new Regist("学生选课系统注册界面");public void windowClosing(WindowEvent e) System.e*it(0);public static void main(String args) new Login();(2)注册模块import java.awt.*;import java.awt.event.*;import java*.swing.JOptionPane;import java.sql.*;class Regist e*tends Frame implements ActionListenerLabel lb1, lb2, lb3;Te*tField tf1, tf2, tf3;Button bt1, bt2, bt3;Regist(String s)super(s);setLayout(null);setBounds(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 Te*tField();tf1.setBounds(200,98,200,20);tf2 = new Te*tField();tf2.setBounds(200,198,200,20);tf2.setEchoChar('*');tf3 = new Te*tField();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);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)System.e*it(0););public void actionPerformed(ActionEvent e)if(e.getSource()= bt1 | e.getSource()= tf1 | e.getSource()= tf2 | e.getSource()= tf3)if(tf1.getTe*t().equals("")| tf2.getTe*t().equals("") | tf3.getTe*t().equals("")JOptionPane.showMessageDialog(this,"请输入用户名和密码","提示",JOptionPane.ERROR_MESSAGE);/判断文本容语句elseif(tf2.getTe*t().equals(tf3.getTe*t()tryClass.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_UPDATABLE);r = sq.e*ecuteQuery("SELECT * FROM login");while(r.ne*t() u =r.getString(1); if(tf1.getTe*t().equals(u) JOptionPane.showMessageDialog(this,"用户已存在","错误",JOptionPane.ERROR_MESSAGE); con.close(); break; /判断用户是否存在 else if(r.isLast()/判断是否已经读完整个表 u = tf1.getTe*t(); p = tf2.getTe*t(); sq.e*ecuteUpdate("INSERT INTO login(UserName,Password) VALUES("+"'"+u+"'"+","+"'"+p+"'"+")");/写入用户信息 JOptionPane.showMessageDialog(this,"注册成功","提示",JOptionPane.INFORMATION_MESSAGE); con.close(); dispose(); new Login(); break; tf1.setTe*t(null);tf2.setTe*t(null);tf3.setTe*t(null);catch(SQLE*ception b)JOptionPane.showMessageDialog(this,b,"错误",JOptionPane.ERROR_MESSAGE);catch(ClassNotFoundE*ception a)JOptionPane.showMessageDialog(this,a,"错误",JOptionPane.ERROR_MESSAGE);elseJOptionPane.showMessageDialog(this,"两次密码不一致","提示",JOptionPane.ERROR_MESSAGE);tf2.setTe*t(null);tf3.setTe*t(null);else if(e.getSource()= bt3)System.e*it(0);else if(e.getSource()= bt2)dispose();new Login();public class *uhanting1public static void main(String args)new Regist("学生选课系统注册界面");(3)选课模块import java.awt.*;import java.awt.event.*;import java.sql.*;class WindowBo* e*tends Frame implements ActionListener,ItemListener Checkbo* bo*1,bo*2,bo*3,bo*4,bo*5,bo*6; Label l1;Label l2;Te*tField t1;Label l3;Te*tField t2;Te*tArea t = new Te*tArea();Button b1,b2;WindowBo*(String s)super(s);setLayout(new FlowLayout();l2=new Label("*"); t1=new Te*tField(10);l3=new Label("");t2=new Te*tField(10);b1=new Button("确定");b2=new Button("重置");l1=new Label("所选课程");bo*1=new Checkbo*("离散数学",false);bo*2=new Checkbo*("汇编语言",false);bo*3=new Checkbo*("java语言设计",false);bo*4=new Checkbo*("软件工程",false);bo*5=new Checkbo*("操作系统",false);bo*6=new Checkbo*("马克思政治学",false);bo*1.addItemListener(this);bo*2.addItemListener(this);bo*3.addItemListener(this);bo*4.addItemListener(this);bo*5.addItemListener(this);bo*6.addItemListener(this);add(l2);add(t1);add(l3);add(t2);add(b1);add(b2);add(l1);add(bo*1);add(bo*2);add(bo*3);add(bo*4);add(bo*5);add(bo*6);add(t);b1.addActionListener(this);b2.addActionListener(this);setSize(500,500);setVisible(true);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.e*it(0););validate();public void itemStateChanged(ItemEvent e)Checkbo* bo*=(Checkbo*)e.getSource();if(bo*.getState()int n=t.getCaretPosition();t.insert(bo*.getLabel(),n);elset.setTe*t("");public void actionPerformed(ActionEvent a) if(a.getSource()=b1) Connection con;Statement sql;ResultSet rs;String number1,name1,lesson1, recode,insertStr;tryClass.forName("sun.jdbc.odbc.JdbcOdbcDriver");catch(ClassNotFoundE*ception g)System.out.println(""+g);trycon=DriverManager.getConnection("jdbc:odbc:sun","","");sql=con.createStatement();number1=t1.getTe*t();name1=t2.getTe*t();lesson1=t.getTe*t();recode="("+"'"+number1+"'"+","+"'"+name1+"'"+","+"'"+lesson1+"'"+")"insertStr="INSERT INTO kechengbiao values"+recode; sql.e*ecuteUpdate(insertStr);con.close();dispose(); RuanJian rj=new RuanJian("查询窗口"); catch(SQLE*ception h) System.out.println(h);else if(a.getSource()=b2) t1.setTe*t("");t2.setTe*t("");t.setTe*t("");public class *uhanting3public static void main(String args)new WindowBo*("选课窗口");(4)查询模块import java.awt.*;import java.awt.event.*;import java.sql.*;import java*.swing.JOptionPane; class RuanJian e*tends Frame implements ActionListenerLabel lab1;Te*tField te*t1;Button b1,b2;Te*tArea t=new Te*tArea();RuanJian(String s)setTitle(s);setLayout(null);lab1=new Label("请输入*");te*t1=new Te*tField(10);b1=new Button("确定");b1.addActionListener(this);b2=new Button("重置");b2.addActionListener(this);lab1.setBounds(120,100,100,30);te*t1.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(te*t1);add(b1);add(b2);add(t);setBounds(100,100,600,600);setVisible(true);addWindowListener(new WindowAdapter()public void windowClosing(WindowEvent e)System.e*it(0);); validate();public void actionPerformed(ActionEvent m)if(m.getSource()=b1) String s; s=te*t1.getTe*t();int r=1;Connection con;/java.sql包中Connection 连接 Statement sql;/向数据库发送sql语句 ResultSet rs;/处理查询结果 tryClass .forName("sun.jdbc.odbc.JdbcOdbcDriver");/建立jdbc与odbc连接 catch(ClassNotFoundE*ception e) System.out.println(""+e); trycon=DriverManager.getConnection("jdbc:odbc:sun","",""); sql=con.createStatement(); rs=sql.e*ecuteQuery("select * from kechengbiao");while(rs.ne*t() String number=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.showMessage

    注意事项

    本文(软件工程项目学生选课系统.doc)为本站会员(夺命阿水)主动上传,课桌文档仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知课桌文档(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-1

    经营许可证:宁B2-20210002

    宁公网安备 64010402000986号

    课桌文档
    收起
    展开