0


【java 程序设计实训】学生请假管理系统

学生请假管理系统

声明:未经允许,请勿转载

运行结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

学生请假管理系统需求分析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

GUI 编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

事件处理

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据库编程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

部分代码

项目结构

在这里插入图片描述

实体类 Admin.java

packageinfo;publicclassAdmin{//管理员信息类privateStringUserIdentity;//用户身份,用于判断登录用户是学生Student还是教师Teacher还是管理员AdminprivateString id;// 工号,即用户账号privateString password;//用户密码privateString name;// 姓名privateString sex;// 性别privateString age;//年龄privateString jobTitle;//职称privateStringPhone;//联系电话privateString address;// 家庭住址// 2120220087 010718 小庄 男 21 电气与计算机工程学院 教师  15018722839 广东省广州市//("Admin"," 2120220087 ","1 ","小庄"," 男 ","21 "," 教务处主任"," 15018722839"," 广东省广州市");publicAdmin(){}publicAdmin(String userIdentity,String id,String password,String name,String sex,String age,String jobTitle,String phone,String address){this.UserIdentity= userIdentity;this.id = id;this.password = password;this.name = name;this.sex = sex;this.age = age;this.jobTitle = jobTitle;this.Phone= phone;this.address = address;}publicStringgetUserIdentity(){returnUserIdentity;}publicvoidsetUserIdentity(String userIdentity){UserIdentity= userIdentity;}publicStringgetId(){return id;}publicvoidsetId(String id){this.id = id;}publicStringgetPassword(){return password;}publicvoidsetPassword(String password){this.password = password;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicStringgetSex(){return sex;}publicvoidsetSex(String sex){this.sex = sex;}publicStringgetAge(){return age;}publicvoidsetAge(String age){this.age = age;}publicStringgetJobTitle(){return jobTitle;}publicvoidsetJobTitle(String jobTitle){this.jobTitle = jobTitle;}publicStringgetPhone(){returnPhone;}publicvoidsetPhone(String phone){Phone= phone;}publicStringgetAddress(){return address;}publicvoidsetAddress(String address){this.address = address;}}

LeaveData.java

packageinfo;publicclassLeaveData{//请假信息表单privateString num;// 编号privateString name;// 姓名privateStringID;// 学号privateString sex;//性别privateString age;//年龄privateString faculties;// 所在院系privateString profession;//专业名称privateString className;// 班级名称privateStringPhone;//联系电话privateString requestData;//申请日期privateStringStartTime;// 开始时间privateStringEndEime;// 结束时间privateString reason;//申请理由privateStringApprover;//审核人privateStringApprovalReason;//审核意见privateString state;//状态/**
     * 状态:
     * 编辑保存  ----未提交
     * 请假----请假申请中
     * 请假审批通过 ---请假成功
     * 请假审批不通过--请假失败
     * 销假 ---销假申请中
     * 销假审批通过--销假成功
     * 销假审批不通过---销假失败
     */publicLeaveData(){}publicLeaveData(String num,String name,StringID,String sex,String age,String faculties,String profession,String className,String phone,String requestData,String startTime,String endEime,String approver,String approvalReason,String reason,String state){this.num = num;this.name = name;this.ID=ID;this.sex = sex;this.age = age;this.faculties = faculties;this.profession = profession;this.className = className;this.Phone= phone;this.requestData = requestData;this.StartTime= startTime;this.EndEime= endEime;this.Approver= approver;this.ApprovalReason= approvalReason;this.reason = reason;this.state = state;}publicStringgetNum(){return num;}publicvoidsetNum(String num){this.num = num;}publicStringgetName(){return name;}publicvoidsetName(String name){this.name = name;}publicStringgetID(){returnID;}publicvoidsetID(StringID){this.ID=ID;}publicStringgetSex(){return sex;}publicvoidsetSex(String sex){this.sex = sex;}publicStringgetAge(){return age;}publicvoidsetAge(String age){this.age = age;}publicStringgetFaculties(){return faculties;}publicvoidsetFaculties(String faculties){this.faculties = faculties;}publicStringgetProfession(){return profession;}publicvoidsetProfession(String profession){this.profession = profession;}publicStringgetClassName(){return className;}publicvoidsetClassName(String className){this.className = className;}publicStringgetPhone(){returnPhone;}publicvoidsetPhone(String phone){Phone= phone;}publicStringgetRequestData(){return requestData;}publicvoidsetRequestData(String requestData){this.requestData = requestData;}publicStringgetStartTime(){returnStartTime;}publicvoidsetStartTime(String startTime){StartTime= startTime;}publicStringgetEndEime(){returnEndEime;}publicvoidsetEndEime(String endEime){EndEime= endEime;}publicStringgetReason(){return reason;}publicvoidsetReason(String reason){this.reason = reason;}publicStringgetApprover(){returnApprover;}publicvoidsetApprover(String approver){Approver= approver;}publicStringgetApprovalReason(){returnApprovalReason;}publicvoidsetApprovalReason(String approvalReason){ApprovalReason= approvalReason;}publicStringgetState(){return state;}publicvoidsetState(String state){this.state = state;}}

UserLogin.java

packageGUI;importinfo.Admin;importinfo.Student;importinfo.Teacher;importinfo.User;importjavax.swing.*;importjavax.swing.event.DocumentEvent;importjavax.swing.plaf.FontUIResource;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.SQLException;importjava.sql.Statement;importjava.util.Enumeration;importjava.util.Objects;importstatictoolbox.LeaveDataBase.getConnection;publicclassUserLoginextendsJFrameimplementsActionListener{privateJTextField fieldAccount =newJTextField();//账号输入框文本privateJPasswordField fieldPassword =newJPasswordField();//密码输入框文本privateJButton buttonLogin =newJButton("登  录");staticUser user =newUser();//用于存储登录者的账户密码及身份Admin admin;Teacher teacher;Student student;publicstaticvoidmain(String[] args){initGobalFont(newFont("宋体",Font.PLAIN,12));try{//org.jb2011.lnf.beautyeye.BeautyEyeLNFHelper.launchBeautyEyeLNF();newUserLogin();}catch(Exception e){
            e.printStackTrace();}}publicUserLogin(){this.setTitle("登录系统");this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口this.setBounds(500,150,630,450);//设置页面大小this.setResizable(false);//设置页面不可拖拽改变大小this.setLocationRelativeTo(null);// 设置登录界面居中this.getContentPane().setLayout(null);this.setVisible(true);JLabel titleLabel =newJLabel("学生请假管理系统");
        titleLabel.setFont(newFont("华文行楷",Font.PLAIN,30));
        titleLabel.setIcon(newImageIcon(Objects.requireNonNull(UserLogin.class.getResource("/images/logo.png"))));
        titleLabel.setBounds(150,70,350,65);this.getContentPane().add(titleLabel);//用户账号JLabel labelAccount =newJLabel("账号:");
        labelAccount.setFont(newFont("宋体",Font.PLAIN,20));
        labelAccount.setAlignmentY(CENTER_ALIGNMENT);
        labelAccount.setIcon(newImageIcon(Objects.requireNonNull(UserLogin.class.getResource("/images/userName.png"))));
        labelAccount.setBounds(150,172,81,30);
        fieldAccount.setBounds(243,172,200,30);//fieldAccount.setText("1");///==========this.getContentPane().add(labelAccount);this.getContentPane().add(fieldAccount,BorderLayout.CENTER);
        fieldAccount.getDocument().addDocumentListener(newjavax.swing.event.DocumentListener(){publicvoidchangedUpdate(DocumentEvent e){//这是更改操作的处理
                                                               user.setAccount(fieldAccount.getText().trim());//trim()方法用于去掉你可能误输入的空格号}publicvoidinsertUpdate(DocumentEvent e){//这是插入操作的处理
                                                               user.setAccount(fieldAccount.getText().trim());}publicvoidremoveUpdate(DocumentEvent e){//这是删除操作的处理
                                                               user.setAccount(fieldAccount.getText().trim());}});// 用户密码JLabel labelPwd =newJLabel("密码:");
        labelPwd.setFont(newFont("宋体",Font.PLAIN,20));
        labelPwd.setAlignmentY(CENTER_ALIGNMENT);
        labelPwd.setIcon(newImageIcon(Objects.requireNonNull(UserLogin.class.getResource("/images/password.png"))));
        labelPwd.setBounds(150,222,81,30);
        fieldPassword.setBounds(243,222,200,30);//fieldPassword.setText("1");///this.getContentPane().add(labelPwd);this.getContentPane().add(fieldPassword,BorderLayout.CENTER);
        fieldPassword.getDocument().addDocumentListener(newjavax.swing.event.DocumentListener(){publicvoidchangedUpdate(DocumentEvent e){//这是更改操作的处理
                                                                user.setPassword(fieldPassword.getText().trim());//trim()方法用于去掉你可能误输入的空格号}publicvoidinsertUpdate(DocumentEvent e){//这是插入操作的处理
                                                                user.setPassword(fieldPassword.getText().trim());}publicvoidremoveUpdate(DocumentEvent e){//这是删除操作的处理
                                                                user.setPassword(fieldPassword.getText().trim());}});// 登陆按钮
        buttonLogin.setBounds(275,282,95,30);
        buttonLogin.setFont(newFont("宋体",Font.PLAIN,13));
        buttonLogin.setIcon(newImageIcon(Objects.requireNonNull(UserLogin.class.getResource("/images/login.png"))));this.getContentPane().add(buttonLogin);//去掉按钮文字周围的焦点框
        buttonLogin.setFocusPainted(false);
        buttonLogin.addActionListener(this);this.setVisible(true);this.revalidate();this.repaint();}@OverridepublicvoidactionPerformed(ActionEvent e){if(e.getSource()== buttonLogin){booleanLoginUser=false;try{LoginUser=verifyAccount(user.getAccount(), user.getPassword());}catch(SQLException ex){thrownewRuntimeException(ex);}if(LoginUser){//判断权限,加载相应面板if(user.getUserIdentity().equals("Student")){JOptionPane.showMessageDialog(this,"账号密码正确,即将进入系统学生端!","提示",JOptionPane.INFORMATION_MESSAGE);// 提示newMainWindow(student);}elseif(user.getUserIdentity().equals("Teacher")){JOptionPane.showMessageDialog(this,"账号密码正确,即将进入系统教师端!","提示",JOptionPane.INFORMATION_MESSAGE);//newMainWindow(teacher);}elseif(user.getUserIdentity().equals("Admin")){JOptionPane.showMessageDialog(this,"账号密码正确,即将进入系统管理端!","提示",JOptionPane.INFORMATION_MESSAGE);//newMainWindow(admin);}this.dispose();// 关闭当前窗口}}}privatebooleanverifyAccount(String account,String password)throwsSQLException{// 判断输入账号或密码为空与空格的情况if(account ==null||"".equals(account.trim())|| password ==null||"".equals(password.trim())){// 警示框,"Title",JOptionPane.WARNING_MESSAGEJOptionPane.showMessageDialog(null,"账号与密码均不能为空!","警告",JOptionPane.WARNING_MESSAGE);}else{Connection conn =getConnection();Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);//查询学生表ResultSet rs = stmt.executeQuery("SELECT *FROM StudentList WHERE id = '"+ account +"' AND password = '"+ password +"';");if(!rs.isBeforeFirst()){//若学生表中不存在,则查询教师表
                rs = stmt.executeQuery("SELECT *FROM TeacherList WHERE id = '"+ account +"' AND password = '"+ password +"';");}if(!rs.isBeforeFirst()){//若学生表与教师表中不存在,则查询管理员表
                rs = stmt.executeQuery("SELECT *FROM AdminList WHERE id = '"+ account +"' AND password = '"+ password +"';");}if(!rs.isBeforeFirst()){//若学生表与教师表与管理员表中不存在,则提示账户密码错误//错误提示框,"Title",JOptionPane.ERROR_MESSAGEJOptionPane.showMessageDialog(this,"账号密码错误,请重新登录!","警告",JOptionPane.ERROR_MESSAGE);
                fieldPassword.setText(null);returnfalse;}while(rs.next()){
                user.setUserIdentity(rs.getString(1));//创建对应身份信息的实体类并赋值if(user.getUserIdentity().equals("Student")){

                    student =newStudent(rs.getString(1),
                            rs.getString(2),
                            rs.getString(3),
                            rs.getString(4),
                            rs.getString(5),
                            rs.getString(6),
                            rs.getString(7),
                            rs.getString(8),
                            rs.getString(9),
                            rs.getString(10),
                            rs.getString(11));}elseif(user.getUserIdentity().equals("Teacher")){

                    teacher =newTeacher(rs.getString(1),
                            rs.getString(2),
                            rs.getString(3),
                            rs.getString(4),
                            rs.getString(5),
                            rs.getString(6),
                            rs.getString(7),
                            rs.getString(8),
                            rs.getString(9),
                            rs.getString(10));}elseif(user.getUserIdentity().equals("Admin")){

                    admin =newAdmin(rs.getString(1),
                            rs.getString(2),
                            rs.getString(3),
                            rs.getString(4),
                            rs.getString(5),
                            rs.getString(6),
                            rs.getString(7),
                            rs.getString(8),
                            rs.getString(9));}}
            rs.close();
            stmt.close();returntrue;}returnfalse;}//全局字体 https://blog.csdn.net/lifaxing/article/details/79365078publicstaticvoidinitGobalFont(Font font){FontUIResource fontResource =newFontUIResource(font);for(Enumeration<Object> keys =UIManager.getDefaults().keys(); keys.hasMoreElements();){Object key = keys.nextElement();Object value =UIManager.get(key);if(value instanceofFontUIResource){UIManager.put(key, fontResource);}}}}

