软件工程课程实习报告(仅供参考)

一:实习内容设计与实现:

实习一:Git分布式版本控制

本实验的主要目的是学习和掌握Git作为版本控制工具的基本使用方法,特别是在团队协作开发中的重要性。具体目标包括:

1. 理解Git的基本概念和工作原理,学会安装和配置Git;

2. 实现本地仓库与远程仓库(推荐使用gitee或自行搭建的gitlab)的关联,掌握常用命令如clone、add、commit、pull、push等,用于有效地管理代码;

3. 学习和实践分支管理,包括从master分支创建和切换到dev分支进行代码开发,最终将dev分支的代码合并到master分支。实习报告中需要详细记录这些操作步骤,包括如何处理可能出现的冲突情况。

实习二:JDBC数据库操作

实验目的包括:

1. 理解JDBC的基本概念和作用:学习使用Java语言连接数据库,完成CRUD操作(增加、查询、更新、删除)。

2. Sqlserver JDBC驱动的下载和配置:通过下载Sqlserver JDBC驱动包并配置到项目中,建立Java与Sqlserver数据库的连接。

3. 环境搭建:掌握在Java项目中搭建JDBC环境的步骤,包括创建lib文件夹、导入驱动jar包、设置为项目库等操作。

4. 数据库操作的实践:在Sqlserver数据库中创建表格,并编写Java程序实现与该表格的交互,包括定义Java类与数据库表字段的对应关系。

5. 使用单元测试(如JUnit)验证操作:通过单元测试确保JDBC操作的正确性和稳定性。

6. 扩展功能(可选):封装工具类、日期格式化、JDBC事务等高级功能的展示和实现。

实习三:基于信息系统的分析与设计

实验目的包括:

1. 应用软件工程思想:基于实验室设备管理系统,学习并应用软件工程的分析方法。

2. 需求分析:通过分析系统需求,明确用户需求和系统功能。

3. 概要设计:设计系统的概要结构,包括模块划分、数据流程等。

4. 数据库设计:设计系统所需的数据库结构,包括表的定义、关系和约束等。

二:个人获得的困难与获得的主要成果

实习一:

在实习一中,我遇到了一些困难,经过CSDN查询和多方教学视频得以顺利解决。以下是困难与解决方案总结:

1. Git安装和配置问题

问题一:无法正确安装Git或配置Git环境出现问题。

解决方案:

- 环境变量设置: 在安装完成后,确保Git的可执行文件路径已添加到系统的PATH环境变量中,这样才能在命令行中直接使用Git命令。

- 配置用户信息: 使用`git config`命令配置用户的姓名和邮箱,以便Git记录每次提交的作者信息。

如果在安装Git时出现权限问题,可以尝试使用管理员权限重新运行安装程序。在配置用户信息时,如果忘记配置,每次提交代码时会提示你配置这些信息。

2. 本地仓库与远程仓库关联问题

问题二:无法成功与远程仓库建立关联或推送(push)到远程仓库失败。

解决方案:

- 远程仓库地址错误: 确保远程仓库地址(如gitee或gitlab)正确,可以使用`git remote -v`命令查看当前远程仓库的地址配置。

- SSH配置问题: 如果使用SSH协议推送到远程仓库,确保SSH密钥已生成并添加到远程仓库的SSH密钥设置中。

- 权限问题: 确保你有推送(push)到远程仓库的权限,有时需要向仓库管理员申请权限。

如果推送到远程仓库时出现权限拒绝的问题,可以在gitlab或gitee上检查项目的设置和权限,确保你被授权推送代码。

3. 分支管理问题

问题三:在分支切换、合并或解决冲突时遇到问题。

解决方案:

- 新建分支: 使用`git checkout -b <branch-name>`命令从master分支创建并切换到新的开发分支。

- 合并分支: 使用`git merge <branch-name>`命令将开发分支的更改合并到master分支。如果出现冲突,Git会提示冲突的文件,并需要手动解决冲突。

- 解决冲突: 在冲突文件中手动编辑以解决冲突,然后使用`git add`命令标记为解决状态,最后使用`git commit`提交解决方案。

当多个开发者在同一文件的同一行进行修改时,会发生冲突。解决冲突时需要理解每个开发者的更改,并做出合理的整合。

4. 常用命令操作问题

问题四:对常用命令如add、commit、pull、push等使用不熟练或出现误操作。

解决方案:

- 学习命令语法: 仔细阅读Git的官方文档或教程,了解每个命令的语法和参数。

