数据库大作业-学生宿舍管理体系

打印 上一主题 下一主题

主题 990|帖子 990|积分 2970

简介

此程序是本人大二时期的数据库大作业,初学数据库后所编写的一个程序,是一个学生宿舍管理体系,可实现学生宿舍的管理。
本程序使用Java编写,使用eclipse进行开发,数据库使用MySQL数据库搭配Navicat进行数据管理,程序使用JDBC技术进行数据库连接,使用Java Swing开发图形化界面,整个体系界面美观、功能丰富。本体系点击首页的“更换外观”按钮可切换不同风格的外观,体系分为三个模式,学生模式、宿管模式和体系管理模式,分别面向学生、宿管和体系管理员,不同的模式有不同的功能,详细请见下方先容。
本体系功能完善且丰富(可以将体系内的各种信息导出为excel文件哦),程序检错本事强,界面简便好看(每个组件都经过细心调整),但当时偷懒,所以有些代码并没有经过优化,大概有些繁杂,且为了界面美观,有大部分代码都在调整界面组件,请勿介意,读者可自行取其精华去其糟粕。
程序源代码及程序设计阐明书可点击下方链接进行下载,供各位需要的人学习参考。
下载链接:学生宿舍管理体系



  


数据设计

本体系的数据库共有8张表格,数据库表格设计及ER图如下所示,详细数据设计请至文章开头处下载数据设计表或程序设计阐明书,进行查看。




程序流程

程序大概流程如下图:



功能展示

本程序功能及细节颇多,在此仅展示部分功能,若想了解完备功能及细节,请至文章开头处下载程序,进行体验。


接待界面-更换外观

打开本程序,起首来到接待界面,在此可选择学生登录和管理员登录,点击右上角“更换外观”可更改体系整体外观,共有5种不同风格的外观。



登录

在接待界面点击“学生登录”,然后输入学生账号密码,登录乐成体系将进入学生模式;点击“管理员登录”,然后输入宿管账号密码,登录乐成体系将进入宿管模式,若账号密码均输入“admin”,体系将进入体系管理模式。




学生模式

学生模式面向的群体是学生,学生输入自己的账号(即学号)和密码后,即可进入学生模式的菜单界面,在此可选择相应功能,学生模式的功能较少,功能如下。



个人信息

“个人信息”功能,可查看自己的个人详细信息。



宿舍报修

“宿舍报修”功能,可在此界面进行宿舍报修,提交的信息将被保存到数据库中,并在宿管模式和体系管理模式的相应界面展示。



建议与反馈

“建议与反馈”功能,可在此界面进行建议与反馈,提交的信息将被保存到数据库中,并在宿管模式和体系管理模式的相应界面展示。



修改密码

“修改密码”功能,可在此界面修改自己的密码,需输入旧密码和两次新密码,输入错误会有相应的提示。



体系管理模式

体系管理模式面向的群体是体系管理员,管理员输入指定的账号和密码(均为admin)后,即可进入体系管理模式的菜单界面,在此可选择相应功能,体系管理模式的功能最多最全,可对学生、宿管、宿舍等进行全面管理,具体功能如下。



管理功能

体系管理模式下可对宿舍楼、宿舍、宿管、学生、留宿信息进行全面管理,包括增删改查等,下面以“学生管理”为例展示管理功能。
点击“学生管理”,来到学生管理界面,在此可看到全部学生的简易信息。

点击某个学生行的“查看”按钮,可查看该学生的详细信息,在此可进行学生信息的修改和删除。

如点击“修改学生信息”按钮,则进行学生信息的修改操作,修改完成点击“保存”,信息会在数据库同步更新。

在“学生管理”界面点击上方的“添加”按钮,可向体系中添加学生,输入完备的学生信息并确认添加后,信息将被保存至数据库,乐成添加学生。

在“学生管理”界面点击上方的“导出”按钮,可将学生信息导出成excel表格文件。


在“学生管理”界面点击顶部的“查询”按钮,将来到学生信息的查询界面,输入指定条件并点击“查询”,体系将查询出符合条件的学生,如下查询全部2019级的学生。


以上展示了“学生管理”功能,其他管理功能与此类似。


寝室分配

