新手学Java——校园信息管理(TCP+GUI+JDBC)

1.1开发环境及工具:

        Intellij IDEA 、MySQL数据库、JDK 18

1.2项目背景和内容概要

本系统基于显示在线学习中教师对学生的教学、作业的发布与检查进行显示。本次练习将实现账号管理、数据查询、删除数据及相应的GUI设计

模块名称

子模块

模块执行人

模块说明

账号管理

账号登录

管理员、教师、学生

登录

修改密码

管理员、教师、学生

修改密码

账号退出

管理员、教师、学生

退出登录

数据查询

教师信息

管理员、教师

查看教师相关信息

学生信息

教师、学生

查看学生相关信息

学生成绩信息

教师、学生

查看学生成绩

删除数据

删除教师数据

管理员

信息删除

删除学生数据

管理员、教师

信息删除

删除成绩信息

教师

信息删除

1.3 相关资料 数据字典

  1. 管理员资料

      

  

账号

account

Varchar(10)

密码

password

Varchar(20)

  1. 教师信息

       

  

账号

Account

Varchar(10)

密码

password

Varchar(20)

教师编号

id

int

姓名

name

Varchar(5)

性别

gender

Varchar(1)

学科

subject

Varchar(10)

  1. 学生信息

      

  

账号

account

Varchar(10)

密码

password

varchar(20)

学号

id

int

姓名

name

Varcahr(5)

性别

Gender

Varchar(1)

4.成绩表信息

      

  

编号

Id

Int

学生编号

Sid

int

教师编号

Tid

int

学科

subject

Varcahr(10)

成绩

score

int

服务端

        接收消息后分析结构,获取必要的指令,进行数据库的操作并返回客户端需要的信息

客户端

        在GUI界面添加监听器,获取指令后修改为一定格式的数据发送给服务端进行处理

        在接收到服务端发送的数据后以特定的形势展示

1,登录

 界面展示

右边框可以输入相关信息查询、列表双击信息删除行(管理员都可以删除,教师只能管理学生和成绩信息、学生不能修改只能查询),添加键有添加界面,输入信息点击确认后加入数据库

 

查询

 密码修改

 

 删除设计为双击删除不便于演示,后期在查询旁加了一个“添加”按钮实现新增。

增加效果图如下

 

存在问题:

客户端TCP通讯连接会在发送接收后随着BfferedWriter或BufferedRead管道关闭而断开,因此需要不断地创造Socket连接,不能实现用户间的交流功能。

如果使用JtestField用于信息展示,在服务端用txt储存消息可以实现论坛形势的通信(即所有人可见)

部分代码

服务端接收用if判断区别

if ("登录".equals(mess.split("/")[0])) {
          send.condition1(server,mess,port);
 } else if ("修改密码".equals(mess.split("/")[0]))
  {
         send.condition2(server,mess,port);
 } else if ( "获取".equals(mess.split("/")[0])) {
         if(mess.split("/").length==2){
                  send.condition3(server,mess,port);
         }else{
                 send.condition4(server,mess,port);
               }
} else if ("添加".equals(mess.split("/")[0])) {
        send.condition5(server,mess,port);
  } else if("修改".equals(mess.split("/")[0])){
        send.condition6(server,mess,port);
  } else {
         a = "你输入的命令错误,请重新输入";
          send.sendString(server, a, server.getPort(),port);
 }

客户端界面

以管理员主界面为例

JFrame page=setframe("主页面");

        Box top =Box.createVerticalBox();
        Box view =Box.createHorizontalBox();
        JLabel title = new JLabel("管理员账号:"+a);
        title.setFont(new Font(Font.SANS_SERIF,Font.BOLD,20));
        view.add(Box.createHorizontalStrut(20));
        view.add(title);
        top.add(Box.createVerticalStrut(20));
        top.add(view);
        page.add(top,BorderLayout.NORTH);


        JTabbedPane Tabs = new JTabbedPane();
        Tabs.add("教师列表",RshowTeancher());
        Tabs.add("学生列表", showStudent());
        page.add(Tabs);

        Box bot =Box.createVerticalBox();
        Box look =Box.createHorizontalBox();
        JButton pw = new JButton("修改密码");
        JButton out = new JButton("退出登录");
        look.add(Box.createHorizontalStrut(20));
        look.add(pw);
        look.add(Box.createHorizontalStrut(20));
        look.add(out);
        bot.add(Box.createVerticalStrut(30));
        bot.add(look);
        bot.add(Box.createVerticalStrut(20));
        page.add(bot,BorderLayout.SOUTH);

        pw.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                String m="修改密码/管理员/"+a+"/"
                        +JOptionPane.showInputDialog(page,"请输入修改的密码:","修改密码",JOptionPane.INFORMATION_MESSAGE);
                String a= cli.getString(m);
                if("修改成功".equals(a)){
                    JOptionPane.showMessageDialog(page,"修改成功","修改密码",JOptionPane.INFORMATION_MESSAGE);
                }else {
                    JOptionPane.showMessageDialog(page,"修改失败","修改密码",JOptionPane.WARNING_MESSAGE);
                }
            }
        });

        out.addMouseListener((new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                page.setVisible(false);
                login().setVisible(true);
            }
        }));

        page.setVisible(true);

