毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc

上传人:laozhun 文档编号:2882779 上传时间:2023-03-01 格式:DOC 页数:33 大小:1.41MB
返回 下载 相关 举报
毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc_第1页
第1页 / 共33页
毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc_第2页
第2页 / 共33页
毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc_第3页
第3页 / 共33页
毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc_第4页
第4页 / 共33页
毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc_第5页
第5页 / 共33页
点击查看更多>>
资源描述

《毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc》由会员分享,可在线阅读,更多相关《毕业设计(论文)OA协同办公自动化系统短消息管理和提醒器设置模块开发.doc(33页珍藏版)》请在三一办公上搜索。

1、OA协同办公自动化系统短消息管理和提醒器设置模块开发摘 要 随着信息技术的不断发展,企业现有的人工管理模式已不能满足企业的发展,企业协同办公自动化系统的出现已成为必然。其不仅能改善公司办公条件,减轻工作人员负担,提高办公质量和工作效率,还能加快公司工作规范化、科学化、网络化的进程。针对企业要求,使用JSP、Struts、Hibernate、Spring及Ibatis等技术开发一个基于Web的企业协同办公自动化系统。本系统一共分为十一个模块:人事信息管理、短消息管理、提醒器设置、日程管理、工作日志管理、工作计划管理、数据字典、部门管理、岗位管理、职位管理、权限管理、用户管理。超级管理员可以根据不

2、同职位创建不同的角色,为用户灵活的分配系统功能权限。关键词 B/S结构,MVC设计模式,JSP网页技术标准,OA协同办公系统 ABSTRACTAlong with the development of the information technology,the labour management model of enterprise can not satisfy the development of the enterprise at the present time, so the appearance of the office automation system become in

3、evitable. The system can improve the working conditions, reduce the staffs burden,improve work quality and efficiency, can also quicken the process of standardization, scientization and network. For requirements of the enterprise, use the technology about JSP, Struts, Hibernate, Spring and Ibatis to

4、 develop a office automation system based on web.The system has eleven modules. There are the management of personnel information, the management of short messages, reminder setttings, the management of daily work plan, the management of data dictionary, the management of department,the management o

5、f post,the management of duty, the management of powers and the management of users. The administrator can create different roles for different positions by characters and can asign the resource of permission flexiblely. Key Words: Browser/Server, Model View Controller, Java Server Page, Office Auto

6、mation System目 录目 录31.绪论51.1课题意义51.2课题目的51.3技术要求51.4可行性分析62.需求分析72.1概述72.1.1项目名称72.1.2开发背景72.1.3项目目标72.2任务说明82.2.1个人办公管理82.2.1.1短消息管理82.2.1.2提醒器设置92.3需求分析92.3.1个人办公管理92.3.1.1短消息管理92.3.1.2提醒设置153.总体设计173.1概述173.2系统总拓扑图18图11 系统拓扑图183.3系统功能清单18表1 系统功能明细表183.3环境搭建19v安装Oracle数据库19v安装Oracle客户端19v安装PLSQL19

7、v配置Oracle数据库19v安装MyEclipse 6.519v配置tomcat/java环境变量194.系统设计204.1开发及运行环境204.2数据库设计204.2.1站内短消息内容表(t_ico_message)214.2.2站内短消息收发表(t_ico_sendMsgRcv)214.2.3提醒器表(t_ico_remindTime)225.系统程序设计235.1个人办公235.1.1短消息管理235.1.1.1发送短消息235.1.1.2查询已发短消息235.1.1.3查询已收短消息275.1.2提醒器设置295.1.2.1设置提醒频率317.结论33参考文献34答 谢351.绪论1

8、.1课题意义 随着世界经济一体化进程的加快,世界经济从工业化的经济逐步进入网络信息的时代。各个企业都转变着自己企业的经营及管理模式,从传统的人工管理向信息自动化管理体制过渡。企业传统式的办公管理模式也在逐步向自动化办公管理模式转变。通过网站对企业内部信息进行全面的自动化的管理,提高企业的办公效率;管理和统计企业生产经营中的数据,避免人为处理各类数据时所产生问题,提高企业的经济效益,使企业的管理达到科学化、系统化的范畴。1.2课题目的 本课题是为了给现在的企业提供一个信息化平台,有效提高公司内部各级部门、员工沟通、协调能力;规范化、标准化公司各项业务流程、管理流程;提高日常工作效率,快速使用文件

