java+数据库的学生管理系统方案_第1页
java+数据库的学生管理系统方案_第2页
java+数据库的学生管理系统方案_第3页
免费预览已结束,剩余46页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、java学生信息管理系统设计利用数据库做的1、系统简介本系统提供了学生信息管理中常见的基本功能,主要包括管理员和学生两大模块。 管理员的主要功能有对学生信息和课程信息进行增加、删除、修改、查找等操作,对选 课信息进行管理,对成绩信息和用户信息进行修改、查找等操作。学生的主要功能有对 学生信息和成绩信息进行查看,对个人的密码信息进行修改等。2、功能设计2.1 需求分析本系统需要实现的功能:(1 )、管理员对学生信息和课程信息进行增加、删除、修改、查找等操作,对选课信息进行 管理,对成绩信息和用户信息进行修改、查找等操作。(2)、学生对学生信息和成绩信息进行查看,对个人的密码信息进行修改等。2.2

2、 总体设计学生信息管理系统主要包括管理员和学生两大模块。管理员模块包括:学生信息管理、 课程信息管理、选课信息管理、成绩信息管理、用户信息管理等。用户模块包括:学生信息 查看、成绩信息查看、个人信息管理等。系统总体结构如图所示。总体结构图2.3 模块详细设计1、学生信息管理模块学生信息管理模块包括增加、删除、修改、查询、显示全部等。具体的结构图如图所 示。学生信息管理模块结构图2、课程信息管理模块课程信息管理模块包括增加、删除、修改、查询、显示全部等。具体的结构图如图所 示。课程信息管理模块结构图3、选课信息管理模块选课信息管理模块包括查询、显示全部等。具体的结构图如图所示。选课信息管理模块结

3、构图4、成绩信息管理模块成绩信息管理模块包括修改成绩、查询、显示全部等。具体的结构图如图所示。成绩信息管理模块结构图5、用户信息管理模块用户信息管理模块包括修改、查询、显示全部等。具体的结构图如图所示。用户信息管理模块结构图3、数据库设计在数据库student中共有4数据表:s (学生信息表)、c (课程信息表)、sc (选课信 息表)、unpw (用户信息表),下面定义每表的字段名称和数据类型。s (学生信息表)字段名称数据类型描述snochar (10)学号,关键字snchar (20)saint年龄sschar (10)性别sdchar (10)院系c (课程信息表)字段名称数据类型描述

4、enochar (10)课程号,关键字char(30)课程名penochar (10)先行课程号sc (选课信息表)字段名称数据类型描述snochar (10)学号,关键字enochar (10)课程号,关键字gint成绩unpw (用户信息表)字段名称数据类型描述unchar (10)用户名,关键字pwchar (10)密码qxint角色4、界面库设计1学生信息管理系统的登录学生信息管理系统可由管理员和学生两种身份的人使用。管理员和学生身份登录所能操作的功能有很大的区别。系统初始化一个系统管理员,登录名:admi n 密码:admin登录界面囲学空信且管理系统管理员登录系统后的界面字生蓿息管

5、理成绘信息骨理退出肯理不统学生登录系统后的界面2、实现管理员和学生操作功能的界面成绩信息管理员的登录系统后可以进行学生信息管理、课程信息管理、选课信息管理、管理、用户信息管理等功能操作,其具体界面设计如下图所示。H学生信息管理显示学吕姓名1 0001張三20男计科系1 0002李四1 Q男数学系1 0003王五21男数学系1 0004刘晨16眉外语系1 0005张力21男物理乐Toooe李波20男10007対瑞20男计科系WOOS対菇莉.I9女外语系学生信息管理功能的界面课程信息管理功能的界面B谨课信息管理口叵区|查圃|显云煤程昌10001201001961Q0Q120100295100012

6、0100335100022010059810003201005901000420100*9310005201006旳100063010069D1000720100195100()820100492选课信息管理功能的界面n成錢拾息管理学昙100D1数据庠9E1 0001java931 0001敷据结构951 0002高爭数学驰100D3高导霰学9B1 OOQ4英语1 Q005大学物理391 000&大学物理列W007数括库951 0003英语92成绩信息管理功能的界面户信息管理£回翌阿查询显乐1 000110ODH1 00021000310D031000210004100041