MainWindow.java

packageGUI;importinfo.Admin;importinfo.Student;importinfo.Teacher;importpanel.PanelAdmin;importpanel.PanelStudent;importpanel.PanelTeacher;importjavax.swing.*;importjavax.swing.border.EtchedBorder;importjava.awt.*;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.util.Objects;publicclassMainWindow{publicstaticJFrame frame;publicstaticJTabbedPane tabbedPane;publicstaticJLabel label_status;privateJMenuBar menuBar;privateJMenuItem mntmNewMenuItem_exit, menuItem_setting, mntmNewMenuItem_help;privateJPanel panel_status;//登录状态//参数 学生publicMainWindow(Student student){windowLoads();newPanelStudent(student);}//参数 教师publicMainWindow(Teacher teacher){windowLoads();newPanelTeacher(teacher);}//参数 管理员publicMainWindow(Admin admin){windowLoads();newPanelAdmin();}privatevoidwindowLoads(){
        frame =newJFrame();// 设置窗口标题图标
        frame.setIconImage(Toolkit.getDefaultToolkit().getImage("C:\\Users\\ZHUANG\\Desktop\\LeaveSystem1\\LeaveSystem\\src\\images\\icon.png"));
        frame.setTitle("学生请假管理系统");
        frame.setBounds(0,0,820,626);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口
        frame.getContentPane().setLayout(null);
        frame.setVisible(true);
        tabbedPane =newJTabbedPane(JTabbedPane.TOP);
        tabbedPane.setBounds(0,30,820,522);
        frame.getContentPane().add(tabbedPane);
        frame.setResizable(false);//设置页面不可拖拽改变大小
        frame.setLocationRelativeTo(null);// 设置登录界面居中// 系统菜单
        menuBar =newJMenuBar();
        menuBar.setBounds(0,0,820,21);
        frame.getContentPane().add(menuBar);JMenu mnNewMenu =newJMenu("系统");
        menuBar.add(mnNewMenu);
        mnNewMenu.setIcon(newImageIcon(Objects.requireNonNull(UserLogin.class.getResource("/images/base.png"))));

        menuItem_setting =newJMenuItem("设置");
        mnNewMenu.add(menuItem_setting);

        mntmNewMenuItem_exit =newJMenuItem("直接退出");
        mnNewMenu.add(mntmNewMenuItem_exit);
        mntmNewMenuItem_exit.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvent e){Object[] options ={"确认","取消"};//定义按钮上的文字int n =JOptionPane.showOptionDialog(null,"是否退出本账户?","提示",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSAGE,null, options, options[1]);if(n ==0){
                    frame.dispose();newUserLogin();}}});JMenu mnNewMenu_1 =newJMenu("关于");
        menuBar.add(mnNewMenu_1);

        mntmNewMenuItem_help =newJMenuItem("帮助");
        mnNewMenu_1.add(mntmNewMenuItem_help);//状态栏
        panel_status =newJPanel();
        panel_status.setLocation(0,570);
        panel_status.setSize(820,22);
        panel_status.setBorder(newEtchedBorder(EtchedBorder.LOWERED,null,null));//边框
        frame.getContentPane().add(panel_status);
        label_status =newJLabel("登录成功");
        label_status.setBounds(207,1,820,25);JProgressBar progressBar =newJProgressBar();
        progressBar.setBounds(0,1,200,25);
        panel_status.setLayout(null);
        panel_status.add(label_status);
        panel_status.add(progressBar);
        frame.setVisible(true);}}

