目录

前言

一、学生成绩管理系统

1.界面展示

2.主要代码

二、销售管理系统

三、汽车租赁系统

四、设计文档模板

五、其他版本

五、小Tips


前言

临近期末,很多同学私信博主问Java项目,在这里给大家分享几个博主手写的java带图形化界面的小demo,供大家参考。

一、学生成绩管理系统

1.界面展示

登陆界面:

主页面

修改学生

2.主要代码

登录:

package code.student.view;import code.handler.LoginViewHandler;import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.net.URL;public class LoginView extends JFrame{JLabel nameLabel = new JLabel("学生成绩管理项目", JLabel.CENTER); // 设置标题为水平居中SpringLayout springLayout = new SpringLayout();JPanel centerPanel = new JPanel(springLayout); // 设置面板的布局为弹簧布局JLabel userNameLabel = new JLabel("用户名:");JTextField userTxt = new JTextField();JLabel pwdLabel = new JLabel("密  码:");JPasswordField pwdField = new JPasswordField();JButton loginBtn = new JButton("登录");JButton resetBtn = new JButton("重置");JLabel register = new JLabel("立即注册");// 定义系统托盘SystemTray systemTray; // SystemTray类表示桌面的系统托盘// 定义托盘对象TrayIcon trayIcon; // TrayIcon对象表示可以添加到系统托盘的托盘图标LoginViewHandler loginHandler;public LoginView() {super("学生成绩管理项目"); // 设置项目标题loginHandler = new LoginViewHandler(this);// 获取内容面板// 父类有一个获取ContentPane对象的方法,将获取到的东西赋给contentPaneContainer contentPane = getContentPane();// 设置标题字体nameLabel.setFont(new Font("华文行楷", Font.PLAIN, 40));// 设置宽高nameLabel.setPreferredSize(new Dimension(0, 80));// 设置中间区域的字体Font centerFont = new Font("楷体", Font.PLAIN, 20);userNameLabel.setFont(centerFont);userTxt.setPreferredSize(new Dimension(200, 30));pwdLabel.setFont(centerFont);pwdField.setPreferredSize(new Dimension(200, 30));loginBtn.setFont(centerFont);resetBtn.setFont(centerFont);register.setFont(centerFont);// 把组件加入面板/*this.centerPanel.add();可以理解成:A a = new A();  --> 即JFrameContentPane contentPane = new ContentPane();contentPane = a.getContentPane();contentPane.add();*/this.centerPanel.add(userNameLabel);this.centerPanel.add(userTxt);this.centerPanel.add(pwdLabel);this.centerPanel.add(pwdField);loginBtn.addActionListener(loginHandler);this.centerPanel.add(register);register.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {int clickCount = e.getClickCount();if (clickCount == 1) {// 匿名内部类访问外边的setExtendedState(int state)方法,设置此窗体的状态为普通(即原本的大小)new RegisterView();setVisible(false);}}});// 增加按键事件loginBtn.addKeyListener(loginHandler);this.centerPanel.add(loginBtn);resetBtn.addActionListener(loginHandler);this.centerPanel.add(resetBtn);userTxt.setToolTipText("请输入正确的用户名");pwdField.setToolTipText("请输入正确的密码");// 弹簧布局layoutCenter();// 把标题和中间面板添加到内容面板contentPane.add(nameLabel, BorderLayout.NORTH);contentPane.add(this.centerPanel, BorderLayout.CENTER);
//        contentPane.add(register, BorderLayout.SOUTH);// 判断当前系统是否支持系统托盘if (SystemTray.isSupported()) {// 初始化系统托盘systemTray = SystemTray.getSystemTray();URL imgUrl = LoginView.class.getClassLoader().getResource("tray.jpg");// 初始化托盘对象trayIcon = new TrayIcon(new ImageIcon(imgUrl).getImage());// 设置托盘图片大小自动缩放trayIcon.setImageAutoSize(true);// 添加事件,增加最小化时销毁资源/*void windowIconified(WindowEvent e)窗口从正常状态变为最小化状态时调用*/this.addWindowListener(new WindowAdapter() {@Overridepublic void windowIconified(WindowEvent e) {try {// 把自定义的Icon托盘加入到系统托盘中(会抛出异常)systemTray.add(trayIcon);} catch (AWTException e1) {e1.printStackTrace();}// 因为它是匿名内部类,就要LoginView.this.dispose()LoginView.this.dispose();}});// 托盘事件监听(鼠标监听)trayIcon.addMouseListener(new MouseAdapter() {@Overridepublic void mouseClicked(MouseEvent e) {// 先获取鼠标点击的次数存入变量中int clickCount = e.getClickCount();if (clickCount == 1) {// 匿名内部类访问外边的setExtendedState(int state)方法,设置此窗体的状态为普通(即原本的大小)LoginView.this.setExtendedState(JFrame.NORMAL);}systemTray.remove(trayIcon);// 因为前面已经销毁这个界面,所以需要重新设置显示界面为trueLoginView.this.setVisible(true);}});}// 设置loginBtn为默认按钮getRootPane().setDefaultButton(loginBtn);// 自定义图标// getClassLoader()返回该类的类加载器// getResource(String name)查找带有给定名称的资源// 此处应该有用到注解反射知识/* 实际上java的每个类被编译成.class文件的时候,java虚拟机(叫jvm)会自动为这个类生成一个类对象,这个对象保存了这个类的所有信息(成员变量,方法,构造器等),以后这个类要想实例化(也就是创建类的实例或创建类的对象)那么都要以这个class对象为蓝图(或模版)来创建这个类的实例。*/URL imgUrl = LoginView.class.getClassLoader().getResource("image1.jpg");setIconImage(new ImageIcon(imgUrl).getImage());/*new ImageIcon(imgUrl).getImage()意思:先new上一个ImageIcon,在根据指定的 URL 创建一个 ImageIcon再由getImage()方法,返回此图标的 Image最后由JFrame容器里的setIconImage(Image image)方法,设置要作为此窗口图标显示的图像*/setSize(600, 400);setLocationRelativeTo(null); // 设置窗口居中显示setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(false);setVisible(true);}private void layoutCenter() {// 布局userNameLabel// 尽管 SpringLayout 简单易用,但它还要仿效其他多数布局管理器的行为。// 对于某些功能(如 FlowLayout 提供的行断开),需要创建一个 Spring 类的专用子类。Spring childWidth = Spring.sum(Spring.sum(Spring.width(userNameLabel),Spring.width(userTxt)), Spring.constant(20));int offsetX = childWidth.getValue() / 2; // 设置用户名水平方向居中springLayout.putConstraint(SpringLayout.WEST, userNameLabel, -offsetX,SpringLayout.HORIZONTAL_CENTER, centerPanel);// 设置用户名垂直方向居中springLayout.putConstraint(SpringLayout.NORTH, userNameLabel, 20, SpringLayout.NORTH, centerPanel);/*putConstraint(String e1, Component c1, int pad, String e2, Component c2)将组件 c1 的边 e1 连接到组件 c2 的边 e2,边与边之间的距离固定。*/// userTxt// userTxt的西边与userNameLabel的东边的距离为20springLayout.putConstraint(SpringLayout.WEST, userTxt, 20, SpringLayout.EAST, userNameLabel);// userTxt的北边与userNameLabel的北边的距离为0springLayout.putConstraint(SpringLayout.NORTH, userTxt, 0, SpringLayout.NORTH, userNameLabel);// pwdLabel// pwdLabel的东边与userNameLabel的东边的距离为0springLayout.putConstraint(SpringLayout.EAST, pwdLabel, 0, SpringLayout.EAST, userNameLabel);// pwdLabel的北边与userNameLabel的南边的距离为20springLayout.putConstraint(SpringLayout.NORTH, pwdLabel, 20, SpringLayout.SOUTH, userNameLabel);// pwdField// pwdField的西边与pwdLabel的东边的距离为20springLayout.putConstraint(SpringLayout.WEST, pwdField, 20, SpringLayout.EAST, pwdLabel);// pwdField的北边与pwdLabel的北边的距离为0springLayout.putConstraint(SpringLayout.NORTH, pwdField, 0, SpringLayout.NORTH, pwdLabel);// loginBtn// loginBtn的西边与pwdLabel的西边的距离为50springLayout.putConstraint(SpringLayout.WEST, loginBtn, 50, SpringLayout.WEST, pwdLabel);// loginBtn的北边与pwdLabel的南边的距离为20springLayout.putConstraint(SpringLayout.NORTH, loginBtn, 20, SpringLayout.SOUTH, pwdLabel);// resetBtn// resetBtn的西边与loginBtn的东边的距离为50springLayout.putConstraint(SpringLayout.WEST, resetBtn, 50, SpringLayout.EAST, loginBtn);// resetBtn的北边与loginBtn的北边的距离为0springLayout.putConstraint(SpringLayout.NORTH, resetBtn, 0, SpringLayout.NORTH, loginBtn);// register的西边与resetBtn的东边的距离为50springLayout.putConstraint(SpringLayout.WEST, register, 100, SpringLayout.EAST, resetBtn);// register的北边与resetBtn的北边的距离为0springLayout.putConstraint(SpringLayout.NORTH, register, 100, SpringLayout.SOUTH, resetBtn);}public static void main(String[] args) {new LoginView();}public JTextField getUserTxt() {return userTxt;}public void setUserTxt(JTextField userTxt) {this.userTxt = userTxt;}public JPasswordField getPwdField() {return pwdField;}public void setPwdField(JPasswordField pwdField) {this.pwdField = pwdField;}
}

