学生信息管理系统
一、背景及目的要求
本文将介绍如何使用Java Swing GUI库和MySQL数据库来编写一个简单的学生信息管理系统,同时也将讲解GUI的基本布局、事件处理和MySQL数据库的连接、数据操作等知识。编写java和sql语句需要安装JDK和MySQL数据库。
二、设计思路
首先是系统登录界面,用户选择账号类型(教师账号、学生账号、管理员账号)。如果账号和密码与数据库系统中的账号数据一致,则成功进入系统;如果账户不正确则弹出密码错误窗口,当密码错误三次,登录界面锁死无法再次登录。
学生账号登录成功:进入学生信息管理系统,可选择查看个人信息并修改、查看个人所有科目成绩、选择下学期的课程、退出登录功能。
老师账号登录成功:进入教师管理系统,可以选择查看个人信息并修改、查看各班级各学科所有学生成绩、查询教学工作、录入学生的成绩、退出登录功能。
管理员账户登录成功,进入管理员系统,可选择增加或删除学生、增加或删除教师、增加或者删除课程、退出登录功能。
附:功能流程图
附:E-R图
三、设计实现及代码分析
系统所有程序都在一个学生信息管理系统包,共有九个类。代码过于繁多仅展示主要内容的部分组件属性(绝对位置、颜色、字体、加入监听等)设计在此处不再展示。
(一)数据库连接类(Shujuku.java)用来连接关闭数据库。
public class Shujuku {
public Shujuku() {
try {
Class.forName("com.mysql.jdbc.Driver"); DriverManager.getConnection("jdbc:mysql://localhost:3306/stusystem","root","gyq4674");
} catch (Exception e) {
e.printStackTrace();
} }
public static Connection getConnection() { //连接
try {
Return DriverManager.getConnection("jdbc:mysql://localhost:3306/stu
system","root","gyq4674");
} catch (SQLException e) {
e.printStackTrace(); }
}
return null;
}
public static void close(Connection conn, Statement statement, ResultSet result) {//释放资源
try { if (result != null) { result.close(); }
if(statement != null) { statement.close(); }
if(conn!=null) { conn.close(); }
} catch (SQLException e) { e.printStackTrace();
} } }
(二)是数据库登录GUI界面代码
系统登录:登陆界面设计的类(LoginGUI.java)和数据库连(Shujukull.java),使用Swing中各类型组件设计登陆界面,单选按钮确定用户类别,监听“确认”按钮并运行查看数据库admin表的用户账户密码是否与输入的一致。密码正确则利用多线程的休眠sleep语句延缓1.5秒执行“提示密码正确面板”语句,而后进入对应的分系统。
public class LoginGUI {
static String account=null;
static String ypass=null;
static int num;
static String role="学生" ;//定义默认登录角色为学生
public void denglu() {
JFrame jf = new JFrame("登录界面");
jf.setBounds(500, 300, 600, 450);
jf.setLayout(null);
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JLabel l = new JLabel("欢迎登录学生信息管理系统");//欢迎语
jf.add(l);
ButtonGroup bg=new ButtonGroup();//对象选择
JRadioButton jb1=new JRadioButton("学生",true);
JRadioButton jb2=new JRadioButton("教师",false);
JRadioButton jb3=new JRadioButton("管理员",false);
ActionListener actionListener=new ActionListener() {//对角色按钮监听 @Override
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("教师")) { role="教师";
}else if(e.getActionCommand().equals("管理员")) {role="管理员";
}else {role="学生";
} } };
JLabel l1 = new JLabel("用户名:"); //账户密码
JLabel l2 = new JLabel("密 码:");
JTextField txt1 = new JTextField("");
JPasswordField pass = new JPasswordField("");//密码框*号
pass.setEchoChar('*');
jf.add(l1); jf.add(l2);jf.add(txt1); jf.add(pass);
jf.setVisible(true);
JButton btn = new JButton("登录");
btn.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
boolean b=false;
Connection con=学生信息管理系统.Shujuku.getConnection(); Statement st = null;
ResultSet rs = null;
try { st=con.createStatement();
rs = st.executeQuery("SELECT * FROM accpass WHERE uso='"+txt1.getText()+"'AND role='"+role+"'");
while(rs.next()) {//只有在遍历时才能用geystring if(rs.getString("pass").equals(String.valueOf(pass.getPassword()))) { b=true;
}}} catch (SQLException e1) {
e1.printStackTrace();
}finally{ Shujuku.close(con, st, rs);
} num++;//密码输入次数
if(b==false) {
if (num >=3 ) {
JOptionPane.showMessageDialog(jf, "您已经输错三次!"+"\n"+" 此账户已冻结!");//弹出消息框
txt1.setEditable(false);// 锁住文本框
pass.setEditable(false);
}else {
JOptionPane.showMessageDialog(jf, "密码错误");
} }
if (b) {// 登录成功页面
num=0;
jf.setVisible(false);
JFrame jf1 = new JFrame();
JLabel lb1 = new JLabel("用户名&密码正确");
JLabel lb2 = new JLabel("正在登录中.....");
f1.setVisible(true);
new Thread(){//延时页面
public void run(){
try {
Thread.sleep(1000);
jf1.setVisible(false);// 进入主页面
if(role.equals("学生")) {
new StudentZhuGUI().zhu(txt1.getText(),"学生"); }if(role.equals("教师")) {
newTeacherZhuGUI().zhu(txt1.getText()); }if(role.equals("管理员")) {
new AdminZhuGUI().zhu(txt1.getText());
}
} catch (InterruptedException e) { }}
}.start();
}}});
JButton btn2 = new JButton("取消");//关闭系统
btn2.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
System.exit(0);
}});
jf.add(btn);
jf.add(btn2);
}}
(三)学生系统主页面
学生管理系统:学生系统GUI界面设计类(StudentZhuGUI.java)、操作接口类(Student_interf.java)、接口实现类(Student_interf_imp.java)。系统的GUI界面,使用JFrame的BorderLayout布局的北边栏作为导航界面(JPanel使用流式布局添加四个功能以及首页和退出按钮)。在接口实现类里重写三个功能方法,各个方法里编写所需的GUI界面以及功能实现代码和SQL语句,方法的返回值类型为JPanel,在StudentZhuGUI.java界面接收其返回值并根据监听的按钮切换JFrame的中间主面板。
public class StudentZhuGUI {//学生系统
public void zhu(String stuno,String role) {//学生首页面, JFrame jf = new JFrame("学生信息管理系统");
JPanel jpn1=new JPanel(); //页首
JLabel jb=new JLabel("学生信息系统",0);
JButton jbt1=new JButton("首 页");
JButton jbt2=new JButton("个人信息");
JButton jbt3=new JButton("查询成绩");
JButton jbt4=new JButton("网上选课");
JButton jbt5=new JButton("退 出");
jpn1.add(jbt1);jpn1.add(jbt2);
jpn1.add(jbt3);jpn1.add(jbt4);
jpn1.add(jbt5); jf.add(jpn1,BorderLayout.NORTH);
JPanel jpm=new JPanel(); //中间
jpm.setLayout(new BorderLayout());//使得插入jpm的面板位于居中
JLabel jl=new JLabel("欢迎进入学生管理系统!",0);
ActionListener lis=new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
String actioncommend = e.getActionCommand();
JPanel panel=null;
switch (actioncommend) {
case "个人信息":
jpm.removeAll();jpm.repaint();//清空面板内容//重写 jpm.add(newStudent_interf_imple().personalinformation(jf,stuno));//加入个人信息面板
jpm.updateUI();break;//刷新
case "查询成绩":
jpm.removeAll();jpm.repaint();//清空面板内容//重写
jpm.add(new Student_interf_imple().lookgrade(jf, stuno));//加入个人信息面板
jpm.updateUI();//刷新 break;
case "网上选课":
jpm.removeAll();jpm.repaint();//清空面板内容//重写
jpm.add(new Student_interf_imple().electivecourse(jf, stuno));//加入个人信息面板
jpm.updateUI();//刷新
break;
case "首 页"://返回操作主页面
jf.setVisible(false); zhu(stuno,role);break;
case "退 出"://返回操作主页面
jf.setVisible(false);new LoginGUI().denglu();break; } }};}}
注:其余界面的代码过多不在暂时,需要JAVA源码的私信发送。
四、程序功能测试及截图
文章来源:https://www.toymoban.com/news/detail-761485.html
五、课程设计总结
本系统拥有三个子系统:学生管理、教师管理、管理员管理,通过可视化GUI界面和数据库连接实现完整学生成绩管理功能。登录注册功能实现不同用户的不同操作权限。系统未关闭也可再次登录。待改进之处包括整理代码包结构,添加教师课程系统以及加强学生选课约束。通过此项目,整合了两个学期的知识并进行了综合应用,通知这个项目提升了GUI和数据库的应用能力,并且锤炼了编程思维和算法实现能力。文章来源地址https://www.toymoban.com/news/detail-761485.html
注意:页面篇幅有限,仅仅展示部分项目报告+JAVA源码,有需要的私信我!
到了这里,关于JAVA+GUI界面+MysSQL的学生信息管理系统的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!