9、、报告或报表;公司领导、部门主管随时随地掌握、了解员工的工作状态;利用信息化自动办公平台为公司领导、部门主管提供准确的信息和资料,提高经营者第一时间的决策能力。1.3技术要求v JAVA:熟悉java面向对象编程的思路;v WEB网页设计:能够熟练操纵网页的表单元素、JavaScript脚本(jQuery)以及CSS样式表;v JSP基础:能够使用JSP进行网页排版以及结合Struts标签综合应用;v Spring、Hibernate、Struts 、Ibatis 框架基础:理解MVC设计模式、Struts拦截器原理、Struts标签的应用以及持久化层Hinernate及Ibatis的应用;v

10、 Oracle数据库:能够熟练使用Oracle:安装、配置、使用Oracle数据库。1.4可行性分析可行性分析是依据初步调查的结果作出系统开发可行性与否的结论的过程。可行性分析是为了论证系统开发是否可行。为实现系统目标,需要技术保证。此系统开发所需要的技术主要有计算机硬件、软件技术、系统开发人员的水平、用户管理与使用的能力等。在选择使用JSP还是ASP开发的时候,考虑到JSP的一下优点,选择了JSP作为web开发语言。JSP是Java平台的一部分。ASP技术不能轻易的实现跨平台的web服务工作,只能在windows上它运行。而Java可以运行在不同的环境,如Linux,Windows上。Lin

11、ux的安全性和稳定性也是选择Jsp作为web开发的重要原因。ASP仅支持组建对象模型COM,而JSP技术提供的组建都是基于JavaBean技术或JSP标签库,用户许多可重用的类库,大大的方便了web法人开发。JSP开发web比ASP更加灵活,可扩展性更强,便于以后的维护和二次开发。2.需求分析2.1概述2.1.1项目名称OA协同办公自动化系统2.1.2开发背景编写需求说明的核心源于企业需求,为明确软件开发的最终目的,使开发出来的系统能够更好的达到企业信息化建设的需求,使目标系统提供的功能与企业需求达成一致。对于企业:重点在于清楚的表达企业提出的需求,如何理解企业机构部门、业务关系,让企业确认我

12、们的表达和描述是符合客户的需求。对于开发人员:开发人员、项目经理、营销人员、员工、测试人员,重点告诉他们系统需要具有哪些功能,有哪些对象,对象有哪些属性,对象之间有哪些关系,更清楚的了解企业的真正需要,从理解的角度开发产品,真正服务于企业客户。2.1.3项目目标v 有效提高公司内部各级部门、员工沟通、协调能力;v 规范化、标准化公司各项业务流程、管理流程;v 提高日常工作效率,快速使用文件、报告或报表;v 公司领导、部门主管随时随地掌握、了解员工的工作状态;v 利用信息化自动办公平台为公司领导、部门主管提供准确的信息和资料,提高经营者第一时间的决策能力;通过总结归纳后,该软件具备以下四大功能:

13、个人办公管理、基本信息管理、人事信息管理、权限组管理。在需求分析中将详细描述各个功能。2.2任务说明2.2.1个人办公管理 2.2.1.1短消息管理2.2.1.1.1发送短消息系统正常运行,并且用户拥有发送短消息权限时,用户可以发送短消息。2.2.1.1.2查询已发短消息系统正常运行,并且用户拥有查询已发短消息权限时,用户可以查看已发送的短消息记录。主要是以列表的形式查看,包括:序号,标题,发送时间,收件人,有效时间,状态。2.2.1.1.3删除已发短消息系统正常运行,并且用户拥有删除已发短消息权时,用户可以删除已发短消息。2.2.1.1.4查询已收短消息系统正常运行,并且用户拥有查询已发短消

