目 录

目 录 1

  1. 功能描述 2
  2. 小组成员及分工 2
  3. 系统设计 2
  4. 系统实现 6
  5. 存在问题及解决方法/方案 7
  6. 心得体会 17
    致谢 18
    参考文献 19
    评语及成绩 20

1.功能描述
1.资产信息管理
管理所有资产设备的基本信息,包括添加、修改、删除等,可以根据各种条件查询出需要的信息。
2.人员信息管理
管理设备的使用人员信息,包括添加、修改、删除等,可以根据各种条件查询出需要的信息。
3.资产借还管理
1)领用资产:进入领用资产界面前会检测是否有可领用的资产信息,有则弹出领用资产界面。用户领用资产需要选择要领用的资产并填写相关信息,比如领用人、用备注等等信息。
2)归还资产:进入资产归还界面前系统会判断是否有借出的资产信息,有则弹出归还资产界面。用户归还资产需要选择要归还的资产并填写相关信息。
3)归还记录:归还记录界面会显示出所有领用资产的归还记录,以便查询。并且管理员可对归还记录进行删除操作。
4)维修资产:管理员在资产信息管理界面可对资产添加维修记录,在维修资产界面会显示出所有的资产维修记录,以便查询或他用。
5)报废资产:管理员在资产信息管理界面可对资产进行报废操作,在报废资产界面会显示出所有的 资产报废记录,以便查询或他用
4.系统管理
1.人性化:加入友好的提示信息、帮助信息,有清楚的错误提示。
2.操作简单:操作简单易上手。
3.用户界面:界面结构调理清楚,布局简洁。
4.语言和清晰度:使用正常语言而不是用专业术语、完善是觉得清晰度。

2.小组成员及分工
1.资产信息管理:
2.人员信息管理:
3.资产领用:
4.资产归还:
5.资产报废:

3.系统设计
1.系统的功能结构如图1所示:

图1 系统功能结构图

功能介绍:主界面含6个模块,分别是系统管理、资产信息管理、人员管理、资产领用、资产归还、资产报废。

系统管理:
1)类别管理:添加、修改大类、小类数据,其中编号是自动获取的。删除通过选中指定的列表删除,主要通过获取编号对齐进行处理。
2)退出:退出可执行文件。

资产信息管理:
1)增加:添加资产信息,即名称、所属类型(对应的类别)、型号、价格、购买日期、状态、备注。
2)修改:修改已添加的数据,其中编号不可变,通过编号查找已存在的数据对其进行修改。
3)删除:通过输入对应的编号将数据从数据库中删除。
4)查询所有:将添加的数据以表格的形式将数据全部打印出来。
5)按编号查询:输入对应的编号将该编号的数据以表格的形式打印出来。

人员信息管理:
1)人员信息增加:添加资产信息,即姓名、性别、部门、职位、其他、人员编号自动获取。
2)人员信息修改:修改已添加的数据,其中编号不可变,通过编号查找已存在的数据对其进行修改。
3)人员信息删除:通过输入对应的编号将数据从数据库中删除。
4)人员信息查询所有:将添加的数据以表格的形式将数据全部打印出来。
5)人员信息按编号查询:输入对应的编号将该编号的数据以表格的形式打印出来。

资产领用:
1)资产领用管理:
1.增加资产信息:其中资产类型与领用人对应的是资产类型编号和人员编号,在此基础上对数据进行添加操作类型(操作类型为可领用),时间,用途,备注。
2.修改资产信息:修改数据时,通过选中2维表格查询,然后将数据重新设置。
3.删除资产信息:选中列表中的某行数据,然后删除该行记录。
4.领用资产信息:将该行数据的操作类型修改为已领用的操作类型。

2)资产领用信息查询:查询操作数据已领用的数据。