“寝室分配”功能,可自动为学生分配寝室,代替手动分配,以节省人力,若想精确分配、按意愿分配寝室,则需手动在“留宿管理”界面进行分配。



收支登记

“收支登记”功能,可登记学生收支宿舍楼的记录,可添加、删除、导出、查询收支记录,点击上方“登记”按钮,添加收支记录,输入相应信息,此中输入学号后将自动显示相应姓名,点击界面右侧的“获取当前时间”,可自动获取当前时间并自动输入。




宿舍报修

“宿舍报修”功能,在此界面可查看到全部学生提交的宿舍报修信息,点击“查看”按钮,可查看详细的报修信息,报修详细界面中可处理报修、删除报修,宿舍报修信息亦可导出和查询。




建议与反馈

“建议与反馈”功能,在此界面可查看到全部学生提交的建议与反馈,点击“查看”按钮,可进入详细界面查看详细内容,也可在此进行删除,建议与反馈亦可导出。




删库跑路

“删库跑路”功能,此功能需输入密码“ESCAPE”,然后点击“确认删库跑路”按钮,即可删除本体系的数据库进行跑路 ,此功能乐成执行后,将自动退出程序,体系将无法继承使用。



宿管模式

宿管模式面向的群体是宿管,宿管输入自己的账号(即编号)和密码后,即可进入宿管模式的菜单界面,在此可选择相应功能,宿管模式的功能与体系管理模式类似,不同之处在于,宿管模式下宿管仅能对自己所管理的宿舍楼进行操作,由于两者功能类似,故在此不再展示宿管模式的功能,读者可下载程序自行进行体验。



代码展示

本程序代码巨多且有详细注释,在此仅展示部分重要代码,完备代码请至文章开头处下载程序,进行了解。
为了体系界面的美观强迫症患者 ,所以本程序的很多代码都在调整界面组件,请别介意。


Info类

