java课程设计——学生信息管理系统_第1页
java课程设计——学生信息管理系统_第2页
java课程设计——学生信息管理系统_第3页
java课程设计——学生信息管理系统_第4页
java课程设计——学生信息管理系统_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

1、一引言1.1 项目的名称学生信息管理系统1.2 项目背景和目标 学生信息管理系主要对在校学生的个人基本信息以及成绩信息进行管理,对教师用户提供查询信息、增添信息、删除信息等操作功能;对学生用户提供成绩查询功能。我们的目标就是为该系统提供后台连接数据库程序设计以及前台用户界面设1.3 项目的可行性研究设计此系统需要java面向对象编程基础,数据库应用知识以及功能分析。根据目前所开设的课程,学生已经具备这样的知识,有能力综合java编程知识和数据库应用知识做出一个这样的学生信息管理系统二、 需求分析21系统概述 此系统提供给教师用户和学生用户。教师登陆后可以对学生基本信息表和学生成绩表进行查看、增

2、添新记录和删除记录等操作。学生登陆后能查询自己的成绩22系统运行环境 Java运行在eclipse软件上,数据库用mysql数据库23功能需求描述学生信息管理系统要面对教师和学生用户。对于教师,需要查询全部学生的基本信息和成绩信息,并且可以对其进行修改。对于学生,不需要查询自己的基本信息,只需要查询成绩。为了保护学生成绩隐私,每位学生登录系统后只能查询自己的成绩,而无法看到别人的成绩三、系统设计31开发与设计的总体思想 教师方面:教师通过自己的用户名和密码登录后,进入教师主界面,在这个主界面里,可以选择要操作的类别,即查询功能还是修改功能。在查询功能里面,可以选择是查询学生基本信息,还是查询学

3、生成绩信息。在查询学生基本信息时,可以从依据不同字段,即学生信息表的不同属性进行查找。在查找学生成绩信息时,只能依据学生姓名和学号进行查找。在修改功能里面,包括对学生基本信息表和学生成绩表进行增加和删除记录 学生方面:学生通过自己的用户名和密码登录此系统后, 可以查询自己本学期的各科成绩信息32系统模块结构图33数据库结构设计为了支持此学生信息管理系统,创建数据库studentmanage。在这个数据库中包含四个表:student表,teacher表,studentlogin表和score表。截图如下:在student(学生基本信息)表中,有五个属性列,分别为:num(学号),sname(学生

4、姓名姓名),sex(性别),age(年龄),dept(系别)。其基本数据类型分别为:int,char,char,int,char。当查询学生基本信息时,从此表中获取数据。截图如下:在teacher(教师登陆)表中,有两个属性列,分别为:tname(教师姓名),password(登录密码)。其基本数据类型分别为:char,char。当教师用户登陆此系统时,从该表获取数据。截图如下:在studentlogin(学生登录)表中,有两个属性列,分别为:sname(学生姓名),password(登录密码)。其基本数据类型分别为:char,char。当学生用户登陆此系统时,从该表获取数据。截图如下:在sc

5、ore(学生成绩)表中,有五个属性列,分别为:num(学号),sname(学生姓名),course(课程名称),score(考试成绩),credit(学分)。其基本数据类型分别为:int,char,char,int,int。当查询学生成绩信息时,从此表获取数据。截图如下:34模块设计总主界面登陆后,可以选择用户,是学生用户或者教师用户。如果选择学生用户,则进入学生登录界面,在这个界面上输入学生姓名和用户密码。输入后单击“成绩查询”按钮,若密码正确,这显示该学生本人本学期成绩,若密码不正确,这提示密码错误。如果选择教师用户,则进入教师登陆界面,在这个界面上输入教师姓名和用户密码,输入后单击“登录

6、”按钮,则进入教师主界面。在教师主界面可以选择进行查询操作还是修改操作。在查询操作中包含查询学生基本信息和查询学生成绩信息。若要查询学生基本信息,点击菜单项则进入学生基本信息检索界面,在此界面的检索方式中选择要检索的数据属性,在检索内容框中输入检索的具体信息,例如,检索“姓名”字段时,要键入某个学生姓名。输入后,单击“检索”按钮,则开始数据库查询。如果数据库检索到所需信息,这生成列表显示检索结构,如果没有所需信息,则列表中的内容为空。若要查询学生成绩信息,则点击学生成绩查询菜单项,进入成绩查询界面。在此界面的文本框中输入要查询成绩的学生姓名,然后单击检索按钮。若数据库中有此学生的成绩信息,则生