资产归还:
1)资产归还管理:
1增加资产信息:其中资产类型与领用人对应的是资产类型编号和人员编号,在此基础上对数据进行添加操作类型(操作类型为已领用),时间,用途,备注。
2修改资产信息:修改数据时,通过选中2维表格查询,然后将数据重新设置。
3删除资产信息:选中列表中的某行数据,然后删除该行记录。
4归还资产信息:将该行数据的操作类型修改为可领用的操作类型。

2)资产归还信息查询:查询操作类型修改为已领用的数据。

资产报废:
1)资产报废管理:
1增加资产信息:其中资产类型与领用人对应的是资产类型编号和人员编号,在此基础上对数据进行添加操作类型(操作类型为可领用),时间,用途,备注。
2修改资产信息:修改数据时,通过选中2维表格查询,然后将数据重新设置。
3删除资产信息:选中列表中的某行数据,然后删除该行记录。
4归还资产信息:将该行数据的操作类型修改为可领用的操作类型。

3)资产报废信息查询:查询操作类型修改为报废的数据。

2.数据库设计
数据库中应包含4个表,即资产信息表(Assets)、人员信息表(Person)、资产操作流(AssetsTrjn)和资产类别管理表(AssetsType),设计要求如表1~表4所示。
表1 资产信息表(Assets)
名 称 字段名称 数据类型 主 键 非 空
资产编号 AssetsID INT Yes Yes
资产名称 Name varchar(20) No Yes
所属类型 TypeID varchar(10) No Yes
型号 Model varchar(30) No Yes
价格 Price varchar(20) No Yes
购买日期 BuyDate Date No Yes
状态 Status varchar(10) No Yes
备注 Other varchar(50) No No

表2 人员信息表(Person)
名 称 字段名称 数据类型 主 键 非 空
人员编号 PersonID INT Yes Yes
姓名 Name varchar(20) No Yes
性别 Sex varchar(4) No Yes
部门 Dept varchar(20) No Yes
职位 Job varchar(20) No No
其他 Other varchar(50) No No

表3 资产操作流水表
名 称 字段名称 数据类型 主 键 非 空
编号 JourNo INT Yes Yes
操作类型 FromAcc varchar(20) No Yes
资产编号 AssetsID INT No Yes
操作时间 RegDate date No Yes
领用人 PersonID INT No Yes
用途 purpose varchar(50) No Yes
备注 Other varchar(50) No No

表4 资产类别表
名 称 字段名称 数据类型 主 键 非 空
编号 TypeID INT Yes Yes
资产大类 B_Type varchar(20) No Yes
资产小类 S_Type varchar(20) No Yes

4.系统实现
(1)AssetsTrjn类:构建实体类,对必须存储的信息和相关行为建模的类。实体对象用于保存和更新一些现象的有关信息,实体类通常都是永久性的,它们所具有的属性和关系是长期需要的,有时甚至在系统的整个生存期都需要。是用来与数据库访问的桥梁,从而实现对数据库进行增删改查功能。

(2)AssetsTrjnDao类:用数据库语言对数据库进行相关的增删改查问题,然后将数据库的值通过字符串数组得到数据库的值。以及对AssetsTrjn类中的构造方法的数据进行写入到数据库中。

(3)AssetsReceiveView类:生成GUI界面,对界面进行操作,设置界面大小,标题,以及设置相关组建。界面组件分成三部分,上中下,然后使用网格包布布局管理器来设置上中下三部分,分别对应的是北中南三部分。北部是输出2维表的信息即数据库的数据,中间层是用来设置文本框以及下拉列表的,供用户操作选择,下层是按钮用来选择相关的操作。然后通过事件处理函数对各按钮进行事件处理,将文本框的数据传到指定的Dao包中的方法里。然后将数据库的信息打印到上层界面中。

结果图:
1.报废管理:

2.报废查询:

主要代码:

else if (obj == itemInvalid) {//资产报废管理
AssetsInvalid typeMan = new AssetsInvalid();
typeMan.downInit();
typeMan.pack();
typeMan.setVisible(true);
}
public class AssetsInvalid extends JFrame implements ActionListener, ListSelectionListener {

AssetsTrjnDao assetsTrjnDao;
Container contentPane;
//定义所用的面板
JPanel upPanel = new JPanel();
JPanel centerPanel = new JPanel();
JPanel downPanel = new JPanel();//框架的大小
Dimension faceSize = new Dimension(600, 400);//定义图形界面元素
//创建一个没有图像的JaLabel实例,标题为空字符串
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JLabel jLabel4 = new JLabel();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
JLabel jLabel7 = new JLabel();//构造一个新的空的 TextField与指定的列数。
JTextField jTextField1 = new JTextField(15);
JTextField jTextField2 = new JTextField(15);
JTextField jTextField3 = new JTextField(15);
JTextField jTextField4 = new JTextField(15);
JTextField jTextField5 = new JTextField(15);
JTextField jTextField6 = new JTextField(15);
JTextField jTextField7 = new JTextField(15);//创建一个没有设置文本或图标的按钮。
JButton addInfo = new JButton();
JButton modifyInfo = new JButton();
JButton abandonInfo = new JButton();
JButton deleteInfo = new JButton();
JButton clearInfo = new JButton();
JButton saveInfo = new JButton();
JButton eixtInfo = new JButton();//定义表格
JScrollPane jScrollPane1;
JTable jTable;  //显示和编辑单元格的常规二维表
ListSelectionModel listSelectionModel = null;
String[] colName = {"编号", "操作类型", "资产编号", "操作时间", "领用人", "用途", "备注"};//网格包布局管理
GridBagLayout girdBag = new GridBagLayout();
GridBagConstraints girdBagCon;public AssetsInvalid() {assetsTrjnDao = new AssetsTrjnDao();//设置框架的大小this.setSize(faceSize);//设置标题this.setTitle("资产报废操作表");this.setResizable(true);//设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((screenSize.width - 400) / 2,(screenSize.height - 400) / 2 + 45);try {Init();} catch (Exception e) {JOptionPane.showMessageDialog(null, "窗口初始化错误,错误原因:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}
}public void Init() throws Exception {contentPane = this.getContentPane();contentPane.setLayout(new BorderLayout()); //设置边界布局管理//中部面板的布局String[][] colValue = assetsTrjnDao.AbandonfindAll(); //获取数据库中的值if (colValue == null) {colValue = new String[1][7];}jTable = new JTable(colValue, colName); //构造一个JTable以显示二维数组中的值colValue,列的名称为colNamejTable.setPreferredScrollableViewportSize(new Dimension(500, 300));listSelectionModel = jTable.getSelectionModel();listSelectionModel.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);listSelectionModel.addListSelectionListener(this);jScrollPane1 = new JScrollPane(jTable); //为2维列表设置滚动面板jScrollPane1.setPreferredSize(new Dimension(500, 300));upPanel.add(jScrollPane1);contentPane.add(upPanel, BorderLayout.NORTH);jLabel1.setText("编号");jLabel1.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel1);centerPanel.add(jTextField1);jLabel2.setText("操作类型");jLabel2.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel2);centerPanel.add(jTextField2);jLabel3.setText("资产类型");jLabel3.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel3);centerPanel.add(jTextField3);jLabel4.setText("操作时间");jLabel4.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel4);centerPanel.add(jTextField4);jLabel5.setText("领用人");jLabel5.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel5);centerPanel.add(jTextField5);jLabel6.setText("用途");jLabel6.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel6);centerPanel.add(jTextField6);jLabel7.setText("备注");jLabel7.setFont(new Font("Dialog", 0, 12));centerPanel.add(jLabel7);centerPanel.add(jTextField7);contentPane.add(centerPanel, BorderLayout.CENTER);jTextField1.setEditable(false);jTextField2.setEditable(false);jTextField3.setEditable(true);jTextField4.setEditable(true);jTextField5.setEditable(true);jTextField6.setEditable(true);jTextField7.setEditable(true);}/*** 下部面板的布局*/
public void downInit() {addInfo.setText("增加");addInfo.setFont(new Font("Dialog", 0, 12));downPanel.add(addInfo);modifyInfo.setText("修改");modifyInfo.setFont(new Font("Dialog", 0, 12));downPanel.add(modifyInfo);deleteInfo.setText("删除");deleteInfo.setFont(new Font("Dialog", 0, 12));downPanel.add(deleteInfo);abandonInfo.setText("废弃");deleteInfo.setFont(new Font("Dialog", 0, 12));downPanel.add(abandonInfo);clearInfo.setText("清空");clearInfo.setFont(new Font("Dialog", 0, 12));downPanel.add(clearInfo);eixtInfo.setText("退出");eixtInfo.setFont(new Font("Dialog", 0, 12));downPanel.add(eixtInfo);contentPane.add(downPanel, BorderLayout.SOUTH);//添加事件侦听addInfo.addActionListener(this);modifyInfo.addActionListener(this);deleteInfo.addActionListener(this);abandonInfo.addActionListener(this);clearInfo.addActionListener(this);eixtInfo.addActionListener(this);addInfo.setEnabled(true);modifyInfo.setEnabled(false);deleteInfo.setEnabled(false);abandonInfo.setEnabled(false);clearInfo.setEnabled(true);
}/*** 事件处理*/
public void actionPerformed(ActionEvent e) {Object obj = e.getSource();if (obj == addInfo) {try {//增加assetsTrjnDao.add(new AssetsTrjn(jTextField2.getText(), Integer.parseInt(jTextField3.getText()), jTextField4.getText(), Integer.parseInt(jTextField5.getText()), jTextField6.getText(), jTextField7.getText()));JOptionPane.showMessageDialog(null, "资产信息添加成功!", "资产信息添加", JOptionPane.INFORMATION_MESSAGE);} catch (Exception ex) {JOptionPane.showMessageDialog(null, "数据库访问错误,错误原因:" + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}this.dispose();AssetsInvalid typeMan = new AssetsInvalid();typeMan.downInit();typeMan.pack();typeMan.setVisible(true);} else if (obj == modifyInfo) {try {//修改assetsTrjnDao.modify(new AssetsTrjn(Integer.parseInt(jTextField1.getText()), jTextField2.getText(), Integer.parseInt(jTextField3.getText()), jTextField4.getText(), Integer.parseInt(jTextField5.getText()), jTextField6.getText(), jTextField7.getText()));JOptionPane.showMessageDialog(null, "资产类别修改成功!", "资产类别修改", JOptionPane.INFORMATION_MESSAGE);} catch (Exception ex) {JOptionPane.showMessageDialog(null, "数据库访问错误,错误原因:" + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}this.dispose();AssetsUsing typeMan = new AssetsUsing();typeMan.downInit();typeMan.pack();typeMan.setVisible(true);}else if (obj == abandonInfo) {try {//领用assetsTrjnDao.AbandonTrjn(new AssetsTrjn(Integer.parseInt(jTextField1.getText())));JOptionPane.showMessageDialog(null, "资产废弃成功!", "资产废弃", JOptionPane.INFORMATION_MESSAGE);} catch (Exception ex) {JOptionPane.showMessageDialog(null, "数据库访问错误,错误原因:" + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}this.dispose();AssetsInvalid typeMan = new AssetsInvalid();typeMan.downInit();typeMan.pack();typeMan.setVisible(true);typeMan.downInit();}else if (obj == deleteInfo) {try {//删除assetsTrjnDao.delete(Integer.parseInt(jTextField1.getText()));JOptionPane.showMessageDialog(null, "资产删除成功!", "资产类别删除", JOptionPane.INFORMATION_MESSAGE);} catch (Exception ex) {JOptionPane.showMessageDialog(null, "数据库访问错误,错误原因:" + ex.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}this.dispose();AssetsInvalid typeMan = new AssetsInvalid();typeMan.downInit();typeMan.pack();typeMan.setVisible(true);}  else if (obj == clearInfo) { //清空setNull();} else if (obj == eixtInfo) { //退出this.dispose();}jTable.revalidate();    //支持自动延迟布局
}/*** 将文本框清空*/
void setNull() {jTextField1.setText(null);jTextField2.setText(null);jTextField3.setText(null);jTextField1.setText(null);jTextField2.setText(null);jTextField3.setText(null);jTextField1.setText(null);jTextField2.setText(null);jTextField2.setEditable(true);jTextField3.setEditable(true);jTextField4.setEditable(true);jTextField5.setEditable(true);jTextField6.setEditable(true);jTextField7.setEditable(true);addInfo.setEnabled(true);modifyInfo.setEnabled(false);deleteInfo.setEnabled(false);clearInfo.setEnabled(true);
}/*** 当表格被选中时的操作*/
public void valueChanged(ListSelectionEvent lse) {int selectedRow = jTable.getSelectedRow();  //返回第一个选定行,如果没有选行,则返回-1jTextField1.setText((String) jTable.getValueAt(selectedRow, 0)); //getValuAt(int row,int column),返回行,列jTextField2.setText((String) jTable.getValueAt(selectedRow, 1));jTextField3.setText((String) jTable.getValueAt(selectedRow, 2));jTextField4.setText((String) jTable.getValueAt(selectedRow, 3)); //getValuAt(int row,int column),返回行,列jTextField5.setText((String) jTable.getValueAt(selectedRow, 4));jTextField6.setText((String) jTable.getValueAt(selectedRow, 5));jTextField7.setText((String) jTable.getValueAt(selectedRow, 6));//设置是否可操作jTextField2.setEditable(true);jTextField3.setEditable(true);jTextField4.setEditable(true);jTextField5.setEditable(true);jTextField6.setEditable(true);jTextField7.setEditable(true);addInfo.setEnabled(false);modifyInfo.setEnabled(true);deleteInfo.setEnabled(true);abandonInfo.setEnabled(true);clearInfo.setEnabled(true);
}

}
else if (obj == itemSelectInvalid) {//资产报废查询
AssetsSelectInvalid typeMan = new AssetsSelectInvalid();
typeMan.setVisible(true);
}
public class AssetsSelectInvalid extends JFrame implements ActionListener{

AssetsTrjnDao assetsTrjnDao;
Container contentPane;
//定义所用的面板
JPanel upPanel = new JPanel();//框架的大小
Dimension faceSize = new Dimension(700, 400);//定义图形界面元素
//创建一个没有图像的JaLabel实例,标题为空字符串
JLabel jLabel1 = new JLabel();
JLabel jLabel2 = new JLabel();
JLabel jLabel3 = new JLabel();
JLabel jLabel4 = new JLabel();
JLabel jLabel5 = new JLabel();
JLabel jLabel6 = new JLabel();
JLabel jLabel7 = new JLabel();
JLabel jLabel8 = new JLabel();//构造一个新的空的 TextField与指定的列数。
JTextField jTextField1 = new JTextField(15);
JTextField jTextField2 = new JTextField(15);
JTextField jTextField3 = new JTextField(15);
JTextField jTextField4 = new JTextField(15);
JTextField jTextField5 = new JTextField(15);
JTextField jTextField6 = new JTextField(15);
JTextField jTextField7 = new JTextField(15);
JTextField jTextField8 = new JTextField(15);//定义表格
JScrollPane jScrollPane1;
JTable jTable;  //显示和编辑单元格的常规二维表
ListSelectionModel listSelectionModel = null;
String[] colName = {"编号", "操作类型", "资产编号", "操作时间", "领用人", "用途", "备注"};//网格包布局管理
GridBagLayout girdBag = new GridBagLayout();
GridBagConstraints girdBagCon;public AssetsSelectInvalid() {assetsTrjnDao = new AssetsTrjnDao();//设置框架的大小this.setSize(faceSize);//设置标题this.setTitle("资产报废信息查询");this.setResizable(true);//设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((screenSize.width - 400) / 2,(screenSize.height - 300) / 2 + 45);try {Init();} catch (Exception e) {JOptionPane.showMessageDialog(null, "窗口初始化错误,错误原因:" + e.getMessage(), "错误", JOptionPane.ERROR_MESSAGE);}
}public void Init() throws Exception {contentPane = this.getContentPane();contentPane.setLayout(new BorderLayout()); //设置边界布局管理//中部面板的布局String[][] colValue = assetsTrjnDao.findByAbandon(); //获取数据库中的值if (colValue == null) {colValue = new String[1][7];}jTable = new JTable(colValue, colName); //构造一个JTable以显示二维数组中的值colValue,列的名称为colNamejTable.setPreferredScrollableViewportSize(new Dimension(600, 400));jScrollPane1 = new JScrollPane(jTable); //为2维列表设置滚动面板jScrollPane1.setPreferredSize(new Dimension(600, 400));upPanel.add(jScrollPane1);contentPane.add(upPanel, BorderLayout.NORTH);//设置框架的大小this.setSize(faceSize);//设置标题setTitle("资产报废信息查询");this.setResizable(true);//设置运行时窗口的位置Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();this.setLocation((screenSize.width - 400) / 2,(screenSize.height - 300) / 2 + 45);AssetsSearchIDView typeMan = new AssetsSearchIDView();typeMan.pack();this.dispose();typeMan.setVisible(true);
}
/*** 事件处理*/
public void actionPerformed(ActionEvent e) {Assetslingyong typeMan = new Assetslingyong();typeMan.pack();typeMan.setVisible(true);jTable.revalidate();
}

}
5.存在问题及解决方法/方案
自动时间问题。解决方法是,通过搜索相关资料,以及询问同学。了解到自动获取时间需要通过定义一个long类型的变量来获取当前时间,然后通过Date类来调用,然后在调用数据库的类中进行引用,定义输出的时间格式,然后通过相关方法将值传入到数据库中。

6.心得体会
通过此资产管理系统的开发,做到了理论联系实际,将课本上学到的知识与具体实践充分结合,进一步明确了开发管理信息系统的方法思想;既加深了对管理系统的认识,又进一步巩固了以前所学的计算机软件开发方面的知识,提高了软件开发的水平,但还有很多是需要加强与提高的。

致谢

参考文献

[1] [美] 凯 S. 霍斯特曼. Java核心技术卷II:高级特性(原书第10版). 机械工业出版社,2017.7
[2]何宗霖.零基础学Java Web开发[M]. 北京:机械工业出版社.2010:7-9
[3]李发陵,刘志强. 软件工程[M]. 清华大学出版社.2013:46-49

基于Java GUI的资产管理系统的设计与实现相关推荐

  1. 用java写的教职工信息管理系统_基于Java的教师信息管理系统的设计与实现论文.doc...

    基于Java的教师信息管理系统的设计与实现论文 职场大变样社区():下载毕业设计成品 全套资料,全部50元以下 毕业设计(论文)任务书 第1页 毕业设计(论文)题目: 基于java的教师信息管理系统的 ...

  2. java做一个客房管理系统定制_开题报告基于Java的酒店客房管理系统的设计与实现.doc...

    开题报告基于Java的酒店客房管理系统的设计与实现 毕业设计开题报告 课 题 名 称:基于Java的酒店客房管理系统的 设计与实现 姓 名: 班 级: 指 导 教 师: 所 在 系 部: 专 业 名 ...

  3. 基于java的高校运动会管理系统的设计与实现--毕业论文(可仅作参考)

    基于java的高校运动会管理系统的设计与实现–毕业论文(可仅作参考) 可以仅作参考宝子们 ,这个版本包含代码哦~在资源里面自己找代码包 论文word版本我会上传到资源里面供宝子看 文章目录 基于jav ...

  4. java中介系统平台_基于JAVA的房屋中介管理系统的设计与实现.ppt

    基于JAVA的房屋中介管理系统的设计与实现 校友录管理系统 的设计与实现 院系: 华科学院经济与管理系 班级 :电子商务102202H 姓名 :王 爽 学号: 201022120225 指导教师 :王 ...

  5. 基于Java EE平台项目管理系统的设计与实现(论文+PPT+源码)

    分类号_______________ 密级________________ UDC _______________ 学号 毕业设计(论文) 论文题目 基于Java EE平台项目管理系统的设计与实现 T ...

  6. java邮件登录系统设计_基于Java web的邮件管理系统的设计与实现(含源文件).doc

    毕业设计诚信声明书 毕 业 设 计 中文题目 基于Java web的邮件管理系统的设计与实现 英文题目 Based on Java web email management system design ...

  7. 基于JAVA高校共享机房管理系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA高校共享机房管理系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA高校共享机房管理系统的设计与实现计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈 ...

  8. 基于JAVA汽车售后服务信息管理系统的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署

    基于JAVA汽车售后服务信息管理系统的设计与实现计算机毕业设计源码+系统+mysql数据库+lw文档+部署 基于JAVA汽车售后服务信息管理系统的设计与实现计算机毕业设计源码+系统+mysql数据库+ ...

  9. 基于JAVA企业进销管理系统的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA企业进销管理系统的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA企业进销管理系统的设计与实现计算机毕业设计源码+数据库+lw文档+系统+部署 项目架构:B/S架构 ...

  10. 基于Java的学生课程管理系统的设计和实现

    基于Java的学生课程管理系统的设计和实现 软件工程王曦楠 要] 学生课程管理系统一直是学校高效组织管理办法信领域内的一个重要课题,特别随着当前教育领域内的深度变革,怎样才能让学生课程管理系统在教育机 ...

最新文章

  1. 从入职快手3年股票3000w说起
  2. EPML schema(附带用myeclipse生成的结构图)
  3. linux平台安装React Native遇到的坑
  4. devops项目经理_DevOps:如何避免交接导致项目死亡
  5. linux下个性配置命令提示符
  6. node实现敏感词过滤及敏感词库
  7. GD32F103实战笔记
  8. Windows 10 的快捷关机方式
  9. 全国各省会城市经纬度(包含港澳台)
  10. windows系统误删引导分区后如何重装系统
  11. 深度学习超参数介绍及调参
  12. [CodeChef FEB15]Payton numbers(CUSTPRIM)解题报告
  13. 集成微软更新汇总KB3125574
  14. 计算机网络和因特网笔记
  15. 无人机石油巡线技术方案
  16. iptables nat及端口映射 【转】
  17. 【徐禾 政治经济学概论】 读书笔记 §1.3劳动的二因素:具体劳动和抽象劳动(下.价值量的规定性)
  18. 思考(九十):熔断器介绍
  19. STM32 DS18B20外部温度传感器
  20. 解决eclipse中热键冲突问题,ctrl+alt+up,向上复制与桌面旋转热键冲突。

热门文章

  1. 解析中国天气网页面获取七日天气 (Java)
  2. NeoKylin中标麒麟系统用户和组的管理命令
  3. android netd的工作流程解析
  4. 文件名 绝对路径与相对路径
  5. 总线工作频率和总线时钟频率
  6. 全民一起VBA实战篇 专题2 第三回 VBA已有Sort方法,欲排序何必再写循环
  7. 2021-10-11电子天平期间核查和日常核查管理方法
  8. 将Keras模型导出为SavedModel模型
  9. 大数据私房菜--Hadoop完全分布式安装
  10. stylelint规则大全