信息类,定义各种对象的类,如:宿舍、学生、宿管等。
  1. import java.util.*;
  2. import java.text.*;
  3. //各种信息类
  4. public class Info {
  5.        
  6. }
  7. class Floor { //宿舍楼
  8.         String floor_num; //楼号
  9.         int layer_amount; //层数
  10.         int room_amount; //房间数
  11.         String category; //类别
  12.         String sex; //居住时间
  13.         String admin_num; //宿管编号
  14.         public Floor(String floor_num, String layer_amount, String room_amount, String category, String sex, String admin_num) {
  15.                 this.floor_num=floor_num;
  16.                 this.layer_amount=Integer.parseInt(layer_amount);
  17.                 this.room_amount=Integer.parseInt(room_amount);
  18.                 this.category=category;
  19.                 this.sex=sex;
  20.                 this.admin_num=admin_num;
  21.         }
  22. }
  23. class Dormitory { //宿舍
  24.         String floor_num; //楼号
  25.         int layer; //楼层
  26.         int room_num; //宿舍号
  27.         int bed_total; //总床位数
  28.         int bed_surplus; //剩余床位数
  29.         int price; //单价
  30.         public Dormitory(String floor_num, String layer, String room_num, String bed_total, String bed_surplus, String price) {
  31.                 this.floor_num=floor_num;
  32.                 this.layer=Integer.parseInt(layer);
  33.                 this.room_num=Integer.parseInt(room_num);
  34.                 this.bed_total=Integer.parseInt(bed_total);
  35.                 this.bed_surplus=Integer.parseInt(bed_surplus);
  36.                 this.price=Integer.parseInt(price);
  37.         }
  38. }
  39. class Admin { //宿管
  40.         String admin_num; //编号
  41.         String password; //密码
  42.         String name; //姓名
  43.         String sex; //性别
  44.         String phone; //手机
  45.         public Admin(String admin_num, String password, String name, String sex, String phone) {
  46.                 this.admin_num=admin_num;
  47.                 this.password=password;
  48.                 this.name=name;
  49.                 this.sex=sex;
  50.                 this.phone=phone;
  51.         }
  52. }
  53. class Student { //学生
  54.         String stu_num; //学号
  55.         String password; //密码
  56.         String name; //姓名
  57.         String sex; //性别
  58.         int birth; //出生日期
  59.         int grade; //年级
  60.         String faculty; //院系
  61.         String clas; //班级
  62.         String phone; //手机号
  63.         String yes_no; //是否入住
  64.         public Student(String stu_num, String password, String name, String sex, String birth, String grade, String faculty, String clas, String phone, String yes_no) {
  65.                 this.stu_num=stu_num;
  66.                 this.password=password;
  67.                 this.name=name;
  68.                 this.sex=sex;
  69.                 this.birth=Integer.parseInt(birth);
  70.                 this.grade=Integer.parseInt(grade);
  71.                 this.faculty=faculty;
  72.                 this.clas=clas;
  73.                 this.phone=phone;
  74.                 this.yes_no=yes_no;
  75.         }
  76. }
  77. class Stay { //住宿
  78.         String stu_num; //学号
  79.         String name; //姓名
  80.         String floor_num; //楼号
  81.         int layer; //楼层
  82.         int room_num; //宿舍号
  83.         Date time; //入住时间
  84.         public Stay(String stu_num, String name, String floor_num, String layer, String room_num, String time) {
  85.                 SimpleDateFormat timeFormat=new SimpleDateFormat("yyyy-MM-dd");
  86.                 this.stu_num=stu_num;
  87.                 this.name=name;
  88.                 this.floor_num=floor_num;
  89.                 this.layer=Integer.parseInt(layer);
  90.                 this.room_num=Integer.parseInt(room_num);
  91.                 try {
  92.                         this.time=timeFormat.parse(time);
  93.                 } catch (ParseException e) {
  94.                         e.printStackTrace();
  95.                 }
  96.         }
  97. }
  98. class InOut { //出入
  99.         String stu_num; //学号
  100.         String name; //姓名
  101.         String floor_num; //楼号
  102.         String category; //类别
  103.         Date time; //时间
  104.         public InOut(String stu_num, String name, String floor_num, String category, String time) {
  105.                 SimpleDateFormat timeFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  106.                 this.stu_num=stu_num;
  107.                 this.name=name;
  108.                 this.floor_num=floor_num;
  109.                 this.category=category;
  110.                 try {
  111.                         this.time=timeFormat.parse(time);
  112.                 } catch (ParseException e) {
  113.                         e.printStackTrace();
  114.                 }
  115.         }
  116. }
  117. class Repair { //报修
  118.         String stu_num; //学号
  119.         String name; //姓名
  120.         String floor_num; //楼号
  121.         int layer; //楼层
  122.         int room_num; //宿舍号
  123.         String info; //报修详细
  124.         String yes_no; //是否处理
  125.         public Repair(String stu_num, String name, String floor_num, String layer, String room_num, String info, String yes_no) {
  126.                 this.stu_num=stu_num;
  127.                 this.name=name;
  128.                 this.floor_num=floor_num;
  129.                 this.layer=Integer.parseInt(layer);
  130.                 this.room_num=Integer.parseInt(room_num);
  131.                 this.info=info;
  132.                 this.yes_no=yes_no;
  133.         }
  134. }
  135. class Advice { //建议与反馈
  136.         String stu_num; //学号
  137.         String name; //姓名
  138.         String info; //详细信息
  139.         public Advice(String stu_num, String name, String info) {
  140.                 this.stu_num=stu_num;
  141.                 this.name=name;
  142.                 this.info=info;
  143.         }
  144. }
  145. class Stu { //学生,用于分配宿舍的信息
  146.         String stu_num; //学号
  147.         int grade; //年级
  148.         String faculty; //院系
  149.         String clas; //班级
  150.         public Stu(String stu_num, String grade, String faculty, String clas) {
  151.                 this.stu_num=stu_num;
  152.                 this.grade=Integer.parseInt(grade);
  153.                 this.faculty=faculty;
  154.                 this.clas=clas;
  155.         }
  156. }
  157. class Dor { //宿舍,用于分配宿舍的信息
  158.         String floor_num; //楼号
  159.         int layer; //楼层
  160.         int room_num; //宿舍号
  161.         int bed_surplus; //剩余床位数
  162.         public Dor(String floor_num, String layer, String room_num, String bed_surplus) {
  163.                 this.floor_num=floor_num;
  164.                 this.layer=Integer.parseInt(layer);
  165.                 this.room_num=Integer.parseInt(room_num);
  166.                 this.bed_surplus=Integer.parseInt(bed_surplus);
  167.         }
  168. }