7、成列表显示成绩信息,若没有此记录,则列表内容为空。如果教师要进行修改操作,则在教师主界面上选择修改菜单项,在此项中,选择要修改的具体内容,总共有四项修改操作:增加新生信息,删除毕业生信息(这两个是对学生基本信息表的操作),增加成绩信息,删除成绩信息(这两个是对学生成绩信息表的操作)。在增加信息操作中,按照标签提示一次输入要增添的记录值,输入完毕后,单击“添加”按钮,若输入成功,则提示成功,若输入失败,则提示失败。在删除信息操作中,输入要删除信息的学生姓名,单击“删除”按钮,若删除成功,则提示成功,若删除失败则提示失败。以上就是该学生信息管理系统的操作步骤。35系统流程描述四、系统实现本系统保存

8、在studentmanage包里其中包含四个包:connection包,dao包,model包,ui包1.Connection包中的类:(1)DBconnection类:此类设置程序与数据库的连接,通过设置驱动类型和数据源来确定要连接的数据库。若连接成功,提示:connection success,若连接失败,提示:connection failureDBconnection类源代码:package connection;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;p

9、ublic class DBConnection public static Connection con=null; public static Connection getConnection() try String dbDriver=com.mysql.jdbc.Driver;Class.forName(dbDriver);System.out.println(Driver Suceess); catch (ClassNotFoundException e) System.out.println(Driver not found);e.printStackTrace();try con

10、=DriverManager.getConnection(jdbc:mysql:/:3306/studentman age,root,root);System.out.println(Connection Suceess); catch (SQLException e) System.out.println(Connetion failure);e.printStackTrace();return con; public static void closeConnection() if(con!=null)try con.close();System.out.println(

11、database close success); catch (SQLException e) System.out.println(close failure);e.printStackTrace(); 2.Dao包中的类:(1)StudentDao类:此类中有四个方法,studentLogin,addStudent,deleteStudent, queryStuden,作用分别是控制学生登陆,增加学生基本信息,查询学生基本信息,删除学生基本信息。studentLogin()方法中,有两个参数,分别传给select语句中的sname(学生姓名)和password(登录密码),利用select

12、语句在studentlogin表中检索学生登录信息。若存在此信息,返回true,否则返回falseaddStudent()方法中,有五个参数,分别传给insert语句中的num(学号),sname(学生姓名),age(年龄),sex(性别)和dept(系别),利用insert语句向student学生基本信息表中插入学生记录。若插入成功,返回true,否则返回falsedeleteStudent()方法中,有一个参数,传给delete语句中的sname(学生姓名),利用delete语句,把student表中相关学生信息删除。若删除成功,返回true,否则返回falsequeryStuden()方

13、法中,有两个参数,分别传给select语句中的field(查找方式)和key(查找内容),利用select语句,从student表中检索学生基本信息。若存在此信息,则返回一个ArrayList类的对象lis(表格),否则,异常处理StudentDao类源代码:package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util