7、 000510005100C&1000610007100071 000310008用户信息管理功能的界面 学生的登录系统后可以进行学生信息查看、成绩信息查看、个人信息管理等功能操作, 其具体界面设计如下图所示。学生信息查看功能的界面0战境宿息查看回冈学号成绩1000120100190100012010U29B1000120100395成绩信息查看功能的界面个人信息管理功能的界面5、程序类的设计SimpleStude ntMa nager 主函数类DLFrame 登陆界面类Man agerFra ne管理员界面类Stude ntFrame学生界面类SM学生信息管理的类SAdd用于学生信息

8、管理中增加或修改某条记录的界面的类SSelect用于学生基本信息管理中查询时输入学号的界面的类CM课程信息管理的类CAdd用于课程信息管理中增加或修改某条记录的界面的类CSelect用于课程信息管理中查询时输入课程号的界面的类SCM选课信息管理的类SCSelect用于选课信息管理中查询时输入学号的界面的类GM成绩信息管理的类GAdd 用于成绩信息管理中修改成绩的界面的类GSelect 用于成绩信息管理中查询时输入学号的界面的类PM 用户信息管理的类UAdd 用于用户信息管理中修改密码的界面的类PSelect 用于用户信息管理中查询时输入用户名的界面的类StudentS 用于学生信息查看时输入学

9、号的界面的类StudentSelect 用于成绩信息查看时输入学号的界面的类PPM 个人信息管理的类PPSelect 用于个人信息管理查询时输入用户名的界面的类程序类的具体代码实现见工程文件夹中的代码及注释6、系统的使用说明及环境配置学生信息管理系统提供了管理员和学生这两个角色登录系统,管理员通过用户名: admin 密码: admin 登录系统后可以进行相应的操作。学生通过以自己的学号(如 10001)作为用户名和密码登录系统后进行相应的学生权限围的操作。 数据库: SQL Server连接数据库的登录名: sa 密码: 123代码:import javax.swing.*;import j

