收藏 分销(赏)

管理系统设计说明书-学位论文.doc

上传人:可**** 文档编号:3007415 上传时间:2024-06-13 格式:DOC 页数:37 大小:1.70MB 下载积分:10 金币
下载 相关 举报
管理系统设计说明书-学位论文.doc_第1页
第1页 / 共37页
管理系统设计说明书-学位论文.doc_第2页
第2页 / 共37页


点击查看更多>>
资源描述
******************* 实践教学 ******************* 兰州理工大学 计算机与通信学院 2013年春季学期 工程开发综合训练 题 目: 毕业设计管理系统 专业班级: 10级软件工程基地班 姓 名: *** 学 号: *** 指导教师: *** 成 绩: - 1 - 摘 要 该毕业设计管理系统采用的是B/S结构,以Sql Server 2008 + myeclipse + JSP作为开发工具。本系统借助了网络平台,不但使学生与老师进行有效的沟通,使学生可以及时的了解有关毕业论文的相关事情,而且使论文的上传查看、信息的管理、用户的管理和数据库的管理等工作更加容易,既提高了工作效率,也降低了成本。本系统主要针对于高校的毕业设计环节进行管理。 本系统实现了管理员对系统用户信息(管理员信息、教师信息、学生信息)、课题信息管理等;教师角色对个人信息的修改,课题的添加,查询管理、选题管理,论文管理等;评审角色对个人信息的修改,课题的评审等;学生角色可以对个人信息修改,查看成绩、选题登记与查询,论文提交与查看。 关键词:毕业论文选题;管理系统;SQL Server;J2EE;GPMS 目录 摘 要 I 目录 II 一、需求分析 1 1.1毕业论文管理的现状 1 1.2毕业论文管理系统的优势 1 1.3 系统流程图 2 1.4层次结构图 3 1.5数据流程图 6 1.5数据字典 7 二、概念结构设计 9 2.1系统E-R图 9 三、逻辑结构设计 10 3.1各个表的结构 10 四、系统实现 13 4.1 建立数据库 13 4.1.1数据库创建流程 13 4.1.2数据库关系 13 4.2 程序设计 14 4.2.1 工程目录结构 14 4.2.2 核心技术说明 14 4.3 项目研发时间线 20 五、系统测试 21 5.1 测试方案 21 5.2 测试用例及结果 21 六、软件使用说明书 24 6.1 登陆界面 24 6.2 主界面 24 6.3 查看个人信息 25 6.4 修改密码 25 6.5 维护个人信息 26 6.6 上报课题 26 6.7 课题查询 27 6.8 未评题目查询 27 6.9 题目评审 28 6.10 任务下派 28 6.11发布题目 29 6.12信息统计 30 6.13信息管理 30 七、设计总结 32 八、致谢 33 九、参考文献 34 一、需求分析 1.1毕业论文管理的现状 目前,国内外毕业论文选题一般采用两种方式:一种将毕业设计存在软盘上交;另一种则存放到教师的电脑上的一个共享目录内。但这两种方法都有各自的弊端:前一种方法不方便携带、速度慢、容量小、易损坏;后一种方法虽然解决了软盘容量小、容易坏的问题。但存在一个更致命的缺点:学生可以随意的查看、更改和删除其他同学的毕业设计,造成大量如抄袭毕业设计、恶意删除或修改其他同学毕业设计的事情发生;老师在帮学生修改毕业设计时,也很容易弄不清楚毕业设计批改与否;毕业设计是谁的或是旧毕业设计没删除掉,跟新毕业设计搞混了等情况,虽然有些可以用严格的纪律来实现管理,但仍然会给学生和老师带来很多的麻烦。而且,由于毕业设计是一个持续较长时间的过程,这其中需要同学和老师不断的沟通,但是期间若是由于学生有事或身体不适等情况,就不得不中途请假,而这势必会影响到毕业设计的顺利完成。在当前的信息化时代中,任何学校,都需要一个实用的毕业论文选题来规范毕业论文选题,这将会大大提高学校的管理水平,优化资源,实现效益的最大化。 现在国内外也有很多毕业论文选题的软件,采用的技术也是多种多样,如基于JSP、FTP模式,但大多数毕业论文选题主要用于网络学院的远程教学。至于校园内的正规教学,利用毕业论文选题组织管理教学活动的并不多。针对国内外对教学管理软件的巨大需要和基本需要,一个好的教学管理软件,必须功能齐全,操作简便,向用户展示友善的操作界面。在完善功能的同时又必须兼顾系统的灵活性,安全性,健壮性。一个好的教学管理系统,不管是计算机专业人员还是其他用户都能很快上手,操作简单,便于安装,容易普及。 1.2毕业论文管理系统的优势 由于学校教学功能的特殊定位,致使教师和学生必须在除了简单的师生区别外,还有合作意味的关系。学生上交毕业设计和老师批改毕业设计,这本身除了学习交流外,还是一个合作的概念。所以,这其中的信息管理流程,需要以一个规范的MIS来管理。 毕业论文管理系统的优势主要表现在三个方面: 1、毕业设计无纸化,环保又方便。传统的毕业设计上交方式,都是经由学生科目代表统一收齐后,交到教师办公室,然后教师抽取一个整段的时间,或是若干分时间段,一份一份地手工翻阅批改,然后再做好相关记录。这种传统的方式,一是会有很大的体力消耗,二是在精力上也是不小的付出,而且这种辛苦在很多时候往往没能得到满意的回复。而无纸化毕业设计,只需在电脑前点点鼠标,在体力上几乎没有多大的消耗,而且在环保、效率、针对性教学指导方面做得要比传统的毕业论文选题科学得多。 2、科学管理,安全可靠。传统的毕业论文选题方式,都是一份份独立的毕业设计,一个学生对应一份,而这么一撂的设计,经常会由于各种原因,丢失或是污损,给毕业论文选题和教学进程带来很大的麻烦和不便。而毕业论文选题的动作,只需做好系统数据库的保护,以上问题可以迎刃而解了。 3、简化工作,促进其他方面的综合发展。由于毕业论文选题的介入运行,可以使教师腾出更多的时间,做更多针对性的个性化教学服务,从而使每个学生都有机会在学业上有更大的进步。 1.3 系统流程图 登录失败 登陆成功 登陆者的身份 学生 登录界面 主界面 学生模块 教师模块 评审人模块 管理员模块 教师 管理 评审人 图1-1 系统流程图 34 1.4层次结构图 图1-2 学生层次结构图 图1-3 教师层次结构图 图1-4 评审人层次结构图 图1-5 管理员层次结构图 1.5数据流程图 图1-6 系统数据流图 1.5数据字典 主要的数据字典: 表1-1 管理员信息数据字典 名字:管理员信息 别名:administrator 描述:管理员的相关信息 定义:管理员信息=管理员id+管理员name+管理员password 位置:存于数据库 表1-2 教师信息数据字典 名字:教师信息 别名:teacher 描述:教师的相关信息 定义:教师信息=教师id+教师密码+教师姓名+教师职称+教师性别+教师工作地点+教师QQ+教师电话 位置:存于数据库 表1-3 学生信息数据字典 名字:学生信息 别名:student 描述:学生的相关信息 定义:学生信息=学生id+学生姓名+学生性别+学生系别+学生专业+学生年级+学生班级+学生成绩+学生电话+学生密码 位置:存于数据库 表1-4课题信息数据字典 名字:课题信息 别名:topic 描述:课题的相关信息 定义:课题信息=课题id+课题名+出题教师+课题类别+所属专业+需求人数+课题要求+课题内容 位置:存于数据库 表1-5学生选题数据字典 名字:学生选题信息 别名:choosetopic 描述:学生和已选的课题的对应关系 定义:学生选题信息=学生id+课题id 位置:存于数据库,在选题时应用 表1-6管理员分配答辩老师数据字典 名字:管理员分配答辩老师 别名:answer 描述:管理员为每一个课题分配5位答辩老师,其中一名为答辩组长。 定义:管理员分配答辩老师=答辩题目id+答辩题目+答辩组长+答辩老师1+答辩老师2+答辩老师3+答辩老师4+答辩时间+答辩教室 位置:存于数据库,在答辩时应用 表1-7 学生成绩信息数据字典 名字:学生成绩信息 别名:score 描述:学生成绩的相关信息 定义:学生成绩信息=成绩id+学生名字+实习成绩+指导成绩+评阅成绩+答辩成绩 位置:存于数据库,在归档时应用 二、概念结构设计 2.1系统E-R图 本系统涉及的实体主要由管理员、教师、学生、课题组成,主要有监督、出题、审题、选题等几个关系。各实体属性和关系图如下图所示。 管理员 姓名 密码 教师 职称 学历 密码 性别 教研室 姓名 电话 专业 监督 监督 监督 学生 密码 班级 电话 性别 姓名 课题 专业 班级 评题人 出题人 名称 管理员 学生 教师 课题 审题 出题 选题 1 n 1 n 1 n n n 1 1 n 图2-1 系统E-R图 三、逻辑结构设计 3.1各个表的结构 表3-1教师表(T_teacher) 序号 列号 数据类型 长度 小数 标识 主键 允许空 默认值 示意 说明 1 Tid int 20 是 否 教工号 2 Tname vachar 20 姓名 3 Tpassword varchar 32 否 密码 MD5加密 表3-2教师详细信息表(T_teadetail) 序号 列号 数据类型 长度 小数 标识 主键 允许空 默认值 示意 说明 1 Tid Int 是 否 教工号 外键(T_teacher::Tid) 2 Tname Vachar 20 姓名 3 Tsex char 2 性别 4 Schid tinyint 学院号 外键(T_schools::Schid) 5 Tphone bigint 电话 6 Tqq bigint qq 7 Tmail varchar 50 邮箱 8 Tworkplace varchar 30 办公地点 9 Ttitle varchar 10 职称 表3-3毕设题目表(T_topic) 序号 列号 数据类型 长度 小数 标识 主键 允许空 默认值 示意 说明 1 Topid int 是 否 题目编号 2 Topname varchar 50 否 题目名称 3 Topproperty char 8 题目性质 理论研究,生产实践, 科学实验 4 Toptype char 10 题目类型 工程设计型,工程技术型,实验研究型,软件开发型 5 Topsource varchar 50 题目来源 6 Topcontent text 题目内容 7 Toptime datetime 否 getdate() 发布日期 8 Topselect bit 0 是否已被选 1为是;0为否 9 Tid int 否 教师编号 外键(T_teacher::Tid) 表3-4毕设题目临时表(T_temptopictb) 序号 列号 数据类型 长度 小数 标识 主键 允许空 默认值 示意 说明 1 Topid int 是 否 题目编号 2 Topname varchar 50 否 题目名称 3 Topproperty char 8 题目性质 理论研究,生产实践, 科学实验 4 Toptype char 10 题目类型 工程设计型,工程技术型,实验研究型,软件开发型 5 Topsource varchar 50 题目来源 6 Topcontent text 题目内容 7 Toptime datetime 否 getdate() 上报日期 8 Tid int 教师编号 外键(T_teacher::Tid) 9 Rid int 0 评审编号 外键(T_reviewer::Rid) 表3-5系(专业)表(T_faculties) 序号 列号 数据类型 长度 小数 标识 主键 允许空 默认值 示意 说明 1 Fid tinyint 是 否 系编号 2 Fname varchar 30 否 系名称 表 3-6-学院表(T_schools) 序号 列号 数据类型 长度 小数 标识 主键 允许空 默认值 示意 说明 1 Schid tinyint 是 否 学院编号 2 Schname varchar 30 否 学院名称 四、系统实现 4.1 建立数据库 数据库采用SqlServer2008,数据库名称为GPMS。 4.1.1数据库创建流程 数据库创建流程如下: 图4.1.1 数据库创建流程 4.1.2数据库关系 数据库关系图如下: 图4.1.2 数据库关系图 4.2 程序设计 4.2.1 工程目录结构 4.2.2 核心技术说明 1、 J2EE中重量级框架 我们采用Java Servlet + Java Server Pages (JSP) + Enterprise Java Bean (EJB )的J2EE中重量级框架,其中所包含的各类组件、服务架构及技术层次,均有共同的标准及规格,让各种依循J2EE架构的不同平台之间,存在良好的兼容性,解决过去企业后端使用的信息产品彼此之间无法兼容,企业内部或外部难以互通的窘境。 2、 DAO(数据库接口层)的封装 在核心J2EE模式中是这样介绍DAO模式的:为了建立一个健壮的J2EE应用,应该将所有对数据源的访问操作抽象封装在一个公共API中。用程序设计的语言来说,就是建立一个接口,接口中定义了此应用程序中将会用到的所有事务方法。在这个应用程序中,当需要和数据源进行交互的时候则使用这个接口,并且编写一个单独的类来实现这个接口在逻辑上对应这个特定的数据存储。 我们采用DAO的思想,将所有对数据源数据库的访问操作抽象封装在几个接口类中,使事务界限更加清晰,分离了业务逻辑和数据库基础操作,代码结构也看起来非常清晰。还有一个好处是,数据库的修改只要修改DAO层的访问方式就可以了,不用整个项目都进行修改。 3、 Ajax技术异步刷新 传统的web应用允许用户填写表单(form),当提交表单时就向web服务器发送一个请求。服务器接收并处理传来的表单,然后返回一个新的网页。这个做 法浪费了许多带宽,因为在前后两个页面中的大部分HTML代码往往是相同的。由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。 与此不同,AJAX应用可以仅向服务器发送并取回必需的数据(而不是返回整个页面,只是把从服务器端上取出的数据填充到div或span层上去而已,实现无刷新的效果),它使用SOAP或其它一些基于 XML的web service接口,并在客户端采用JavaScript处理来自服务器的响应。因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快 的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以Web服务器的处理时间也减少了。 使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为 迅捷地回应用户动作,并避免了在网络上发送那些没有改变过的信息。 Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。 4、 数据库连接池 在传统的两层结构中,客户端程序在启动时打开数据库连接,在退出程序时关闭数据库连接。这样,在整个程序运行中,每个客户端始终占用一个数据库连接,即使在大量没有数据库操作的空闲时间,如用户输入数据时,从而造成数据库连接的使用效率低下。 在三层结构模式中,数据库连接通过中间层的连接池管理。只有当用户真正需要进行数据库操作时,中间层才从连接池申请一个连接,数据库操作完毕,连接立即释放到连接池中,以供其他用户使用。这样,不仅大大提高了数据库连接的使用效率,使得大量用户可以共享较少的数据库连接,而且省去了建立连接的时间。 我们以Tomcat7数据库连接池配置sqlserver2008。Tomcat JDBC连接池提供对多种数据库的支持。前提要修改tomcat服务器目录下面的conf中的Context.xml配置文件和程序中的 Web.xml文件,代码中以如下方式实现: Context c = new InitialContext(); DataSource ds = (DataSource)c.lookup("java:comp/env/jdbc/books"); conn = ds.getConnection(); 5、 动态页面的实现(CSS+动态js脚本) JS的作用是制作动.态网页效果等,是提高用户体验的利器!而CSS是定义网页样式,让网页元素更好的表现给用户,好的的网页表现形式也能提高用户体验!js可以使网页的功能更加丰富,给网页添加更多实时的、动态的、交互的内容。当服务端需要对数据进行验证时,使用javascript可以在客户端验证数据,不需要把数据传到服务器端再传回来,比较节省时间。你可以把网页里的内容隐藏起来,然后当鼠标放到某个地方的时候把隐藏的内容显示出来,就像这个页面右上角的”我的知道“那个菜单做的事情。网页里的下拉菜单基本上都使用js完成。当你查看表格的时候,表格的内容很多,你可以使用js给每一行数据设置不同的颜色以示区分,也可以用js完成鼠标指到表格上表格就变色的功能。 6、 批量信息图表统计 程序以javascript实现将数据库中动态数据以图表形式显示在页面上,利用ajax将实现更好的用户体验。这样做减轻了服务端的压力。不过,这种方式的确定是客户端变得庞大。而且其实现原理很复杂,基本是div实现点阵字原理(一点点画上去的)来实现的。效率就显得不够快。和原来用jfreechart比较,感觉jfreechart不好的地方是他总是先生成图。然后利用src来显示,其效率也不怎么高。不过服务器好的话,客户端就轻松。 7、 中文字符串相似度检测的实现 Levenshtein 距离,又称编辑距离,指的是两个字符串之间,由一个转换成另一个所需的最少编辑操作次数。许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除一个字符。编辑距离的算法是首先由俄国科学家Levenshtein提出的,故又叫Levenshtein Distance算法。 在程序中,为实现题目相似度匹配功能,我采用了Levenshtein Distance算法和最长公共子序列算法LCS(Longest Common Subsequence)相结合的方式,计算预上报题目名称和已发布题目的相似百分度。经过大量数据测试,发现计算结果大于60%题目存在较为明显的相似,故将结果定为相似度大于60%无法上报。核心代码如下: //LCS algorithm 最长公共子序列算法 private static int longestCommonSubstringLength(String S1, String S2){ return longestCommonSubstrings(S1, S2, 0).toString().length(); } private static Collection<String> longestCommonSubstrings(String S1, String S2, int minimumLength){ Collection<Integer> indexes = new ArrayList<Integer>(); int Max = minimumLength; for (int i = 0; i < S1.length(); i++){ for (int j = 0; j < S2.length(); j++){ int x = 0; int y = Math.min(S1.length()-i,S2.length()-j); while (x < y && (S1.charAt(i + x) == S2.charAt(j + x) )){ x++; } if (x > Max){ Max = x; indexes = new ArrayList<Integer>(); indexes.add(i); }else if (x == Max){ indexes.add(i); } } } Collection<String> results = new HashSet<String>(); for (Integer i : indexes){ results.add(S1.substring(i, (i + Max))); } return results; } //Levenshtein Distance 算法实现 public static double getEditDistance(String s, String t) { int d[][]; // matrix int n; // length of s int m; // length of t int i; // iterates through s int j; // iterates through t char s_i; // ith character of s char t_j; // jth character of t int cost; // cost int distance; //edit distance double similarity; // Step 1 n = s.length(); m = t.length(); String ss = s+s; int len = longestCommonSubstringLength(ss,t); if(len>s.length()) len=s.length(); len *= 2; // Prevent 100% similarity between a string and its // cyclically shifted version (e.g. "aircon" and "conair") if (len == s.length() + t.length() && s.length()==t.length()){ len--; similarity = len/((s.length()+t.length())*1.0)*100; return similarity; }else{ if (n == 0) { return m; } if (m == 0) { return n; } d = new int[n + 1][m + 1]; // Step 2 for (i = 0; i <= n; i++) { d[i][0] = i; } for (j = 0; j <= m; j++) { d[0][j] = j; } // Step 3 for (i = 1; i <= n; i++) { s_i = s.charAt(i - 1); // Step 4 for (j = 1; j <= m; j++) { t_j = t.charAt(j - 1); // Step 5 if (s_i == t_j) { cost = 0; } else { cost = 1; } // Step 6 d[i][j] = Minimum(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost); } } distance = d[n][m]; similarity = (1-distance/((s.length()+t.length())*1.0))*100; return similarity; } } 8、 美观高效验证码的实现 验证码一般是防止有人利用机器人自动批量注册、对特定的注册用户用特定程序暴力破解方式进行不断的登陆、灌水。因为验证码是一个混合了数字或符号的图片,人眼看起来都费劲,机器识别起来就更困难。 我们的图片验证码经过多次测试检验,采用数字“0-9”和字母“a-z”“A-Z”,排除易混淆的字母和数字,不区分大小写。通过测试,乳白色底字码更易识别,随机干扰线和随机干扰点20条左右最合适。 //定义验证码图像的缓冲流 BufferedImage buffImg = new BufferedImage( width, height,BufferedImage.TYPE_INT_RGB); //产生图形上下文 Graphics2D g = buffImg.createGraphics(); //创建随机数产生函数 Random random = new Random(); //将验证码图像背景填充为白色 g.setColor(Color.WHITE); g.fillRect(0, 0, width, height); //创建字体格式,字体的大小则根据验证码图片的高度来设定。 Font font = new Font("Fixedsys",Font.BOLD, fontHeight); //设置字体。 g.setFont(font); //为验证码图片画边框,为一个像素。 g.setColor(Color.GRAY); g.drawRect(0, 0, width - 1, height - 1); //随机生产22跳图片干扰线条,使验证码图片中的字符不被轻易识别 g.setColor(Color.LIGHT_GRAY); for(int i = 0; i<22; i++) { int x = random.nextInt(width); int y = random.nextInt(height); int xl = random.nextInt(12); int yl = random.nextInt(12); g.drawLine(x, y, x + xl, y + yl); } //randomCode保存随机产生的验证码 StringBuffer randomCode = new StringBuffer(); //定义颜色三素 int red = 0, green = 0, blue = 0; //随机生产codeNum个数字验证码 for (int i = 0; i<codeNum; i++) { //得到随机产生的验证码 String strRand = String.valueOf(codes[random.nextInt(codes.length)]); //使用随机函数产生随机的颜色分量来构造颜色值,这样输出的每位数字的颜色值都将不同。 red = random.nextInt(255); green = random.nextInt(255); blue = random.nextInt(255); //随即生成验证码字符的水平偏移量 int w = 0; int x = (i + 1) % 2; if (x == random.nextInt(2)) { w = codeY - random.nextInt(7); } else { w = codeY + random.nextInt(7); } //用随机产生的颜色将验证码绘制到图像中。 g.setColor(new Color(red, green, blue)); g.drawString(strRand, fontHeight*i+10, codeY); //将产生的四个随机数组合在一起。 randomCode.append(strRand); 9、 用户密码MD5加密及异常登录的预防 我们采用用户密码MD5加密技术,这样既能防止数据库管理员盗取用户数据非法操作,就算有人得到数据库,找到的也是MD5加密后的一段乱码,破解是能破解,但是很费工夫的。所以基本上可以说是安全的。以前MD5被认为是不可逆的,不过现在被破解了,不过还是比较安全的。 Filter可以使用通配符用来过滤一个、多个url,或者过滤一个、多个的Servlet。 我们使用Filter过滤一些成功操作界面,防止非法用户绕过登录页面直接进入到成功页面。对用户的异常访问,用error.jsp页面拦截,并在5秒后强行跳回登陆页面,使用户先登录系统。 4.3 项目研发时间线 图4.3.1 项目研发时间线 五、系统测试 5.1 测试方案 黑盒测试也称功能测试或数据驱动测试,它是在已知产品所应具有的功能,通过测试来检测每个功能是否都能正常使用,在测试时,把程序看作一个不能打开的黑盒子,在完全不考虑程序内部结构和内部特性的情况下,测试者在程序接口进行测试,它只检查程序功能是否按照需求规格说明书的规定正常使用,程序是否能适当地接收输入数据而产生正确的输出信息,并且保持外部信息(如数据库或文件)的完整性。 "黑盒"法着眼于程序外部结构、不考虑内部逻辑结构、针对软件界面和软件功能进行测试。"黑盒"法是穷举输入测试,只有把所有可能的输入都作为测试情况使用,才能以这种方法查出程序中所有的错误。实际上测试情况有无穷多个,人们不仅要测试所有合法的输入,而且还要对那些不合法但是可能的输入进行测试。 白盒测试按照程序内部的逻辑对程序进行测试,检查程序中的每条通路是否能按预定要求正确工作。白盒测试又称为结构测试。 在这里主要采用的是黑盒测试,并以白盒测试为辅助测试。 5.2 测试用例及结果 1.登录时,输入正确的和错误的用户ID和密码,转向是否正确 1)正确的用户名和密码: 输入:用户名:10240001,密码:10240001 预期输出:登陆到教师模块主页。 2)错误的用户名和密码: 输入:用户名:12345,密码:345 预期输出:跳转到教师登陆页面。 以上测试用例经过验证是正确的。 2.教师登录成功后,是否可以上报课题。 图5-1 添加课题测试 3.是否可以修改个人信息。 图5-2 修改个人信息测试 4.是否可以修改课题信息。 图5-3修改课题信息测试 六、软件使用说明书 6.1 登陆界面 教师输入正确的用户名和密码,就可以进入到毕业设计管理系统,初始密码与用户名一致,登陆界面如图6-1所示 图6-1 登陆界面 6.2 主界面 登陆验证若正确的话,进入主界面,如图6-2所示: 图6-2 主界面 6.3 查看个
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 学术论文 > 毕业论文/毕业设计

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服