复制代码

HomePage类

主页类,main方法包含在此类中,是程序的入口,定义了体系的接待界面、登录界面和更换外观功能,以及JDBC操作等。
  1. import java.sql.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. public class HomePage { //主页类
  6.         static JFrame mainJFrame=new JFrame("学生宿舍管理系统");
  7.         static Container con=mainJFrame.getContentPane();
  8.         static boolean flag; //是否为管理员
  9.         static int appearance=0; //当前外观
  10.         static JLabel lb_appearance=new JLabel("<html>当前外观:<br>默认</html>"); //当前外观
  11.         static Connection connection=null;
  12.        
  13.         public static void main(String[] args) {
  14.                 mainJFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  15.                 mainJFrame.setResizable(false);
  16.                 con.setLayout(null);
  17.                 welcomePage();
  18.         }
  19.        
  20.         public static void welcomePage() { //欢迎界面
  21.                 mainJFrame.setSize(550,400);
  22.                 mainJFrame.setLocationRelativeTo(null);
  23.                 JPanel pn=new JPanel();
  24.                 pn.setSize(550,400);
  25.                 pn.setLayout(null);
  26.                 JLabel lb1=new JLabel("欢迎使用"),lb2=new JLabel("学生宿舍管理系统");
  27.                 JButton bt1=new JButton("学生登录"),bt2=new JButton("管理员登录"),bt_changeAppearance=new JButton("更换外观",new ImageIcon("image/更换外观.png"));
  28.                 lb1.setFont(new Font("黑体",0,35));
  29.                 lb1.setBounds(200,30,150,100);
  30.                 lb2.setFont(new Font("黑体",0,35));
  31.                 lb2.setBounds(128,100,300,80);
  32.                 bt1.setFont(new Font("黑体",0,22));
  33.                 bt1.setBounds(70,210,170,70);
  34.                 bt1.setCursor(new Cursor(Cursor.HAND_CURSOR));
  35.                 lb_appearance.setFont(new Font("黑体",0,17));
  36.                 lb_appearance.setBounds(5,5,150,40);
  37.                 bt2.setFont(new Font("黑体",0,22));
  38.                 bt2.setBounds(310,210,170,70);
  39.                 bt2.setCursor(new Cursor(Cursor.HAND_CURSOR));
  40.                 bt_changeAppearance.setFont(new Font("黑体",0,17));
  41.                 bt_changeAppearance.setBounds(420,10,130,25);
  42.                 bt_changeAppearance.setContentAreaFilled(false);
  43.                 bt_changeAppearance.setBorderPainted(false);
  44.                 bt_changeAppearance.setCursor(new Cursor(Cursor.HAND_CURSOR));
  45.                 pn.add(lb1);
  46.                 pn.add(lb2);
  47.                 pn.add(lb_appearance);
  48.                 pn.add(bt1);
  49.                 pn.add(bt2);
  50.                 pn.add(bt_changeAppearance);
  51.                 con.add(pn);
  52.                 mainJFrame.setVisible(true);
  53.                 bt1.addActionListener(new ActionListener() { //进入学生登录界面
  54.                         public void actionPerformed(ActionEvent e) {
  55.                                 flag=false;
  56.                                 con.remove(pn);
  57.                                 mainJFrame.repaint();
  58.                                 loginPage();
  59.                                 mainJFrame.validate();
  60.                         }
  61.                 });
  62.                 bt2.addActionListener(new ActionListener() { //进入管理员登录界面
  63.                         public void actionPerformed(ActionEvent e) {
  64.                                 flag=true;
  65.                                 con.remove(pn);
  66.                                 mainJFrame.repaint();
  67.                                 loginPage();
  68.                                 mainJFrame.validate();
  69.                         }
  70.                 });
  71.                 bt_changeAppearance.addMouseListener(new MouseListener() { //更换整体界面外观
  72.                         public void mouseEntered(MouseEvent arg0) {
  73.                                 bt_changeAppearance.setForeground(Color.blue);
  74.                         }
  75.                         public void mouseExited(MouseEvent arg0) {
  76.                                 bt_changeAppearance.setForeground(null);
  77.                         }
  78.                         public void mouseClicked(MouseEvent arg0) {
  79.                                 try {
  80.                                         appearance++;
  81.                                         String lookAndFeel=null;
  82.                                         switch(appearance) {
  83.                                         case 1: //Windows风格
  84.                                                 lookAndFeel="com.sun.java.swing.plaf.windows.WindowsLookAndFeel";
  85.                                                 lb_appearance.setText("<html>当前外观:<br>Windows</html>");
  86.                                                 break;
  87.                                         case 2: //Nimbus风格
  88.                                                 lookAndFeel="com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel";
  89.                                                 lb_appearance.setText("<html>当前外观:<br>Nimbus</html>");
  90.                                                 break;
  91.                                         case 3: //Windows Classic风格
  92.                                                 lookAndFeel="com.sun.java.swing.plaf.windows.WindowsClassicLookAndFeel";
  93.                                                 lb_appearance.setText("<html>当前外观:<br>Windows Classic</html>");
  94.                                                 break;
  95.                                         case 4://Motif风格
  96.                                                 lookAndFeel="com.sun.java.swing.plaf.motif.MotifLookAndFeel";
  97.                                                 lb_appearance.setText("<html>当前外观:<br>Motif</html>");
  98.                                                 break;
  99.                                         case 5: //默认风格
  100.                                                 lookAndFeel="javax.swing.plaf.metal.MetalLookAndFeel";
  101.                                                 lb_appearance.setText("<html>当前外观:<br>默认</html>");
  102.                                                 break;
  103.                                         }
  104.                                         UIManager.setLookAndFeel(lookAndFeel);
  105.                                         SwingUtilities.updateComponentTreeUI(mainJFrame);
  106.                                         if(appearance==5)
  107.                                                 appearance=0;
  108.                         } catch(Exception ex) {
  109.                                 System.out.println(ex);
  110.                         }
  111.                         }
  112.                         public void mousePressed(MouseEvent arg0){}
  113.                         public void mouseReleased(MouseEvent arg0){}
  114.                 });
  115.         }
  116.        
  117.         public static void loginPage() { //登录界面
  118.                 mainJFrame.setSize(550,400);
  119.                 mainJFrame.setLocationRelativeTo(null);
  120.                 JPanel pn=new JPanel();
  121.                 pn.setSize(550,400);
  122.                 pn.setLayout(null);
  123.                 JButton bt1=new JButton("返回",new ImageIcon("image/返回.png")),bt2=new JButton("登  录");
  124.                 JTextField tf=new JTextField();
  125.                 JPasswordField pf=new JPasswordField();
  126.                 JLabel lb1,lb2=new JLabel("账号:"),lb3=new JLabel("密码:");
  127.                 if(flag) {
  128.                         lb1=new JLabel("管理员登录");
  129.                         lb1.setFont(new Font("黑体",0,35));
  130.                         lb1.setBounds(185,30,180,100);
  131.                 }
  132.                 else {
  133.                         lb1=new JLabel("学生登录");
  134.                         lb1.setFont(new Font("黑体",0,35));
  135.                         lb1.setBounds(200,30,150,100);
  136.                 }
  137.                 lb2.setFont(new Font("黑体",0,25));
  138.                 lb2.setBounds(100,100,80,100);
  139.                 lb3.setFont(new Font("黑体",0,25));
  140.                 lb3.setBounds(100,150,80,100);
  141.                 tf.setFont(new Font("黑体",0,25));
  142.                 tf.setBounds(170,130,230,40);
  143.                 pf.setFont(new Font(null,0,25));
  144.                 pf.setBounds(170,180,230,40);
  145.                 bt2.setFont(new Font("黑体",0,25));
  146.                 bt2.setBounds(200,250,150,60);
  147.                 bt2.setCursor(new Cursor(Cursor.HAND_CURSOR));
  148.                 bt1.setFont(new Font("黑体",0,17));
  149.                 bt1.setBounds(1,10,92,25);
  150.                 bt1.setContentAreaFilled(false);
  151.                 bt1.setBorderPainted(false);
  152.                 bt1.setCursor(new Cursor(Cursor.HAND_CURSOR));
  153.                 pn.add(lb1);
  154.                 pn.add(lb2);
  155.                 pn.add(lb3);
  156.                 pn.add(tf);
  157.                 pn.add(pf);
  158.                 pn.add(bt1);
  159.                 pn.add(bt2);
  160.                 con.add(pn);
  161.                 bt1.addMouseListener(new MouseListener() { //返回到欢迎界面
  162.                         public void mouseEntered(MouseEvent arg0) {
  163.                                 bt1.setForeground(Color.blue);
  164.                         }
  165.                         public void mouseExited(MouseEvent arg0) {
  166.                                 bt1.setForeground(null);
  167.                         }
  168.                         public void mouseClicked(MouseEvent arg0) {
  169.                                 con.remove(pn);
  170.                                 mainJFrame.repaint();
  171.                                 welcomePage();
  172.                                 mainJFrame.validate();
  173.                         }
  174.                         public void mousePressed(MouseEvent arg0){}
  175.                         public void mouseReleased(MouseEvent arg0){}
  176.                 });
  177.                 bt2.addActionListener(new ActionListener() { //登录,连接数据库获取账号密码并检验,正确则进入功能界面
  178.                         public void actionPerformed(ActionEvent e) {
  179.                                 databaseConnection(); //连接MySQL数据库
  180.                                 if(flag) //进行管理员账号密码检验
  181.                                         new Login().adminLogin(tf.getText(),String.valueOf(pf.getPassword()));
  182.                                 else //进行学生账号密码检验
  183.                                         new Login().studentLogin(tf.getText(),String.valueOf(pf.getPassword()));;
  184.                         }
  185.                 });
  186.         }
  187.        
  188.         public static void databaseConnection() { //连接MySQL数据库
  189.                 final String JDBC_DRIVER="com.mysql.cj.jdbc.Driver"; //JDBC驱动名
  190.             final String DB_URL="jdbc:mysql://localhost:3306/dormitory_system?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC"; //数据库URL
  191.             final String USER="root"; //数据库用户名
  192.             final String PASS="root"; //数据库密码
  193.             try {
  194.                     Class.forName(JDBC_DRIVER); //加载JDBC驱动
  195.                     connection=DriverManager.getConnection(DB_URL,USER,PASS); //连接数据库
  196.             }catch(SQLException e){
  197.             e.printStackTrace();
  198.         }catch(Exception e){
  199.             e.printStackTrace();
  200.         }
  201.         }
  202. }