10、ava.awt.*;import java.awt.event.*;import java.sql.*;用于课程信息管理中增课程号: "); 课程名: ");先行课程号: ");class CAdd extends JFrame implements ActionListener/ 加或修改某条记录的界面JLabel lcno = new JLabel("JLabel lcname = new JLabel("JLabel lpcno = new JLabel("JTextField tcno = new JTextField(10)

11、;JTextField tcname = new JTextField(10);JTextField tpcno = new JTextField(10);JButton btnOK = new JButton(" 确定 ");JButton btnCancel = new JButton("取消 ");JPanel p = new JPanel();Connection con = null;Statement stmt = null;ResultSet rs = null;boolean isNewsm = true;/用于判断是否显示课程信息管理的

12、界面public CAdd() /构造方法this.setTitle(" 增加 "); this.setBounds(200, 200, 146, 235); p.setLayout(new FlowLayout(FlowLayout.LEFT); p.add(lcno); p.add(tcno);p.add(lcname); p.add(tcname); p.add(lpcno); p.add(tpcno); p.add(btnOK); p.add(btnCancel); this.add(p);this.setResizable(false); this.setDefa

13、ultCloseOperation(JFrame.EXIT_ON_CLOSE); btnOK.addActionListener(this);btnCancel.addActionListener(this); this.show();public void connDB() / 连接数据库 try Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver"); catch (ClassNotFoundException e) e.printStackTrace(); try con = DriverManager.g

14、etConnection("jdbc:sqlserver:/localhost:1433; DatabaseName=student", "sa", "123");stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭连接try stmt.close(); con.close(); catch (SQLException e) e.printStackTrace();public void i

15、nsertst() /插入记录String kch = null;String kcm = null;String xxkch=null;kch = tcno.getText();kcm = tcname.getText(); xxkch=tpcno.getText();if (this.getTitle() = "修改") / 如果是修改记录,先删除再增加try this.connDB();int rs1 = stmt.executeUpdate("delete from c where cno='"+ kch + "'&qu

16、ot;); catch (SQLException e) e.printStackTrace();String str = "insert into c values('" + kch + "','" + kcm + "','"+ xxkch + "')"this.connDB();/ 连接数据库 try stmt.executeUpdate(str);JOptionPane.showMessageDialog(null, this.getTitle() + &quo

17、t;成功! ""提示", JOptionPane.INFORMATION_MESSAGE, new ImageIcon( "menu4.gif");this.setVisible(false);catch (SQLException e) JOptionPane.showMessageDialog(null, " 课程号已存在! "); tcno.setText("");public void actionPerformed(ActionEvent e) if (e.getActionCommand()

18、= "确定 ") this.insertst();if (isNewsm) new CM(" 课程信息管理 ").display(); isNewsm = true;if (e.getActionCommand() = "取消 ") this.setVisible(false);new CM(" 课程信息管理 ").display();import java.awt.Component;import java.awt.FlowLayout;import java.awt.event.*;import java.sq

19、l.*;import java.util.*;import javax.swing.*;课程信息管理import javax.swing.table.TableCellRenderer;class CM extends JFrame implements ActionListener / JPanel p = new JPanel();JButton btnAdd = new JButton("增加 ");JButton btnDelete = new JButton(" 删除 ");JButton btnAlter = new JButton(&quo

20、t;修改 ");JButton btnSearch = new JButton("查询 ");JButton btnDisplay = new JButton(" 显示 ");JMenuBar mb = new JMenuBar();JPanel p1 = new JPanel();JTable sTable;JScrollPane scroll;Connection con = null;Statement stmt = null;ResultSet rs = null;Object playerInfo;CSelect cst;String

21、 mkch = null;boolean bstd = false;CM(String title) / 构造方法super(title);add("South", p);this.add("Center", p1);mb.add(btnAdd);mb.add(btnDelete);mb.add(btnAlter);mb.add(btnSearch);mb.add(btnDisplay);this.connDB();/ 连接数据库 this.setBounds(200, 200, 400, 260); btnAdd.addActionListener(t

22、his); btnDelete.addActionListener(this); btnAlter.addActionListener(this); btnSearch.addActionListener(this); btnDisplay.addActionListener(this); this.setJMenuBar(mb);/ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false);show();CM(CSelect cst, String title) / 构造方法super(titl

23、e);this.cst = cst;bstd = true;add("South", p);this.add("Center", p1);mb.add(btnAdd); mb.add(btnDelete);mb.add(btnAlter);mb.add(btnSearch);mb.add(btnDisplay);this.connDB();this.setBounds(200, 200, 400, 260);btnAdd.addActionListener(this);btnDelete.addActionListener(this); btnAlter

24、.addActionListener(this);btnSearch.addActionListener(this); btnDisplay.addActionListener(this);this.setJMenuBar(mb);/ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setResizable(false);show();public void display() / 显示所有的课程信息int i = 0;int j = 0;int k = 0;List al = new ArrayList();try rs =

25、 stmt.executeQuery("select * from c");while (rs.next() /找出表中的记录数赋给 ial.add(rs.getString("cno"); al.add(rs.getString(""); al.add(rs.getString("pcno");i+; catch (SQLException e) e.printStackTrace();playerInfo = new Objecti3;String columnNames = "课程号 ",

26、 " 课程名 ", " 先行课程号 " ;try rs = stmt.executeQuery("select * from c order by cno");while (rs.next() playerInfoj0 = rs.getString("cno");playerInfoj1 = rs.getString(""); playerInfoj2 = rs.getString("pcno"); j+; catch (SQLException e) e.printStac

27、kTrace();sTable = new JTable(playerInfo, columnNames);/创建网格p1.add(sTable);scroll = new JScrollPane(sTable);this.add(scroll);public void connDB() / 连接数据库try Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver"); catch (ClassNotFoundException e) e.printStackTrace();try con = DriverManag

28、er.getConnection( "jdbc:sqlserver:/localhost:1433; DatabaseName=student", "sa", "123");stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭连接try stmt.close(); con.close(); catch (SQLException e) e.printStackTrace();public v

29、oid delete() / 删除某个课程信息String kch = null;String kcm = null;String xxkch = null;int row = -1;row = sTable.getSelectedRow();if (row = -1) / 判断要删除的信息是否被选中 JOptionPane.showMessageDialog(null, " 请选择要删除的记录! "); else if (!bstd) / 判断选择的是不是查询后的结果int j1 = 0;try rs = stmt.executeQuery("select *

30、from c");while (rs.next() && j1 <= row) / 找出当前被选中的记录在数 据库中的对应kch = rs.getString("cno");kcm = rs.getString("");xxkch = rs.getString("pcno");j1+; catch (SQLException e) e.printStackTrace();int i1 = 0; try int rs1 = stmt.executeUpdate("delete from c wh

31、ere cno='" + kch + "'");/ 删除数据库中当前被选中的记录JOptionPane.showMessageDialog(null, " 记录删除成功! "); this.dispose();new CM(”课程信息管理 ”).display。; catch (SQLException e) e.printStackTrace(); else try int rs1 = stmt.executeUpdate("delete from c where cno='" + mkch + &

32、quot;'");/ 删除数据库中当前被选中的记录JOptionPane.showMessageDialog(null, " 记录删除成功! "); this.dispose();new CM("课程信息管理").display(); catch (SQLException e) e.printStackTrace(); 修改某个课程记录public void update() /String kch = null;String kcm = null;String xxkch = null;int row = -1;row = sTab

33、le.getSelectedRow();if (row = -1) JOptionPane.showMessageDialog(null, " 请选择要修改的记录! "); else int j1 = 0;try if (!bstd) /判断选择的是不是查询后的结果rs = stmt.executeQuery("select * from c"); else rs = stmt.executeQuery("select * from c where cno='" + mkch + "'");whil

34、e (rs.next() && j1 <= row) /找出当前被选中的记录在数据库中的对应kch = rs.getString("cno"); kcm = rs.getString(""); xxkch = rs.getString("pcno"); j1+; catch (SQLException e) e.printStackTrace();CAdd cadd = new CAdd(); cadd.setTitle(" 修改 "); cadd.tcno.setText(kch); cad

35、d.tcname.setText(kcm); cadd.tpcno.setText(xxkch); cadd.tcno.setEnabled(false); this.dispose();public void select() /显示某个查询的结果mkch = cst.kch; playerInfo = new Object13;String columnNames = "课程号 ", " 课程名 ", " 先行课程号 " ;try rs = stmt.executeQuery("select * from c where

36、 cno='" + mkch + "'"); while (rs.next() playerInfo00 = rs.getString("cno");playerInfo01 = rs.getString("");playerInfo02 = rs.getString("pcno"); catch (SQLException e) e.printStackTrace();if (playerInfo01 = null) this.dispose();JOptionPane.showMess

37、ageDialog(null, " 课程号不存在! "); new CM(" 课程信息管理 ").display(); else sTable = new JTable(playerInfo, columnNames);/创建网格p1.add(sTable);scroll = new JScrollPane(sTable);this.add(scroll);public void actionPerformed(ActionEvent e) if (e.getActionCommand() = "增加 ") new CAdd();th

38、is.dispose();if (e.getActionCommand() = "删除 ") this.delete();if (e.getActionCommand() = "修改 ") this.update();if (e.getActionCommand() = "查询 ") cst = new CSelect(); this.dispose();if (e.getActionCommand() = "显示 ") this.dispose(); new CM(" 课程信息管理 ").di

39、splay();import java.awt.event.*;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import javax.swing.*;用于课程信public class CSelect extends JFrame implements ActionListener / 息管理中查询时输入课程号的界面JLabel ltitle = new JLabe

40、l("课程号: ");JTextField tcno = new JTextField(8);JButton btnOK = new JButton(" 确定 ");JPanel p = new JPanel();String kch = null;public CSelect() / 构造方法p.add(ltitle);p.add(tcno);p.add(btnOK);add(p);this.setBounds(300, 280, 200, 160); btnOK.addActionListener(this);this.setResizable(fa

41、lse);this.show();public void actionPerformed(ActionEvent e) kch = tcno.getText();/取得当前输入课程号的值if (kch.equals("") /判断是否输入了课程号JOptionPane.showMessageDialog(null, " 课程号不能为空,请重新输入! "); else this.dispose();new CM(this, " 课程信息管理 ").select();import javax.swing.*;import java.awt

42、.*;import java.awt.event.*;import java.sql.*;class DLFrame extends JFrame implements ActionListener, ItemListener / 录界面JPanel p1 = null;JPanel p2 = null;JPanel p3 = null;JLabel userName = new JLabel("用户: ");JTextField txtUser = new JTextField();JLabel password = new JLabel("密码: "

43、);JPasswordField txtPwd = new JPasswordField(6); JLabel role = new JLabel("角色: ");JComboBox cbrole = new JComboBox();JButton btnLogin = new JButton("登录 ");JButton btncz = new JButton("重置 ");JButton btnCancel = new JButton("取消 ");JLabel imageLabel;Icon image; s

44、tatic int OK = 1;static int CANCEL = 0; int actionCode = 0;Connection con = null; Statement stmt = null;ResultSet rs = null; int qxian = 0;public DLFrame() / 构造方法 super(" 登录界面 "); p1 = new JPanel(); p2 = new JPanel(); p3 = new JPanel(); cbrole.addItem(" 管理员 "); cbrole.addItem(&qu

45、ot; 学生 ");image = new ImageIcon("picturest.jpg");imageLabel = new JLabel(image);p1.add(imageLabel);this.setLayout(new FlowLayout();this.setBounds(100, 100, 246, 345);p2.setLayout(new GridLayout(4, 2); p2.add(userName);p2.add(txtUser);p2.add(password);p2.add(txtPwd);p2.add(role);p2.add

46、(cbrole);p3.add(btnLogin);p3.add(btncz);p3.add(btnCancel);this.add(p1);this.add(p2);this.add(p3);this.setResizable(false); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.show();btnLogin.addActionListener(this); cbrole.addItemListener(this); btncz.addActionListener(this);btnCancel.addActio

47、nListener(this);public void connDB() / 连接数据库 try Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver"); catch (ClassNotFoundException e) e.printStackTrace(); try con = DriverManager.getConnection( "jdbc:sqlserver:/localhost:1433; DatabaseName=student", "sa", "

48、123");stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();try stmt.close();con.close(); catch (SQLException e) e.printStackTrace();public void itemStateChanged(ItemEvent e) if (e.getStateChange() = ItemEvent.SELECTED) JComboBox jcb = (JComboBox) e.getSource();qxian = jcb.ge

49、tSelectedIndex();public void actionPerformed(ActionEvent e) Object source = e.getSource();String un = null;String pw = null;boolean success = false;/用于判断是否登录成功if (source = btnLogin) if (txtUser.getText().equals("") | txtPwd.getText().equals("") / 判断是否输入了用户名和密码JOptionPane.showMess

50、ageDialog(null, " 登录名和密码不能为空! "); else this.connDB();try rs = stmt.executeQuery("select * from unpw where qx="+ qxian);while (rs.next() un = rs.getString("un").trim();pw = rs.getString("pw").trim();if (txtUser.getText().equals(un) if (txtPwd.getText().equals(p

51、w) actionCode = OK; this.setVisible(false);if (qxian = 0) new ManagerFrane();/进入管理员界面if (qxian = 1) new StudentFrame();/进入学生界面success = true;break; else JOptionPane.showMessageDialog(null, " 密码错误!");txtPwd.setText("");success = true;if (!success) JOptionPane.showMessageDialog(nul

52、l, "登录名错误! ");txtUser.setText(""); txtPwd.setText(""); catch (SQLException e1) e1.printStackTrace(); else if (source = btncz) txtUser.setText("");txtPwd.setText(""); else if (source = btnCancel) System.exit(0);import javax.swing.*;import java.awt.*;i

53、mport java.awt.event.*;import java.sql.*;用于成绩信息管理中修class GAdd extends JFrame implements ActionListener / 改成绩的界面JLabel lcno = new JLabel("学号: ");JLabel lcname = new JLabel("课程名: ");JLabel lg = new JLabel("成绩: ");JTextField tcno = new JTextField(10);JTextField tcname = ne

54、w JTextField(10);JTextField tpcno = new JTextField(10);JButton btnOK = new JButton(" 确定 ");JButton btnCancel = new JButton("取消 ");JPanel p = new JPanel();Connection con = null; Statement stmt = null;ResultSet rs = null;boolean isNewsm = true;/用于判断是否显示成绩信息管理的界面public GAdd() /构造方法t

55、his.setTitle(" 增加 "); this.setBounds(200, 200, 146, 235); p.setLayout(new FlowLayout(FlowLayout.LEFT); p.add(lcno); p.add(tcno);p.add(lcname); p.add(tcname); p.add(lg); p.add(tpcno); p.add(btnOK); p.add(btnCancel); this.add(p); this.setResizable(false); this.setDefaultCloseOperation(JFrame

56、.EXIT_ON_CLOSE); btnOK.addActionListener(this);btnCancel.addActionListener(this); this.show();public void connDB() /连接数据库try Class.forName(".microsoft.sqlserver.jdbc.SQLServerDriver"); catch (ClassNotFoundException e) e.printStackTrace(); try con = DriverManager.getConnection("jdbc:sq

57、lserver:/localhost:1433; DatabaseName=student", "sa", "123");stmt = con.createStatement(); catch (SQLException e) e.printStackTrace();public void closeDB() / 关闭连接try stmt.close(); con.close(); catch (SQLException e) e.printStackTrace();public void insertst() /修改成绩String kch

58、= null;String kcm = null;String xxkch = null;kch = tcno.getText();kcm = tcname.getText();xxkch = tpcno.getText();String gcno = null;if (this.getTitle() = "修改成绩 ") try this.connDB(); rs = stmt.executeQuery("select cno from c where ='" + kcm+ "'");while (rs.next() gcno =

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论