主页面:

package code.student.view;import code.service.impl.StudentServiceImpl;
import code.student.view.ext.MainViewTableModel;
import code.util.DimensionUtil;
import code.handler.MainViewHandler;
import code.req.StudentRequest;
import code.res.TableDTO;
import code.service.StudentService;
import code.student.view.ext.MainViewTable;import javax.swing.*;
import java.awt.*;
import java.net.URL;public class MainView extends JFrame {JPanel northPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));JButton addBtn =  new JButton("增加");JButton updateBtn = new JButton("修改");JButton delBtn = new JButton("删除");JTextField searchTxt = new JTextField(15);JButton searchBtn = new JButton("查询");JPanel southPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));JButton exitBtn =  new JButton("安全退出");JButton preBtn = new JButton("上一页");JButton nextBtn = new JButton("下一页");MainViewTable mainViewTable = new MainViewTable();private int pageNow = 1; // 当前是第几页private int pageSize = 10; // 一页显示多少条记录MainViewHandler mainViewHandler;public MainView() {super("主界面-学生成绩管理项目");Container contentPane = getContentPane();Rectangle bounds = DimensionUtil.getBounds();// java.lang.Math.floorDiv() 第一个参数除以第二参数,然后针对结果执行floor操作,返回小于或等于商的整数(最接近正无穷大)pageSize = Math.floorDiv(bounds.height, 35);mainViewHandler = new MainViewHandler(this);searchTxt.setToolTipText("请输入要查询的姓名");// 放置北边的组件layoutNorth(contentPane);// 放置中间的jtablelayoutCenter(contentPane);// 放置南边的组件layoutSouth(contentPane);// 自定义图标URL imgUrl = LoginView.class.getClassLoader().getResource("image1.jpg");setIconImage(new ImageIcon(imgUrl).getImage());// 根据屏幕大小设置主界面大小setBounds(bounds);// 设置窗体完全充满整个屏幕的可见大小setExtendedState(JFrame.MAXIMIZED_BOTH);setLocationRelativeTo(null);setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setResizable(true);setVisible(true);}private void layoutCenter(Container contentPane) {TableDTO dto = getTableDTO();MainViewTableModel mainViewTableModel = MainViewTableModel.assembleModel(dto.getData());// 把jtable和model关联mainViewTable.setModel(mainViewTableModel);// 调用渲染规则mainViewTable.renderRule();JScrollPane jScrollPane = new JScrollPane(mainViewTable);contentPane.add(jScrollPane, BorderLayout.CENTER);showPreNext(dto.getTotalCount());}private TableDTO getTableDTO() {StudentService studentService = new StudentServiceImpl();StudentRequest request = new StudentRequest();request.setPageNow(pageNow);request.setPageSize(pageSize);request.setSearchKey(searchTxt.getText().trim());TableDTO tableDTO = studentService.retrieveStudents(request);return tableDTO;}private void layoutSouth(Container contentPane){preBtn.addActionListener(mainViewHandler);nextBtn.addActionListener(mainViewHandler);southPanel.add(preBtn);southPanel.add(nextBtn);contentPane.add(southPanel, BorderLayout.SOUTH);}/*设置上一页下一页是否可见*/private void showPreNext(int totalCount) {if (pageNow == 1) {preBtn.setVisible(false);} else {preBtn.setVisible(true);}int pageCount = 0;  // 总共有多少页if (totalCount % pageSize == 0) {pageCount = totalCount / pageSize;} else {pageCount = totalCount / pageSize + 1;}if (pageNow == pageCount) {nextBtn.setVisible(false);} else {nextBtn.setVisible(true);}}private void layoutNorth(Container contentPane) {// 增加事件监听addBtn.addActionListener(mainViewHandler);updateBtn.addActionListener(mainViewHandler);delBtn.addActionListener(mainViewHandler);searchBtn.addActionListener(mainViewHandler);exitBtn.addActionListener(mainViewHandler);northPanel.add(addBtn);
//        addBtn.setPreferredSize(new Dimension(80, 30));northPanel.add(updateBtn);
//        updateBtn.setPreferredSize(new Dimension(80, 30));northPanel.add(delBtn);
//        delBtn.setPreferredSize(new Dimension(80, 30));northPanel.add(searchTxt);searchTxt.setPreferredSize(new Dimension(200, 27));northPanel.add(searchBtn);
//        searchBtn.setPreferredSize(new Dimension(80, 30));northPanel.add(exitBtn);contentPane.add(northPanel, BorderLayout.NORTH);}public static void main(String[] args) {new MainView();}public int getPageNow() {return pageNow;}public void setPageNow(int pageNow) {this.pageNow = pageNow;}public int getPageSize() {return pageSize;}public void setPageSize(int pageSize) {this.pageSize = pageSize;}public void reloadTable() {TableDTO dto = getTableDTO();MainViewTableModel.updateModel(dto.getData());mainViewTable.renderRule();showPreNext(dto.getTotalCount());}public int[] getSelectedStudentIds() {int[] selectedRows = mainViewTable.getSelectedRows();int[] ids = new int[selectedRows.length];for (int i = 0; i < selectedRows.length; i++) {int rowIndex = selectedRows[i];Object idObj = mainViewTable.getValueAt(rowIndex, 0);ids[i] = Integer.valueOf(idObj.toString());}return ids;}
}

