Java编写的教室管理系统 带详细设计报告 功能非常齐全 完整源码

今天为大家分享一个java语言编写的教室管理系统,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步

开发环境

开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。

系统框架

利用JDK自带的SWING框架开发。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。

系统介绍

3.1 项目背景

教室信息管理系统是一个教育单位不可缺少的部分。一个功能齐全、简单易用的信息管理系统不但能有效地减轻学校各类工作人员的工作负担,它的内容对于学校的决策者和管理者来说都至关重要,基于这个目的我们这次课程设计选择教师管理系统做为我们的题目

3.2 项目目的

教室管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面.对于前者要求建立数据一致性和完整性强,数据安全性好的数据库.而对于后者则要求应用程序功能完备,易使用等特点。在学校,教室信息管理包括教室信息,显然如果以人工的方式对其管理将耗费大量的人力、物力,本系统以此作为开发的目标,用以减轻教室管理人员的负担。

3.3 软件定义

教师管理系统的分两种用户类型:普通老师和系统管理员。其中普老师包括查询,和修改自己的信息,查看教师排课安排等;系统管理员的操作包括老师的增删改、教室排课的增删该查等功能。

系统中需要有4个实体,教室,课程,老师,安排三个实体。

其中教师包括(id,Gonghao,Password,Teachername,Zhicheng,role)

教室实体包括(id,name,device,capacity)

课程的实体包括:(id,coursename,score)

教室安排的实体包括:(id,jiaoshi_id,teacher_id,course_id,week,shijian)

系统运行效果

5.1 用户登录

登陆模块是用户输入用户名和密码,系统对输入的在数据库中进行校验,校验通过则跳转到主界面,不通过则提示原因,返回主界面,如图5.1所示。

5.2 系统主界面

用户登录成功后,跳转到主界面,主界面有4个主要功能:系统退出,老师管理,教室管理,教室安排管理。系统管理员具有所有功能。普通老师只能查看和自己的信息,查看教室,查看安排,不能进行修改。只有管理员才有权利进行修改。

5.3 显示所有教室

进入主界面后,点击教室菜单下的显示所有记录,可以看到系统所有记录,记录显示在Jtable

5.4 新增教室

5.5 修改教室

5.6 显示所有老师信息

5.7 新增教室安排信息

进入主界面后,点击教室安排菜单下的新增教室安排,跳出教室新增安排界面。需要选择教室,老师,上课日期,开始时间,结束时间。系统会检测是否有冲突,如有冲突,则提示需要调整时间。

关键代码

public class Login extends JFrame implements ActionListener{
    //定义登陆窗口需要的组件
    JLabel jl1,jl2,jl3;
    JTextField jtf1;
    JPasswordField jpf1;
    JButton jb1,jb2;
    int width,height;
    
    //定义用于连接数据库的组件,也就是com.SqlConnection类下的SqlConn方法
    SqlConn sqlconn;
    //定义用于传送SQL语句的变量
    String sql;
    //定义一个用于接收登陆验证返回来的记录集
    ResultSet rs;
    //声明用于验证登陆用户的模型
    LoginModel loginModel;
    int flag;
    public static void main(String []args)
    {
        Login login=new Login();
    }
    public Login()
    {
        
        //创建登陆所需的组件
    
        jl1=new JLabel("账 号:");
        jl1.setFont(MyFont.f1);
        jl1.setBounds(50,50,60,25);
        jl2=new JLabel("密 码:");
        jl2.setFont(MyFont.f1);
        jl2.setBounds(50,90,60,25);
        
        jtf1=new JTextField(20);
        jtf1.setBounds(110,50,150,25);
        //设置文本框下凹,三维效果
        jtf1.setBorder(BorderFactory.createLoweredBevelBorder());
        jpf1=new JPasswordField(20);
        jpf1.setBorder(BorderFactory.createLoweredBevelBorder());
        jpf1.setBounds(110,90,150,25);
    
        jb1=new JButton("登 陆");
        jb1.setFont(MyFont.f1);
        jb1.addActionListener(this);
        jb1.setBounds(95,130,75,25);
        
        jb2=new JButton("取消");
        jb2.setFont(MyFont.f1);
        jb2.addActionListener(this);
        jb2.setBounds(185,130,75,25);
        
        //添加到窗体
        //先设置窗体的空布局
        this.setLayout(null);
        this.add(jl1);
        this.add(jtf1);
        this.add(jl2);
        this.add(jpf1);
        this.add(jb1);
        this.add(jb2);
        
        //创建一个BackImage对象
        BackImage bi=new BackImage();
        //设定图片的位置
        bi.setBounds(0,0,350,250);
        this.add(bi);
        this.setSize(350,250);
        this.setTitle("<-教室管理信息系统登陆窗口-->");
        //设置窗口在屏幕的初始位置
        width=Toolkit.getDefaultToolkit().getScreenSize().width;
        height=Toolkit.getDefaultToolkit().getScreenSize().height;
        this.setLocation(width/2-180, height/2-180);
        //设置窗口不可改变大小
        this.setResizable(false);
        //注意:************设置窗口的背景颜色,由于是继承Swing包,所以必须先得到窗口的一个面板,然后再通过这个面板去设置背景色,否则设置不显示出来
        //this.getContentPane().setBackground(Color.gray);
        
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
    
    //创建一个内部类,并继承JPanle,用于画背景图片
    class BackImage extends JPanel
    {
        Image im;
        public BackImage(){
            try
            {
                im=ImageIO.read(new File("Image/login.gif"));
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
        }
        //要把图片画到JPanle,需要重写一个Paint方法
        public void paint(Graphics g) //此处的paint中的p是小写,
        //如果是大写,则就是重写paint方法了,而是一个新的方法了,那么后面的图片是不会输出的
        {
            g.drawImage(im,0,0,350,250,this);
        }
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        // TODO Auto-generated method stub
        //如果说点击了登陆按钮 
        if(e.getSource()==jb1)
        {
            //获取输入的用户名和密码
            String username=jtf1.getText().trim();
            System.out.println("username="+username);
            String password=new String(jpf1.getPassword());//此处不能通过getText()来获取,从安全角度考虑,通过getPassword()来获取,即可通过new String这便是数组
            System.out.println("password="+password);
            //调用处理登陆用户验证的模型
            loginModel=new LoginModel();
            flag=loginModel.checkUser(username,password);
            //判断用户名和密码是否正确username
            if(flag==0)
            {
                
                MyFont.usertype="系统管理员";
                MyFont.username=username;
                new ManageView("系统管理员");
                this.dispose();
            }
            if(flag==1)
            {
                MyFont.usertype="老师";
                MyFont.username=username;
                new ManageView("老师");
                this.dispose();
            }
            if(flag==2)
            {
                System.out.println("slsl");
                JOptionPane.showMessageDialog(this, "用户名或密码错误!");
            }
            
        }
        else if(e.getSource()==jb2)
        {
            System.exit(0);
        }
    }
}

  • 10
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 8
    评论
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

计算机程序

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值