2012012194信安1202李自然_UML-实验报告(06)-顺序图讲解_第1页
2012012194信安1202李自然_UML-实验报告(06)-顺序图讲解_第2页
免费预览已结束,剩余12页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、北京信息科技大学实验(上机)报告课程名称 UML 及建模工具 学号 2012012194 姓名 李自然 成绩_专业名称信息安全实验室名称3-702实验时间15.6实验名称实验 6:绘制顺序图1.实验目的:1) 掌握 UML 顺序图建模的意义。2) 掌握 Rational Rose 或其他工具绘制顺序图的方法。3) 理解顺序图和类图之间的关系。2.实验内容:1) 根据附录一源程序,绘制顺序图(店员租赁影片用例)。2)根据上学期的数据库系统开发的试卷题目及答案(见附录二),绘制顺序图(教务员添加课程用例)3)同步课程设计任务:小组成员在分层架构和实体类的共同讨论的基础上,对个人负责的用例进行详细设

2、计(用例的界面、界面数据的说明、实现用例的参与类、用例的 详细流程的顺序图)。3.实验要求:1) 直接将顺序图拷贝粘贴到实验报告中提交。2) 正确使用消息。3) 个人独立元成。4) 提交最后期限:当日提交。4.实验准备:1)mc-vig5.实验过程和结果:1)根据附录一源程序,绘制顺序图(店员租赁影片用例)2; ftewCusromBr(5KH)3: new Ren:al()6: statementQRenifformcustomerrental店员:NmMl粕sFtentFormuustomErrent allmovienew public RentForrnQ-45: addRentalf

3、)4:newMovie()2)根据上学期的数据库系统开发的试卷题目及答案(见附录二),绘制顺序图(教务员添加课程用例)mc-vig6.实验总结:通过这次试验,掌握 UML 顺序图建模的意义。掌握了用 Rational Rose 绘制顺序图的方法。 理解顺序图和类图之间的关系附录影片租赁源程序/租赁类的定义class Rentalprivate Movie _movie;/ 影片private int _rentDate;/ 租赁日期private int _daysRented;/ 租期public Rental(Movie movie, int daysRented)_movie = mov

4、ie;_daysRented = daysRented;public int getDaysRented()return _daysRented;public Movie getMovie()return _movie;double getCharge()return _movie.getCharge(_daysRented);int getFrequentRenterPoints()return _movie.getFrequentRenterPoints(_daysRented);/顾客类的定义class Customerprivate String _name;/ 姓名private S

5、tring _phone;/ 电话号码private Vector _rentals = new Vector();/ 租借纪录public Customer(String name)_name = name;public void addRental(Rental arg)_rentals.addElement(arg);public String getName()return _name;/输出租赁交易报告public String statement()Enumeration rentals = _rentals.elements();String result = Rental Re