14、.ArrayList;import model.Student;import connection.DBConnection;public class StudentDao public boolean studentLogin(String sname,String password) DBConnection db=new DBConnection();Connection con=db.getConnection();boolean isfound=false;PreparedStatement pst;try pst = con.prepareStatement(select * fr

15、om studentlogin where sname=? and password=?);pst.setString(1, sname); pst.setString(2,password);ResultSet rs=pst.executeQuery(); if(rs.next() isfound=true; catch (SQLException e) e.printStackTrace(); System.out.println(isfound); return isfound;public boolean addStudent(int num, String sname, String

16、 sex, int age,String dept) Connection con = DBConnection.getConnection();PreparedStatement pst;try pst = con.prepareStatement(insert into student values(?,?,?,?,?);pst.setInt(1, num);pst.setString(2, sname);pst.setString(3, sex);pst.setInt(4, age);pst.setString(5, dept);int count = pst.executeUpdate

17、();/ 返回修改的记录数if (count = 1)return true;elsereturn false; catch (SQLException e) e.printStackTrace();return false;public ArrayList queryStudent(String field, String key) ArrayList lis = new ArrayList();Connection con = DBConnection.getConnection();Statement stm;try stm = con.createStatement();String

18、sql = select * from student where + field + like %+ key + % ;System.out.println(sql);ResultSet rs = stm.executeQuery(sql);while (rs.next() Student student = new Student(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5);lis.add(student); catch (SQLException e) e.printStack

19、Trace();return lis;public boolean deleteStudent(String key) Connection con = DBConnection.getConnection();Statement stm;try stm = con.createStatement();String sql = delete from student where sname like %+ key + % ;System.out.println(sql);int count = stm.executeUpdate(sql);if (count = 1)return true;e

20、lsereturn false; catch (SQLException e) e.printStackTrace();return false;(2)TeacherDao类:此类中有一个方法:queryTeacher,作用是控制教师登陆 queryTeacher()方法中,有两个参数,分别传给select语句中的tname(教师姓名)和password(登陆密码),利用select语句在teacher表中检索教师登陆信息。若存在此信息,返回true,否则返回falseTeacherDao类源代码:package dao;import java.sql.Connection;import ja

21、va.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import connection.DBConnection;public class TeacherDao public boolean queryTeacher(String tname,String password) DBConnection db=new DBConnection();Connection con=db.getConnection();boolean isfo

22、und=false;PreparedStatement pst;try pst = con.prepareStatement(select * from teacher where tname=? and password=?);pst.setString(1, tname); pst.setString(2,password);ResultSet rs=pst.executeQuery(); if(rs.next() isfound=true; catch (SQLException e) e.printStackTrace(); System.out.println(isfound); r

23、eturn isfound;public static void main(String args) (3)ScoreDao类:此类中有四个方法,queryScore,queryScore1,addScore,deleteScor作用分别是为教师用户提供查询学生成绩信息功能,为学生用户提供询本人成绩信息功能,添加成绩信息,删除成绩信息。queryScore()方法中,有一个参数,传给select语句中的sname(学生姓名),利用select语句,查询学生成绩信息表中的内容。若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理queryScore1()方法中,有一个参

24、数,传给传给select语句中的sname(学生姓名),这个sname的学生用户登录时输入的姓名。即此类的作用是每个学生登陆只能查看本人成绩。若查询成功,则返回一个ArrayList类的对象lis(表格),否则,异常处理addScore()方法中,有五个参数,分别传给insert语句中的num(学号),sname(学生姓名),course(课程名称),score(成绩),credit(学分)。利用insert语句,将这些记录写入score表中。若插入成功返回true,否则返 回falsedeleteScore()方法中,有一个参数,传给delete语句中的sname(学生姓名),利用delet

25、e语句,把score表中相关学生信息删除。若删除成功,返回 true,否则返回falseScoreDao类源代码: package dao;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import ui.StudentLoginUI;import model.Score;import model.Stud

26、ent;import connection.DBConnection;public class ScoreDao public ArrayList queryScore(String key) ArrayList lis = new ArrayList();Connection con = DBConnection.getConnection();Statement stm;try stm = con.createStatement();String sql = select * from score where sname like % + key+ % ;System.out.printl

27、n(sql);ResultSet rs = stm.executeQuery(sql);while (rs.next() Score score = new Score(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getInt(5);lis.add(score); catch (SQLException e) e.printStackTrace();return lis;public ArrayList queryScore1(String key) ArrayList lis = new ArrayList

28、();Connection con = DBConnection.getConnection();Statement stm;try stm = con.createStatement();String sql = select * from score where sname like % + StudentLoginUI.st1+ % ;System.out.println(sql);ResultSet rs = stm.executeQuery(sql);while (rs.next() Score score = new Score(rs.getInt(1), rs.getString

29、(2), rs.getString(3), rs.getInt(4), rs.getInt(5);lis.add(score); catch (SQLException e) e.printStackTrace();return lis;public boolean addScore(int num, String sname, String course, int score,int credit) Connection con = DBConnection.getConnection();PreparedStatement pst;try pst = con.prepareStatemen

30、t(insert into score values(?,?,?,?,?);pst.setInt(1, num);pst.setString(2, sname);pst.setString(3, course);pst.setInt(4, score);pst.setInt(5, credit);int count = pst.executeUpdate();/ 返回修改的记录数if (count = 1)return true;elsereturn false; catch (SQLException e) e.printStackTrace();return false;public bo

31、olean deleteScore(String key) Connection con = DBConnection.getConnection();Statement stm;try stm = con.createStatement();String sql = delete from score where sname like % + key + % ;System.out.println(sql);int count = stm.executeUpdate(sql);if (count = 1)return true;elsereturn false; catch (SQLExce

32、ption e) e.printStackTrace();return false;3.model包中的类: (1)Score类:此类中有五个成员变量,int num;String sname;String course;int score;int credit;十个成员方法,分别获取和设置这五个变量,即为score表中五个属性的记录值,均为getXXX()setXXX()方法,还有一个构造方法,用于调用其对象时对成员变量赋值Score类源代码:package model;public class Score int num;String sname;String course;int sco

33、re;int credit;public int getNum() return num;public void setNum(int num) this.num = num;public String getSname() return sname;public void setSname(String sname) this.sname = sname;public String getCourse() return course;public void setCourse(String course) this.course = course;public int getScore()

34、return score;public void setScore(int score) this.score = score;public int getCredit() return credit;public void setCredit(int credit) this.credit = credit;public Score(int num, String sname, String course, int score,int credit) super(); this.num = num; this.sname = sname; this.course = course; this

35、.score = score; this.credit = credit;(2)Student类:此类中有五个成员变量,int num;String sname;String sex;int age;String dept; 十个成员方法,分别获取和设置这五个变量,即为student表中五个属性的记录值,均为getXXX()setXXX()方法,还有一个构造方法,用于调用其对象时对成员变量赋值Student类源代码:package model;public class Student int num;String sname;String sex;int age;String dept;pub

36、lic int getNum() return num;public void setNum(int num) this.num = num;public String getSname() return sname;public void setSname(String sname) this.sname = sname;public String getSex() return sex;public void setSex(String sex) this.sex = sex;public int getAge() return age;public void setAge(int age

37、) this.age = age;public String getDept() return dept;public void setDept(String dept) this.dept = dept;public Student(int num, String sname, String sex, int age,String dept) super();this.num = num;this.sname = sname;this.sex = sex;this.age = age;this.dept = dept;4.ui包中的类: (1) LoginUI类:此类为登陆界面,在这个界面上

38、,设置有两个按钮,学生按钮,教师按钮。给这两个按钮注册事件addActionListener,分别在内部类TeacherLoginActionListene和StudentLoginActionListener中的默认方法actionPerformed()中创建TeacherLoginUI类和StudentLoginUI类的对象,即打开教师登陆界面和学生登录界面,并将原登陆界面关闭。 LoginUI类源代码: package ui;import java.awt.*;import java.awt.event.*;import javax.swing.*;public class LoginU

39、I extends JFrame JLabel l1;JButton bt1, bt2;Container cp;public LoginUI() l1 = new JLabel(请选择用户类型);bt1 = new JButton(教师);bt2 = new JButton(学生);JPanel p1 = new JPanel();p1.setLayout(null);l1.setBounds(150, 150, 120, 40);p1.add(l1);bt1.setBounds(120, 230, 80, 30);p1.add(bt1);bt2.setBounds(220, 230, 80

40、, 30);p1.add(bt2);bt1.addActionListener(new TeacherLoginActionListener();/注册事件bt2.addActionListener(new StudentLoginActionListener();/注册事件cp = getContentPane();this.setBounds(200, 200, p1.getHeight(), p1.getHeight();cp.add(p1);this.setTitle(用户登录界面);this.setSize(400, 400);this.setVisible(true);this.a

41、ddWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e) System.exit(0););class TeacherLoginActionListener implements ActionListenerpublic void actionPerformed(ActionEvent e)new TeacherLoginUI();dispose(); class StudentLoginActionListener implements ActionListener public void ac

42、tionPerformed(ActionEvent e) new StudentLoginUI(); dispose(); public static void main(String args) new LoginUI();执行截图如下:(2)StudentLoginUI类:此类为学生登陆界面,在这个界面上有两个文本框,分别输入学生姓名和登录密码,还有两个按钮,登陆和退出。输入后,从两个文本框中获取用户输入的内容,点击“登陆”按钮时,调用StudentDao类中的studentLogin()方法验证是否存在该用户。若存在,则创建StudentScoreUI类的对象,即打开学生成绩界面,显示此

43、登陆学生的成绩信息,若不存在,则提示密码错误。 StudentLoginUI类源代码: package ui;import java.awt.*;import java.awt.event.*;import javax.swing.*;import dao.StudentDao;public class StudentLoginUI extends JFrameJLabel l1, l2;JTextField t1;JPasswordField t2;JButton bt1, bt2;Container cp;public static String st1;public String st2

44、;public StudentLoginUI()l1 = new JLabel(学生姓名);l2 = new JLabel(密码);t1 = new JTextField(12);t2 = new JPasswordField(12);bt1 = new JButton(成绩查询);bt2 = new JButton(退出);JPanel p1 = new JPanel();p1.setLayout(null);l1.setBounds(150, 150, 80, 40);p1.add(l1);t1.setBounds(250, 150, 80, 30);p1.add(t1);l2.setBo

45、unds(150, 190, 80, 40);p1.add(l2);t2.setBounds(250, 190, 80, 30);p1.add(t2);bt1.setBounds(150, 230, 120, 30);p1.add(bt1);bt2.setBounds(280, 230, 80, 30);p1.add(bt2);bt1.addActionListener(new LoginActionListener();/注册事件bt2.addActionListener(new ExitActionListener();/注册事件cp = getContentPane();this.set

46、Bounds(200, 200, p1.getHeight(), p1.getHeight();cp.add(p1);this.setTitle(学生登录界面);this.setSize(400, 400);this.setVisible(true);this.addWindowListener(new WindowAdapter() public void windowClosing(WindowEvent e)System.exit(0); );class LoginActionListener implements ActionListener public void actionPer

47、formed(ActionEvent e) st1 = t1.getText();st2 = t2.getText();StudentDao oneStudentDao = new StudentDao();boolean isSuccess = oneStudentDao.studentLogin(st1, st2);if (isSuccess) new StudentScoreUI();dispose(); elseJOptionPane.showMessageDialog(null, 用户名密码错误, 提示信息,JOptionPane.INFORMATION_MESSAGE);class

48、 ExitActionListener implements ActionListener public void actionPerformed(ActionEvent e) System.exit(0);public static void main(String args) new StudentLoginUI();执行截图如下:(3)StudentScoreUI类:此类为学生成绩界面,此类中有一个标签和一个表格。标签中从StudentLoginUI类中获取学生登录时使用的用户名,显示在标签中以表示以下是某某同学的成绩信息。表格中为此学生的成绩。调用ScoreDao类中的querySco

49、re1(),将得到的ArrayList对象lis放入Vector对象中,形成表格。StudentScoreUI类源代码:package ui;import java.awt.*;import javax.swing.*;import java.awt.event.*;import java.util.*;import javax.swing.event.*;import javax.swing.table.DefaultTableModel;import model.Score;import dao.ScoreDao;public class StudentScoreUI extends JF

50、rameString aa=StudentLoginUI.st1;JLabel selectionLabel;JPanel topPanel;Container container;JTable table; JScrollPane bookScrollPane;JPanel bottomPanel;public StudentScoreUI()container = this.getContentPane();selectionLabel = new JLabel(aa+同学本学期成绩如下);topPanel = new JPanel();topPanel.setLayout(new Flo

51、wLayout(FlowLayout.CENTER);topPanel.add(selectionLabel);this.add(BorderLayout.NORTH, topPanel);table = new JTable();bookScrollPane = new JScrollPane(table);this.add(BorderLayout.CENTER, bookScrollPane);bottomPanel = new JPanel();this.add(BorderLayout.SOUTH, bottomPanel);this.setTitle(学生成绩查询);this.setSiz

温馨提示

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

评论

0/150

提交评论