14、息权限时,用户可以看已发送的短消息记录。主要是以列表的形式查看,包括:序号,标题,发送时间,发件人,有效时间,状态。2.2.1.1.5删除已收短消息系统正常运行,并且用户拥有删除已收短消息权限时,用户可以删除已收短消息记录。2.2.1.1.5修改未发送短消息系统正常运行,并且用户拥有修改未发送短消息权限时,用户可以修改未发送短消息记录。2.2.1.2提醒器设置2.2.1.2.1修改提醒设置系统正常运行,并且用户拥有提醒器设置权限时,用户可以设置进入提醒器设置页面,设置短消息的提醒频率。2.3需求分析2.3.1个人办公管理2.3.1.1短消息管理2.3.1.1.1功能描述方便用户在工作期间进行交

15、流的,包括发送站内短消息、查询已发短消息、查询已收短消息、删除已发短消息、删除已收短消息等功能。2.3.1.1.2拓扑图图1 站内短消息拓扑图2.3.1.1.3用例图图2 站内短消息模块用例图2.3.1.1.4发送短消息2.3.1.1.4.1功能描述系统正常运行的情况下,并且用户拥有发送短消息权限时,用户进入发送短消息页面然后可以发送短消息。2.3.1.1.4.2数据项描述v 请选择部门:非必填项,点击下拉列表选择部门;v 系统联系人列表: 默认显示添加过人事信息的所有用户; 当选择某部门时,系统联系人列表显示该部门下所有用户;v 收件人列表: 必填项,从系统联系人列表中选择;v 标题:非必填

16、项,最大长度为30字;v 短消息内容(限500字):必填项。v 有效时间:非必填项,发送短消息的有效截至时间;若有效时间为空,则永久有效。2.3.1.1.4.3界面原型图3 发送站内短消息界面图2.3.1.1.4.4相关流程图2.3.1.1.5查询已发短消息2.3.1.1.5.1功能描述系统正常运行,并且用户拥有查询已发短消息权限时,用户可以查看已发送的短消息记录。主要是以列表的形式查看,包括:序号,标题,发送时间,收件人,有效时间,状态。2.3.1.1.5.2查询条件收件人, 发送时间。2.3.1.1.5.3查询列表序号, 标题,发送时间,收件人,有效时间,状态及操作。2.3.1.1.5.4

17、界面原型图4 查询已发短消息界面图2.3.1.1.6删除已发短消息2.3.1.1.6.1功能描述用户点击操作栏中的“删除”功能, 可对该条记录做出删除,或者选择要删除记录前面的复选框, 进行批量删除;查询条件:收件人,发送时间。2.3.1.1.6.2相关流程图2.3.1.1.7查询已收短消息2.3.1.1.7.1功能描述在保证系统正常运行, 并且用户拥有已收短消息查询权限的情况下,进入已收短消息查询页面。2.3.1.1.7.2查询条件发件人, 发送时间,状态,有效时间。2.3.1.1.7.3查询列表序号, 标题,发送时间,发件人,有效时间,状态。2.3.1.1.7.4界面原型图5 查询已收短消

18、息界面图2.3.1.1.8删除已收短消息2.3.1.1.8.1功能描述用户点击操作栏中的“删除”功能,可对该条记录做出删除,或者选择要删除记录前面的复选框,进行批量删除;2.3.1.1.8.2相关流程图2.3.1.1.8.3查询列表发件人,发送时间,状态,有效时间。2.3.1.1.9修改未发送的短消息2.3.1.1.9.1功能描述可以修改未发送的短消息所有字段。2.3.1.1.9.2相关流程图2.3.1.2提醒设置2.3.1.2.1功能描述在用户登录成功后,若该用户当天有需要提醒的事务时,系统根据用户设置短消息提醒频率,自动弹出一个窗口,显示当天的未读短信,以提醒员工合理安排好工作时间。2.3

19、.1.2.2拓扑图图6 提醒设置拓扑图2.3.1.2.3用例图图7 提醒设置拓扑图2.3.1.2.4修改提醒设置2.3.2.4.4.1功能描述可以设置待办任务与短消息的提醒频率,默认情况下为登录时提醒一次。如果设定提醒频率,则按提醒频率到时提醒一次。2.3.1.2.4.1界面原型图8 设置提醒频率界面图3.总体设计3.1概述本次OA协同办公系统采用基于JAVA WEB的SSH及IBATIS四大框架技术开发。其中贯穿了MVC设计模式、JAVA面对象思想。如下图所示: 图9 系统整体架构图 模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用象EJBs和ColdF