6、cord for + getName() + n;while (rentals.hasMoreElements()Rental each = (Rental) rentals.nextElement();/显示该顾客的每个租赁result += t + each.getMovie().getTitle()+ t + String.valueOf(each.getCharge() + n;/结尾打印(总费用和积分)result += Amount owed is + String.valueOf(getTotalCharge() + n;result += You earned + String

7、.valueOf(getTotalFrequentRenterPoints() + frequent renter points; returnresult;/已超文本方式输出租赁交易报告public String htmlStatement()Enumeration rentals = _rentals.elements();String result = Rentals for + getName() + n;while (rentals.hasMoreElements()Rental each = (Rental) rentals.nextElement();/显示该顾客的每个租赁 re

8、sult += each.getMovie().getTitle()+ : + String.valueOf(each.getCharge() +n;/结尾打印(总费用和积分)result += You owe + String.valueOf(getTotalCharge() + n;result += On this rental you earned + String.valueOf(getTotalFrequentRenterPoints() + frequent renter points;return result;/ 计算总积分private int getTotalFreque

9、ntRenterPoints()int result = 0;Enumeration rentals = _rentals.elements();while (rentals.hasMoreElements()Rental each = (Rental) rentals.nextElement();result += each.getFrequentRenterPoints();return result;/ 计算总费用private double getTotalCharge()double result = 0;Enumeration rentals = _rentals.elements

10、();while (rentals.hasMoreElements() Rental each = (Rental) rentals.nextElement();result += each.getCharge();return result;/抽象价格类的定义abstract class Priceabstract int getPriceCode(); / 取得价格代号abstract double getCharge(int daysRented); / 根据租期计算费用int getFrequentRenterPoints(int daysRented) / 根据租期计算积分retur

11、n 1;/儿童价格类的定义class ChildrensPrice extends Priceint getPriceCode()return Movie.CHILDRENS;double getCharge(int daysRented)double result = 1.5;if (daysRented 3)result += (daysRented - 3) * 1.5;return result;/新片价格类的定义class NewReleasePrice extends Priceint getPriceCode()return Movie.NEW_RELEASE;double ge

12、tCharge(int daysRented)return daysRented * 3;int getFrequentRenterPoints(int daysRented)return (daysRented 1) ? 2: 1;/普通片价格类的定义class RegularPrice extends Priceint getPriceCode()return Movie.REGULAR;double getCharge(int daysRented)double result = 2;if (daysRented 2)result += (daysRented - 2) * 1.5;re

13、turn result;/影片类和主程序public class Moviepublic static final int CHILDRENS = 2;public static final int REGULAR = 0;public static final int NEW_RELEASE = 1;private String _title;/ 名称private Price _price;/ 影片的价格public Movie(String title, int priceCode)_title = title;setPriceCode(priceCode);public int get

14、PriceCode()return _price.getPriceCode();public void setPriceCode(int arg)switch (arg)case REGULAR: / 普通片 _price = new RegularPrice(); break;case CHILDRENS: / 儿童片_price = new ChildrensPrice(); break;case NEW_RELEASE: / 新片 _price = new NewReleasePrice(); break;default:throw new IllegalArgumentExceptio

15、n(Incorrect Price Code);public String getTitle()return _title;/ 影片租金double getCharge(int daysRented)return _price.getCharge(daysRented);/ 影片积分int getFrequentRenterPoints(int daysRented)return _price.getFrequentRenterPoints(daysRented);/ 主程序using System;using System.Collections.Generic;using System.C

16、omponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;public partial class RentForm : Formpublic RentForm()InitializeComponent();private void button1_Click(object sender, EventArgs e)Movie m1 = new Movie( 阿凡达 , 1);Movie m2 = new Movie( 将爱情进行到底 , 2);Movie m

17、3 = new Movie( 喜羊羊与灰太郎 , 3);/客户的租赁Customer cl = new Customer(张三”);Rental r1 = new Re ntal(m1,4);Rental r2 = new Rental(m2, 2);Rental r3 = new Ren tal(m3, 2);cl.addRe ntal(r1);cl.addRe ntal(r2);c1.addRe ntal(r3);/输出顾客 c1 的消费报告 textBox1.Text = c3.stateme nt();附录二:五、程序题(本题满分 37 分,共含 4 道小题)学校对重点课程建设进行管理

18、,在SQL Server 数据库中建立一张表courses,表结构如下:字段名含义数据类型备注CourseID课程编号int主键Name名称n VarChar(20)Hours学时intSchool学院n Varchar(20)一门课程只能属于一个学院Web.Config文件中关于数据库连接串的配置代码如下: 1.编写一个 courses 表对应的 DTO 类,类名为 Course,命名空间是 Model,额外为该类编写一个只 读属性Credit (学分),学分按照学时计算(48: 4 学分)。(8 分)2.编写一个 courses 表的数据访问类,类名为 CourseDal, 命名空间是 D

19、al。该类包括 2 个方法 intInsert (Course course)和 List SelectCoursesBySchool( string school )oInsert 方法将 Course 对象作为 一个新行插入到数据表courses 中;SelectCoursesBySchool 方法将根据学院从数据表courses 检索指定学院的所有课程记录,并返回Course 对象集合。(15 分)提示 1:该类已存在私有方法 private Course GetCourseFromDataRow (DataRow row),该方法利用传 入的DataRow 对象生成一个 Course

20、对象并返回,可直接使用该方法。提示 2:代码中不能使用 DBObject 对象,要求直接采用ADO.NET 对象访问数据库。3. 编写 courses 表对应的业务逻辑类,类名为 CourseBll,命名空间是 Bll,包含 Add()、GetCoursesBySchool()方法。请仅为方法 int Add (Course course)编写代码实现一门课程的添加。 业务规则如下:课程的学时必须大于等于 32,小于等于 64;每个学院至多有 10 门课程。(8 分)4.现有一个 AddCourse.aspx 页面,在这个页面上有以下控件:4 个 TextBox 控件(Text1、Text2、

21、Text3、 Text4,分别用来输入课程编号、名称、学时、学院)、一个 Button控件(名为 Button1 )。编写 Button1 的单 击事件处理程序,根据用户的输入调用第 3 小题中 CourseBll 类中的 Add方法向数据库中添加一门课程 (暂 不考虑数据验证)。(6 分)参考答案1 编写一个 courses 表对应的 DTO 类,类名为 Course,命名空间是 Model,额外为该类编写一个只 读属性 Credit(学分),学分按照学时计算(48: 4 学分)。(8 分) 答:命名空间 1 分,类名定义 1分, 4 个属性每个 1 分, Credit 属性 2 分。nam

22、espace Model Serializable public class Courseprivate int _CourseID ;public int CourseIDget return _CourseID; set _CourseID = value ; private string _name;public string Nameget return _name; set _name = value ; private int _hours ;public int Hourseget return _hours ; set _hours = value ; private stri

23、ng _school ;public string Schoolget return _school ; set _school = value ; public int Creditget if ( _hours 32 and _hours 48) return 4;答:命名空间 1 分,类名定义 1 分,数据库连接串 1 分,Insert 方法的 Sql 语句 2 分,命令执行 3 分(使用DBObject 得 1 分), SelectCoursesBySchool 方法执行查询 3 分(使用 DBObject 得 1 分),获取结果返回 3 分。 using导入命名空间 Model 得

24、1 分。namespace DALpublic class CourseDalprivate string connString ;public CourseDal ()connString =ConfigurationManager.ConnectionStrings ConnString1 .ConnectionString ;public int Insert (Course course )string sql = insert into Course (CourseID,Name,Hourse,School) values(sql += course.CourseID = ? nul

25、l,: ( + course.CourseID + , );sql += course.Name = ? null, : ( + course.Name + , );sql += course.Hours = null ? null, : ( course.Hours + , );sql += course.School = ? null) :(+ course.School + ) );SqlConnection cn = new SqlConnection ( connString );cn.Open();SqlCommand cmd = new SqlCommand(sql, cn);i

26、nt result = cmd.ExecuteNonQuery ()cn.Close();return (result );public List SelectCoursesBySchool ( string school )List Courses = new List ();string sql = select * from Course where School=+ school +DataSet ds = new DataSet ();SqlDataAdapter da = new SqlDataAdapter ( sql , connString );da.Fill ( ds, Course );for ( int i = 0; i = 32 and c1.Hours =64 )CourseDal cDal = new CourseDal ();List courses ; courses = cDal.SelectCoursesBySchool ( c1.School ); if (

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论