软件的设计需求分析共139页
- 格式:ppt
- 大小:720.00 KB
- 文档页数:139
20XX 专业合同封面COUNTRACT COVER甲方:XXX乙方:XXX2024年专业软件技术开发外包协议版A版本合同目录一览1. 合同主体及定义1.1 甲方名称及定义1.2 乙方名称及定义1.3 甲方与乙方之间的合作内容定义2. 合同标的2.1 软件技术开发服务内容2.2 技术开发成果交付标准2.3 技术开发进度及里程碑3. 合同价格与支付3.1 合同总价3.2 支付方式3.3 支付时间表4. 技术开发团队与人员配置4.1 乙方技术开发团队组成4.2 人员配置及职责划分4.3 人员更换及调整机制5. 保密条款5.1 保密信息的定义5.2 保密信息的保护期限5.3 保密信息的泄露后果6. 知识产权归属与保护6.1 技术开发成果的知识产权归属6.2 技术开发成果的保护措施6.3 侵权责任分配7. 风险责任与不可抗力7.1 风险责任分配7.2 不可抗力事件的认定及后果8. 合同的履行与验收8.1 技术开发成果的交付8.2 甲方对技术开发成果的验收8.3 验收不合格的处理方式9. 合同的变更与解除9.1 合同变更的条件9.2 合同解除的条件9.3 合同变更与解除的后果处理10. 违约责任10.1 违约行为的认定10.2 违约责任的具体承担方式11. 争议解决11.1 争议解决方式11.2 争议解决机构11.3 诉讼管辖法院12. 合同的生效、终止与续约12.1 合同生效条件12.2 合同终止条件12.3 合同续约条件13. 合同的附则13.1 合同的附件13.2 合同的修改与补充13.3 合同解除或终止后的权利义务处理14. 其他约定14.1 双方的其他权利义务14.2 双方的共同声明14.3 法律、法规规定的其他事项第一部分:合同如下:第一条合同主体及定义1.1 甲方名称及定义1.2 乙方名称及定义1.3 甲方与乙方之间的合作内容定义双方的合作内容为:甲方委托乙方进行专业软件技术开发,乙方按照甲方的要求完成软件技术开发服务,并交付符合约定技术开发成果。
软考软件设计师中级资料说到软考软件设计师中级资料嘛,嘿,感觉就像是一把钥匙,能帮你打开软件开发的大门。
这考试一听就让人头大,心里就想着:“这玩意儿到底难不难啊?”其实呢,别怕。
它就是要你知道些基础,掌握一些要点。
不是让你一夜之间成神,只要用点心,拿下它不是问题。
我们都知道,软件设计师的工作,不光是做代码,更多的是要有规划和设计的眼光。
像修个房子一样,不光是搬砖,还得有好的设计图,才能让整个“房子”更加结实漂亮。
软件设计师这个角色,不是一个简单的程序员。
程序员是写代码的,而软件设计师得考虑全局,规划好整个系统的架构。
你想啊,一个项目要想顺利开展,首先得有个蓝图,对吧?这蓝图就是我们常说的“软件架构”。
这个架构,简单点说,就是你整个系统的框架,框架搭好了,后面的开发和实现就不容易出问题。
要是架构设计得不靠谱,后面可能就会像盖房子打地基不稳,一层一层上去,越来越晃,最后可能就要塌掉。
你说那多麻烦?再说说这考试的内容。
听起来可能会让你觉得眼花缭乱,但掌握了重点,轻松应对也不难。
中级考试里面,最重要的知识点就是“软件需求分析”、“系统设计”、“数据库设计”、“面向对象设计”和“测试”。
这些名字听起来有点复杂,但如果你稍微理一下,真的是很有规律的。
像“需求分析”吧,实际就是搞清楚你要做啥,客户要啥,需求一旦明确,后面干起活儿来就能有的放矢。
再说系统设计和数据库设计,咋说呢,就像是盖房子的时候,先得看地基,弄清楚结构,再来考虑水电布局。
面向对象设计呢,说白了就是把问题分解成一个个小的模块,就像拆积木,每个模块都负责自己的小任务。
这样一来,出了问题就能很快定位到,避免了大规模的崩塌。
然后是测试,测试这块可能让不少人头疼,特别是那些没接触过的朋友。
软件测试没那么可怕。
它的核心其实是验证你的系统运行是否符合预期,简单点说就是“查漏补缺”。
试想,你做个大餐,煮好了东西,肯定得先尝一尝,看看味道行不行。
这个就是测试的重要性。
20XX 专业合同封面COUNTRACT COVER甲方:XXX乙方:XXX信息技术软件开发与维护服务协议版本合同目录一览第一条合同主体及定义1.1 甲方名称及地址1.2 乙方名称及地址第二条软件开发与维护服务内容2.1 软件开发服务内容2.2 软件维护服务内容2.3 软件升级服务内容第三条服务期限3.1 软件开发服务期限3.2 软件维护服务期限3.3 软件升级服务期限第四条服务费用4.1 软件开发服务费用4.2 软件维护服务费用4.3 软件升级服务费用第五条支付方式与支付时间5.1 支付方式5.2 支付时间第六条双方的权利与义务6.1 甲方的权利与义务6.2 乙方的权利与义务第七条保密条款7.1 保密内容7.2 保密期限7.3 保密泄露责任第八条违约责任8.1 甲方违约责任8.2 乙方违约责任第九条争议解决9.1 争议解决方式9.2 争议解决地点9.3 适用法律第十条合同的生效、变更与解除10.1 合同生效条件10.2 合同变更条件10.3 合同解除条件第十一条附则11.1 其他约定11.2 合同附件第十二条甲方(客户)签字第十三条乙方(服务提供商)签字第十四条签字日期第一部分:合同如下:第一条合同主体及定义1.1 甲方名称:_____________,地址:_________________1.2 乙方名称:_____________,地址:_________________第二条软件开发与维护服务内容2.1 软件开发服务内容甲方委托乙方进行软件开发,具体包括但不限于:软件需求分析、软件设计、编码实现、软件测试、软件部署及上线等。
2.2 软件维护服务内容乙方应提供软件维护服务,确保软件的正常运行,具体包括但不限于:软件问题排查、故障修复、软件性能优化、软件安全防护等。
2.3 软件升级服务内容乙方应根据甲方需求提供软件升级服务,包括新功能的增加、旧功能的优化等。
第三条服务期限3.1 软件开发服务期限自双方签订合同之日起至软件开发完成之日止。
第一章信息系统基础一、简答题1.什么是信息?信息与数据有什么区别?信息的本质是什么?答:信息,一般是指具有新内容、新知识的消息或情报。
信息与数据具有内在的联系。
数据是记录在一定介质上并可鉴别的符号,数据是无意义的符号,信息则是蕴含意义的符号。
数据是信息加工的原材料,信息是数据加工的结果。
信息的本质是物质的属性和特征,是事物运行状态与规律的表征。
2.什么叫系统?可以从哪个方面对系统进行分类?答:系统是由相互联系、相互影响的若干要素结合为具有特定目标、特定功能,并处于一定环境之中的有机整体。
从系统的复杂程度划分:简单的、中等的、复杂的和超复杂的系统。
从抽象程度划分:概念系统、逻辑系统、物理系统(也叫客观系统)。
从系统与外界的关系划分:封闭系统、开放系统。
3.简述管理的概念答:管理是对一定组织所拥有的资源进行有效整合以达成组织既定目标和履行责任的动态创造性活动。
管理的目的是实现组织的目标。
4.信息资源管理的基本模式是什么?答:是技术管理模式、经济管理模式、人文管理模式。
二、填空题1.(数据)是无意义的符号,(信息)是蕴涵意义的符号。
2.信息的本质是(物质)的属性和特征,是(事物)运动状态与规律的表征。
3.信息的特征有:承载性、(层次性)、传输性、(共享性)、加工性和时效性。
4.从逻辑层次看,可以把信息分为(语法信息)、语义信息和(语用信息)三种类型。
5.系统是由相互(联系)、相互影响的若干(要素)结合为具有特定目标、特定功能,并处于一定环境之中的有机整体。
6.系统的特性是指具有目的性、(相关性)、整体性、(层次性)和适应性几种。
7.管理的职能有决策、(组织)、计划、(领导)、控制和激励等六个方面。
三、选择题1.下面说法正确的是(D)A.数据就是数字B.数据就是信息C.数据是加工之前的信息D.信息是数据加工的结果2.下面哪个不属于信息的特征?(D)A.承载性B.传输性C.层次性D.独享性3.下面不属于系统特性的是(B)A.目的性B.功能性C.层次性D.适应性4.下面说法不正确的是(A)管理职能方面考题(决策是管理的核心)A.决策是企业的核心B.从时间性可以把计划分为长期计划和短期计划C.组织结构也被称为组织机构D.激励有直接满足和间接满足两种方法5.下面哪一种不属于信息资源管理模式?(D)A.技术管理模式B.经济管理模式C.人文管理模式D.社会管理模式6.下面哪一种不属于信息资源管理的五大要素?(A)A.信息资源管理的应用B.信息资源管理的架构C.信息资源管理的组织D.信息资源管理的环境页19 共页1 第四、论述题1.谈谈信息资源管理在信息系统建设中的作用答:信息资源是指人类社会活动中所涉及到的信息内容,按照某种方法和规律,经加工处理有序化并大量积累后的用用信息的集合。
20XX 专业合同封面COUNTRACT COVER甲方:XXX乙方:XXX二零二四年高级软件开发服务合同本合同目录一览第一条合同主体与范围1.1 甲方(客户)名称与地址1.2 乙方(服务提供商)名称与地址1.3 合同服务范围与目标第二条服务内容与交付2.1 软件开发服务内容2.2 项目开发时间表与里程碑2.3 软件交付标准与验收第三条技术规范与要求3.1 软件技术规格说明书3.2 开发工具与技术栈3.3 数据安全与隐私保护标准第四条合同价格与支付条款4.1 服务费用总额4.2 支付进度与时间点4.3 额外费用的计算与支付第五条保密与知识产权5.1 保密义务与范围5.2 知识产权归属与使用第六条违约责任与争议解决6.1 违约行为与责任6.2 争议解决方式与地点第七条合同的变更与终止7.1 合同变更的条件与程序7.2 合同终止的条件与后果第八条 force majeure8.1 不可抗力事件的定义8.2 不可抗力事件的后果与处理第九条法律适用与争议解决9.1 合同适用的法律9.2 争议解决方式与地点第十条合同的生效、修改与解除10.1 合同生效条件10.2 合同修改程序10.3 合同解除条件与后果第十一条一般条款11.1 通知与联系11.2 合同的完整性与序号11.3 合同附件第十二条客户专用条款12.1 客户特殊要求与服务12.2 客户提供的资源与支持第十三条服务提供商专用条款13.1 服务提供商的责任与义务13.2 服务提供商的额外服务与支持第十四条保密协议14.1 保密协议内容与期限14.2 保密协议的违约后果第一部分:合同如下:第一条合同主体与范围1.1 甲方(客户)名称与地址甲方名称为:科技有限公司甲方地址为:市区路号1.2 乙方(服务提供商)名称与地址乙方名称为:软件开发有限公司乙方地址为:市区路号1.3 合同服务范围与目标本合同旨在甲方委托乙方提供高级软件开发服务,包括但不限于软件需求分析、软件设计、编程开发、系统测试、部署上线及后期维护等工作。
20XX 专业合同封面COUNTRACT COVER甲方:XXX乙方:XXX2024年定制软件开发项目协议范本版本合同目录一览1. 项目概述1.1 项目名称1.2 项目目的1.3 项目范围1.4 项目交付物2. 合同主体2.1 甲方(委托方)2.2 乙方(受托方)3. 项目时间表3.1 项目启动时间3.2 项目完成时间3.3 各阶段交付时间4. 项目预算4.1 项目总预算4.2 预算明细4.3 额外费用5. 技术要求5.1 软件需求5.2 技术标准5.3 数据安全6. 知识产权6.1 著作权6.2 专利权6.3 商标权7. 保密条款7.1 保密内容7.2 保密期限7.3 违约责任8. 质量保证8.1 质量标准8.2 验收标准8.3 售后服务9. 支付条款9.1 付款方式9.2 付款条件9.3 进度款10. 违约责任10.1 甲方违约10.2 乙方违约10.3 违约赔偿11. 争议解决11.1 协商解决11.2 调解解决11.3 法律诉讼12. 适用法律12.1 合同签订地法律12.2 争议解决地法律13. 合同的变更和终止13.1 合同变更13.2 合同终止13.3 合同解除14. 附则14.1 合同附件14.2 合同生效时间14.3 合同份数第一部分:合同如下:第一条项目概述1.1 项目名称:2024年定制软件开发项目1.2 项目目的:甲方委托乙方开发定制软件,以满足甲方在业务管理、数据处理等方面的需求,提高甲方的运营效率。
1.3 项目范围:本项目包括软件需求分析、软件设计、软件开发、软件测试、软件部署及培训等环节。
1.4 项目交付物:本项目最终交付的软件产品包括、执行文件、用户手册、培训资料等。
第二条合同主体2.1 甲方(委托方):甲方全称:____________注册地址:____________联系人:____________联系电话:____________2.2 乙方(受托方):乙方全称:____________注册地址:____________联系人:____________联系电话:____________第三条项目时间表3.1 项目启动时间:双方签订合同之日起。
20XX 专业合同封面COUNTRACT COVER甲方:XXX乙方:XXX2024版软件开发与维护服务合同本合同目录一览第一条合同主体及定义1.1 甲方名称及地址1.2 乙方名称及地址1.3 甲方拥有的软件资产清单第二条软件开发服务2.1 软件开发项目范围2.2 软件开发周期及里程碑2.3 软件开发团队组成2.4 软件开发费用及支付方式第三条软件维护服务3.1 软件维护服务内容3.2 软件维护服务期限3.3 软件维护服务响应时间3.4 软件维护服务费用及支付方式第四条技术支持与培训4.1 技术支持服务内容4.2 技术支持服务期限4.3 培训计划及培训费用第五条知识产权5.1 软件版权归属5.2 乙方对软件的修改和衍生品的权利5.3 商标和专利权的使用第六条保密条款6.1 保密信息的定义6.2 保密信息的保密义务6.3 保密信息的例外情况第七条违约责任7.1 违约行为的定义7.2 违约责任的具体形式第八条争议解决8.1 争议解决的方式8.2 诉讼管辖法院第九条合同的生效、变更与终止9.1 合同生效条件9.2 合同的变更程序9.3 合同终止条件及后续处理第十条一般条款10.1 合同的解释权10.2 合同的适用法律10.3 合同的附件第十一条附则11.1 合同签署日期11.2 合同签署地点11.3 合同正本及副本份数第十二条补充协议12.1 补充协议的签订条件12.2 补充协议的生效程序第十三条联系我们13.1 甲方联系信息13.2 乙方联系信息第十四条签署页14.1 甲方代表签署页14.2 乙方代表签署页第一部分:合同如下:第一条合同主体及定义1.1 甲方名称:__________公司,地址:__________。
1.2 乙方名称:__________公司,地址:__________。
1.3 甲方拥有的软件资产清单:(1)软件名称:__________,版本号:__________;(2)软件名称:__________,版本号:__________;(3)软件名称:__________,版本号:__________;第二条软件开发服务2.1 软件开发项目范围:(1)软件需求分析;(2)软件设计;(3)软件编码;(4)软件测试;(5)软件部署与上线;(6)软件后期优化与升级。
学⽣成绩管理系统开头:个⼈的第⼀篇博客,同时也是第⼀个完整的实战项⽬,由于经验不⾜,只能做出简单级别的当做练⼿.第⼀篇博客第⼀个项⽬⼀、开发背景:软件名称:学⽣成绩管理系统(SSMS)使⽤对象:⼤学⼆、需求分析1. 系统分析该学⽣信息管理系统涉及到学⽣、教师、学号、学⽣成绩、课程。
所有⽤户需输⼊账号、密码登录进⼊系统;管理员进⼊系统后可对学⽣、⽼师、班级、课程进⾏增删改查操作;学⽣进⼊系统,查看成绩、查看和修改⾃⼰的信息;⽼师进⼊系统后,对⾃⼰这门课程的学⽣设置课程成绩、查看和修改⾃⼰的信息,查看学⽣的信息和成绩、以及统计分析学⽣的成绩;学⽣成绩分为两种, ⼀种是考试成绩占总成绩的百分之60, ⼀种是平时成绩占总成绩的百分之40.考试成绩出来后,⽼师进⼊系统选择该次考试为学⽣登记成绩。
平时考试则是班级平时的考试,⽼师添加考试信息,登记成绩。
成绩统计分析则是针对年级统考进⾏分析,主要涉及各学科分数名次,总分名次.三、开发环境系统环境:Windows10开发⼯具:IdeaJava版本:JDK 1.8服务器:tomcat 9.0.36数据库:MySQL 8.0系统采⽤技术:Servlet+Jsp+Jdbc+jQuery+Ajax四、代码实现1、登陆界⾯ login:<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>登陆页⾯-学⽣成绩管理系统-javaweb</title><style>#cont div {text-align: center;padding: 15px;}#cont div:last-child input:first-child {margin-right: 30px;}#cont div:last-child input:first-child {margin-left: 30px;}#cont div:last-child input:first-child {margin-right: 30px;}</style></head><body><div style="margin-top: 150px"><jsp:include page="top.jsp"/><div id="cont"><%String message = (String) request.getAttribute("message");if (message!=null){%><h3 style="color: #ff0000" align="center">出错信息${message}</h3><%}%><form action="<%= request.getContextPath()%>/loginServlet?type=trueLogin" method="post"> <div><label for="userName">⽤户名:</label><input type="text" name="userName" id="userName"/></div><div><label>   密码:<input type="password" name="pwd"/></label></div><div><label> 验证码:<input type="yangzheng" name="yanzheng"/><img src="${pageContext.request.contextPath}/main/webapp/WEB-INF/img.jpg"/></label></div><div><input type="submit" value="登陆"/><input type="button" onclick="resetForm()" value="重置"/></div></form></div><jsp:include page="bottom.jsp"/></div><script>function resetForm(){document.forms[0].reset()}</script></body></html>2、登陆成功界⾯1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>2 <html>3 <head>4 <title>学⽣管理-学⽣成绩管理系统-javaweb</title>5 <style>6 table {7 border-collapse: collapse;8 border-spacing: 0;9 border: 1px solid black;10 }1112 tr {13 line-height: 2;14 }1516 th, td {17 border: 1px solid black;18 padding: 0 10px;19 }2021 #cont {22 text-align: left;23 margin-left: 540px;24 margin-top: 50px;25 line-height: 1.5;26 }2728 .nav, .search, .page {29 line-height: 2;30 }31 </style>32 </head>33 <body>34 <div>35 <jsp:include page="../top.jsp"/>36 <div id="cont">37 <%-- <section class="nav">--%>38 <%-- <a href="#">学⽣管理</a>--%>39 <%-- <a href="#">成绩管理</a>--%>40 <%-- </section>--%>41 <section class="search">42 <%43 TableResult<StudentDO> tableResult = (TableResult) request.getAttribute("tableResult");4445 %>4647 <a href="<%=request.getContextPath()%>/studentServlet?type=toAdd">新增学⽣</a>48 <form method="post" action="<%=request.getContextPath()%>/studentServlet?type=toStudentManage">49 <%-- <input type="text" name="studentName" value="<%= tableResult.getStudentName()%>"/>--%>50 <!--value在没有被别⼈修改的情况下就是1,51由于不是ajax局部刷新,页⾯是整体刷新的,所以即便pageNow被就改了,查询结果出来的页⾯中的pageNow仍然还是152 -->53 <input type="hidden" name="pageNow" id="pageNow" value="1"/>54 <%-- <input type="submit" value="查询">--%>55 </form>56 </section>57 <section>58 <table>59 <thead>60 <tr>61 <th>编号</th>62 <th>姓名</th>63 <th>学号</th>64 <th>科⽬名称</th>65 <th>考勤成绩</th>66 <th>作业成绩</th>67 <th>考试成绩</th>68 <th>操作</th>6970717273 </tr>74 </thead>75 <tbody>76 <%77 List<StudentDO> data = tableResult.getData();7879for (int i = 0; i < data.size(); i++) {80 StudentDO studentDO = data.get(i);81 %>82 <tr>83 <td><%= studentDO.getId()%>84 </td>85 <td><%= studentDO.getName()%>86 </td>87 <td><%= studentDO.getNo()%>88 </td>89 <td><%= studentDO.getTask()%>90 </td>91 <td><%= studentDO.getKaoqin()%>92 </td>93 <td><%= studentDO.getZuoye()%>94 </td>95 <td><%= studentDO.getChengji()%>96 <td><a href="<%=request.getContextPath()%>/studentServlet?type=delete&id=<%= studentDO.getId()%>">删除</a>97 <a href="<%=request.getContextPath()%>/studentServlet?type=toUpdate&id=<%= studentDO.getId()%>">更新</a>98 </td>99 </tr>100 <%101 }102 %>103 </tbody>104 </table>105 <div class="page">106 <%107//只要不是第⼀页就显⽰108if (tableResult.getPageNow() != 1) {109 %>110 <a href="#" onclick="goFirst()">⾸页</a>111 <a href="#" onclick="goPre()">上⼀页</a>112 <%113 }114 %>115 <%116//只要不是最后⼀页就显⽰117if (tableResult.getPageNow() != tableResult.getPageCount()) {118 %>119 <a href="#" onclick="goNext()">下⼀页</a>120 <a href="#" onclick="goLast()">尾页</a>121 <%122 }123 %>124 <span>共<%=tableResult.getPageCount()%>页</span>125 <span>,共<%=tableResult.getTotalCount()%>条</span>126 <span>,当前是第<%=tableResult.getPageNow()%>页</span>127 </div>128 </section>129 </div>130 <jsp:include page="../bottom.jsp"/>131132 </div>133 <script>134 function goFirst() {135 document.forms[0].submit();136 }137138//上⼀页139 function goPre() {140//1、拿到当前页141 var currentPageStr = "<%=tableResult.getPageNow()%>";142 var prePage = parseInt(currentPageStr) - 1;143//2、修改搜索⾥⾯提交的pageNow144 document.getElementById("pageNow").value = prePage;145 document.forms[0].submit();146 }147 function goNext(){148//1、拿到当前页149 var currentPageStr = "<%=tableResult.getPageNow()%>";150 var nextPage = parseInt(currentPageStr) + 1;151//2、修改搜索⾥⾯提交的pageNow152 document.getElementById("pageNow").value = nextPage;153 document.forms[0].submit();154 }155//尾页156 function goLast(){157//1、拿到当尾页158 var pageCountStr = "<%=tableResult.getPageCount()%>";159//2、修改搜索⾥⾯提交的pageNow160 document.getElementById("pageNow").value = parseInt(pageCountStr);161 document.forms[0].submit();162 }163164 </script>165 </body>166 </html>成功则进⼊系统界⾯失败则进⾏提⽰⽤户名或密码验证码不正确(验证码不知道是浏览器的问题还是怎么回事就是加载不出来)3、增加学⽣<html><head><title>添加学⽣页⾯-学⽣成绩管理系统-javaweb</title><style>#cont{text-align: center;margin-top: 100px;}#cont div{padding: 15px;}</style></head><body><div><jsp:include page="../top.jsp"/><div id="cont"><form action="<%= request.getContextPath()%>/studentServlet?type=add" method="post"> <div><label>学⽣姓名:<input type="text" name="studentName" /></label></div><div><label>      学号:<input type="text" name="no"/></label></div><div><label>      科⽬:<input type="text" name="task"/></label></div><div><label>考勤成绩:<input type="text" name="kaoqin"/></label></div><div><label>作业成绩:<input type="text" name="zuoye"/></label></div><div><label>考试成绩:<input type="text" name="chengji"/></label></div><div><input type="submit" value="增加"/></div></form></div><jsp:include page="../bottom.jsp"/></div></body></html>4、更新学⽣信息<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>更新学⽣页⾯-学⽣成绩管理系统-javaweb</title><style>#cont{text-align: center;margin-top: 100px;}#cont div{padding: 15px;}</style></head><body><div><jsp:include page="../top.jsp"/><div id="cont"><form action="<%= request.getContextPath()%>/studentServlet?type=update" method="post"> <%StudentDO studentDO = (StudentDO)request.getAttribute("studentDO");%><div><label>学⽣编号:<!--disabled的不能提交,如果⽤了disabled⼜想提交,就要再加个hiddent的input来提交--> <input type="text" readonly name="studentId" value="<%= studentDO.getId()%>"/></label></div><div><label>学⽣姓名:<input type="text" name="studentName" value="${}" /></label></div><div><label>      学号:<input type="text" name="no" value="${requestScope.studentDO.no}"/></label></div><div><label>      科⽬:<input type="text" name="task" value="${studentDO.task}"/></label></div><div><label>考勤成绩:<input type="text" name="kaoqin" value="${studentDO.kaoqin}" /></label></div><div><label>作业成绩:<input type="text" name="zuoye" value="${requestScope.studentDO.zuoye}"/> </label></div><div><label>考试成绩:<input type="text" name="chengji" value="${studentDO.chengji}"/></label></div><div><input type="submit" value="更新"/></div></form></div><jsp:include page="../bottom.jsp"/></div></body></html>5、数据库设计数据库连接与⽹页与数据库的交互public class DBUtil {private static final String URL = "jdbc:mysql://localhost:3306/student_javaweb?serverTimezone=UTC&characterEncoding=utf-8"; private static final String DRIVER = "com.mysql.cj.jdbc.Driver";private static final String USER_NAME = "root";//Mysql配置时的⽤户名private static final String PWD = "123456";//密码static {try {Class.forName(DRIVER);} catch (ClassNotFoundException e) {e.printStackTrace();}}/*** 获取连接* @return*/public static Connection getConn() {try {return DriverManager.getConnection(URL, USER_NAME, PWD);} catch (SQLException e) {e.printStackTrace();}return null;}/*** 关闭结果集* @return*/public static void closeResultSet(ResultSet resultSet) {try {if (resultSet != null){resultSet.close();}} catch (SQLException e) {e.printStackTrace();}}/*** 关闭ps* @return*/public static void closePs(PreparedStatement ps) {try {if (ps != null){ps.close();}} catch (SQLException e) {e.printStackTrace();}}/*** 关闭连接* @return*/public static void closeConn(Connection conn) {try {if (conn != null){conn.close();}} catch (SQLException e) {e.printStackTrace();}}}package com.roadjava.javaweb.student.dao.imol;import com.roadjava.javaweb.student.beans.entity.AdminDO;import com.roadjava.javaweb.student.beans.entity.StudentDO;import com.roadjava.javaweb.student.beans.req.StudentRequest;import com.roadjava.javaweb.student.beans.res.TableResult;import com.roadjava.javaweb.student.dao.StudentDao;import com.roadjava.javaweb.student.util.DBUtil;import com.roadjava.javaweb.student.util.StringUtil;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.util.ArrayList;import java.util.List;public class StudentDaoImpl implements StudentDao {@Overridepublic int addStudent(StudentDO studentDO) {Connection conn = DBUtil.getConn();if (conn == null){return 0;}PreparedStatement ps = null;StringBuilder sb = new StringBuilder();sb.append(" insert into student(name,no,task,kaoqin,zuoye,chengji) ");sb.append(" values(?,?,?,?,?,?) ");try {ps = conn.prepareStatement(sb.toString());ps.setObject(1,studentDO.getName());ps.setObject(2,studentDO.getNo());ps.setObject(3,studentDO.getTask());ps.setObject(4,studentDO.getKaoqin());ps.setObject(5,studentDO.getZuoye());ps.setObject(6,studentDO.getChengji());//打印最终执⾏的sql语句System.out.println("addStudent执⾏的sql:"+ps.toString());return ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally {DBUtil.closePs(ps);DBUtil.closeConn(conn);}return 0;}@Overridepublic TableResult<StudentDO> queryStudentByPage(StudentRequest studentRequest) { TableResult<StudentDO> tableResult = new TableResult<>();Connection conn = DBUtil.getConn();if (conn == null){return null;}PreparedStatement ps = null;ResultSet rs = null;//查询学⽣列表StringBuilder sb = new StringBuilder();sb.append(" select * from student ");appendWhere(studentRequest,sb);sb.append(" order by id desc limit ").append(studentRequest.getStart()).append(",").append(studentRequest.getPageSize());try {ps = conn.prepareStatement(sb.toString());if (StringUtil.isNotBlank(studentRequest.getStudentName())){ps.setObject(1,studentRequest.getStudentName());}//打印最终执⾏的sql语句System.out.println("queryStudentByPage查询学⽣的sql:"+ps.toString());rs = ps.executeQuery();List<StudentDO> list = new ArrayList<>();while (rs.next()){StudentDO studentDO = buildStudent(rs);list.add(studentDO);}tableResult.setData(list);//设置数据/*查询总条数*/sb.setLength(0);sb.append(" select count(*) from student ");appendWhere(studentRequest,sb);ps = conn.prepareStatement(sb.toString());if (StringUtil.isNotBlank(studentRequest.getStudentName())){ps.setObject(1,studentRequest.getStudentName());}//打印最终执⾏的sql语句System.out.println("queryStudentByPage查询学⽣总条数的sql:"+ps.toString()); rs = ps.executeQuery();if (rs.next()){int totalCount = rs.getInt(1);tableResult.setTotalCount(totalCount);//设置总条数}return tableResult;} catch (SQLException e) {e.printStackTrace();}finally {DBUtil.closePs(ps);DBUtil.closeConn(conn);DBUtil.closeResultSet(rs);}return null;}@Overridepublic StudentDO getStudentById(long studentId) {Connection conn = DBUtil.getConn();if (conn == null){return null;}PreparedStatement ps = null;ResultSet rs = null;StringBuilder sb = new StringBuilder();sb.append(" select * from student where id = ? ");try {ps = conn.prepareStatement(sb.toString());ps.setObject(1,studentId);//打印最终执⾏的sql语句System.out.println("getStudentById执⾏的sql:"+ps.toString());rs = ps.executeQuery();if(rs.next()){return buildStudent(rs);}} catch (SQLException e) {e.printStackTrace();}finally {DBUtil.closePs(ps);DBUtil.closeConn(conn);DBUtil.closeResultSet(rs);}return null;}@Overridepublic int updateStudent(StudentDO studentDO) {Connection conn = DBUtil.getConn();if (conn == null){return 0;}PreparedStatement ps = null;StringBuilder sb = new StringBuilder();sb.append(" update student set name=?,no=?,task=?,kaoqin=?,zuoye=?,chengji=? "); sb.append(" where id = ? ");try {ps = conn.prepareStatement(sb.toString());ps.setObject(1,studentDO.getName());ps.setObject(2,studentDO.getNo());ps.setObject(3,studentDO.getTask());ps.setObject(4,studentDO.getKaoqin());ps.setObject(5,studentDO.getZuoye());ps.setObject(6,studentDO.getChengji());ps.setObject(7,studentDO.getId());//打印最终执⾏的sql语句System.out.println("updateStudent执⾏的sql:"+ps.toString());return ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally {DBUtil.closePs(ps);DBUtil.closeConn(conn);}return 0;}@Overridepublic int deleteStudentById(long studentId) {Connection conn = DBUtil.getConn();if (conn == null){return 0;}PreparedStatement ps = null;StringBuilder sb = new StringBuilder();sb.append(" delete from student where id = ? ");try {ps = conn.prepareStatement(sb.toString());ps.setObject(1,studentId);//打印最终执⾏的sql语句System.out.println("deleteStudentById执⾏的sql:"+ps.toString());return ps.executeUpdate();} catch (SQLException e) {e.printStackTrace();}finally {DBUtil.closePs(ps);DBUtil.closeConn(conn);}return 0;}private StudentDO buildStudent(ResultSet rs) throws SQLException{long id = rs.getLong("id");String name = rs.getString("name");String no = rs.getString("no");String task = rs.getString("task");String kaoqin = rs.getString("kaoqin");String zuoye = rs.getString("zuoye");String chengji = rs.getString("chengji");StudentDO studentDO = new StudentDO();studentDO.setId(id);studentDO.setName(name);studentDO.setTask(task);studentDO.setNo(no);studentDO.setZuoye(zuoye);studentDO.setKaoqin(kaoqin);studentDO.setChengji(chengji);return studentDO;}private void appendWhere(StudentRequest studentRequest, StringBuilder sb) { String studentName = studentRequest.getStudentName();if(StringUtil.isNotBlank(studentName)){sb.append(" where name = ? ");}}}package com.roadjava.javaweb.student.dao.imol;import com.roadjava.javaweb.student.beans.entity.AdminDO;import com.roadjava.javaweb.student.dao.AdminDao;import com.roadjava.javaweb.student.util.DBUtil;import java.sql.Connection;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;public class AdminDaoImpl implements AdminDao {@Overridepublic AdminDO validateLogin(String userName) {Connection conn = DBUtil.getConn();if (conn == null){return null;}PreparedStatement ps = null;ResultSet rs = null;StringBuilder sb = new StringBuilder();sb.append(" select * from admin where user_name = ? ");try {ps = conn.prepareStatement(sb.toString());ps.setObject(1,userName);//打印最终执⾏的sql语句System.out.println("balidateLogin执⾏的sql:"+ps.toString());rs = ps.executeQuery();if(rs.next()){long id = rs.getLong("id");String pwd = rs.getString("pwd");AdminDO adminDO = new AdminDO();adminDO.setId(id);adminDO.setUser_name(userName);adminDO.setPwd(pwd);return adminDO;}} catch (SQLException e) { e.printStackTrace();}finally {DBUtil.closePs(ps);DBUtil.closeConn(conn); DBUtil.closeResultSet(rs); }return null;}}未完待续.......。