软件工程 实验二 面向对象软件设计方法

实验二 面向对象软件设计方法

一、实验目的

掌握使用Visio或Rational Rose绘制类图的步骤;

二、实验环境与设备

硬件环境:微机1台。
软件环境:操作系统:Windows;建模工具:Visio或 Rose;数据库:MySQL(可选);开发工具包:JDK(可选);开发环境:MyEclipse(可选);Web服务器:Tomcat(可选);浏览器:IE(可选)。

三、预备知识

1、掌握软件工程的基本知识
2、掌握面向对象分析设计的基本知识
3、掌握建立类图、顺序图、状态图、部署图的绘制方法

四、实验内容

根据附件1给出的《简单的学生选课管理系统需求描述》采用面向对象分析方法给出系统的设计类图、课程注册用例的交互图(顺序图)。

五、建模思路

5.1 学生角色

1.学生可以查询新学期将开设的课程
2.学生可以查询讲课教师情况
3.学生可以选择自己要学习的课程进行“课程注册”
4.学生可以查询成绩单;

5.2 教务管理员角色

1.教务管理员可以进行教师信息、学生信息和课程信息的维护
2.教务管理员可以开启和关闭“课程注册”。

5.3 教师角色

1.教师可以查询新学期将开设的课程
2.教师可以查询选课学生情况
3.教师可以登记成绩单;
4.使用系统的所有用户都需经过登录。

5.4 整体服务过程

在教务管理员开启“课程注册”后,学生经登录进入“课程注册”用例来完成选课。进入后首先获得该学期的课程目录表,课程目录表列出每门课程的所有信息,诸如课程名、学时、学分、基本信息、开课教师、开课院系和选课条件等。每个学生可以从开课列表中选择不超过3门的选修课,每门课程最多不能超过30人,最少不能低于5人,低于5人的课程将被取消。在选课期间允许学生试听并改变已注册课程,开学两周后教务管理员关闭“课程注册”。一旦学生的注册过程关闭,形成最终的选课结果并予以公布。

六、建立模型

6.1 设计类图
在这里插入图片描述

6.2 顺序图
在这里插入图片描述

6.3 系统状态图
在这里插入图片描述

6.4 系统部署图
在这里插入图片描述

七、结果分析

心得体会
1.初步了解Process on软件的基本使用。
2.学习并且实践了设计类图,部署图和状态图的画法
3.基本掌握了软件工程中面向对象软件设计的基本要求
4.进一步加深了对于软件工程面向对象软件设计和流程的理解
5.进一步加深对于软件工程中各种模型用图的理解

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实验目的:了解面向对象程序设计的基本概念和方法,掌握基本的面向对象程序设计技能。 实验要求:通过编写一个简单的学生信息管理系统,掌握面向对象程序设计的基本概念和方法,能够熟练运用类、对象、继承、多态等面向对象程序设计技术。 实验步骤: 1. 确定系统功能 本次实验的学生信息管理系统需要包含以下功能: - 添加学生信息 - 删除学生信息 - 修改学生信息 - 查询学生信息 - 显示所有学生信息 2. 设计类的结构 根据系统功能,设计出以下类的结构: - 学生类(Student):包含学生的姓名、学号、性别、年龄等基本信息。 - 学生信息管理类(StudentManager):包含添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息等功能。 3. 编写代码 根据类的结构,编写代码实现系统功能。具体实现方法可以参考以下步骤: - 定义学生类(Student),包含学生的姓名、学号、性别、年龄等基本信息。 - 定义学生信息管理类(StudentManager),包含添加学生信息、删除学生信息、修改学生信息、查询学生信息、显示所有学生信息等功能。 - 在主函数中实现菜单功能,让用户选择需要执行的操作。 以下是示例代码: ```java import java.util.ArrayList; import java.util.Scanner; class Student { String name; String id; String gender; int age; public Student(String name, String id, String gender, int age) { this.name = name; this.id = id; this.gender = gender; this.age = age; } public void printInfo() { System.out.println("姓名:" + name); System.out.println("学号:" + id); System.out.println("性别:" + gender); System.out.println("年龄:" + age); } } class StudentManager { ArrayList<Student> students = new ArrayList<Student>(); public void addStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入学生姓名:"); String name = scanner.nextLine(); System.out.print("请输入学生学号:"); String id = scanner.nextLine(); System.out.print("请输入学生性别:"); String gender = scanner.nextLine(); System.out.print("请输入学生年龄:"); int age = scanner.nextInt(); students.add(new Student(name, id, gender, age)); System.out.println("添加成功!"); } public void deleteStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要删除的学生学号:"); String id = scanner.nextLine(); for (int i = 0; i < students.size(); i++) { if (students.get(i).id.equals(id)) { students.remove(i); System.out.println("删除成功!"); return; } } System.out.println("没有找到该学生!"); } public void updateStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要修改的学生学号:"); String id = scanner.nextLine(); for (int i = 0; i < students.size(); i++) { if (students.get(i).id.equals(id)) { System.out.print("请输入学生姓名:"); String name = scanner.nextLine(); System.out.print("请输入学生性别:"); String gender = scanner.nextLine(); System.out.print("请输入学生年龄:"); int age = scanner.nextInt(); students.set(i, new Student(name, id, gender, age)); System.out.println("修改成功!"); return; } } System.out.println("没有找到该学生!"); } public void searchStudent() { Scanner scanner = new Scanner(System.in); System.out.print("请输入要查询的学生学号:"); String id = scanner.nextLine(); for (int i = 0; i < students.size(); i++) { if (students.get(i).id.equals(id)) { students.get(i).printInfo(); return; } } System.out.println("没有找到该学生!"); } public void printAllStudents() { for (int i = 0; i < students.size(); i++) { students.get(i).printInfo(); } } } public class Main { public static void main(String[] args) { StudentManager studentManager = new StudentManager(); Scanner scanner = new Scanner(System.in); while (true) { System.out.println("请选择要执行的操作:"); System.out.println("1. 添加学生信息"); System.out.println("2. 删除学生信息"); System.out.println("3. 修改学生信息"); System.out.println("4. 查询学生信息"); System.out.println("5. 显示所有学生信息"); System.out.println("0. 退出"); int choice = scanner.nextInt(); scanner.nextLine(); switch (choice) { case 0: System.out.println("谢谢使用!"); System.exit(0); break; case 1: studentManager.addStudent(); break; case 2: studentManager.deleteStudent(); break; case 3: studentManager.updateStudent(); break; case 4: studentManager.searchStudent(); break; case 5: studentManager.printAllStudents(); break; default: System.out.println("无效的选择!"); } } } } ``` 4. 运行程序 编译代码并运行程序,测试系统功能是否正常。 实验总结: 通过本次实验,我们学习了面向对象程序设计的基本概念和方法,掌握了基本的面向对象程序设计技能,能够熟练运用类、对象、继承、多态等面向对象程序设计技术。在实际编程中,需要根据具体问题进行类的设计,合理运用面向对象程序设计技术,编写出高效、可靠、易于维护的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值