Java项目:考试系统Java基础Gui(java+Gui)
源码获取:博客首页 "资源" 里下载!
功能简介:
所属课程、题目内容、题目选项、题目答案、题目等级、学生管理、试卷管理、题目管理、时间控制
服务页面:
public class ServerClient extends javax.swing.JFrame {/** // 注入TitleManage private TitleManage titleManage = new TitleManageImp();* // 注入UserManage private UserManage userManage = new UserManageImp();*//*** */private static final long serialVersionUID = 1L;/** Creates new form ServerClient */public ServerClient() {initComponents();this.setVisible(true);}/*** This method is called from within the constructor to initialize the form.* WARNING: Do NOT modify this code. The content of this method is always* regenerated by the Form Editor.*/// GEN-BEGIN:initComponents// <editor-fold defaultstate="collapsed" desc="Generated Code">private void initComponents() {setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {int var = JOptionPane.showConfirmDialog(ServerClient.this,"确定离开吗?");if (var == JOptionPane.YES_OPTION) {System.exit(0);}}});jMenuBar1 = new javax.swing.JMenuBar();jMenu1 = new javax.swing.JMenu();jMenuItem1 = new javax.swing.JMenuItem();jMenuItem2 = new javax.swing.JMenuItem();jMenuItem3 = new javax.swing.JMenuItem();jMenuItem4 = new javax.swing.JMenuItem();jMenu2 = new javax.swing.JMenu();jMenu1.setText("\u83dc\u5355");jMenuItem1.setText("\u9898\u76ee\u7ba1\u7406");jMenu1.add(jMenuItem1);// 增加对题目管理的事件jMenuItem1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new TitleManageFrame();}});jMenuItem2.setText("\u5b66\u751f\u7ba1\u7406");jMenu1.add(jMenuItem2);jMenuItem3.setText("试卷管理");jMenu1.add(jMenuItem3);jMenuItem3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new CreatePaper();}});jMenuItem4.setText("退出");jMenu1.add(jMenuItem4);jMenuItem4.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubSystem.exit(0);}});// 添加学生管理的事件jMenuItem2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {new StudentManageFrame();}});jMenuBar1.add(jMenu1);jMenu2.setText("帮助");jMenuBar1.add(jMenu2);setJMenuBar(jMenuBar1);javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());getContentPane().setLayout(layout);{jLabel1 = new JLabel();}layout.setVerticalGroup(layout.createSequentialGroup().addContainerGap().addComponent(jLabel1, 0, 398,Short.MAX_VALUE));layout.setHorizontalGroup(layout.createSequentialGroup().addComponent(jLabel1, 0, 665, Short.MAX_VALUE));jLabel1.setIcon(new ImageIcon(getClass().getResource("exam1.jpg")));pack();// 置中this.setLocationRelativeTo(null);// 固定大小setResizable(false);}// </editor-fold>// GEN-END:initComponents/*** @param args* the command line arguments*/// GEN-BEGIN:variables// Variables declaration - do not modifyprivate javax.swing.JMenu jMenu1;private javax.swing.JMenu jMenu2;private javax.swing.JMenuBar jMenuBar1;private JLabel jLabel1;private javax.swing.JMenuItem jMenuItem1;private javax.swing.JMenuItem jMenuItem2;private javax.swing.JMenuItem jMenuItem3;private javax.swing.JMenuItem jMenuItem4;// End of variables declaration//GEN-END:variables}
学生页面服务:
public class UpdateStudentFrame extends javax.swing.JFrame {private static final long serialVersionUID = 1L;/*** Auto-generated main method to display this JFrame*/private JButton jButton1;private JLabel jLabel2;private JTextField jTextField4;private JTextField jTextField3;private JTextField jTextField2;private JTextField jTextField1;private JButton jButton2;private JLabel jLabel1;private JLabel jLabel10;private JLabel jLabel7;private JLabel jLabel8;private JPanel jPanel1;private User user;private int paper;/*** */// 注入UserManageprivate static UserManage userManage = new UserManageImp();public UpdateStudentFrame(User user, int paper2) {super();this.user = user;this.paper = paper2;initGUI();}private void initGUI() {try {setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);getContentPane().setLayout(null);{jPanel1 = new JPanel();getContentPane().add(jPanel1);jPanel1.setBounds(0, -100, 562, 458);jPanel1.setLayout(null);{jLabel1 = new JLabel();jPanel1.add(jLabel1);jLabel1.setText("\u9898\u76ee\u5185\u5bb9");jLabel1.setBounds(67, 48, 91, 33);}{jLabel7 = new JLabel();jPanel1.add(jLabel7);jLabel7.setText("\u5b66\u751f\u59d3\u540d");jLabel7.setBounds(135, 195, 68, 17);}{jButton1 = new JButton();jPanel1.add(jButton1);jButton1.setText("\u4fee\u6539");jButton1.setBounds(226, 361, 67, 24);}{jButton2 = new JButton();jPanel1.add(jButton2);jButton2.setText("\u6e05\u7a7a");jButton2.setBounds(351, 361, 68, 24);}{jLabel8 = new JLabel();jPanel1.add(jLabel8);jLabel8.setText("\u5b66\u751f\u5bc6\u7801");jLabel8.setBounds(135, 253, 68, 17);}{jLabel10 = new JLabel();jPanel1.add(jLabel10);jLabel10.setText("\u8bd5\u5377\u7f16\u53f7");jLabel10.setBounds(135, 307, 68, 17);jLabel10.setOpaque(true);}{jLabel2 = new JLabel();jPanel1.add(jLabel2);jLabel2.setText("\u5b66\u751f\u7f16\u53f7");jLabel2.setBounds(135, 123, 91, 33);}{jTextField1 = new JTextField();jPanel1.add(jTextField1);jTextField1.setText(user.getUid() + "");jTextField1.setEditable(false);jTextField1.setBounds(238, 128, 181, 24);}{jTextField2 = new JTextField();jPanel1.add(jTextField2);jTextField2.setText(user.getName());jTextField2.setEditable(false);jTextField2.setBounds(238, 192, 181, 24);}{jTextField3 = new JTextField();jPanel1.add(jTextField3);jTextField3.setText(user.getPassword());jTextField3.setBounds(238, 250, 181, 23);}{jTextField4 = new JTextField();jPanel1.add(jTextField4);jTextField4.setText(paper + "");jTextField4.setEditable(false);jTextField4.setBounds(238, 304, 181, 23);}}pack();this.setSize(552, 391);setLocationRelativeTo(null);setVisible(true);jTextField1.setEditable(false);jTextField4.setEditable(false);// 修改密码事件jButton1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String name = jTextField2.getText();String password = jTextField3.getText();User user1 = new User();user1.setUid(user.getUid());user1.setName(name);user1.setPassword(password);Paper paper1 = new Paper();if (paper == 0) {paper1 = null;userManage.update(user1);} else {paper1.setPid(paper);user1.setPaper(paper1);userManage.update(user1);}JOptionPane.showMessageDialog(UpdateStudentFrame.this, "update success!!!");}});} catch (Exception e) {// add your error handling code heree.printStackTrace();}jButton2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {jTextField3.setText("");}});}}
添加标题页面:
public class AddTitleFrame extends javax.swing.JFrame {private static final long serialVersionUID = 1L;/*** Auto-generated main method to display this JFrame*/private JButton jButton1;private JButton jButton2;private JLabel jLabel1;private JLabel jLabel10;private JLabel jLabel11;private JLabel jLabel2;private JLabel jLabel3;private JLabel jLabel4;private JLabel jLabel5;private JLabel jLabel12;private JComboBox jComboBox3;private JComboBox jComboBox2;private JComboBox jComboBox1;private JTextField jTextField3;private JLabel jLabel6;private JLabel jLabel7;private JLabel jLabel8;private JLabel jLabel9;private JPanel jPanel1;private JTextArea jTextArea1;private JTextField jTextField1;private JTextField jTextField2;private JTextField jTextField4;private JComboBox jComboBox4;/*** */// 注入Serviceprivate TitleManage titleManage = new TitleManageImp();public AddTitleFrame() {super();initGUI();}public JTextField getJTextField2() {return jTextField2;}private void initGUI() {try {setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);getContentPane().setLayout(null);{jPanel1 = new JPanel();getContentPane().add(jPanel1);jPanel1.setBounds(0, 0, 723, 488);jPanel1.setLayout(null);{jLabel1 = new JLabel();jPanel1.add(jLabel1);jLabel1.setText("\u9898\u76ee\u5185\u5bb9");jLabel1.setBounds(67, 48, 91, 33);}{jTextArea1 = new JTextArea();jPanel1.add(jTextArea1);jTextArea1.setBounds(176, 22, 391, 86);}{jLabel2 = new JLabel();jPanel1.add(jLabel2);jLabel2.setText("A");jLabel2.setBounds(147, 150, 23, 17);}{jTextField1 = new JTextField();jPanel1.add(jTextField1);jTextField1.setBounds(195, 147, 131, 24);}{jLabel3 = new JLabel();jPanel1.add(jLabel3);jLabel3.setText("B");jLabel3.setBounds(392, 150, 26, 17);}{jTextField2 = new JTextField();jPanel1.add(getJTextField2());jTextField2.setBounds(436, 147, 131, 24);}{jLabel4 = new JLabel();jPanel1.add(jLabel4);jLabel4.setText("C");jLabel4.setBounds(147, 179, 14, 16);}{jLabel5 = new JLabel();jPanel1.add(jLabel5);jLabel5.setText("D");jLabel5.setBounds(392, 181, 20, 17);}{jLabel6 = new JLabel();jPanel1.add(jLabel6);jLabel6.setText("\u9898\u76ee\u9009\u9879");jLabel6.setBounds(67, 150, 59, 17);}{jLabel7 = new JLabel();jPanel1.add(jLabel7);jLabel7.setText("\u9898\u76ee\u7b54\u6848");jLabel7.setBounds(67, 229, 68, 17);}{jButton1 = new JButton();jPanel1.add(jButton1);jButton1.setText("\u589e\u52a0");jButton1.setBounds(188, 402, 67, 24);}{jButton2 = new JButton();jPanel1.add(jButton2);jButton2.setText("\u6e05\u7a7a");jButton2.setBounds(365, 402, 68, 24);}{jTextField4 = new JTextField();jPanel1.add(jTextField4);jTextField4.setBounds(436, 177, 131, 21);}{jLabel8 = new JLabel();jPanel1.add(jLabel8);jLabel8.setText("\u9898\u76ee\u96be\u5ea6");jLabel8.setBounds(67, 274, 68, 17);}{jLabel9 = new JLabel();jPanel1.add(jLabel9);jLabel9.setText("1---5\u4e4b\u95f4");jLabel9.setBounds(267, 277, 137, 17);}{jLabel10 = new JLabel();jPanel1.add(jLabel10);jLabel10.setText("\u9898\u76ee\u5206\u6570");jLabel10.setBounds(67, 327, 68, 17);jLabel10.setOpaque(true);}{jLabel11 = new JLabel();jPanel1.add(jLabel11);jLabel11.setText("0---100\u4e4b\u95f4");jLabel11.setBounds(267, 327, 137, 17);jLabel11.setOpaque(true);}{jTextField3 = new JTextField();jPanel1.add(jTextField3);jTextField3.setBounds(195, 176, 131, 24);}{ComboBoxModel jComboBox1Model = new DefaultComboBoxModel(new Integer[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 });jComboBox1 = new JComboBox();jPanel1.add(jComboBox1);jComboBox1.setModel(jComboBox1Model);jComboBox1.setBounds(176, 270, 73, 24);}{ComboBoxModel jComboBox2Model = new DefaultComboBoxModel(new String[] { "A", "B", "C", "D" });jComboBox2 = new JComboBox();jPanel1.add(jComboBox2);jComboBox2.setModel(jComboBox2Model);jComboBox2.setBounds(176, 225, 73, 24);}{ComboBoxModel jComboBox3Model = new DefaultComboBoxModel(new Integer[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11,12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33,34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44,45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66,67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77,78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88,89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100 });jComboBox3 = new JComboBox();jComboBox3.setMaximumRowCount(5);jPanel1.add(jComboBox3);jComboBox3.setModel(jComboBox3Model);jComboBox3.setBounds(176, 323, 73, 24);}{jLabel12 = new JLabel();jPanel1.add(jLabel12);jLabel12.setText("\u6240\u5c5e\u8bfe\u7a0b");jLabel12.setBounds(67, 116, 59, 17);}{ComboBoxModel jComboBox4Model = new DefaultComboBoxModel(new String[] {"JAVA SE", "MySql", "离散数学", "操作系统","计算机网络", "编译原理", "C语言", "C++", "汇编语言"});jComboBox4 = new JComboBox();jPanel1.add(jComboBox4);jComboBox4.setModel(jComboBox4Model);jComboBox4.setBounds(180, 117, 107, 24);}}pack();this.setSize(734, 526);setLocationRelativeTo(null);setVisible(true);// 增加题目事件jButton1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {String question = jTextArea1.getText();// System.out.println(question);String option = "A:" + jTextField1.getText() + ",B:"+ jTextField2.getText() + ",C:"+ jTextField3.getText() + ",D:"+ jTextField4.getText();String key = (String) jComboBox2.getSelectedItem();int level = (Integer) (jComboBox1.getSelectedItem());int score = (Integer) jComboBox3.getSelectedItem();String course = (String) jComboBox4.getSelectedItem();System.out.println(level);Title title = new Title();// title.setTid(1);title.setQuestion(question);title.setOption(option);title.setKey(key);title.setLevel(level);title.setScore(score);title.setCourse(course);titleManage.save(title);JOptionPane.showMessageDialog(AddTitleFrame.this, "add success!!!");}});} catch (Exception e) {// add your error handling code heree.printStackTrace();}jButton2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {jTextArea1.setText("");jTextField1.setText("");jTextField2.setText("");jTextField3.setText("");jTextField4.setText("");jComboBox1.setSelectedIndex(0);jComboBox2.setSelectedIndex(2);jComboBox3.setSelectedIndex(4);}});}}
源码获取:博客首页 "资源" 里下载!
相关文章:

软件工程需求设计说明书
Java即时通聊天程序 设计需求说明书 专业班级: 计本班1202班 项目组成员: 杨宗坤 刘瑞 满亚洲 指导教师: 张利峰 开始日期: 完成日期: 编写目的: 本说明书是在充分理解系统需求分析…

Nagios 安装文档
安装前的装备工作(1)解决安装Nagios的依赖关系:Nagios基本组件的运行依赖于httpd、gcc和gd。可以通过以下命令来检查nagios所依赖的rpm包是否已经安装完成:#yum -y install httpd gcc glibc glibc-common *gd* php php-mysql mysql mysql-server --skip-…

Comprehensive Guide to build a Recommendation Engine from scratch (in Python) / 从0开始搭建推荐系统...
https://www.analyticsvidhya.com/blog/2018/06/comprehensive-guide-recommendation-engine-python/, 一篇详细的入门级的推荐系统的文章,这篇文章内容详实,格式漂亮,推荐给大家. 下面是翻译,翻译关注的是意思&#x…

关于std::string 在 并发场景下 __grow_by_and_replace free was not allocated 的异常问题
使用string时发现了一些坑。 我们知道stl 容器并不是线程安全的,所以在使用它们的过程中往往需要一些同步机制来保证并发场景下的同步更新。 应该踩的坑还是一个不拉的踩了进去,所以还是记录一下吧。 string作为一个容器,随着我们的append 或…

Java项目:银行管理系统+文档Java基础Gui(java+Gui)
源码获取:博客首页 "资源" 里下载! 功能介绍: 登录、打印、取款、改密、转账、查询、挂失、存款、退卡 服务模块: public class atmFrame extends JFrame {private JPanel contentPane;private user user; // private…

ie旋转滤镜Matrix
旋转一个元素算是一个比较常见的需求了吧,在支持CSS3的浏览器中可以使用transform很容易地实现,这里有介绍:http://www.css88.com/archives/2168,这里有演示http://www.css88.com/tool/css3Preview/Transform.html,就不…

音频(3):iPod Library Access Programming Guide:Introduction
NextIntroduction介绍iPod库访问(iPod Library Access)让应用程序可以播放用户的歌曲、有声书、和播客。这个API设计使得基本播放变得非常简单,同时也支持高级的搜索和播放控制功能。iPod library access 通过打开iOS允许的音乐相关的广阔范围…

【2019/4/30】周进度报告
冲刺可以推迟了,但这不妨碍知识储备(另外这周看了看梦断代码,感觉还是很有意思的一本书)。 第七周所花时间约9个小时代码量700多行,主要是阅读代码为主(框架内代码)博客量1篇了解到的知识点 1.y…

关于 智能指针 的线程安全问题
先说结论,智能指针都是非线程安全的。 多线程调度智能指针 这里案例使用的是shared_ptr,其他的unique_ptr或者weak_ptr的结果都是类似的,如下多线程调度代码: #include <memory> #include <thread> #include <v…

Java项目:无库版商品管理系统(java+Gui+文档)
源码获取:博客首页 "资源" 里下载! 功能介绍: 添加商品、修改商品、删除商品、进货出货、查看流水、注册 登录业务处理: public class LoginView extends JFrame implements ComponentListener{private JPanel center…

LTE QCI分类 QoS
http://blog.163.com/gzf_lte/blog/static/20840310620130140057204/ http://blog.163.com/gzf_lte/blog/static/208403106201301403652527/ http://blog.sina.com.cn/u/1731932381 lte2010 QCI (QoS Class Identifier)同时应用于GBR和Non-GBR承载。一个QCI是一个值࿰…

CSS 单行溢出文本只显示部分内容
.cc-item div { width:175px; text-overflow:clip; //该属性适用于IE6,IE7 max-width:175px; //该属性适用于IE8,FF,谷歌}

Audio声音
转载于:https://www.cnblogs.com/kubll/p/10799187.html

Rocksdb Ribbon Filter : 结合 XOR-filter 以及 高斯消元算法 实现的 高效filter
文章目录前言XOR-filter 实现原理xor filter 的构造原理xor filter 构造总结XOR-filter 和 ADD-filter对比XOR-filter 在计算上的优化Ribbon filter高斯消元法总结参考前言 还是起源于前几天的Rocksdb meetup,其中Peter C. Dillinger 这位大佬分享了自己为rocksdb实…

Java项目:无库版银行管理系统(java+Gui+文档)
源码获取:博客首页 "资源" 里下载! 功能介绍: 注册用户、编辑用户、删除用户、存取款、查看流水 存入业务处理: public class depositFrame extends JFrame {private JPanel contentPane;private JTextField inputFiel…

iptables-save和iptables-restore
iptables-save用来把当前的规则存入一个文件里以备iptables-restore使用。它的使用很简单,只有两个参数:iptables-save [-c] [-t table]参数-c的作用是保存包和字节计数器的值。这可以使我们在重启防火墙后不丢失对包和字节的统计。带-c参数的iptables-s…

代码之美——Doom3源代码赏析2
http://www.csdn.net/article/2013-01-17/2813778-the-beauty-of-doom3-source-code/2 摘要:Dyad作者、资深C工程师Shawn McGrathz在空闲时翻看了Doom3的源代码,发出了这样的惊叹:“这是我见过的最整洁、最优美的代码!”“Doom 3的…

什么是JavaBean
按着Sun公司的定义,JavaBean是一个可重复使用的软件组件。实际上JavaBean是一种Java类,通过封装属性和方法成为具有某种功能或者处理某个业务的对象,简称bean。由于javabean是基于java语言的,因此javabean不依赖平台,具…

关于 linux io_uring 性能测试 及其 实现原理的一些探索
文章目录先看看性能AIO 的基本实现io_ring 使用io_uring 基本接口liburing 的使用io_uring 非poll 模式下 的实现io_uring poll模式下的实现io_uring 在 rocksdb 中的应用总结参考先看看性能 io_uring 需要内核版本在5.1 及以上才支持,liburing的编译安装 很简单&am…

添加引用方式抛出和捕获干净的WebService异常
转载:http://www.cnblogs.com/ahdung/p/3953431.html 说明:【干净】指的是客户端在捕获WebService(下称WS)抛出的异常时,得到的ex.Message就是WS方法中抛出的异常消息,不含任何“杂质”。 前提:…

Java项目:车租赁管理系统(java+Gui+文档)
源码获取:博客首页 "资源" 里下载! 功能介绍: 登陆界面、管理员界面、用户界面、汽车租赁文档 系统主页: SuppressWarnings("serial") public class SystemMainView extends JFrame implements ActionListe…

TFS中的测试计划(十)
现在有一个测试用例,用来测试登录,并且有两组测试数据。打开团队项目的web门户的测试。新建一个测试计划。命名为测试计划1添加完测试计划后,就可以向这个计划里添加测试用例了,选择登录测试。运行测试,就会生成下图左…

跟着Rocskdb 学 存储引擎:读写链路的代码极致优化
文章目录1. 读链路1.1 FileIndexer1.1.1 LevelDB sst查找实现1.1.2 Rocksdb FileIndexer实现1.2 PinnableSlice 减少内存拷贝1.3 Cache1.3.1 LRU Cache1.3.2 Clock Cache1.4 ThreadLocalPtr 线程私有存储1.4.1 version系统1.4.2 C thread_local vs ThreadLocalPtr1.4.3 ThreadL…

Java项目:人力管理系统(java+Gui+文档)
源码获取:博客首页 "资源" 里下载! 功能介绍: 角色员工、管理员,员工信息表,查询、更新,修改,移除、添加 用户管理控制层: /*** author yy*/Controller RequestMapping(…

senfile函数实例的运行过程截图
//要传输的文件内容如下所示: 启动服务器,等待客户端连接(在同一台主机上模拟的) 客户端远程登录,这里是在本地登录 这个要注意一点就是远程登陆的时候一定要带上端口号不然连接失败!!转载于:ht…

马年计划2014-2-21
新的一年到来了! 刚刚过去的一年里,我已浪费很多时光! 新年新气象,为避免重蹈覆辙,此时我必须要立个新年计划,马年计划! (1)一天必须做两道ACM题。 (2&#…

java jsp页面如何添加C标签
在https://mvnrepository.com/找两个jar包分别是: <dependency> <groupId>javax.servlet.jsp.jstl</groupId> <artifactId>jstl-api</artifactId> <version>1.2</version> </dependency> <dependency> <g…

如何用 ndctl/ipmctl 管理工具 配置不同访问模式的pmem设备
文章目录1 PMEM 底层架构2 PMEM 逻辑架构3 ipmctl 创建 不同模式的 region3.1 安装3.2 创建AppDirect mode的region3.3 创建 Memory Mode模式3.4 创建 混合模式3.5 查看创建的结果4 ndctl 创建不同类型的 namespaces4.1 安装4.2 创建/删除 一个任意类型的namespace4.3 指定类型…

[PHP]php基础练习题学习随笔
1、解释一下PHP中常量、变量、可变变量并举例说明;超级全局变量有哪些? 常量是单个值的标识符(名称),通过define()设置,在脚本中无法改变该值,常量自动全局。<?php #对大小写不敏感为true&a…

Java项目:进销存系统(java+Gui)
源码获取:博客首页 "资源" 里下载! 功能介绍: 基本信息管理、库存管理、销售管理、订单管理、日志管理、供应商基本信息、员工基本信息、商品信息、入库管理、出库管理、剩余库存 商品信息控制层: /*** <p>* 前…