- 注意操作顺序: 理解Git的工作流程,例如先添加(add)、再提交(commit)本地更改,最后推送(push)到远程仓库。

- 使用别名: 可以通过配置Git的别名(alias)来简化常用命令的输入和使用。

如果在提交代码时漏掉了关键文件,可以使用`git add <file>`再次添加,然后通过`git commit --amend`来修改最后一次提交。

5. 团队协作问题

问题五:在团队协作中,代码冲突频繁或分支管理混乱。

解决方案:

- 规范化分支策略: 使用合适的分支命名规范,如主分支(master)用于稳定版,开发分支(dev)用于开发阶段。

- 定期合并与同步: 定期从主分支拉取更新并合并到开发分支,减少冲突发生的机会。

- 团队协作工具: 使用Git的协作功能,如Pull Request(PR)或Merge Request(MR),来进行代码审查和管理。

如果多个开发者在同一时间对同一文件进行修改,可以通过频繁的更新和合并保持分支的同步,避免大的冲突。

6. 版本控制实践问题

问题六:在使用Git时未遵循良好的版本控制实践,如未及时提交、没有详细的提交信息等。

解决方案:

- 定期提交: 将更改分成小的逻辑单元,并及时提交到本地仓库,以便跟踪和管理变更。

- 详细提交信息: 在每次提交时提供有意义的提交信息,解释为什么进行更改和更改的范围。

- 使用分支: 使用分支进行开发,确保在主分支上只合并经过测试和审查的代码。

 如果在提交时没有提供详细的提交信息,可能会导致后续难以理解该提交的目的和内容,不利于团队协作和代码审查。

结论:

通过解决这些可能出现的困难和错误,我可以更好地理解和掌握Git作为版本控制工具的使用。在实习报告中,详细记录这些问题的解决过程和实施方法,有助于展示在实际项目中解决问题的能力和经验。同时,这些经验也为日后面对类似问题时提供了有价值的参考和指导。

实习二:
在实习二中,我遇到了一些困难,经过CSDN查询和多方教学视频得以顺利解决。以下是困难与解决方案总结:

 1. 环境配置问题

问题一:无法找到Sqlserver JDBC驱动包或下载过程中遇到困难。

解决方案:

