1、重庆邮电大学计算机科学和技术学院设计名称: Java程序设计汇报 设计题目: 学生成绩管理系统 学生学号: 专业班级: 学生姓名: 目录一、需求分析- 3 -1.1 功能需求分析- 4 -1.2 性能需求分析- 4 -1.3 数据库需求分析数据流图- 5 -1.3.1 数据结构- 5 -1.3.2 数据流:- 5 -二、概要结构设计- 6 -2.1系统功能结构设计- 6 -2.1.1模块的功能设计- 6 -2.2 概要结构设计- 7 -三、详细设计及实现83.1用户登陆模块83.1.1 代码实现83.2 管理员界面133.2.1 代码实现:133.3 用户界面163.3.1 代码实现:163.
2、4 添加模块243.4.1 添加模块代码实现:243.5 删除模块303.5.1 代码实现:31心得体会:34参考文献35一、需求分析编写目标:学生成绩管理系统模块是为了实现学校人力资源优化和学生成绩管理科学管理而设计,经过使用本系统,能够愈加有效管理学生信息,其大包含学生基础信息,成绩信息而且含有信息增加,查询,修改等功效。需求分析说明书是为软件开发者能愈加好了解开发需求,避免因为对问题认识不清或错误了解而增加更多开发成本。需求分析是软件系统生存期中定义阶段最终一个步骤;是作为整个软件开发范围指南,是软件开发人员开发出正确符适用户要求软件关键;是为明确软件需求、安排项目计划和进度、组织软件开
3、发和测试,撰写本文档。该文档将最终交给软件具体开发人员进行具体开发,其针正确对象是软件开发人员。处理了实现该系统需求程序模块设计问题。包含怎样把该系统划分成若干个模块、决定各个模块之间接口、模块之间传输信息,和数据结构、模块结构设计等。在以下概要设计汇报中将对在本阶段中对系统所做全部概要设计进行具体说明。具体设计中,程序设计员可参考此概要设计汇报,在概要设计对学生信息管理系统所做模块结构设计基础上,对系统进行具体设计。在以后软件测试和软件维护阶段也可参考此说明书,方便于了解在概要设计过程中所完成各模块设计结构,或在修改时找出在本阶段设计不足或错误。此需求规格说明书是对用户需求分析结果,明确系统
4、应含有功效及性能和界面方面需求,使系统分析员及软件开发组组员能清楚地了解用户需求,并在此基础上完成后续工作和开发工作。学生信息管理系统将由两部分组成:置于学生信息前台程序,和置于管理员数据库服务器。1.1 功效需求分析 该学生成绩管理系统含有三方面功效:首先是学生用户,学生经过输入学号和密码进下该系统后,能够进行部分基础查询(学生信息查询、班级信息查询、课程信息查询)、成绩管理(成绩查询、计算平均分)重新登陆系统;首先老师进入该系统则比学生多部分权限:成绩输入、成绩查询。具体功效:1、 选择学生基础维护菜单命令,即可进入 学生基础维护功效窗体,在其中输入学生相关信息,假如需要添加或修改学生信息
5、,则单击对应按纽,输入新信息后单击添加就能够了。需要删除一条信息,则只要选择这条信息再点击 删除。在搜索条件中输入相关条件,单击 查询就可查找信息。2、 选择学生信息查询菜单命令,即可进入学生信息查询功效窗体,在其中下拉列表中选择你要看信息,则在下面表格中显示你要信息。3、选择成绩管理 添加成绩菜单命令,即可进入 添加成绩功效窗体,此功效权限只有管理员和老师。4、选择成绩管理 输入成绩菜单命令,即可进入 输入成绩功效窗体,此功效权限只有管理员和老师。5、 选择成绩管理 修改成绩 界面,此功效规管理员全部。6、 选择成绩管理 查询成绩界面此界面对学生也是可见,它权限规全部用户全部。7、 选择登陆
6、 重新登陆 则会返回登陆界面,为用户提供方便。8、 选择退出将退出整个系统。1.2 性能需求分析时间特征要求:在软件方面,响应时间有点慢,因为是用Eclipse做,它占用内存比较大,更新处理时间比较快而且快速。安全性:设置口令号和密码验证方法,预防非法用户登录进行操作。也就是用户只有管理员、学生和老师才能进入这个系统,用户凭口令号和密码进入此系统,系统会自动判定用户是那种类型,分别拥有不一样权限。1.3 数据库需求分析数据流图1.3.1 数据结构在系统中功效模块关键牵涉到信息包含:是学生信息(Student)、课程信息(Course)、成绩表(SC).学生信息:包含学号(STNO)、姓名(SN
7、AME)、年纪(SAGE)、性别(SSEX)、系别(SDEPT)课程信息:包含课程编号(Cno)、课程名称(Cname)、先行课(Cpno)成绩表;学号(STNO)、课程号(Cno)、成绩(Grade) 1.3.2 数据流:1) 数据流名:口令号说明:依据这个口令号定位到用户管理数据库,方便进行身份验证。数据流起源:登陆界面输入口令号和密码。数据流去向:其中用户口令信息将存在于整个操作过程中,预防非法登陆。数据流组成:口令号(文本);密码(文本)2) 数据流名:寻求信息说明:依据用户在学生信息维护时候所填写信息。数据流起源:学生信息维护界面学生输入包含学号、班级编号、名称等。数据流去向:学号将
8、存在整个操作,其它存入数据库。数据流组成:学号(文本);姓名(文本)等3) 数据流名:寻求信息说明:依据用户在成绩管理时候所填写信息。数据流起源:成绩输入、修改、添加等界面用户输入包含课程编号、课程名称、成绩、老师。数据流去向:学号、班级编号、课程编号将存在整个操作,其它存入数据库。数据流组成:课程编号(文本)、课程名称(文本)、老师(文本)等。4) 数据流名:返回信息说明:依据用户在学生信息维护时候所填写信息存入了数据库以后。数据流起源:由学生信息维护界面学生输入包含学号、姓名、性别等存入数据库。数据流去向:学生信息维护界面。数据流组成:学号(文本)、姓名(文本)、班级名称(文本)、性别(文
9、本)等。5) 数据流名:返回信息说明:依据用户在成绩管理时候所填写信息存入数据库后。数据流起源:由成绩管理输入包含班级名称、老师、课程名、成绩存入数据库。数据流去向:成绩管理各子界面。数据流组成:班级编号(文本);班级名称(文本);老师(文本)等;二、概要结构设计2.1系统功效结构设计2.1.1模块功效设计依据需求分析阶段得到功效需求,管理员、学生和老师用户经过输入口令号和密码进下该系统后,能够进行部分学生基础信息查询(学生信息查询、班级信息查询、课程信息查询)、学生信息维护、成绩管理(成绩查询、计算平均分)重新登陆系统、退出。 模块功效大约能够分为以下4个方面:这多个模块学生基础维护、成绩管
10、理、登陆、退出。其中基础维护还要包含学生信息维护、班级信息维护、课程信息维护。成绩管理包含成绩查询、添加成绩、成绩输入等。总而言之,得到用户端功效模块图以下2.2所表示。2.2 概要结构设计用户登陆管理员登陆登陆删除信息增加信息查询信息查询信息开课E-R 图:学生年纪系别课程系别 名称含有先行课成绩课名学号姓名选课三、具体设计及实现3.1用户登陆模块 3.1.1 代码实现package stu_manager;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Login extends JFr
11、ame private static final long serialVersionUID = 5311099L;TextField f1;TextField f2;JButton b1;JButton b2;JButton b3;String power;/表示权限Login() Container cp=getContentPane(); cp.setLayout(new GridLayout(4,1); Label l1=new Label(用户名); Label l2=new Label(密 码); Panel p1=new Panel(); Panel p2=new Panel()
12、; Panel p3=new Panel(); f1=new TextField(10); f2=new TextField(10); f2.setEchoChar(*); b1=new JButton(登录); b2=new JButton(重置); b3=new JButton(退出); p1.add(l1); p1.add(f1); p2.add(l2); p2.add(f2); p3.add(b1); p3.add(b2); p3.add(b3); cp.add(p1); cp.add(p2); cp.add(p3); b1.addActionListener(new Enter();
13、 b2.addActionListener(new ReWrite(); b3.addActionListener(new Close();public static void main(String args) Login log=new Login(); log.setTitle(系统登录); log.setBounds(200, 200, 300, 300); log.setBackground(Color.blue); log.setVisible(true);class Enter implements ActionListener public void actionPerform
14、ed(ActionEvent e) if(f1.getText().equals(tang)&(f2.getText().equals(051141) JOptionPane.showMessageDialog(null, 登录成功!用户权限是管理员); power=管理员; XueSheng frame1 = new XueSheng(); frame1.setResizable(true); else if(f1.getText().equals(tang)&(f2.getText().equals(123456) JOptionPane.showMessageDialog(null, 登
15、录成功!登录成功!用户权限是游客); power=游客; Find f2 = new Find(); f2.setVisible(true); else JOptionPane.showMessageDialog(null, 登录失败,请重新登录!); class ReWrite implements ActionListener public void actionPerformed(ActionEvent e) f1.setText(); f2.setText(); f1.requestFocus(); class Close implements ActionListenerpublic
16、 void actionPerformed(ActionEvent e) JButton bt=(JButton)e.getSource(); if(bt=b3) System.exit(0); 3.2 管理员界面3.2.1 代码实现:package stu_manager;import java.awt.*;import java.awt.event.*;import javax.swing.*;import javax.swing.JFrame;public class XueSheng extends JFrame implements ActionListener JButton cx
17、, zj, tc, sc;XueSheng() setBounds(100, 100, 600, 600);JPanel panel2 = new JPanel();setContentPane(panel2);panel2.setLayout(null);JLabel label1 = new JLabel(欢迎进入学生信息管理界面);label1.setFont(new Font(BOLD, Font.BOLD, 28);panel2.add(label1);label1.setBounds(50, 20, 400, 100);cx = new JButton(查询);panel2.add
18、(cx);cx.setBounds(50, 200, 80, 50);zj = new JButton(增加);panel2.add(zj);zj.setBounds(150, 200, 80, 50);sc = new JButton(删除);panel2.add(sc);sc.setBounds(250, 200, 80, 50);tc = new JButton(退出);panel2.add(tc);tc.setBounds(350, 200, 80, 50);cx.addActionListener(this);zj.addActionListener(this);sc.addActi
19、onListener(this);tc.addActionListener(this);setVisible(true);public void actionPerformed(ActionEvent e) if (e.getSource() = cx) Find f = new Find(); if(e.getSource()=zj) AddFI f = new AddFI(); if(e.getSource()=sc) Delet d = new Delet(); if(e.getSource()=tc)shutDown();private void shutDown()this.disp
20、ose(); 3.3 用户界面3.3.1 代码实现:package stu_manager;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import javax.swing.*;public class Find extends JFrame implements A
21、ctionListener JTextField t1;String STNO, r1, r2, r3, r4, r5, r6;JButton b1, b2;XueSheng xue;Find() super(查询学生信息);Container c1 = this.getContentPane();setBackground(new Color(215, 215, 215);c1.setLayout(new GridLayout(3, 2);JPanel pp = new JPanel();JLabel label0 = new JLabel(请输入你学号);label0.setForegro
22、und(Color.blue);pp.add(label0);JPanel p1 = new JPanel();t1 = new JTextField(10);p1.add(new Label();p1.add(t1);c1.add(p1);JPanel p2 = new JPanel();b1 = new JButton(查询);b2 = new JButton(退出);b1.addActionListener(this);b2.addActionListener(this);p2.add(b1);p2.add(b2);c1.add(p2);this.setVisible(true);thi
23、s.setBounds(200, 200, 400, 300);public void actionPerformed(ActionEvent e) try if (e.getSource() = b1) try STNO = t1.getText();Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();String url = jdbc:sqlserver:/localhost:1433; DatabaseName=ss;String userName = sa; / 默认用户名String us
24、erPwd = 051141;Connection cn = DriverManager.getConnection(url, userName,userPwd);String str = select Student.SNAME,Student.SAGE,Student.SSEX,Student.STNO,Course.Cname,SC.Grade from Student,Course ,SC where Student.STNO = SC.STNO and SC.Cno = Course.Cno and Student.STNO =+STNO+;PreparedStatement ps
25、= cn.prepareStatement(str);ResultSet rs = ps.executeQuery();System.out.println(STNO= + STNO);if (rs.next() r1 = rs.getString(STNO);r2 = rs.getString(SNAME);r3 = rs.getString(SAGE);r4 = rs.getString(SSEX);r5 = rs.getString(Cname);r6 = rs.getString(Grade); else JOptionPane.showMessageDialog(null, 你输入学
26、号有误);cn.close(); catch (SQLException g) System.out.println(Error + g.getErrorCode();System.out.println(Merrage= + g.getMessage(); catch (Exception f) f.printStackTrace();File f = new File();this.dispose();if (e.getSource() = b2) t1.setText();t1.repaint(); catch (NumberFormatException ex) JOptionPane
27、.showMessageDialog(null, 数据转换错误);class File extends JFrame implements ActionListener JTextField tt1, t2, t3, t4, t5, t6;JButton b3;File() super(查询学生信息);Container c2 = this.getContentPane();setBackground(new Color(215, 215, 215);c2.setLayout(new GridLayout(3, 1);tt1 = new JTextField(r1);t2 = new JTex
28、tField(r2);t3 = new JTextField(r3);t4 = new JTextField(r4);t5 = new JTextField(r5);t6 = new JTextField(r6);tt1.setEditable(false);t2.setEditable(false);t3.setEditable(false);t4.setEditable(false);t5.setEditable(false);t6.setEditable(false);JPanel pp1 = new JPanel();JLabel label2 = new JLabel(学号为 + S
29、TNO + 学生信息);pp1.add(label2);label2.setFont(new Font(BOLD, Font.BOLD, 28);c2.add(pp1);JPanel pp2 = new JPanel(new GridLayout(6, 2);pp2.add(new JLabel(学号, SwingConstants.CENTER);tt1.setText(STNO);pp2.add(tt1);pp2.add(new JLabel(姓名, SwingConstants.CENTER);pp2.add(t2);pp2.add(new JLabel(年纪, SwingConstan
30、ts.CENTER);pp2.add(t3);pp2.add(new JLabel(性别, SwingConstants.CENTER);pp2.add(t4);pp2.add(new JLabel(课程, SwingConstants.CENTER);pp2.add(t5);pp2.add(new JLabel(成绩, SwingConstants.CENTER);pp2.add(t6);c2.add(pp2);JPanel pp3 = new JPanel();b3 = new JButton(返回);b3.addActionListener(this);pp3.add(b3);c2.ad
31、d(pp3);this.setBounds(200, 200, 600, 400);setVisible(true);public void actionPerformed(ActionEvent f) if (f.getSource() = b3) this.dispose();3.4 添加模块3.4.1 添加模块代码实现:package stu_manager;import java.awt.*;import java.awt.event.*;import javax.swing.*;import java.sql.*;public class AddFI extends JFrame i
32、mplements ActionListener JTextField STNOText, SNAMEText, SAGEText, SSEXText, SDEPTText;JButton b1, b2, b3;String STNO, SNAME, SAGE, SSEX, SDEPT;public AddFI() Container c = this.getContentPane();c.setLayout(new GridLayout(3, 1);JPanel center = new JPanel(new GridLayout(5, 2);JPanel low = new JPanel(
33、new FlowLayout();JLabel label1 = new JLabel(添加學生信息, SwingConstants.CENTER);label1.setFont(new Font(TRUE, Font.TRUETYPE_FONT, 20);c.add(label1);STNOText = new JTextField(30);SNAMEText = new JTextField(30);SSEXText = new JTextField(30);SAGEText = new JTextField(30);SDEPTText = new JTextField(30);cente
34、r.add(new JLabel(学号, SwingConstants.CENTER);center.add(STNOText);center.add(new JLabel(姓名, SwingConstants.CENTER);center.add(SNAMEText);center.add(new JLabel(性别, SwingConstants.CENTER);center.add(SSEXText);center.add(new JLabel(年纪, SwingConstants.CENTER);center.add(SAGEText);center.add(new JLabel(系别
35、, SwingConstants.CENTER);center.add(SDEPTText);c.add(center);b1 = new JButton(添加);b2 = new JButton(清除);b3 = new JButton(退出);low.add(b1);low.add(b2);low.add(b3);c.add(low);/ 為按鈕添加jiantingb1.addActionListener(this);b2.addActionListener(this);b3.addActionListener(this);this.setBounds(200, 200, 600, 400
36、);this.setVisible(true);this.setTitle(添加學生信息);public void actionPerformed(ActionEvent e) if (e.getSource() = b1) addFI();if (e.getSource() = b2) clearForm();if (e.getSource() = b3) shutdown();private void addFI() STNO = STNOText.getText();SNAME = SNAMEText.getText();SSEX = SSEXText.getText();SAGE =
37、SAGEText.getText();SDEPT = SDEPTText.getText();if (STNO.length() = 0 | SNAME.length() = 0 | SAGE.length() = 0| SDEPT.length() = 0 | SSEX.length() = 0)JOptionPane.showMessageDialog(this, 请添加完全信息);else try Class.forName(com.microsoft.sqlserver.jdbc.SQLServerDriver).newInstance();String url = jdbc:sqls
38、erver:/localhost:1433; DatabaseName=ss;String userName = sa; / 默认用户名String userPwd = 051141;Connection cn = DriverManager.getConnection(url, userName,userPwd);String str = INSERT INTO Student VALUES(?,?,?,?,?);PreparedStatement ps = cn.prepareStatement(str);ps.setString(1, STNO);ps.setString(2, SNAM
39、E);ps.setString(3, SSEX);ps.setString(4, SAGE);ps.setString(5, SDEPT);ps.executeUpdate();cn.close();JOptionPane.showMessageDialog(this, 添加成功);clearForm(); catch (SQLException e) System.out.println(ECode + e.getErrorCode();System.out.println(E M= + e.getMessage(); catch (Exception e) e.printStackTrac
40、e();private void clearForm() STNOText.setText();SNAMEText.setText();SAGEText.setText();SSEXText.setText();SDEPTText.setText();private void shutdown() this.dispose();3.5 删除模块 3.5.1 代码实现:package stu_manager;import java.awt.*;import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;import javax.swing.*;public class Delet exte