leaveList.java

packageFunctional.Student;importinfo.LeaveData;importinfo.Student;importjavax.swing.*;importjavax.swing.table.DefaultTableCellRenderer;importjavax.swing.table.DefaultTableModel;importjava.awt.*;importjava.awt.event.MouseAdapter;importjava.sql.Connection;importjava.sql.ResultSet;importjava.sql.Statement;importjava.util.ArrayList;importjava.util.List;importstatictoolbox.LeaveDataBase.getConnection;publicclass leaveList extendsJFrame{publicleaveList(Student student){List<LeaveData> dataList =newArrayList<LeaveData>();try{//查询数据库对应该学生学号的数据Connection conn =getConnection();Statement stmt =null;
            stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);ResultSet rs = stmt.executeQuery("SELECT *FROM LeaveData WHERE id='"+ student.getId()+"';");if(rs.isBeforeFirst()){while(rs.next()){LeaveData leaveData =newLeaveData();
                    leaveData.setNum(rs.getString(1));
                    leaveData.setName(rs.getString(2));
                    leaveData.setID(rs.getString(3));
                    leaveData.setSex(rs.getString(4));
                    leaveData.setAge(rs.getString(5));
                    leaveData.setFaculties(rs.getString(6));
                    leaveData.setProfession(rs.getString(7));
                    leaveData.setClassName(rs.getString(8));
                    leaveData.setPhone(rs.getString(9));
                    leaveData.setRequestData(rs.getString(10));
                    leaveData.setStartTime(rs.getString(11));
                    leaveData.setEndEime(rs.getString(12));
                    leaveData.setReason(rs.getString(13));
                    leaveData.setApprover(rs.getString(14));
                    leaveData.setApprovalReason(rs.getString(15));
                    leaveData.setState(rs.getString(16));
                    dataList.add(leaveData);}}else{JOptionPane.showMessageDialog(this,"无请假历史数据!","提示",JOptionPane.ERROR_MESSAGE);}
            rs.close();
            stmt.close();}catch(Exception ex){thrownewRuntimeException(ex);}String[] columnName =newString[]{"编号","申请日期","开始时间","结束时间","申请理由","审核人","审核意见","状态"};String[][] columnDate =newString[dataList.size()][];for(int i =0; i < dataList.size(); i++){LeaveData d = dataList.get(i);
            columnDate[i]=newString[]{d.getNum(), d.getRequestData(), d.getStartTime(), d.getEndEime(), d.getReason(), d.getApprover(), d.getApprovalReason(), d.getState()};}this.setLayout(null);// 绝对布局setSize(680,522);// 设置界面大小this.setVisible(true);this.setTitle("查询");setResizable(false);// 设置界面大小不可改变setLocationRelativeTo(null);// 设置登录界面居中this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);// 设置默认关闭操作JLabel title =newJLabel("请假信息列表");
        title.setFont(newFont("宋体",Font.PLAIN,22));
        title.setBounds(260,10,180,50);this.add(title);DefaultTableModel dtm =newDefaultTableModel(columnDate, columnName);JTable jtable =newJTable(dtm){//可选择表格行,但不可编辑publicbooleanisCellEditable(int row,int column){returnfalse;}};
        jtable.setShowVerticalLines(false);//去掉竖线DefaultTableCellRenderer r =newDefaultTableCellRenderer();//此三行 内容居中
        r.setHorizontalAlignment(JLabel.CENTER);
        jtable.getTableHeader().setReorderingAllowed(false);//  表头不可拖动
        jtable.setDefaultRenderer(Object.class, r);JScrollPane scrollPane =newJScrollPane();//直接添加容器,表头不显示
        scrollPane.setBounds(30,70,600,370);this.add(scrollPane);
        scrollPane.setViewportView(jtable);//给table加上一个鼠标事件监听器对象
        jtable.addMouseListener(newMouseAdapter(){publicvoidmouseReleased(java.awt.event.MouseEvent e){//是否左建双击if(e.getClickCount()==2&&SwingUtilities.isLeftMouseButton(e)){//添加双击后的int count = jtable.getSelectedRow();//获取你选中的行号String[] datarow =newString[]{"","","","","","","",""};for(int i =0; i < datarow.length; i++){String getname = jtable.getValueAt(count, i).toString();//读取获取行号的某一列的值
                        datarow[i]= getname;}newJtablePopUps(datarow);}}});JLabel tip =newJLabel("tip:双击表行可以查看其详细信息!");
        tip.setFont(newFont("宋体",Font.PLAIN,12));
        tip.setBounds(30,435,300,50);this.add(tip);}}

注:完整内容可下载查看完整报告

下载链接
https://download.csdn.net/download/weixin_66397563/87976888

标签: java python 数据库

本文转载自: https://blog.csdn.net/weixin_66397563/article/details/131491837
版权归原作者 汐ya~ 所有, 如有侵权,请联系我们删除。

“【java 程序设计实训】学生请假管理系统”的评论:

还没有评论