二、销售管理系统

三、汽车租赁系统

四、设计文档模板

五、其他版本

文中展示的是Java Swing版本

Java控制台版本及JavaWeb版或框架集成版请参考博主的其他文章哦

Java课程设计控制台版

JavaWeb课程设计SSM整合版

线上地址:

http://119.91.205.91

账号:Admin 密码:123456

五、小Tips

期末将至,大家都想拥有一个满意的成绩。需要定制化功能需求的小伙伴可以私信我,源码、调试、文档、答辩一站式服务,一对一coding,尽可能的满足大家的需求,没有全栈博主解决不了的,有任何问题可以在评论区提,我会一一回复。如果大家觉得有用,就点赞、收藏、转发吧,创作不易,点赞是最好的鼓励。

Java期末作业-各种系统设计相关推荐

  1. java期末作业_JAVA期末大作业 中国跳棋

    PS:这学期期末成绩差不多出完了,接下来会陆续把这学期课程中的代码陆续扔到这里来以便后人****,同时自己也留个纪念. 本学期选了java选修,期末大作业面向GitHub编程写了个中国跳棋.代码中还有 ...

  2. Java 期末作业网址

    Github 用户名:2018212212108 https://github.com/2018212212108/JAVA.git CSDN 用户名:胡一NN https://blog.csdn.n ...

  3. 专家推荐Java期末作业——王者荣耀的洛克王国版游戏

    目录标题 最近肥学在刷 Java 毕竟学业将至不得不为后面的道路考虑啊,做后端的不了解 Java 基础和学几个主流框架怎么也说不过去吧.然后我就试着写了我这个 Java 新手都能完成的 王者荣耀洛克王 ...

  4. Java期末作业——王者荣耀的洛克王国版游戏

    目录标题

  5. Springboot礼品商城系统设计与实现q92av计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot礼品商城系统设计与实现q92av计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot礼品商城系统设计与实现q92av计算机毕业设计-课程设计-期末 ...

  6. Springboot就业推荐系统qwy6c计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot就业推荐系统qwy6c计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot就业推荐系统qwy6c计算机毕业设计-课程设计-期末作业-毕设程序代做 ...

  7. Springboot就业招聘信息系统x8y1g计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot就业招聘信息系统x8y1g计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot就业招聘信息系统x8y1g计算机毕业设计-课程设计-期末作业-毕设程 ...

  8. Springboot考研网上辅导系统fu1ei计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot考研网上辅导系统fu1ei计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot考研网上辅导系统fu1ei计算机毕业设计-课程设计-期末作业-毕设程 ...

  9. Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做

    Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做 [免费赠送源码]Springboot快递管理系统1k61h计算机毕业设计-课程设计-期末作业-毕设程序代做 ...