20、usion Components这样的构件对象来处理数据库。被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据。由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。 控制器接受用户的输入并调用模型和视图去完成用户的需求。所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。图10 系统物理架构图3.2系统总拓扑图图11 系统拓扑图3.3系统功能清单表1 系统功能明细表名称模块名称功能概述OA办公自动化系统个人办公1:

21、科技园员工日程管理模块(增,删,改,查功能)2:站内短信模块(增,删,改,查功能)3:代办任务模块(查看功能,系统自动添加)4:系统通讯录模块(系统自动生成,排序功能,查询功能)5:个人通讯录模块(增,删,改,查功能)6:个人桌面设置模块(增,删,改,查功能)7:修改个人密码功能8:定时提醒功能9:工作日志管理模块(增,删,改,查功能)10:工作计划管理模块(增,删,改,查功能,工作计划分解)11:工作汇报管理模块(增,删,改,查功能)人事信息1:人事基本信息管理模块(增,删,改,查功能)2:员工分配管理模块(增,删,改,查功能)3:员工调度管理模块(增,删,改,查功能)4:员工离职管理模块(

22、增,删,改,查功能)基本信息1:数据字典管理模块(增,删,改,查功能)2:部门管理模块(增,删,改,查功能)3:岗位管理模块(增,删,改,查功能)4:职务管理模块(增,删,改,查功能)5:系统日志模块(查)权限组1:初始化管理员密码(administrator密码初始为88888888)2:角色信息管理模块(增,删,改,查,授权功能)3:用户信息管理模块(增,删,改,查,指定用户角色)3.3环境搭建v 安装Oracle数据库v 安装Oracle客户端v 安装PLSQLv 配置Oracle数据库v 安装MyEclipse 6.5v 配置tomcat/java环境变量4.系统设计4.1开发及运行环

23、境v 操作系统:Windows 2000/XP/2003 Server操作系统;v 数据库:Oracle 10.0.2.1;v Web服务器:Tomcat 5.0;v Java环境:Jdk 1.4;v 处理器:Intel Pentium 2GHz或以上的CPU;v 内存:512MB,建议使用1GB内存;v 硬盘:硬盘至少有1GB可用空间;4.2数据库设计本系统数据库采用Oracle 10g数据库,使用数据库连接池连接数据库后,通过服务端的JSP环境管理员就可以象对当地数据库一样通过各种界面对数据库进行浏览进行各种功能的显示。数据管理,增加、删除、修改。数据库是数据的存储之处,它是针对特定的需求

24、所整理与组织出的相关信息的汇总处。无论何时,企业都需要高性能、高稳定性和高安全性的服务器操作系统作为信息化的基础构架。企业级的高端应用更离不开数据库的支持。 Oracle是一个采用SQL语言的关系型数据库管理系统。它是一个不折不扣的服务器级数据库管理系统,与其它数据库服务器如SQL SERVER 、Sybase、 Informix等相比它拥有高弹性与多元化的结构,不仅符合业界的需求,更能与现今最重要的互联网紧密集成。本系统数据库名称为oasys。数据库oasys中包含29张表。在本系统中,以下字段作为公用字段,即每张表中都包含的字段,在以下就不在赘述。表2 默认字段序号字段名称中文说明键别是否

25、为空数据类型备注1id主键PKNot nullNUMBER(19,0)2createTime 创建时间Not nullDATE3operateTime 操作时间DATE4creator 创建人NUMBER(19,0)5operator 操作人NUMBER(19,0)6status 状态Not nullVARCHAR2(1)7version 版本INTEGER4.2.1站内短消息内容表(t_ico_message)4.2.1.1实体描述该表用于存放短消息内容,包含标题、短信内容、附件、信息有效时间、是否草稿、发件人id、发件箱中的状态、收件人的姓名列表、收件人的id列表。4.2.1.2字段列表表

