Java课程设计报告--学生信息管理系统.doc
Java 课程设计报告题 目: 学生信息管理系统 学生姓名: 学 号: 专业班级: 同组姓名: 指导教师: 设计时间: 指导老师意见: 评定成绩: 签名: 日期:目 录一、系统的描述 3二、系统分析与设计41.系统总框图42.各模块功能介绍6三、数据库结构设计5 56四、管理系统主界面设计开发9五、系统测试211.个人信息功能测试222.选课信息功能测试233.奖励信息功能测试244职务信息功能测试25六、小结26七、参考文献27 1系统设计的意义随着学校规模的扩大,学生人数急剧增加,需要管理的信息也成倍增加,同时,由于计算机和网络的普及,建立一个计算机管理系统,学生便可以通过网络来选课并管理自己的信息。2系统功能描述 学生信息管理系统用模块话设计的方法,使得学生信息管理工作系统化、自动化、标准化,大大提高了学校管理学生的效率。3系统开发设计思想尽量采用学校现有的软硬件环境以及先进的管理系统方案,从而到达充分利用学校资源、提高系统开发水平和应用效果的目的。系统应符合学校系统管理系统的规定,满足学校对学生信息管理的需要,并到达操作过程中的直观、方便、实用、平安等要求。系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的人员补充和维护。系统应具有数据库维护功能,及时根据用户的要求对数据进行添加、删除、修改、备份等要操作。 2、系统分析与设计1、系统总框图 根据学生信息管理的的总框架,管理信息系统的总框架如以下图。学生信息信息管理的总界面由个人信息,选课信息,奖惩信息,职务信息组成。1、系统总框图 学生信息管理系统 选课信息奖励信息职务信息退出系统根本信息查询信息修改信息增加信息修改信息查询信息增加信息修改信息查询信息增加信息修改信息查询信息增加信息图1 学生信息管理系统框架图2、各模块功能介绍1 个人根本信息管理:管理员和学生都可以登陆,管理员所实现的功能有个人信息的查询,输入,修改和删除,学生用户可以实现查询和修改的功能,但不能增加和删除学生用户。2 选课信息管理:管理员和学生都可以登陆,管理员所实现的功能有选课信息的查询和修改功能,学生生用户只能查询自己的选修的课程的修改和查询功能。3 奖励信息管理:管理员和学生都可以登陆,管理员所实现的功能有个人信息的查询,修改和删除和增加功能,学生用户只能实现查询功能。登陆系统 采购员登陆销售员 登陆经理登陆查询、修改和增加本人信息查询商品性质订购商品查询、修改和增加本人信息增加、修改和查询订单查询商品信息查询本人的工作进度查询、修改和增加本人信息查询本人工作进度查询商品信息查询、修改和增加本人信息查询商品信息查询员工及本人的工作进度用户管理员登陆查询和修改用户信息删除用户信息管理商品信息退出系统 3. 数据库结构设计在这个学生信息管理系统的开发中,我们选用SQL Server2000作为系统效劳数据库。1设置数据表的的列名、数据类型等,如以下图所示: 数据表设计2设置数据表名称,如图: 数据库需求分析是数据库结构设计的第一个阶段,是非常重要的的一个阶段。在这个阶主要是收集根本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后的进一步设计打下根底。 在仔细分析和调查学生信息管理过程的根底上,可以得到本系统的的数据流程图,如以下图。在此次程序设计中,通过对学生信息管理的内容和数据流程的分析而设计的数据项和数据结构如下所示:1学生个人信息记录:学号、姓名、班级、性别、生日、联系 、 。2班级信息记录:班级编号、班级名称、所属院系、班主任、辅导员。3学生课程信息记录:记录号、学号、姓名、所选课程编号。4课程设置记录:课程编号、课程名、学时、学分、任课老师、上课地点。5学生奖励记录:记录号、学号、姓名、获奖时间、奖励名称、具体描述。6学生职务记录:记录号、学号、姓名、任职时间、职务名称、具体描述。 学生信息管理数据流程图有了上面的数据结构、数据项和数据流程图,就能进行数据库设计了。在对数据项和结构分析的根底上可以形成数据库中的表格以及个人信息表、学生所选课程信息表、学生奖励信息学生职务信息表。为了数据记录实例的完整,系统中包括了应用程序序中所需的一个外部数据表:学生班级信息表。总共需5个表,其结构分别如表1至表5所示。 表1 学生个人信息表的结构字段名字段类型可否为空说明Student-IDIntNOT NULL学生学号关键字Student-NameChar10NOT NULL学生姓名Student-ClassVarcharNOT NULL学生所在班级Student-SexVarcharNOT NULL学生性别Student-BirthdaydatetimeNULL学生生日Student-TelVarcharNULL联系 Student-AddressvarcharNULL 表2学生所选课程表字段名数据类型可否为空说明Count-IDIntNOT NULL记录号主键字Course-IDIntNOT NULL学生学号Course-NameChar10NOT NULL学生姓名Course-NoIntNOT NULL所选课程编号外部关键字表3 学生奖励信息表字段名字段类型可否为空说明Gcheck-IDIntNOT NULL记录号主关键字Gcheck- NoIntNOT NULL学生学号Gcheck- NameChar10NOT NULL学生姓名Gcheck-TimedaratimeNOT NULL获奖时间Gcheck-TitleChar30NOT NULL获奖内容Gcheck-DiscChar50NULL获奖具体描述表4 学生职务信息表字段名字段类型可否为空说明Bcheck-IDIntNOT NULL记录号主关键字Bcheck- NoIntNOT NULL学生学号Bcheck- NameChar10NOT NULL学生姓名Bcheck-TimedaratimeNOT NULL任职时间Bcheck-TitleChar30NOT NULL职务内容Bcheck-DiscChar50NULL职务具体描述表5 学生班级信息表字段名字段类型可否为空说明Class-IDIntNOT NULL学校班级编号主关键字,外部关键字student-classClass-NameChar10NOT NULL班级名称Class-DepVarcharNOT NULL学生所属学院Class-TeacherVarcharNOT NULL班主任Class-AssitantdatetimeNULL辅导员至此一个完整的学生信息管理系统数据库的根本结构就创立完成了。四、管理系统主界面设计开发管理系统主界面主要包括系统管理标志、“选课信息管理按钮、“奖励信息管理按钮、“个人信息管理按钮、“职务信息管理按钮和“退出系统按钮,在这个界面中处理的主要按钮是事件。主要代码:package stumanage;import javax.swing.*;import java.awt.*;import sun.awt.image.*;import java.awt.event.*;/* * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2003</p> * <p>Company: </p> * author not attributable */public class WelcomeFrame extends JFrame JPanel jPanel1 = new MyPanel(); ImageIcon imageIcon1 = new ImageIcon("beautiful.jpg"); BorderLayout borderLayout1 = new BorderLayout(); JPanel jPanel2 = new JPanel(); GridBagLayout gridBagLayout1 = new GridBagLayout(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); JButton jButton3 = new JButton(); JButton jButton4 = new JButton(); JButton jButton5 = new JButton(); public WelcomeFrame() try jbInit(); catch (Exception e) e.printStackTrace(); public static void main(String args) WelcomeFrame welcomeFrame = new WelcomeFrame(); welcomeFrame.pack(); welcomeFrame.show(); private void jbInit() throws Exception imageIcon1.setDescription("beautiful.jpg"); imageIcon1.setImageObserver(this); jPanel1.setLayout(borderLayout1); jPanel1.setMinimumSize(new Dimension(600, 400); jPanel1.setPreferredSize(new Dimension(600, 420); this.setLocale(java.util.Locale.getDefault(); this.setResizable(true); this.setSize(new Dimension(747, 396); this.setState(Frame.NORMAL); jPanel2.setBackground(UIManager.getColor("RadioButtonMenuItem.selectionBackground"); jPanel2.setForeground(Color.black); jPanel2.setMinimumSize(new Dimension(100, 30); jPanel2.setPreferredSize(new Dimension(100, 400); jPanel2.setLayout(gridBagLayout1); jButton1.setToolTipText(" 个人信息管理"); jButton1.setText(" 个人信息管理"); jButton1.addActionListener(new WelcomeFrame_jButton1_actionAdapter(this); jButton2.setToolTipText(" 选课信息管理"); jButton2.setText(" 选课信息管理"); jButton2.addActionListener(new WelcomeFrame_jButton2_actionAdapter(this); jButton3.setToolTipText("奖励信息管理"); jButton3.setText("奖励信息管理"); jButton3.addActionListener(new WelcomeFrame_jButton3_actionAdapter(this); jButton4.setToolTipText("职务信息管理"); jButton4.setText("职务信息管理"); jButton4.addActionListener(new WelcomeFrame_jButton4_actionAdapter(this); jButton5.setToolTipText("退出系统"); jButton5.setText("退出系统"); jButton5.addActionListener(new WelcomeFrame_jButton5_actionAdapter(this); this.getContentPane().add(jPanel1, BorderLayout.CENTER); jPanel1.add(jPanel2, BorderLayout.EAST); ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 0), 0, 0); ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(9, 0, 0, 21), 0, 0); ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(10, 0, 0, 10), 0, 0); ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(0, 0, 0, 11), 21, 0); ,GridBagConstraints.CENTER, GridBagConstraints.NONE, new Insets(9, 0, 13, 0), 12, 0); class MyPanel extends JPanel public void paintComponent(Graphics g) super.paintComponent(g); imageIcon1.paintIcon(this, g, 0, 0); void jButton4_actionPerformed(ActionEvent e) MainFrame.main( null ); this.hide(); MainFrame.jTabbedPane1.setSelectedComponent( MainFrame.jPanel4); void jButton1_actionPerformed(ActionEvent e) MainFrame.main( null ); this.hide(); void jButton3_actionPerformed(ActionEvent e) MainFrame.main( null ); this.hide(); MainFrame.jTabbedPane1.setSelectedComponent( MainFrame.jPanel3); void jButton2_actionPerformed(ActionEvent e) MainFrame.main( null ); this.hide(); MainFrame.jTabbedPane1.setSelectedComponent( MainFrame.jPanel2); void jButton5_actionPerformed(ActionEvent e) System.exit(0); class WelcomeFrame_jButton4_actionAdapter implements java.awt.event.ActionListener WelcomeFrame adaptee; WelcomeFrame_jButton4_actionAdapter(WelcomeFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jButton4_actionPerformed(e); class WelcomeFrame_jButton1_actionAdapter implements java.awt.event.ActionListener WelcomeFrame adaptee; WelcomeFrame_jButton1_actionAdapter(WelcomeFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jButton1_actionPerformed(e); class WelcomeFrame_jButton3_actionAdapter implements java.awt.event.ActionListener WelcomeFrame adaptee; WelcomeFrame_jButton3_actionAdapter(WelcomeFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jButton3_actionPerformed(e); class WelcomeFrame_jButton2_actionAdapter implements java.awt.event.ActionListener WelcomeFrame adaptee; WelcomeFrame_jButton2_actionAdapter(WelcomeFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jButton2_actionPerformed(e); class WelcomeFrame_jButton5_actionAdapter implements java.awt.event.ActionListener WelcomeFrame adaptee; WelcomeFrame_jButton5_actionAdapter(WelcomeFrame adaptee) this.adaptee = adaptee; public void actionPerformed(ActionEvent e) adaptee.jButton5_actionPerformed(e); “奖励信息管理按钮的处理代码如下:queryDataSet1.setColumns(new Column column1, column2, column3, column4, column5, column6); jdbTable2.setDataSet(queryDataSet1); jdbTable2.setEditable(false); column7.setCaption("学生姓名"); column7.setColumnName("course_name"); column7.setDataType(com.borland.dx.dataset.Variant.STRING); column7.setPrecision(50); column7.setSchemaName("dbo"); column7.setTableName("student_course"); column7.setWidth(10); column7.setServerColumnName("course_name"); column7.setSqlType(12); jLabel14.setText("学号:"); jLabel15.setText("性别: "); jLabel16.setRequestFocusEnabled(true); jLabel16.setText("姓名: "); jLabel17.setText("班级: "); jPanel3.setLayout(borderLayout7); jPanel15.setMinimumSize(new Dimension(200, 100); jPanel15.setPreferredSize(new Dimension(200, 250); jPanel15.setLayout(borderLayout8); jPanel14.setLayout(borderLayout9); jPanel14.setMinimumSize(new Dimension(300, 50); jPanel14.setPreferredSize(new Dimension(300, 50); jPanel14.setVerifyInputWhenFocusTarget(true); jPanel13.setPreferredSize(new Dimension(404, 40); jPanel16.setPreferredSize(new Dimension(280, 10); jPanel16.setLayout(gridBagLayout1); jLabel18.setText("获奖时间:"); jLabel19.setText("获奖名称:"); jdbTextField1.setText("jdbTextField1"); jdbTextField1.setColumnName("gcheck_time"); jdbTextField1.setDataSet(qSet_jiangli); jdbTextField2.setText("jdbTextField2"); jdbTextField2.setColumnName("gcheck_title"); jdbTextField2.setDataSet(qSet_jiangli); jdbTextArea1.setText("jdbTextArea1"); jdbTextArea1.setColumnName("gcheck_disc"); jdbTextArea1.setDataSet(qSet_jiangli); jPanel17.setLayout(borderLayout10); jButton5.setText("增加"); jButton6.setText("取消"); jPanel18.setLayout(borderLayout11); borderLayout11.setVgap(10); jLabel20.setText("获奖内容具体描述:"); jdbTextField3.setEnabled(true);五、系统测试本系统测试是根据实际的用户需求书而进行的系统测试,它主要分为以下两局部:系统功能测试和系统健壮性测试。1、功能测试鉴于本系统功能模块较多,决定采用分块的方式来进行功能测试,分别如下:学生管理系统主要是对学生信息进行管理,本程序可以分为两个类:Welcome Frame 类和 Main Frame类。1Welcome Frame 类:完成学生信息管理系统画面的启动。 画面由个人信息管理按钮、选课信息管理按钮、奖励信息管理按钮、职务信息管理系统按钮、退出按钮和一个系统标志图组成。完成界面布局后,再给这些按钮添加事件监听。有Welcome Frame_jButton4_action Adapter等5个内部类完成事件响应处理。 图 1 图 1 2Main Frame 类:完成各个子系统的功能。 在Main Frame 上放置4个JTabbedPane, 用来在各个子系统之间进行切换。每一个JTabbedPane代表一个子系统。 1个人信息管理子系统。个人信息系统根据界面设计所需要的 Label、JdbTextField、Button、JdbTable 和 JdbNavToolBar等。首先需要确定这些控件的数目,在JBuider 的 Design中生成它们,并添加事件监听,连接数据库后在这里采用的是本地数据库效劳器。JdbNavToolBar 用于翻页,浏览指定JdbTable 中的信息。个人信息管理子系统对所有的学生的个人信息进行登记,其中包括学生的学号、姓名、性别、生日、地址、 等,并且系统还能够修改输入错误的学生个人信息记录。个人信息管理子系统界面分为上下两局部。上半局部主要是一些信息输入框,还有两个按钮:一个是记录修改按钮,通过单击它来提交学生个人信息修改记录;一个记录取消按钮,单击它放弃错误的输入信息记录。下半局部负责显示所有学生的个人信息的记录。其界面设计如图 2 所示 图 2 2选课信息管理子系统。选课信息管理子系统根据界面设计所需要的Label、JdbTextField、Button、JdbNavToolBar等,并连接数据库。在本子系统中需要建立两个JdbTable 、一个用来显示所有可选课程,另一个显示学生已选课程信息。JdbTable 显示在数据库中满足输入信息的需要。 选课信息管理子系统对学生所选的课程进行管理,包括学生的可选课程和个人已选课信息,并可以进行选课和退课操作。选课信息管理子系统界面分为左右两局部,左边负责显示学生所有可选课程的记录信息,右边显示当前这个学生已经选上的课程。有两个按钮:一个“选课按钮,单击它可增加学生选课程信息的记录;一个“退课按钮,单击它可去掉学生所选课程信息的记录,其界面设计如图 3所示 图 3 3奖励信息管理子系统。奖励信息管理子系统根据界面设计所需要的Lable、JdbTextField、Button、JdbNavToolBar等,连接数据库,将奖励信息参加到数据库中。奖励信息管理子系统主要对所有学生的获奖信息进行登记,包括获奖时间、获奖的名称、获奖内容的具体信息,并可以取消输入错误的学生奖励信息。 奖励信息管理子系统界面分为上下两局部,上半局部主要是一些信息输入框,负责显示所有学生的奖励信息的记录。还有两个按钮:一个是记录添加按钮,主要是提交学生奖励信息的记录;一个记录取消按钮,主要是放弃错误的输入信息记录。下半局部负责显示存入数据库的信息。其界面如图 4。 图 4 4职务信息管理子系统。职务信息管理子系统根据界面设计所需要的Lable、JdbTextField、Button、JdbNavToolBar等,连接数据库,将职务信息参加到数据库中。职务信息管理子系统主要对所有学生的职务信息进行登记,包括任职的时间、职务的名称、职务的具体信息,并可以取消输入错误的学生奖励信息。 职务信息管理子系统界面分为上下两局部,上半局部主要是一些信息输入框,负责显示所有学生的职务信息的记录。还有两个按钮:一个是记录添加按钮,主要是提交学生职务信息的记录;一个记录取消按钮,主要是放弃错误的输入信息记录。下半局部负责显示存入数据库的信息。六、总结 经过为期一周到的java程序设计,感觉收获颇多。以前做的系统因为知识的有限,都只是一些小小的系统,这一次做的系统却感觉到了这个系统的强大,而且还和数据库连接起来了。说实话,老师要我们做在一周的时间内做一个这么强大的系统对我们来说有点困难,而且好多东西我们都学的不精,有的只是稍微涉猎过一点点,所幸的是老师给了我们案例,而且我们是四个人一组,我们可以,相互合作,这样我们才得以完成这次的程序设计。通过这次程序设计,我也深刻的体会到了合作的重要性,我感觉我们就是我们就是一个团体,我们都要认真对待,用心的投入才能做出一个好的系统。通过这次程序设计我也了解到了一个好的系统有对现实的生活有多大的作用,拿我们做的学生信息管理系统来说,通过这个系统,学生可以更方便的通过网络选择自己喜欢的课程,学校的老师和领导也可以更方便,更好的管理学生。 通过这次程序设计我也体会到了课本上的知识只有真正的运用到现实中才真正是掌握了,不然都是纸上谈兵。不管我们学什么知识,我们都要学以致用,这样我们的知识才会丰富,我们才能得以充实。七、参考文献1、黄晓东.?Java课程设计案例精编第二版?M.中国水利水电出版社,20212、李尊朝、苏军.?Java语言程序设计第二版?M.中国铁道出版社,20213、钱雪忠、李京.?数据库原理第2版?M.北京邮电大学出版社,2021