最新文章

  1. 只在必要时保存服务器控件视图状态
  2. tengine简单安装_Tengine介绍和安装
  3. 解决ubuntu的chkconfig[/sbin/insserv 无法找到路径问题]
  4. servlet api.jar是干什么的?
  5. ssh全屏退出的办法
  6. 解决Python中文注释报错
  7. DPDK QOS1 -- Linux HQOS的框架
  8. web渗透--4--web渗透测试清单
  9. 矩阵按键原理和BUG
  10. cad卸载工具_「Windows」不足10M的卸载软件,卸载得可真干净啊
  11. ie浏览器多开-----同时登陆多个账号
  12. 一场精彩的比赛——2019年ACM新生赛
  13. 【Win10电脑更新】Win10电脑更新后小娜Cortana不能登录、咨询和兴趣不能查看的问题怎么解决
  14. python量化策略——改进的美林时钟轮动策略(二)
  15. 12306火车余票查询
  16. 租用gpu训练神经网络(矩池云)
  17. 四川成都攻防大赛技术细节
  18. (ISC)² 2021年会暨网络安全峰会
  19. 分享一个Qt实现的AI版俄罗斯方块
  20. 海蜘蛛系统日志怎么保存到服务器,海蜘蛛软路由网络设置的操作步骤

热门文章

  1. 蚂蚁借呗总利息计算——每月等额(等额本息)
  2. python实现电话簿
  3. django批量修改table_django formset实现数据表的批量操作的示例代码
  4. Keil5-MDK 使用编译步骤及异常与修改(生成axf文件和bin文件)
  5. ALGO-986 藏匿的刺客 C++
  6. 什么是统一身份认证?
  7. 游戏编程模式 - 观察者模式
  8. 深入学习VMware vSphere---基础知识
  9. 通过CSS3的hover一个元素使其兄弟元素也相应改变某种属性
  10. Linux命令详解(2) – mv