Jtabbedpane以有修改权限教师表展示

Box re =Box.createHorizontalBox();
        String[] clo = {"教师编号","姓名","学科","账号"};
        String[][] val =getTtabs(re);
        DefaultTableModel tableModel = new DefaultTableModel(val, clo);
        JTable tab=new JTable(tableModel){
            @Override
            public boolean isCellEditable(int row, int column) {
                return false;
            }
        };
        JScrollPane scroll = new JScrollPane(tab);
        re.add(scroll);
        re.add(Box.createHorizontalStrut(5));

        Box sel =Box.createVerticalBox();
        sel.add(Box.createVerticalStrut(40));
        JTextField gra = new JTextField(2);
        JTextField cla = new JTextField(2);
        JTextField id = new JTextField(2);
        sel.add(new JLabel("编号:"));
        sel.add(gra);
        sel.add(Box.createVerticalStrut(3));
        sel.add(new JLabel("名字:"));
        sel.add(cla);
        sel.add(Box.createVerticalStrut(3));
        sel.add(new JLabel("科目:"));
        sel.add(id);
        sel.add(Box.createVerticalStrut(15));
        Box but =Box.createHorizontalBox();
        JButton button = new JButton("查询");
        but.add(button);
        JButton cre=new JButton("添加");
        but.add(cre);
        sel.add(but);
        sel.add(Box.createVerticalStrut(10));
        re.add(sel);
        //设置双击删除
        tab.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                if(e.getClickCount()==2) {
                    String sql ="修改/教师/delete from Teacher where id="+tableModel.getValueAt(tab.getSelectedRow(),0);
                    String b =cli.getString(sql);
                    String[][] getval=getTtabs(re);
                    tableModel.setDataVector(getval,clo);
                }
            }
        });
        //查询
        button.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                String port="";
                String[] a = {gra.getText(),cla.getText(),id.getText()};
                if(a[0].length()>0||a[1].length()>0||a[2].length()>0) {
                    port += "where ";
                    if (a[0].length() > 0) {
                        port += "id='" + a[0] + "' and";
                    }
                    if (a[1].length() > 0) {
                        port += " name='" + a[1] + "' and";
                    }
                    if (a[2].length() > 0) {
                        port += " subject='" + a[2] + "' and";
                    }
                    port = port.substring(0, port.length() - 3);
                }
                String[][] getval = getTtabs(re,port);
                tableModel.setDataVector(getval,clo);
            }
        });
        //设置添加
        cre.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                addTpage().setVisible(true);
            }
        });

        return re;

添加界面,以教师添加为例

JFrame page=setframe("添加教师");

        Box a= Box.createHorizontalBox();
        Box b=Box.createVerticalBox();
        Box c= Box.createHorizontalBox();
        c.add(new JLabel("账号:"));
        JTextField c1 = new JTextField();
        c.add(c1);
        Box d= Box.createHorizontalBox();
        d.add(new JLabel("密码:"));
        JTextField d1 = new JTextField();
        d.add(d1);
        Box e= Box.createHorizontalBox();
        e.add(new JLabel("姓名:"));
        JTextField e1 = new JTextField();
        e.add(e1);
        Box f= Box.createHorizontalBox();
        f.add(new JLabel("性别:"));
        JTextField f1 = new JTextField();
        f.add(f1);
        Box g= Box.createHorizontalBox();
        g.add(new JLabel("学科:"));
        JTextField g1 = new JTextField();
        g.add(g1);
        Box h= Box.createHorizontalBox();
        JButton but1 = new JButton("确定");
        h.add(but1);
        JButton but2 = new JButton("取消");
        h.add(but2);

        b.add(Box.createVerticalStrut(100));
        b.add(c);
        b.add(Box.createVerticalStrut(20));
        b.add(d);
        b.add(Box.createVerticalStrut(20));
        b.add(e);
        b.add(Box.createVerticalStrut(20));
        b.add(f);
        b.add(Box.createVerticalStrut(20));
        b.add(g);
        b.add(Box.createVerticalStrut(50));
        b.add(h);
        b.add(Box.createVerticalStrut(100));
        a.add(Box.createHorizontalStrut(200));
        a.add(b);
        a.add(Box.createHorizontalStrut(200));
        page.add(a);
        but2.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                page.setVisible(false);
            }
        });

        but1.addMouseListener(new MouseAdapter() {
            @Override
            public void mouseClicked(MouseEvent e) {
                String a ="添加/insert into Teacher(account,password,name,gender,subject) value("
                        +c1.getText()+","+d1.getText()+","+e1.getText()+","+f1.getText()+","+g1.getText()+")";
                String b=cli.getString(a);
                JOptionPane.showMessageDialog(page,b,"提示",JOptionPane.INFORMATION_MESSAGE);
                page.setVisible(false);
            }
        });
        return page;

其余板块模板相似

链接:百度网盘 请输入提取码

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

wantobebetter

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

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

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

打赏作者

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

抵扣说明:

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

余额充值