- 下载驱动包: 在Sqlserver官网或者其他可靠来源下载Sqlserver JDBC驱动包。例如,从Sqlserver官网下载:[Sqlserver Connector/J](https://dev.sqlserver.com/downloads/connector/j/)。

- 版本兼容性: 确保下载的驱动版本与Sqlserver数据库版本兼容。通常建议使用与自己Sqlserver数据库版本相匹配的驱动程序。

- 配置到项目中: 将下载的驱动包拷贝到项目的lib目录中,并在IDE中添加为库。

sqlserver 如果在下载驱动包时网络连接不稳定,可以尝试使用备用下载链接或使用专门的下载工具来确保下载成功。

 2. 数据库连接问题

问题二:无法建立与Sqlserver数据库的连接或连接超时。

解决方案:

- 检查数据库地址和端口: 确保在JDBC连接字符串中正确指定了数据库的地址和端口号。

- 检查用户名和密码: 确保提供的数据库用户名和密码是正确的。

- 防火墙设置: 如果在内网或有防火墙的网络环境中操作,确保端口没有被防火墙阻止。

sqlserver 如果连接数据库时出现连接超时,可以尝试通过ping数据库服务器的IP地址来测试网络连接是否正常,或者在数据库管理工具中手动连接以确认数据库服务器是否可用。

 3. 数据库操作问题

问题三:SQL语句执行失败或数据插入不成功。

解决方案:

- SQL语法错误: 检查SQL语句的语法,确保语句正确无误。

- 字段匹配问题: 确保Java类的字段与数据库表中的字段一致,包括字段名和数据类型。

- 事务管理: 使用事务来确保一系列操作的原子性,避免部分操作成功而部分失败的情况。

sqlserver 如果在插入数据时出现数据类型不匹配的错误,可以检查Java类中对应字段的数据类型是否与数据库表中定义的字段类型一致。

 4. 单元测试问题

问题四:单元测试失败或无法执行。

解决方案:

- 依赖项问题: 确保项目中引入了JUnit库,并且配置正确。

- 测试数据问题: 提供合适的测试数据,以覆盖各种情况,包括正常情况和异常情况。

- 测试环境配置: 确保测试环境与开发环境一致,避免由于环境不同而导致的测试失败。

sqlserver 如果单元测试中出现数据库连接失败的情况,可以考虑使用内存数据库或者模拟数据来进行单元测试,以减少对外部环境的依赖。

 5. JDBC事务处理问题

问题五:事务提交失败或事务未回滚。

解决方案:

- 事务管理: 使用try-catch-finally结构确保在异常发生时事务回滚,以保证数据的一致性。

- 事务提交: 确保在所有数据库操作完成后调用commit()来提交事务。

sqlserver 如果在更新数据后未调用commit()方法,可能会导致修改不被保存到数据库中,可以通过在finally块中调用commit()或rollback()方法来确保事务的正确处理。

 6. 性能优化和错误处理问题

问题六:数据库操作性能低下或未进行错误处理。

解决方案:

- 优化SQL语句: 使用索引、合理设计查询语句来提高数据库操作的效率。

- 异常处理: 在代码中添加适当的异常处理机制,如try-catch语句块,以捕获并处理可能出现的异常,防止程序崩溃或数据丢失。

sqlserver 如果查询数据时性能低下,可以通过分析SQL语句执行计划或添加合适的索引来优化查询速度;如果未进行错误处理,可以通过添加try-catch块来捕获SQLException并进行适当的日志记录或用户提示。

 结论:

通过解决这些可能出现的困难和错误,我可以更好地理解和掌握JDBC数据库操作的过程。在实习报告中,详细记录这些问题的解决过程和实施方法,有助于展示在实际项目中解决问题的能力和经验。同时,这些经验也为日后面对类似问题时提供了有价值的参考和指导。

实习三:
在实习三中,我遇到了一些困难,经过CSDN查询和多方教学视频得以顺利解决。以下是困难与解决方案总结:

 1. 系统需求分析问题

问题一:需求不明确或需求变更频繁。

解决方案:

- 定期沟通: 与项目干系人(如教师、实验室管理员等)定期沟通,确保对需求的理解与他们的期望保持一致。

- 需求文档化: 将需求详细记录,包括功能需求、非功能需求和用户界面设计等,以便后续确认和变更管理。

- 变更管理: 对需求变更进行审查和控制,确保每次变更都经过适当的批准和文档更新。

sqlserver 如果在系统需求分析阶段,教师提出新的实验需求或者系统用户界面的调整,应及时更新需求文档,并与相关方重新确认。

 2. 概要设计问题

问题二:系统概要设计缺乏清晰性或模块划分不合理。

解决方案:

- 模块化设计: 使用模块化方法来划分系统的功能模块,确保每个模块的职责单一且相互独立。

- 数据流程图设计: 绘制数据流程图,明确系统中信息的流动和处理过程,以便识别潜在的设计问题。

- 团队审查: 将设计文档分享给团队成员或导师进行审查,收集反馈并及时修改。

sqlserver 如果在概要设计中,模块划分不清晰导致某些功能交叉实现,可以通过重新绘制数据流程图来帮助理清数据的传递路径和模块之间的关系。

 3. 数据库设计问题

问题三:数据库结构设计不合理或遗漏关键字段。

解决方案:

- 需求分析前期: 在需求分析阶段明确数据库的功能需求,包括数据存储和访问的需求。

- ER图设计: 使用实体关系(ER)图设计数据库结构,确保每个实体和关系都被恰当地定义和映射。

- 约束和索引: 添加必要的约束(如主键、外键约束)和索引,以确保数据完整性和查询效率。

sqlserver 如果在数据库设计中,遗漏了设备借还的时间字段或者未定义必要的外键关系,可以通过修改ER图和数据库表结构来弥补这些遗漏。

 4. 技术实现问题

问题四:在实现系统功能时遇到技术难题或选择不当的技术栈。

解决方案:

- 技术评估: 在项目开始前进行技术评估,选择最适合项目需求的技术栈和开发工具。

- 学习和调研: 针对新技术或复杂功能,进行足够的学习和调研,以提前解决可能出现的问题。

- 团队协作: 在团队中分享经验和技术解决方案,利用集体智慧解决技术挑战。

sqlserver 如果选择了一个新的前端框架用于系统用户界面的实现,可以通过在线教程、文档和社区支持来解决初期的技术难题。

 5. 测试与验证问题

问题五:系统测试不充分或无法复现用户反馈的问题。

解决方案:

- 测试计划: 制定详细的测试计划,包括单元测试、集成测试和系统测试等阶段,确保全面覆盖系统功能和性能。

- Bug管理: 使用专门的Bug跟踪工具,如Jira或Bugzilla,及时记录和跟踪测试中发现的问题。

- 用户反馈: 定期与用户沟通,了解他们的使用体验和反馈,以及发现的问题,及时进行修复和更新。

sqlserver 如果在用户界面测试中发现了响应速度慢的问题,可以通过性能测试工具来模拟和确认该问题,并优化系统响应速度。

 6. 项目管理与沟通问题

问题六:项目进度管理不当或团队沟通不畅。

解决方案:

- 项目计划: 制定清晰的项目计划和进度表,包括关键里程碑和任务分配。

- 沟通工具: 使用有效的沟通工具和平台,如Slack、Microsoft Teams等,促进团队之间的实时交流和信息分享。

- 问题解决会议: 定期召开项目会议或团队会议,及时讨论和解决项目中的问题和挑战。

sqlserver 如果在系统开发过程中发现进度落后,可以通过调整任务分配和加大沟通力度来保证项目的顺利进行和按时交付。

三:测试与运行记录:

Git常用命令的实现:

JDBC的连接和CRUD操作:

实验室设备管理系统:

概要设计:设计系统的概要结构,包括模块划分、数据流程等。

软件运行环境:

       (1)操作系统:Windows 10

       (2)数据库:SQLSERVER

概要结构:

子系统清单

子系统编号

子系统名称

子系统功能描述

1

登录系统

  1. 登录
  2. 找回密码
  3. 退出登录
  4. 退出系统

2

查询系统

  1. 查询所有设备
  2. 按类别查询
  3. 按日期查询
  4. 查询报废申请表
  5. 查询购买申请表
  6. 查询维修记录表
  7. 资金统计

3

管理系统

  1.  修改设备信息
  2.  添加设备信息

4

申请系统

  1. 申请维修
  2. 申请购买
  3. 申请报废

5

审核系统

  1.  审核购买申请
  2.  审核报废申请

6

书籍信息维护系统

  1. 添加图书、维护图书信息等
  2. 电子书下载等

功能清单:

功能模块清单

模块编号

名称

模块功能描述

110

登录

用户登录系统

120

找回密码

用户密码丢失后,通过审核重新获取密码

130

退出登录

已登录用户退出登录

140

退出系统

退出实验室设备管理系统

150

返回

显示上一级页面

210

查询所有设备

显示设备记录表的信息

211

按类别查询

现有设备按类别查询

212

按日期查询

现有设备按日期查询

213

修改设备信息

修改设备记录表的信息

220

查询报废申请表

显示报废申请表的信息

230

查询购买申请表

显示购买申请表的信息

240

查询维修记录表

显示维修记录表的信息

310

添加设备信息

往设备记录表中添加信息

410

资金统计

统计现有设备、维修设备、购买设备所花的资金

510

申请维修

往维修记录表中添加维修记录

520

申请购买

管理员提交购买申请表

530

申请报废

管理员提交报废申请表

610

审核购买申请

领导审核购买申请表

620

审核报废申请

领导审核报废申请表

数据库设计:设计系统所需的数据库结构,包括表的定义、关系和约束等。

表3.1 数据库中的表名列表

编号

表名

表功能说明

1

equipment_record_chart

设备记录表

2

fixing_record_chart

维修记录表

3

purchase_application_chart

购买申请表

4

scrap_record_chart

报废记录表

数据库中表的关系

 

数据库表的详细清单

equipment_record_chart表

表3.3.2                            fixing_record_chart表

表3.3.3                            purchase_application_chart表

表3.3.4                             scrap_record_chart表

四:完成结果分析和个人小结:

在这三个实习项目中,我不仅学习了关键的技术和工具,还深刻体会到了团队协作、问题解决和系统设计的重要性。以下是我在每个实习项目中的详细分析和个人成长的总结:

 实习一:Git分布式版本控制

 1. 学习和掌握Git基本概念和工作原理

在实习一中,我通过学习Git的基本概念和工作原理,如仓库、分支、提交、合并和拉取等,深入理解了Git作为分布式版本控制系统的优势和核心功能。我学会了如何初始化本地仓库、将其与远程仓库关联,并且掌握了常用的Git命令如 `clone`、`add`、`commit`、`pull`、`push` 等,这些命令对于团队协作和代码管理至关重要。

 2. 分支管理和冲突解决策略

分支管理是Git中一个重要且复杂的部分。我学会了如何从主分支(`master`)创建和切换到开发分支(`dev`),以及如何合并分支并解决可能出现的代码冲突。通过实践,我掌握了不同的合并策略,如快进合并和递归合并,根据具体情况选择合适的策略以保证代码的稳定性和一致性。

 3. 团队协作和版本控制实践

在团队协作方面,Git的分布式特性使得团队成员可以并行工作而不会互相干扰,每个成员都能独立进行开发和提交。我学会了通过分支管理和代码合并来有效地协作,及时与团队成员分享代码变更和解决方案,保持代码库的整洁和稳定。

通过实习一,我不仅仅掌握了Git作为版本控制工具的基本操作,更重要的是,我培养了解决实际开发中版本管理问题的能力和团队协作意识。这些技能和经验将在我的职业生涯中起到重要作用,帮助我更加高效和专业地管理和维护项目代码。

 实习二:JDBC数据库操作

 1. 理解JDBC的基本概念和作用

在实习二中,我学习了Java数据库连接(JDBC)的基本概念和作用。通过使用Java语言连接Sqlserver数据库,并实现CRUD操作(增加、查询、更新、删除),我深入理解了如何在Java应用程序中有效地管理和操作数据库。

 2. Sqlserver JDBC驱动的下载和配置

我下载并配置了Sqlserver JDBC驱动包到项目中,这是连接Java应用和Sqlserver数据库的必要步骤。掌握了驱动包的导入和设置,我能够在项目中正确地建立和管理数据库连接,确保数据的安全和稳定性。

 3. 环境搭建和数据库操作实践

通过实践,我成功搭建了JDBC环境,包括创建lib文件夹、导入驱动jar包和设置项目库等操作。我在Sqlserver数据库中创建了表格,并编写了Java程序来实现与表格的交互,确保Java类与数据库表字段的对应关系正确和稳定。

 4. 使用单元测试验证操作

我利用单元测试工具(如JUnit)验证了JDBC操作的正确性和稳定性。通过编写测试用例并运行单元测试,我能够确保数据库操作的预期行为和功能实现,有效地减少了潜在的错误和异常。

 5. 扩展功能的实现

在实习二中,我还学习了如何封装JDBC工具类、进行日期格式化和实现JDBC事务等高级功能。这些扩展功能不仅丰富了我的技术能力,还提升了我在数据库操作和管理方面的综合能力。

 6. 实习收获和个人成长

通过实习二,我不仅掌握了使用Java语言进行数据库操作的基本技能,还学会了如何利用JDBC工具来提高数据库管理的效率和安全性。这些经验不仅对我的学术研究有帮助,也为将来从事软件开发和数据管理工作打下了坚实的基础。

 实习三:基于信息系统的分析与设计

 1. 应用软件工程思想和需求分析

在实习三中,我学习并应用了软件工程的分析方法,特别是在设计实验室设备管理系统时的需求分析。通过与项目干系人(如教师、实验室管理员)的沟通和需求收集,我明确了系统的用户需求和功能要求,确保系统设计符合实际应用场景的需求。

 2. 概要设计和数据库设计

我参与了系统的概要设计阶段,包括对系统的模块划分和数据流程的设计。通过绘制数据流程图和设计系统的模块结构,我确保了系统各部分功能的一致性和完整性。在数据库设计方面,我学习了如何使用实体关系(ER)图来设计和优化数据库结构,确保数据的存储和访问效率。

 3. 技术实现和项目管理

在技术实现阶段,我遇到了在开发过程中可能出现的技术难题和挑战。通过团队合作和技术调研,我成功地解决了这些问题,并在项目管理中采取了有效的进度管理和沟通策略,确保项目按时完成和交付。

 4. 测试与验证

我制定了详细的测试计划,并利用测试工具和用户反馈来验证系统的功能和性能。通过单元测试、集成测试和系统测试,我发现并解决了系统中的潜在问题,保证了系统的稳定性和可靠性。

 5. 实习收获和个人成长

通过实习三,我不仅学会了如何应用软件工程方法进行系统分析和设计,还提升了解决实际项目中复杂问题的能力。我深刻体会到了系统设计的重要性和技术实现的挑战,这些经验将对我未来从事软件开发和项目管理工作具有重要意义。

 总结:

通过完成这三个实习项目,我不仅掌握了Git分布式版本控制、JDBC数据库操作和信息系统分析与设计的基本技能,还积累了丰富的实际经验和团队协作能力。这些项目不仅提升了我的技术水平,更重要的是培养了我解决问题、合作协调和项目管理的综合能力.

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值