26、3 站内短消息内容表序号字段名称中文说明键别是否为空数据类型备注1title标题 VARCHAR2(100)2contents短信内容VARCHAR2(1500)3accessory附件 VARCHAR2(200)4effectiveTime信息有时间 DATE5isDraft是否草稿 Not nullNUMBER(1)6sendId发件人IdFKNot nullNUMBER(19,0)7isDel发件箱NUMBER(1)8receiveName收件人姓VARCHAR2(1500)9receiveId收件人Id列VARCHAR2(1000)4.2.2站内短消息收发表(t_ico_sendMsg

27、Rcv)4.2.2.1实体描述该表用于存放收信人id、信息id、收件箱状态、阅读状态。4.2.2.2字段列表表4 站内短消息收发表序号字段名称中文说明键别是否为空数据类型备注1receiverStaffId收信人Id FKNot nullNUMBER(19,0)2messageId信息Id FKNot nullNUMBER(19,0)3receiveStatus收件状态Not nullNUMBER(1)4readStatus阅读状态 Not nullNUMBER(1)4.2.3提醒器表(t_ico_remindTime)4.2.3.1实体描述该表用于存放员工基本信息d、标记、提醒间隔时间。4.

28、2.3.2字段列表表5 站内短消息收发表序号字段名称中文说明键别是否为空数据类型备注1staffInfoId员工信息IdFKNot nullNUMBER(19,0)2flag标记Not nullNUMBER(1)3interval提醒间隔时间NUMBER(1)5.系统程序设计5.1个人办公5.1.1短消息管理5.1.1.1发送短消息系统正常运行,并且用户拥有发送短消息权限时,用户可以发送短消息。如下图所示:图12 发送站内短消息界面图发送短消息核心代码如下:/创建短消息对象message = new Message();/上传附件String str = ;List txtList = thi