复制代码

Login类

登录类,用于进行登录验证,包括学生、宿管、体系管理员的登录。
  1. import java.sql.*;
  2. import java.awt.*;
  3. import java.awt.event.*;
  4. import javax.swing.*;
  5. public class Login { //登录类
  6.         JLabel lb_tips=new JLabel(); //提示窗口的内容
  7.        
  8.         public void adminLogin(String account,String password) { //管理员登录(包括系统管理员和宿管)
  9.                 boolean flag=false; //是否查找到相应账号密码
  10.                 if(account.equals("admin") && password.equals("admin")) { //检验是否为系统管理员账号密码,若是,则进入系统管理员功能界面
  11.                         lb_tips.setText("登录成功!");
  12.                         loginTips();
  13.                         new SysAdminFunction();
  14.                         HomePage.mainJFrame.dispose();
  15.                 }
  16.                 else { //若不是,则进行宿管账号密码检测
  17.                         String admin_num=null, pass; //宿管账号密码
  18.                         try {
  19.                                 String sql="SELECT admin_num, password FROM admin"; //SQL语句
  20.                                 PreparedStatement ps; //创建PreparedStatement类对象ps,用来执行SQL语句
  21.                                 ps=HomePage.connection.prepareStatement(sql); //把操作数据库返回的结果保存到ps中
  22.                     ResultSet rs=ps.executeQuery(sql); //ResultSet类,用来存放获取的结果集
  23.                     while(rs.next()){ //遍历结果集
  24.                             admin_num=rs.getString("admin_num");
  25.                         pass=rs.getString("password");
  26.                         if(account.equals(admin_num) && password.equals(pass)) {
  27.                                 flag=true;
  28.                                 break;
  29.                         }
  30.                     }
  31.                     rs.close();
  32.                     ps.close();
  33.                         }catch(SQLException e){
  34.                     e.printStackTrace();
  35.                 }
  36.                         if(flag) { //若宿管账号密码正确,则进入宿管功能界面
  37.                                 lb_tips.setText("登录成功!");
  38.                                 loginTips();
  39.                                 new DorAdminFunction(admin_num);
  40.                                 HomePage.mainJFrame.dispose();
  41.                         }
  42.                         else { //若账号密码错误,则进行提示
  43.                                 lb_tips.setText("账号或密码错误!");
  44.                                 loginTips();
  45.                                 try {
  46.                                         HomePage.connection.close(); //关闭数据库连接
  47.                                 } catch (SQLException e) {
  48.                                         e.printStackTrace();
  49.                                 }
  50.                         }
  51.                 }
  52.         }
  53.        
  54.         public void studentLogin(String account,String password) { //学生登录
  55.                 boolean flag=false; //是否查找到相应账号密码
  56.                 String stu_num=null, pass; //学生账号密码
  57.                 try {
  58.                         String sql="SELECT stu_num, password FROM student"; //SQL语句
  59.                         PreparedStatement ps; //创建PreparedStatement类对象ps,用来执行SQL语句
  60.                         ps=HomePage.connection.prepareStatement(sql); //把操作数据库返回的结果保存到ps中
  61.             ResultSet rs=ps.executeQuery(sql); //ResultSet类,用来存放获取的结果集
  62.             while(rs.next()) { //遍历结果集
  63.                     stu_num=rs.getString("stu_num");
  64.                 pass=rs.getString("password");
  65.                 if(account.equals(stu_num) && password.equals(pass)) {
  66.                         flag=true;
  67.                         break;
  68.                 }
  69.             }
  70.             rs.close();
  71.             ps.close();
  72.                 }catch(SQLException e){
  73.             e.printStackTrace();
  74.         }
  75.                 if(flag) { //若学生账号密码正确,则进入学生功能界面
  76.                         lb_tips.setText("登录成功!");
  77.                         loginTips();
  78.                         new StudentFunction(stu_num);
  79.                         HomePage.mainJFrame.dispose();
  80.                 }
  81.                 else { //若账号密码错误,则进行提示
  82.                         lb_tips.setText("账号或密码错误!");
  83.                         loginTips();
  84.                         try {
  85.                                 HomePage.connection.close(); //关闭数据库连接
  86.                         } catch (SQLException e) {
  87.                                 e.printStackTrace();
  88.                         }
  89.                 }
  90.         }
  91.        
  92.         public void loginTips() { //登录时弹出的提示信息窗口
  93.                 JDialog tips=new JDialog(HomePage.mainJFrame,"  提示",true);
  94.                 JPanel pn_tips=new JPanel();
  95.                 JButton bt_tips=new JButton("确 定");
  96.                 tips.setSize(450,200);
  97.                 tips.setLocationRelativeTo(null);
  98.                 tips.setResizable(false);
  99.                 tips.setLayout(null);
  100.                 pn_tips.setBounds(0,30,450,70);
  101.                 lb_tips.setFont(new Font("黑体",0,25));
  102.                 bt_tips.setFont(new Font("黑体",0,20));
  103.                 bt_tips.setBounds(175,100,100,50);
  104.                 bt_tips.setCursor(new Cursor(Cursor.HAND_CURSOR));
  105.                 pn_tips.add(lb_tips);
  106.                 tips.add(pn_tips);
  107.                 tips.add(bt_tips);
  108.                 bt_tips.addActionListener(new ActionListener() {
  109.                         public void actionPerformed(ActionEvent e) {
  110.                                 tips.dispose();
  111.                         }
  112.                 });
  113.                 tips.setVisible(true);
  114.         }
  115. }
复制代码
… …
其他代码请见程序源码!


跋文

本文章是为了记录下作者自己的过往,同时供各位学习参考,文章主要展示程序功能,详细程序代码及先容请至文章开头处下载相应资源。
本程序仅供学习和参考,请勿抄袭或另作他用。
感谢观看,有什么题目可在下方评论区进行评论,若以为本文章写得不错,还请点个赞呢。
关注我,收看更多精彩!( • ̀ω•́ )✧求点赞、评论、收藏、关注

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

玛卡巴卡的卡巴卡玛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表