欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    课程设计(论文)学生选课管理信息系统设计与实现.doc

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

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

    课程设计(论文)学生选课管理信息系统设计与实现.doc

    完成学生选课管理系统的开发课程设计报告一、课程设计任务完成学生选课管理系统的开发二、需求描述本系统是一个单机版的小型的学生选课管理系统,在本系统中,开发了一个面向管理员、学生和教师这三个对象的教务平台,对学生提供的服务有登录、选课、修改登录密码、和查询成绩这几个服务,所选课程总数不能超过3门;对教师提供的服务有登录、修改登录密码和登录成绩;对管理员提供的服务有登录开设学生和教师帐号、删除学生和教师帐号的服务。三、系统总体设计(1)架构:单机(2)运行软件环境:(3)开发环境: 硬件平台: 内存:256MB以上 软件平台: 操作系统:WindowsXP 数据库:SQL Server 2000、SQLServer SP4补丁 开发工具: 分辨率:1024*768学生选课管理系统教师登录模块学生登录模块登录模块管理员登录模块教师信息管理模块学生信息管理模块教师录入成绩模块教师密码修改模块学生密码修改模块学生选择课程模块学生查询成绩模块各模块功能:l 登录界面:登录界面是有帐号,密码两个JTextField,管理员帐号一字母A开头,教师帐号一字母T开头,学生帐号以字母S开头,登录帐号或密码输入错误会弹出相应的提示对话框。l 学生信息管理模块:管理员用于添加和删除学生信息的模块。l 教师信息管理模块:管理员用于添加和删除教师信息的模块。l 教师密码修改模块和学生密码修改模块:管理员添加的用户帐号的初始密码与用户的帐号相同,用户通过密码修改模块可以自己需改密码。l 教师录入成绩模块:教师可以浏览选修自己课程的学生的信息并且录入该学生的成绩。l 学生选择选修课模块:该模块通过表格的形式将所有课程列出来,学生可以根据个人兴趣选择不同的课程,每个学生选择的课程数目不能超过3门,而且不能重复选课,否则会弹出对话框,提示用户查看已经选择了的课程。l 学生查询成绩模块:通过表格的形式将该学生选择了的课程列出来,如果教师有录入成绩,则可以看到自己的课程成绩。l 3.数据库设计 (概要设计.)(1)E-R图教师学生学生学号教师职称学生姓名教师编号课程选课授课教师性别教师姓名所在班级学生生日学生性别教师生日所在院系学分课程编号课程名选课人数成绩上课地点(2)关系模式 学生(学生学号,学生姓名,教师性别,教师生日,所在班级)教师(教师编号,教师姓名,教师性别,教师生日,教师职称,所在院系)课程(课程号,课程名,学分,选课人数)选课(课程号,学生学号,成绩)授课(课程号,教师编号,上课地点)(3)数据库管理系统:Microsoft SQL Server 2000(4)数据库命名StudentManager(5)数据库表 Logon(登录帐号密码) 主要用来保存用户登录信息字段名数据类型长度是否为空是否主键UserIDchar10不为空主键Passwordrcharr10StudentTable1(学生信息表)主要用来保存学生信息。字段名数据类型长度主键否是否为空描述StudentIDChar10主键不为空学生学号StudentNameChar10不为空学生姓名StudentSexChar2不为空学生性别StudentBirthdayDatetime8学生生日Classchar16所在班级TeacherTable1(教师信息表) 用来储存教师的基本信息字段名数据类型长度主键否是否为空描述TeacherIDChar10主键不为空教师编号TeacherNameChar10不为空教师姓名TeacherSexChar2不为空教师性别TeacherBirthdayDatetime8教师生日Postchar10教师职称Departmentchar20所在院系CourseTable(课程信息表)字段名数据类型长度主键否是否为空描述CourseIDChar16主键不为空课程编号CourseNameChar16不为空课程名PointChar8不为空学分StuNumberDatetime4不为空选课人数ScoreTable(学生成绩表)用于存储学生成绩字段名数据类型长度是否为空是否主键CourseIDchar16不为空主键StudentIDchar10不为空主键Scoreint4TeachTable(j教师授课表)字段名数据类型长度是否为空是否主键CourseIDchar16不为空主键TeacherIDchar10不为空主键Locationint10(8)数据库账户及权限 (截图)学生账户表教师账户表用户登录表:(9)数据库存储过程:AllCourse:create proc AllCourseasbegin from Course x,TeacherTable1 y,TeachTable zendDeleteLogon :create proc DeleteLogon(id char(10)asbegin delete from Logon where UserID=idendDeleteStudent:create proc DeleteStudent(id char(10)asbegin delete from StudentTable1 where StudentID=idendDeleteTeacher :create proc DeleteTeacher(id char(10)asbegin delete from TeacherTable1 where TeacherID=idendInsertLogon :create proc InsertLogon(id char(10)asbegin insert into Logon values(id,id)endInsertStudent :create proc InsertStudent(userid char(10),username char(10),sex char(2),birth datetime,class char(10)asbegininsert into StudentTable1 values(userid ,username,sex,birth,class)endreturnInsertTeacher:create proc InsertTeacher(userid char(10),username char(10),sex char(2),birth datetime,post char(10),department char(10)asbegininsert into TeacherTable1 values(userid ,username,sex,birth,post,department)endreturnIsExistsStu :create proc IsExistsStu(id char(10)asbegin select * from StudentTable1 where StudentID=idendIsExistsTea:create proc IsExistsTea(id char(10)asbegin select * from Teachertable1 where TeacherID=idendProcAllStu :create proc ProcAllStuasbeginselect * from StudentTable1endProcAllTea create proc ProcAllTeaasbeginselect * from TeacherTable1endProcLogon:create proc ProcLogon(userid char(16),password char(10)asbegin select * from Logon where UserID=userid and Password=passwordendreturnProcModify:create proc ProcModify(id char(10),password char(16)asbegin update Logon set Password=password where UserID=idendProcStudent :create proc ProcStudent(id char(10)asbegin select * from StudentTable1 where StudentID=idendSelectCourse :create proc SelectCourse(id char(10),courseid char(16)asbegin insert into ScoreTable values(courseid,id,null)endSelectedCourse: create proc SelectedCourse(id char(10)asbegin select * from ScoreTable where id=StudentIDendSelectedCourseNum:create proc SelectedCourseNum(id char(10)asbegin select COUNT(*) from Scoretable where StudentID=idendSelectedDetail :create proc SelectedDetail(id char(10)asbegin from Course x,TeacherTable1 y,TeachTable z,ScoreTable send(1)窗体功能描述 登录界面管理员以帐号Admin密码123登录成功进入管理员的信息管理界面,通过点击“学生信息管理”和“教师信息管理”进入不同的管理界面,学生信息管理界面如下:教师信息管理界面如下:以学生帐号(如:帐号:S001001,密码:S001001)登陆成功后进入如下界面,首先显示的 是学生的基本信息:点击“课程列表”按钮进入如下界面根据自己的跟人兴趣选择课程,选择的课程数目不能超过3门否则弹出对话框如下:点击“确定”跳转到已选课程列表。在主界面点击“已选课程”按钮也可以进入下面的界面查看已经选择的课程:以教师帐号(如:帐号:T01001,密码:T01001)登陆成功后进入如下界面,首先显示的 是教师的基本信息,点击“录入成绩”可以通过表格来录入学生的成绩,界面如下图所示:(2)页面/窗体关系结构图JPanel的子类JPanel的子类JPanel的子类JPanel的子类JPanel的子类JPanel的子类JPanel的子类JPanel的子类TeaInfo.javaJPanel的子类JFrame的子类四、系统实现技术小结为了方便管理,将数据库的封装分成两部分,数据库资源配置文件和封装数据库操作的类SqlManager.java:l 数据库资源配置文件:#Sepecify the system type: window or unixsystem-type=windows#specify the database's typedatabase-type=sqlserver#specify some parametersDBhost=localhostDBport=1433DBname=StudentManagerDBuser=saDBpassword=l 封装数据库操作的类:import java.sql.*;import java.util.*;import javax.swing.JOptionPane;public class SqlManager private static SqlManager p=null;private PropertyResourceBundle bundle;private static String jdbcDriver=null;private static String split=null;private String DBType=null;private String DBhost="localhost"private String DBname=""private String DBport=""private String DBuser=""private String DBpassword=""private Connection Sqlconn=null;private Statement Sqlstmt=null;private String strCon=null;private SqlManager()trybundle=new PropertyResourceBundle(SqlManager.class.getResourceAsStream("/sysConfig.properties");this.DBhost=getString("DBhost");this.DBname=getString("DBname");this.DBport=getString("DBport");this.DBuser=getString("DBuser");this.DBpassword=getString("DBpassword");String system_type=getString("system-type");if(system_type!=null)if(system_type!=null)if(system_type.toLowerCase().equals("widows")split=""else if(system_type.toLowerCase().equals("unix")split=":"String database_type=getString("database-type");this.DBType=database_type;if(database_type!=null)if(database_type.toLowerCase().equals("mysql")jdbcDriver="com.mysql.jdbc.Driver"strCon="jdbc:mysql:/"+DBhost+":"+DBport+"/"+DBname;else if(database_type.toLowerCase().equals("oracle")jdbcDriver="oracle.jdbc.driver.OracleDriver"strCon="jdbc:oracle:thin:"+DBhost+":"+DBport+":"+DBname;else if(database_type.toLowerCase().equals("sqlserver")jdbcDriver="com.microsoft.jdbc.sqlserver.SQLServerDriver"strCon="jdbc:microsoft:sqlserver:/"+DBhost+":"+DBport+"DatabaseName="+DBname;catch(Exception e)e.printStackTrace();public static SqlManager createInstance()if(p=null)p=new SqlManager();p.initDB();return p;private String getString(String s)return this.bundle.getString(s);public void initDB()System.out.println(strCon);System.out.println(jdbcDriver);tryClass.forName(jdbcDriver);catch(Exception ex)System.err.println("Can't Find Database Driver.");public void connectDB()trySystem.out.println("SqlManager:Connecting to database.");Sqlconn=DriverManager.getConnection(strCon,DBuser,DBpassword);Sqlstmt=Sqlconn.createStatement();catch(SQLException ex)System.err.println("connectDB"+ex.getMessage();System.out.println("SqlManager:Connect to database successful.");public void closeDB()trySystem.out.println("SqlManager:Close connection to database.");Sqlstmt.close();Sqlconn.close();catch(SQLException ex)System.err.println("closeDB:"+ex.getMessage();System.out.println("Sqlmanager:Close connection successful.");public int executeUpdate(String sql)int ret=0;tryret=Sqlstmt.executeUpdate(sql);catch(SQLException ex)System.out.println("executeUpdate:"+ex.getMessage();return ret;public ResultSet executeQuery(String sql)ResultSet rs=null;tryrs=Sqlstmt.executeQuery(sql);catch(SQLException ex)System.err.println("executeQuery:"+ex.getMessage();return rs;public static void main(String args)SqlManager.createInstance().connectDB();SqlManager.createInstance().closeDB();五、课程设计体会该系统主要实现了学生选课的功能,这个系统是我独立完成,从需求分析,界面的搭建,到数据库的连接,表格,存储过程和存储过程等的建立,在这段时间的摸索中,我确实学到了很多东西,特别是对以前不太了解的Java Swing组件有了更深刻的了解。比如JTable,对于它的用法我在网上找了很多资料,JTable的建立有各种不同的方法,可以使用DefaultTableModel类来实现,如DefaultTableModel dtm=new DefaultTableModel(new Object "","课程编号","课程名称","学分","任课教师","教师职称","上课地点","以选人数",0);然后再table.setModel(dtm); 或者继承AbstractTableModel类,还有对于如何在JTable中添加Swing组件,原本我是直接新建一个JcheckBox对象直接添加到表格的 单元格里,结果发现只能显示出一串字符串,上网查找后才知道,要用DefaultCellEditor来添加Swing组件,再设置setCellRenderer(new MyTableRenderer() 这是一个实现了TableCellRenderer接口的JCheckBox。TableCellRenderer可以看做是Swing组件的呈现器,这样Table就会把内容显示绘制交给JCheckBox了。对于数据库,我尽量将对数据库的操作放在存储过程中,这样的抽象和封装使得源程序代码更加容易理解,而且在web应用系统中也可以避免发生不安全的状况,我想这是一个号的程序员应当要养成的习惯,在这次的课程设计中,层次化,模块化,抽象化也是我学到的一个重要的经验,参考一些资料后发现模块化能使程序设计更加简单,设计代码时目标更加明确,效率更高,以前虽然也知道这些道理,但自己真正实施起来却感到无从下手,比如前面的数据库操作和数据库资源配置文件,就是我从书中看来的,这样做的好处是,在程序中操作数据库的时候避免了使用很多try和catch语句,是代码更加简洁,更容易理解,此外需要连接不同的数据库时只要修改数据库的资源配置文件sysConfig.properties就可以了。原本我是想用jsp 做一个web应用程序的,因为对于学生选课系统做成单版的确实没什么实用性,但是我对jsp还不太熟悉,所以这次先做个单机版的,以后我会尝试用jsp来做这个系统。六、系统主要源程序清单:public class AdmPanel extends JPanel implements ActionListener,ItemListener,MouseListenerJButton b1,b2,b3,b4,b5,b6;JPanel p1,p2,pCenter;CardLayout card=null;JTextField t1=new JTextField(10), t2=new JTextField(10), t3=new JTextField(10), tt1=new JTextField(10), tt2=new JTextField(10), tt3=new JTextField(10);ButtonGroup sex1=new ButtonGroup(), sex2=new ButtonGroup();JRadioButton radio1=new JRadioButton("男",true), radio2=new JRadioButton("女");JRadioButton r1=new JRadioButton("男",true), r2=new JRadioButton("女");JComboBox year,month,date,yy,mm,dd,post;JTable table1,table2;Vector vectorColName1=new Vector(), vectorColName2=new Vector();Vector vector1=new Vector(), vector2=new Vector();DefaultTableModel model1=new DefaultTableModel(vectorColName1,0)public boolean isCellEditable(int row, int column) return false; ;DefaultTableModel model2=new DefaultTableModel(vectorColName2,0) public boolean isCellEditable(int row, int column) return false; ;AdmPanel()setLayout(new BorderLayout();t1=new JTextField(10);t2=new JTextField(10);t3=new JTextField(10);tt1=new JTextField(10);tt2=new JTextField(10);tt3=new JTextField(10);sex1.add(radio1);sex1.add(radio2);sex2.add(r1);sex2.add(r2);year=new JComboBox();month=new JComboBox();date=new JComboBox();yy=new JComboBox();mm=new JComboBox();dd=new JComboBox();post=new JComboBox();post.addItem("助教");post.addItem("讲师");post.addItem("副教授");post.addItem("教授");for(int i=1980;i<1995;i+)year.addItem(i);for(int i=1;i<=12;i+)month.addItem(i);for(int i=1;i<=31;i+)date.addItem(i);for(int i=1950;i<1995;i+)yy.addItem(i);for(int i=1;i<=12;i+)mm.addItem(i);for(int i=1;i<=31;i+)dd.addItem(i);year.addItemListener(this);month.addItemListener(this);yy.addItemListener(this);mm.addItemListener(this);post.addItemListener(this);b1=new JButton("学生信息管理");b2=new JButton("教师信息管理");b3=new JButton("输入");b4=new JButton("删除");b5=new JButton("输入");b6=new JButton("删除");b1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);b4.addActionListener(this);b5.addActionListener(this);b6.addActionListener(this);JPanel p0=new JPanel();p0.add(b1);p0.add(b2);pCenter=new JPanel();card=new CardLayout();pCenter.setLayout(card);p1=createStuPanel();p2=createTeaPanel();pCenter.add("学生信息管理",p1);pCenter.add("教师信息管理",p2);add(p0,BorderLayout.NORTH);add(pCenter,BorderLayout.CENTER);private JPanel createStuPanel()JPanel p=new JPanel();JScrollPane p1;JPanel p2=new JPanel();p.setLayout(new GridLayout(2,1);SqlManager DBm=SqlManager.createInstance();/单态模式获取实例DBm.connectDB();String sql="exec ProcAllStu"ResultSet rs=DBm.executeQuery(sql);vectorColName1.addElement("学号"); vectorColName1.addElement("姓名"); vectorColName1.addElement("性别"); vectorColName1.addElement("生日"); vectorColName1.addElement("班级");model1.setDataVector(vector1,vectorColName1);table1=new JTable(model1);table1.addMouseListener(this);p1=new JScrollPane(table1);p.add(p1);trywhile(rs.next() Vector rec_vector=new Vector();/从结果集中取数据放入向量rec_vector中 rec_vector.addElement(rs.getString(1); rec_vector.addElement(rs.getString(2); rec_vector.addElement(rs.getString(3); rec_vector.addElement(rs.getString(4); rec_vector.addElement(rs.getString(5); vector1.addElement(rec_vector);/向量rec_vector加入向量vect中 rs.close();catch(SQLException e)e.printStackTrace();DBm.closeDB();/构造p2Box base=Box.createHorizontalBox(), boxleft=Box.createVerticalBox(), boxright=Box.createVerticalBox();JPanel pp1=new JPanel(), pp2=new JPanel(), pp3=new JPanel(), pp4=new JPanel(), pp5=new JPanel(),

    注意事项

    本文(课程设计(论文)学生选课管理信息系统设计与实现.doc)为本站会员(e****s)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

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




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开