29、s.fileUpload(Constants.ICO);if (ListUtils.isNotEmpty(txtList) if (StringUtils.isNotEmpty(txtList.get(0).toString()& !.equals(txtList.get(0).toString() / 先删除数据库中文件的存储路径,再删除文件if (null != message.getAccessory()& != message.getAccessory() str = message.getAccessory();message.setAccessory(txtList.get(0).

30、toString();/获得收件人的姓名列表和id列表if (ListUtils.isNotEmpty(rights) String i = ;String n = ;for (String strs : rights) staffInfo = (StaffInfo) messageService.find(StaffInfo.class, Long.parseLong(strs);if (null != staffInfo) if (null != staffInfo.getName()& != staffInfo.getName() n = n + , + staffInfo.getNam

31、e();i = i + , + strs;message.setReceiveName(n.substring(1, n.length();message.setReceiveId(i.substring(1, i.length();/判断是发送还是保存为草稿message.setIsDel(1l);if (result.equals(发送) message.setIsDraft(2l);Long messId = messageService.saveOrUpdate(message, this.getLoginUserId();/ 如果修改上传文件则删除原文件if (!.equals(st

32、r) File file1 = new File(str);file1.delete();/ 往message存储数据完毕if (ListUtils.isNotEmpty(rights) / 遍历收件人列表for (String sstr : rights) SendMsgRcv sendMsgRcv = new SendMsgRcv();Long id = Long.parseLong(sstr);sendMsgRcv.setReceiverStaffId(id);sendMsgRcv.setMessageId(messId);sendMsgRcv.setReadStatus(1L);sen

33、dMsgRcv.setReceiveStatus(1l);messageService.saveOrUpdate(sendMsgRcv, this.getLoginUserId();setRedirectURL(/ico/message_operateQuerySend.action);/ 处理提示信息addActionMessage(ConfigureUtils.getMessageConfig(IcoConstants.MESSAGE_OPERATESENDSUCCESS); else if (result.equals(保存草稿) message.setIsDraft(1l);messa

34、geService.saveOrUpdate(message, this.getLoginUserId();setRedirectURL(/ico/message_operateQuerySend.action);/ 处理提示信息addActionMessage(ConfigureUtils.getMessageConfig(IcoConstants.MESSAGE_OPERATESAVEDRAFTSUCCESS);5.1.1.2查询已发短消息系统正常运行,并且用户拥有查询已发短消息权限的情况下,进入已发短消息查询页面。如下图所示:图13 查询已发短消息界面图查询已发短消息记录核心代码如下:/

35、获得当前登录用户的id和发送人基本信息idMessageVO smessageVO = new MessageVO();StaffInfo staffInfo = contactService.querystaffInfo(this.getLoginUser();if (null != staffInfo) if (null != staffInfo.getId() & 0 != staffInfo.getId()smessageVO.setSendStaffId(staffInfo.getId();/处理查询条件if (messageVO != null) if (null != messa

36、geVO.getReceiveName()& != messageVO.getReceiveName() smessageVO.setReceiveName(messageVO.getReceiveName().trim();if (null != messageVO.getBeginTime() smessageVO.setBeginTime(messageVO.getBeginTime();if (null != messageVO) smessageVO.setEndTime(messageVO.getEndTime();/执行查询messageService.querySendMess

37、List(smessageVO, this.getPage();5.1.1.3查询已收短消息系统正常运行,并且用户拥有查询已发短消息权限的情况下,进入已发短消息查询页面。如下图所示:图14 查询已收短消息界面图查询已发短消息记录核心代码如下:/获得当前登录用户的id和接收人的基本信息idMessageVO smessageVO = new MessageVO();StaffInfo staffInfo = contactService.querystaffInfo(this.getLoginUser();if (null != staffInfo) if (null != staffInfo.

38、getId() & 0 != staffInfo.getId()smessageVO.setReceiverStaffId(staffInfo.getId();/处理查询条件if (messageVO != null) if (null != messageVO.getName() & != messageVO.getName() smessageVO.setName(messageVO.getName().trim();if (null != messageVO.getBeginTime() smessageVO.setBeginTime(messageVO.getBeginTime();i

39、f (null != messageVO.getEndTime() smessageVO.setEndTime(messageVO.getEndTime();if (null != messageVO.getEffectStartTime() smessageVO.setBeginTime(messageVO.getEffectStartTime();if (null != messageVO.getEffectEndTime() smessageVO.setEndTime(messageVO.getEffectEndTime();if (null != messageVO.getReadSt

40、atus()& 0 != messageVO.getReadStatus() smessageVO.setReadStatus(messageVO.getReadStatus();/修改阅读状态String dlag = this.getHttpServletRequest().getParameter(dlag);if (1.equals(dlag) smessageVO.setReadStatus(1L);if (messageVO = null) messageVO = new MessageVO();messageVO.setReadStatus(1L);/执行查询messageSer

41、vice.queryReceiveMessList(smessageVO, this.getPage();5.1.2提醒器设置5.1.2.1设置提醒频率系统正常运行,并且用户拥有提醒器设置权限的情况下,进入设置提醒器的页面。如下图所示:图15 设置提醒频率界面图提醒器设置的核心代码如下:/获得当前登录用户的id和基本信息idStaffInfo staffInfo = contactService.querystaffInfo(this.getLoginUser();设置当前登录用户的短消息和代办任务的提醒频率if (null != staffInfo) if (null != staffInf

42、o.getId() & 0 != staffInfo.getId()remindMess.setStaffInfoId(staffInfo.getId();remindMess.setFlag(1l);remindTask.setStaffInfoId(staffInfo.getId();remindTask.setFlag(2l);/保存数据remindService.saveOrUpdate(remindMess, this.getLoginUserId();remindService.saveOrUpdate(remindTask, this.getLoginUserId();6.结论通过本次对OA办公自动化系统中站内短消息管理和提醒器设置的研究,完成了短消息管理、提醒器设置模块的开发。客户可以在站内利用这个短消息功能互相沟通,满足企业使用的基本要求。但是这个功能还是存在缺陷,有待于进一步完善。在以后的研究中,会针对企业的具体需求,对现有的功能进行完善和加强,以达到方便客户之间进行交流的目的,提高企业的办公效率。参考文献1 李钟尉Java从入门到精通,北京:清华大学出版社,20

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号