欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOC文档下载  

    课程设计论文投票系统的设计.doc

    • 资源ID:4870064       资源大小:314.51KB        全文页数:22页
    • 资源格式: DOC        下载积分:10金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    课程设计论文投票系统的设计.doc

    大连交通大学信息工程学院毕业实习报告题 目 投票系统的设计 学生姓名 专业班级 指导教师 老师名 职 称 所在单位 系名 教研室主任 完成日期 2011年03月25日课程设计成绩考核表专业班级姓名学号考 核 项 目评分备注1平时工作态度及遵守纪律情况(10分)2掌握基本理论、关键知识、基本技能的程度和阅读参考资料的水平(10分)3独立工作能力、综合运用所学知识分析和解决问题能力及实际工作能力提高的程度(20分)4完成课程设计说明书及软件的情况与水平(工作量及实际运行情况和创新性)(60分)总评成绩综合评定:(优、良、中、及格、不及格)指导教师签字: 2011年 3 月 25 日 毕业实习任务书一、设计(研究)内容和要求内容:投票系统主要是为用户提供一个方便易用的投票界面,同时还具有查看投票、添加和删除投票选项的功能。1.软件要求: (1) 数据库访问模块:提供连接、访问数据库的功能,利用JavaBean实现,当JSP页面中需要访问数据库时直接调用这个JavaBean(2) 投票功能模块:提供投票功能以及查看投票功能,用户通过“投票”按钮对选中项进行投票操作,还可以通过“查看投票”链接查看各个投票选项目前的得票情况(3) 系统维护模块:包括管理员的登录、投票选项的添加、删除功能2.文档要求(1) 设计程序结构、画出类之间的关系图。(2) 按照指导老师给出的模板书写报告,报告要求在25-30页(A4),包括综述、系统总体设计、系统实现、性能分析、结论等。(3)参考文献数量至少4篇。二、工作量及计划安排本次课程设计共3周(15个工作日)时间。第13个工作日:查找相关资料、书籍,阅读示例文档;设计程序结构、模块图、完成类的设计。第412个工作日:完成程序的编码,并且自己调试、测试。穿插进行报告的撰写。第1315个工作日:撰写和整理项目文档;软件验收、答辩;验收报告、提交文档。 指导教师签字: 2011年3月10日摘 要随着计算机科学技术的发展,采用计算机进行企业的信息管理已经成为社会关注的热点,而采用数据库技术作为数据管理的最有效的手段,它的使用已经成为计算机应用的主流。现在在许多网站都提供用户投票功能,本系统可做为一个子模块链入到任何一个需要投票功能的网站中,因此系统界面的设计应该尽量做到简洁友好,方便用户的使用。系统采用B/S模式,使用JSP进行服务器端动态网页的开发。关键词:数据库,投票管理,B/S模式目 录1 需求分析11.1 系统概述11.2 系统运行环境11.3 功能需求描述12 总体设计12.1 开发与设计的总体思想12.2 系统模块结构图22.3 模块设计22.4 系统流程描述32.5 界面设计32.6数据库设计53 详细设计63.1 应用部署图63.2 访问数据库的JavaBean73.3 投票功能模块93.4 系统维护模块124 系统测试165 毕业实习总结16参考文献17大 连 交 通 大 学 信 息 工 程 学 院 毕业实习报告1 需求分析1.1 系统概述本系统是一个简单的投票系统,主要提供以下功能:系统首页上显示所有投票选项的列表,用户可以通过选中某个选项并点击“投票”按钮进行投票操作。另外,还提供查看投票详细信息的超链接,用户点击后可在另一页面上看到各个投票选项目前的投票情况,主要包括各选项所得的票数、占总票数的百分比等信息,并且以柱形图显示各选项的得票率,可以让用户从直观上看到各项的得票情况。最后,还提供系统维护功能,当用户以合法的管理员身份登录后,可以利用该功能来添加、删除投票选项。1.2 系统运行环境1. 硬件环境l 处理器: Inter Pentium 166 MX 或更高l 内存: 32Ml 硬盘空间:1GBl 显卡: SVGA显示适配器2. 软件环境l 操作系统: Windows 98/ME/2000/XPl Web服务器:Tomcat 4.1.2或以上版本l 数据库:Accessl 客户端:IE 5.0 或以上版本l 开发语言:JSP、Java1.3 功能需求描述投票系统主要是为用户提供一个方便易用的投票界面,同时还具有查看投票、添加和删除投票选项的功能。投票系统主要需要实现以下一些基本功能:1. 投票:用户在投票系统首页上可以通过选中每个投票项前面的单选按钮并单击“投票”按钮来进行投票。2. 查看投票情况:用户在投票系统首页上可以通过点击“查看投票”超链接来查看当前的最新投票情况,包括各投票项的得票数、得票率等。3. 管理员登录:当用户在投票系统首页上点击“投票系统维护”超链接时,需要用户输入合法的用户名和密码,成功登录后,可以使用系统维护功能。4. 删除投票选项:用户做为管理员进入系统维护页面后,可以通过单击显示在每个投票项右边的“删除”超链接来删除对应的投票选项。5. 添加投票选项:用户做为管理员进入系统维护页面后,可以通过在文本框中输入新的投票项名称并点击“提交”按钮来添加新的投票选项。2 总体设计2.1 开发与设计的总体思想 现在在许多网站都提供用户投票功能,本系统可做为一个子模块链入到任何一个需要投票功能的网站中,因此系统界面的设计应该尽量做到简洁友好,方便用户的使用。系统采用B/S模式,使用JSP进行服务器端动态网页的开发。2.2 系统模块结构图 依据需求分析结果,投票系统可以分为三个模块:数据库访问模块、投票功能模块和系统维护模块。如图2-1所示:图2-1 系统模块结构图2.3 模块设计1. 数据库访问模块:提供连接、访问数据库的功能,利用JavaBean实现,当JSP页面中需要访问数据库时直接调用这个JavaBean。模块功能树如图2-2所示:图2-2 数据库访问模块2. 投票功能模块:提供投票功能以及查看投票功能,用户通过“投票”按钮对选中项进行投票操作,还可以通过“查看投票”链接查看各个投票选项目前的得票情况。模块功能树如图2-3所示:图2-3 投票功能模块3. 系统维护模块:包括管理员的登录、投票选项的添加、删除功能。系统维护模块功能树如图2-4所示:图2-4 系统维护模块2.4 系统流程描述系统的流程图如图2-5所示:图2-5 系统流程图2.5 界面设计界面设计应遵循简洁美观、方便易用的基本原则,具体设计如下:1.投票系统主页面设计,具体设计效果图如图2-6所示:图2-6 投票系统主页面设计效果图2.查看投票情况页面设计,具体设计效果如图2-7所示:图2-7 查看投票情况页面设计效果图3.管理员登录页面设计,具体设计效果如图2-8所示:图2-8 管理员登录页面设计效果图4.系统维护页面设计,具体设计效果如图2-9所示:图2-9 系统维护页面设计效果图2.6数据库设计本系统采用Access数据库,在数据库vote中使用的数据表结构设计如下:(1)名称:投票信息表表名称标识:vote数据表vote用来存储所有投票选项的id号、名称、得票数等信息,表的结构如表2-1所示:表2-1数据表vote的结构名称字段名称数据类型主键非空投票项id号id数字(自动编号)YesYes投票项名称item文本NoNo投票项的得票数count数字NoYes表vote中的测试数据如图2-10所示:图2-10 数据表vote中的测试数据(2)名称:管理员信息表表名称标识:admin数据表admin来存储管理员的用户名和密码信息,表的结构如表2-2所示:表2-2 数据表admin的结构名称字段名称数据类型主键非空管理员id号id数字(自动编号)YesYes管理员用户名name文本NoNo管理员口令password文本NoNo表admin中的测试数据如图2-11所示:图2-11 数据表admin中的测试数据本系统采用JDBC-ODBC桥的方式连接数据库,因此要首先配置一个ODBC数据源,数据源名定为vote。3 详细设计基于系统需求分析与系统总体设计的结论,下面按照模块的划分来分别阐述系统的详细设计和实现过程。3.1 应用部署图投票系统对应于一个名为vote的Web应用,具体的部署情况及目录结构如图3-1所示:图3-1 应用部署图3.2 访问数据库的JavaBean本系统使用一个JavaBean来专门完成数据库的连接、访问等操作,当在某几个JSP页面中需要访问数据库时,就可以直接调用这个JavaBean而不是把重复的代码都重写一遍,这样使得整个程序变得更加简洁、清晰。接下来,我们来实现访问数据库JavaBean。1.模块描述负责完成与数据库的连接、访问、关闭等操作。2.类的设计与实现(1)名称:DBBean.java(2)功能:负责完成与数据库的连接、访问、关闭操作。(3)属性设计:如表3-1所示。表3-1 类属性定义表属性名属性类型访问控制描述driverStrString私有(private)要加载的驱动程序类名ConnStrString私有(private)连接得数据库urlConnConnection私有(private)驱动程序和指定数据库之间的连接对象StmtStatement私有(private)语句对象(4)构造方法设计1)方法定义:public DBBean() 2)IPO图:输入:无。处理:加载由属性driverStr指定的驱动程序,若加载中出现异常,则显示异常描述信息。输出:无。3)程序清单:public DBBean() try /加载驱动程序Class.forName(driverStr); catch(ClassNotFoundException ex) System.out.println(ex.getMessage();(5)主要方法设计方法一:executeQuery方法1)方法定义:public ResultSet executeQuery(String sql)2)IPO图:输入:要执行的SQL语句。处理:创建驱动程序和指定数据库间的连接对象,建立语句对象,利用语句对象的executeQuery()方法执行SQL语句,并将执行结果存放于局部变量rs中。输出:查询结果集rs。3)程序清单:/执行查询SQL语句,返回值是一个满足查询条件的结果集public ResultSet executeQuery(String sql) ResultSet rs = null;try /获取驱动程序对象和指定数据库之间的连接对象conn = DriverManager.getConnection(connStr); /建立语句对象stmt = conn.createStatement();/执行SQL语句,返回一个结果集对象rs = stmt.executeQuery(sql); catch(SQLException ex) System.out.println(ex.getMessage();return rs;方法二:executeUpdate方法1)方法定义:public int executeUpdate(String sql)2)IPO图:输入:要执行的SQL语句。处理:创建驱动程序和指定数据库间的连接对象,建立语句对象,利用语句对象的executeUpdate()方法执行SQL语句,并将执行结果存放于局部变量result中。输出:更新的记录个数result。3)程序清单:/执行添加、修改和删除SQL语句,返回值是受到此次操作影响的记录个数public int executeUpdate(String sql)int result=0;tryconn = DriverManager.getConnection(connStr);stmt = conn.createStatement();result = stmt.executeUpdate(sql);catch(SQLException ex)System.out.println(ex.getMessage();return result;方法三:close方法1)方法定义:public void close()2)IPO图:输入:无。处理:调用Connection对象和Statement对象的close()方法,关闭语句对象和连接对象。输出:无。3)程序清单:/关闭方法public void close()try/关闭语句对象stmt.close();/关闭连接对象conn.close();catch(SQLException ex)System.out.println(ex.getMessage();(6)编译和部署JavaBean编写好的JavaBean,可以使用JDK中的javac命令进行编译,需要注意的是,不带参数的javac命令没有生成目录的能力,需要使用带-d参数的命令进行编译:javac DBBean.java d .其中的“.”代表当前目录,编译成功后,会在当前目录下生成一个名为dbBean的目录,在该目录中有编译好的字节码文件DBBean.class。然后,将dbBean子目录以及该目录中的字节码文件复制到“Tomcat安装目录webappsvoteWEB-INFclasses”中(vote为投票系统对应的Web应用名),重启Tomcat服务器即可在vote应用中的各个JSP页面里使用该JavaBean。3.3 投票功能模块投票功能模块主要提供用户投票功能、查看投票信息功能,涉及到的几个JSP页面中均需要连接、访问数据库,因此使用了刚刚实现并发布好的DBBean来完成数据库连接及访问操作。1.模块描述提供投票功能、查看投票情况功能。2. 源文件定义(1)index.jsp名称:投票系统首页功能:主要负责把数据表vote中的所有记录读出并显示在页面上供用户投票。另外,还提供“查看投票”超链接供用户查看当前的所有投票情况。输入:无。处理:在vote表中查找所有记录,并显示各投票项的名称。输出:投票项显示及操作界面。程序清单:<%-设置页面字符集,保证能够正确显示中文-%><% page contentType="text/html;charset=gb2312" import="java.sql.*"%><%-声明和创建数据库访问Bean的对象db,生存时间设为session-%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><%-设置db对象的connStr属性值为“jdbc:odbc:vote”,即所连接的数据库的url-%><jsp:setProperty name="db" property="connStr" value="jdbc:odbc:vote"/><html><body><center><h2>您最喜爱的奥斯卡获奖影片是:</h2><table border bordercolor="#0066FF" bgcolor="#CCFFFF"><form method="post" action="vote.jsp"><%ResultSet rs=db.executeQuery("select * from vote");while(rs.next()out.println("<tr>");/设置单选按钮的值为当前投票项的id号out.println("<td><input type='radio' name='id' value='"+rs.getString("id")+"'>");/读出当前投票项的名称并显示在页面上out.println(rs.getString("item");out.println("</td>");rs.close();db.close();/将session的生存时间设为无穷大,避免因session过期引起的问题session.setMaxInactiveInterval(-1);%><tr><td align="center"><input type="submit" value="投票"></td></form><tr><td align="center"><a href="info.jsp">查看投票</a></td></table><p><a href="manage.jsp">投票系统维护</a></center></body></html>(2)info.jsp名称:查看投票情况页面功能:主要负责显示目前的得票情况,包括投票项名称、得票数、总投票数、得票百分比和柱形图片。输入:无。处理:从vote表中查找每一项的得票数,计算总的投票数,并计算二者比值即每一项的得票率,根据得票率设置每一项的柱形图片width属性。输出:各个投票项的得票情况及得票率柱形图。程序清单:<% page contentType="text/html;charset=gb2312" import="java.sql.*"%><%-继续使用在index.jsp中声明和创建的JavaBean对象db-%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><center><table border bordercolor="#0099FF"><tr><th bgcolor='#CCFFFF'>选项</th><th bgcolor='#CCFFFF'>得票数</th><th bgcolor='#CCFFFF'>比例</th><%int totalNum=0;/利用SQL语句的集合函数sum()计算总的投票数ResultSet rs=db.executeQuery("select sum(count) from vote");if(rs.next()totalNum=rs.getInt(1);rs.close();rs=db.executeQuery("select * from vote");while(rs.next()&&totalNum!=0)out.println("<tr>");/取出当前投票项的得票数int num=rs.getInt("count");/显示当前投票项的名称out.println("<td>"+rs.getString("item")+"</td>");out.println("<td>得:"+num+"票 共:"+totalNum+"票</td>");out.println("<tr><td>得票率:");/按得票数的比例计算柱形图片的长度out.println("<img src='back.gif' width='"+num*200/totalNum+"' height='8'>");/显示得票百分比out.println(num*100/totalNum+"%</td>");rs.close();db.close();%></table><p><a href="index.jsp">返回投票页面</a></center>(3)vote.jsp名称:投票处理页面功能:主要负责处理投票,对用户在index.jsp中选中的投票项的得票数进行增1操作,并重定向回info.jsp,让用户可以查看当前最新的得票情况。输入:用户要为之投票的投票项id号。处理:在vote表中查找id号为输入值的记录,在其count字段当前值基础上增1,并更新表中相应的记录。输出:重定向到查看投票页面。程序清单:<% page contentType="text/html;charset=gb2312" import="java.sql.*"%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><%String id=request.getParameter("id");/查询id号等于用户所选中的投票项的id值的记录ResultSet rs=db.executeQuery("select * from vote where id="+id);int num=0;/取出该投票项的当前得票数if(rs.next()num=rs.getInt("count");/投票数增1num+;rs.close();/在vote表中更新该投票项的得票数这一字段的值db.executeUpdate("update vote set count="+num+" where id="+id);db.close();%><%-重定向到查看投票页面,让用户看到投票后的最新投票情况-%><jsp:forward page="info.jsp"/>3.4 系统维护模块1.模块描述提供管理员登录、投票添加、删除功能。2.源文件定义(1)login.jsp名称:管理员登录页面功能:显示管理员登录表单,包括用户名和密码两项,并且当输入的信息不正确时,显示错误提示信息。输入:出错提示信息。处理:获取出错提示信息,若不是null则显示。输出:管理员登录表单、错误提示信息。程序清单:<% page contentType="text/html;charset=gb2312"%><html><head><title>管理员登录</title></head><body><center><h2>管理员登录</h2><form method="post" action="process.jsp"><table border bordercolor="#0099FF" bgcolor='#CCFFFF'><tr><td width="40%">用户名:</td> <td><input type="text" name="user"></td><tr><td width="40%">密码:</td> <td><input type="password" name="pw"></td><tr> <td colspan="2" align="center"> <input type="submit" value="登录">&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="清空"> </td></table></form><%/获取错误提示信息String warning=request.getParameter("warning");if(warning!=null)/转换字符编码,处理中文问题warning=new String(warning.getBytes("8859_1");/输出错误提示信息out.println("<h3>"+warning+",请重新登录或<a href='index.jsp'>返回首页</a></h3>");%></center></body></html>(2)process.jsp名称:验证管理员身份页面功能:验证登录用户是否为合法的管理员。输入:在登录页面输入的信息(用户名和密码)。处理:获取login.jsp中的表单提交过来的信息,验证是否为合法的管理员。若验证成功,则在session中写入标志变量并重定向到manage.jsp让用户进行系统维护操作;若验证失败则重定向回login.jsp并显示出错信息。输出:根据验证结果重定向到不同页面。程序清单:<% page contentType="text/html;charset=gb2312" import="java.sql.*"%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><%/获取用户提交的用户名和密码信息String user=request.getParameter("user");String pw=request.getParameter("pw");/在admin表中查找有无匹配的记录String sql="select * from admin where name='"+user+"' and password='"+pw+"'"ResultSet rs=db.executeQuery(sql);/如果存在匹配的记录if(rs.next()/关闭结果集和连接Bean对象rs.close();db.close();/将标志变量admin写入到session中session.setAttribute("admin","ok");%><%-重定向到manage.jsp页面让用户进行维护操作-%><jsp:forward page="manage.jsp"/><%elsers.close();db.close();%>/重定向到login.jsp页面,并传递一个参数warning,其值为错误提示信息<jsp:forward page="login.jsp"><jsp:param name="warning" value="对不起,您的用户名或密码不正确"/></jsp:forward><%>(3)check.jsp名称:验证是否成功登录页面功能:验证用户是否做为管理员成功登录过。输入:无。处理:判断session中是否存储了标志变量admin,若不存在则说明该用户没有使用管理员身份在本次会话连接中登录过系统。输出:若验证不同不过,重定向到登录页面。程序清单:<%/*判断session中是否存有标志变量admin,若没有,表示该用户没有成功登录,则重定向回login.jsp页面*/if(session.getAttribute("admin")=null)response.sendRedirect("login.jsp");%>(4)manage.jsp名称:系统维护首页功能:主要负责对数据表vote中的所有记录进行显示,并且在每条记录的右边都显示一个“删除”超链接,当用户单击时,可以删除相应的记录。另外,还显示添加投票项的输入表单,用于获取用户输入的新增投票项信息。输入:无。处理:查询vote表,显示其中的所有记录。输出:投票管理界面。程序清单:<% page contentType="text/html;charset=gb2312" import="java.sql.*"%>/包含验证文件,避免非法用户进入该页面进行操作<% include file="checkadmin.jsp"%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><center><h2>系统维护</h2><table border bordercolor="#0099FF"><tr><th colspan="3" bgcolor='#CCFFFF'>删除投票项</th><%ResultSet rs=db.executeQuery("select * from vote");int i=1;while(rs.next()out.println("<tr>");out.println("<td>"+i+"</td>");out.println("<td>"+rs.getString("item")+"</td>");/*显示“删除”超链接,跳转到删除处理页面delete.jsp时传递参数delid,即要删除的投票项的id号*/out.println("<td align='center'><a href='delete.jsp?delid="+rs.getString("id")+"'>删除</a></td>");i+;rs.close();db.close();%><tr><th colspan="3" bgcolor='#CCFFFF'>添加投票项</th><tr><td colspan="3"><%-利用表单输入添加信息,提交给添加投票项处理页面add.jsp-%><form method="post" action="add.jsp">内容:<input type="text" name="additem" size="30"><input type="submit" value="提交"><input type="reset" value="重置"></form></td><tr><td colspan="3" align="center" bgcolor='#CCFFFF'><a href="index.jsp">返回投票页面</a></td></table></center>(5)add.jsp名称:添加投票项处理页面功能:主要负责处理添加操作。输入:用户输入的投票项名称。处理:向vote表中插入新记录,其中item字段值为用户输入值,count字段值为0。输出:重定向到投票管理页面。程序清单:<% page contentType="text/html;charset=gb2312" import="java.sql.*"%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><%request.setCharacterEncoding("gb2312");/从表单中获取输入信息,存储到字符串变量additem中String additem=request.getParameter("additem");if(additem!=null)/*向数据表vote中添加一条新记录,其item字段值为用户输入的信息,得票数初始时为0*/String sql="insert into vote(item,count) values('"+additem+"',"+0+")"db.executeUpdate(sql);db.close();%><%-重定向到manage.jsp让用户继续添加或删除操作-%><jsp:forward page="manage.jsp"/>(6)delete.jsp名称:删除投票项处理页面功能:主要负责处理删除操作。输入:要删除的投票项id号。处理:从vote表中删除相应记录。输出:重定向到投票管理页面。程序清单:<% page contentType="text/html;charset=gb2312" import="java.sql.*"%><jsp:useBean id="db" class="dbBean.DBBean" scope="session"/><%/获取跳转时传递过来的参数delidString delid=request.getParameter("delid");if(delid!=null)/将id号为delid的记录从数据表vote中删除db.executeUpdate("delete from vote where id="+delid);db.close();%><%-重定向到manage.jsp让用户继续添加或删除操作-%><jsp:forward page="manage.jsp"/>4 系统测试对于软件测试而言,黑盒测试是把程序看成一个黑盒子,完全不考虑程序的内部结构和处理过程。也就是说,黑盒测试是在程序接口进行的测试,它只检查程序功能是否能按照规格说明书的规定正常使用,程序是否能适当地接收输入数据产生正确的输出信息,并且保持外部信息(如:数据库或文件)的完整性。黑盒测试又成为功能测试。而白盒测试法的前提是可以把程序看成装在一个透明的白盒子里也就是完全了解程序的结构和处理过程。这种方法按照程序内部的逻

    注意事项

    本文(课程设计论文投票系统的设计.doc)为本站会员(sccc)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开