第一篇:面向对象图书管理信息系统设计与实现
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
面向对象图书管理信息系统设计与实现
#include
const int Maxbor=5;//每位读者最多借五本书 //读者类,实现对读者的信息的描述 class Reader { private: int tag;//删除标记 1:已删 0:未删 int no;//读者编号 char name[10];//读者姓名 int borbook[Maxbor];//所借图书 public: Reader(){} char *getname(){return name;} //获取姓名 int gettag(){return tag;} //获取删除标记
精心收集
精心编辑
精致阅读
如需请下载!
演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案
int getno(){return no;} //获取读者编号 void setname(char na[])//设置姓名 { strcpy(name,na);} void delbook(){ tag=1;}//设置删除标记 1:已删 0:未删 void addreader(int n,char *na)//增加读者 { tag=0;no=n;strcpy(name,na);for(int i=0;i 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } } } int retbook(int bookid)//还书操作 { for(int i=0;i 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } };//读者类库,实现建立读者的个人资料 class RDatabase { private: int top;//读者记录指针 Reader read[Maxr];//读者记录 public: RDatabase()//构造函数,将reader.txt读到read[]中 { Reader s;top=-1;fstream file(“reader.txt”,ios::in);//打开一个输入文件 while(1){ file.read((char *)&s,sizeof(s));if(!file)break;top++;read[top]=s;} file.close();//关闭 reader.txt 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 } void clear()//删除所有读者信息 { top=-1;} int addreader(int n,char *na)//添加读者时先查找是否存在 { Reader *p=query(n);if(p==NULL){ top++;read[top].addreader(n,na);return 1;} return 0;} Reader *query(int readerid)//按编号查找 { for(int i=0;i<=top;i++)if(read[i].getno()==readerid && read[i].gettag()==0){ 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 return &read[i];} return NULL;} void disp()//输出所有读者信息 { for(int i=0;i<=top;i++)read[i].disp();} void readerdata();//读者库维护 ~RDatabase()//析构函数,将read[]写到reader.txt文件中 { fstream file(“reader.txt”,ios::out);for(int i=0;i<=top;i++)if(read[i].gettag()==0)file.write((char *)&read[i],sizeof(read[i]));file.close();} };void RDatabase::readerdata(){ char choice; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 char rname[20];int readerid;Reader *r;while(choice!='0'){ cout <<“nnttt读 者 维 护nnntt 1 新 增nntt 2 更 改nntt 3 删 除nntt 4 查 找nntt 5 显 示nntt 6 全 删nntt 0 退 出”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 if(r==NULL){ cout << “ 该读者不存在 ”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 cin >> readerid;r=query(readerid);if(r==NULL){ cout <<“该读者不存在”<< endl;break;} r->disp();break;case '5': disp();break;case '6': clear();break;default:cout<<“输入错误,请从新输入:”;break;} } } //图书类,实现对图书的描述,图书的编号,书名,借出,还入等class Book { 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 private: int tag;//删除标记 1:已删 0:未删 int no;//图书编号 char name[20];//书名 int onshelf;//是否再架 1:再架 2:已借 public: Book(){} char *getname(){ return name;}//获取姓名int getno(){ return no;}//获取图书编号 int gettag(){ return tag;}//获取删除标记 void setname(char na[])//设置书名 { strcpy(name,na);} void delbook(){ tag=1;}//删除图书 void addbook(int n,char *na)//增加图书 { tag=0;no=n;strcpy(name,na);onshelf=1;} 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 int borrowbook()//借书操作 { if(onshelf==1){ onshelf=0;return 1;} return 0;} void retbook()//还书操作 { onshelf=1;} void disp()//输出图书 { cout << setw(6)<< no << setw(18)<< name << setw(10)<<(onshelf==1? “在架”:“已借”)< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 private: int top;//图书记录指针 Book book[Maxb];//图书记录 public: BDatabase()//构造函数,将book.txt读到book[]中 { Book b;top=-1;fstream file(“book.txt”,ios::in);while(1){ file.read((char *)&b,sizeof(b));if(!file)break;top++;book[top]=b;} file.close();} void clear()//全删 { top=-1;} 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 int addbook(int n,char *na)//增加图书 { Book *p=query(n);if(NULL==p){ top++;book[top].addbook(n,na);return 1;} return 0;} Book *query(int bookid)//查找图书 { for(int i=0;i<=top;i++)if(book[i].getno()==bookid &&book[i].gettag()==0){ return &book[i];} return NULL;} void bookdata();//图书库维护 void disp() 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 { for(int i=0;i<=top;i++)if(book[i].gettag()==0)book[i].disp();} ~BDatabase()//析构函数,将book[]写到book.txt文件中 { fstream file(“book.txt”,ios::out);for(int i=0;i<=top;i++)if(book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();} };void BDatabase::bookdata(){ char choice;char bname[40];int bookid;Book *b;while(choice!='0'){ 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 cout <<“nnnttt图 书 维 护 ”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 cout << “输入新的书名:”< 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 break;} b->disp();break;case '5': disp();break;case '6': clear();break;default:cout<<“输入错误,请从新输入:”;} } } //main()函数的实现,程序的主界面的引导 void main(){ char choice;int bookid,readerid;RDatabase ReaderDB;Reader *r;BDatabase BookDB; 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 Book *b;while(choice!='0'){ cout < 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 { cout <<“ 不存在该图书,不能借书”<< endl;break;} if(b->borrowbook()==0){ cout << “ 该图书已借出,不能借书”<< endl;break;} r->borrowbook(b->getno());break;case '2': cout<<“还书n 读者编号:”;cin >>readerid;cout << “ 图书编号:”;cin >>bookid;r=ReaderDB.query(readerid);if(r==NULL){ cout <<“ 不存在该读者,不能还书” << endl;break;} 精心收集 精心编辑 精致阅读 如需请下载! 演讲稿 工作总结 调研报告 讲话稿 事迹材料 心得体会 策划方案 b=BookDB.query(bookid);if(b==NULL){ cout <<“ 不存在该图书,不能还书” < 精心收集 精心编辑 精致阅读 如需请下载! 第一章:抽象和封装 1,为什么使用面向对象 1.1:万事万物皆对象,面向对象就是采用“现实模拟”的方法设计和开发程序。 2,使用面向对象进行设计 2.1:面向对象设计三部曲 1,发现类。 2,发现类的属性。 3,发现类的方法。 经验:在需求中找出名词的方式确定类和属性,找出动词的方式确定方法。 3,创建类的对象 1,通过构造方法来创建对象 2,通过对象名.属性名的方式调用属性。 3,通过对象名.方法名的方式调用方法。 4,Static可以用来修饰属性,方法和代码块。Static修饰的变 量属于这个类所有。即由这个类创建的所有对象共有同一个static变量。类属性,类方法可以通过类名和对象名访问,势力属性,实例方法只能通过对象名访问。 5,在方法里不可以定义static变量,类变量不能是局部变量。6,构造函数的重载 1,构造方法的名字和类名相同,没有返回值类型。构造 方法的作用主要就是在创建对象是执行一些初始化操作,赋值。 2,在没有给类提供任何构造方法时,系统会提供一个无 参的方法体为空的默认构造方法。一旦提供了自定义构造方法,系统将不会提供这个默认构造方法,如果要使用她,必须手动添加。 3,如果同一个类中包含了两个或两个以上方法,它们的方法名相同,方法参数个数或参数类型不同,则称该方法被重载。成员方法和构造方法都可以重载。 4,构造方法没有返回值类型。如果有,就不是构造方法,而是构造方法同名的成员方法。 5,封装 1,封装是类的三大特性之一,就是将类的状态信息隐 藏在内部。 2,封装的具体步骤:为每个属性创建一对一赋值,在赋值方法中,加入对属性的存取控制语句。 3,隐藏类的实现细节,让使用者只能通过程序员规定的方法来访问数据,可以方便地加入存取控制语句,限制不合理操作。 面向对象课程学习心得 这学期的面向对象课程对我来说是收获匪浅的一门课。通过老师课件的讲解,自己一些相关书籍的阅读和实践作业的完成,逐步对课程有了由浅及深的认识。 面向对象(Object Oriented,OO)是一门以实践为主课程,课程中可以分开两块OOA(面向对象系统分析)和OOD(面向对象系统设计)。OOA(面向对象系统分析)主要内容: 研究问题域和用户需求,运用面向对象的观点和原则发现问题域中与系统责任有关的对象,以及对象的特征和相互关系.OOA不涉及针对具体实现采取的设计决策和有关细节,独立于具体实现的系统模型。是一个完整确切反映问题域和用户需求的系统模型。OOA的优势:复用、可扩展、可维护性、弹性。 OOD(面向对象系统设计):以OOA模型为基础,按照实现的要求进行设计决策,包括全局性的决策和局部细节的设计,与具体的实现条件相关。OOD的步骤:细化重组类→细化和实现类之间的关系,明确其可见性→增加属性,指定属性的类型和可见性→分配职责,定义执行每个职责的方法→对消息驱动的系统,明确消息传递的方式→利用设计模式进行局部设计→画出详细的类图和时序图。 面向对象的分析与设计方法将致力于解决传统软件研发过程中由于软件模块化结构化程度不高带来的软件重用性差、软件可维护性差、开发出的软件不能满足用户需要等方面问题。面向对象的概念包括:对象、对象的状态和行为、类、类的结构、消息和方法。对象概念将包含对象唯一性、抽象性、继承性、多态性的重要特征。面向对象的要素包含:抽象、封装性、共享性三方面。 在设计模式的研究过程中,我们组选择的是迭代器(Iterator)的设计模式研究。完成设计研究后,我对迭代器的设计模式有了更为深刻的理解。迭代器(Iterator)提供一个方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。并了解到迭代器设计模式一般在以下三类场合使用较多。 访问一个聚合对象的内容而无需暴露它的内部表示。 支持对聚合对象的多种遍历。因为遍历状态是保存在每一个迭代器对象中的。 为遍历不同的聚合结构提供一个统一的接口。根据实现方式的不同,效果上会有差别。同时还简化了容器的接口。但是在java Collection中为了提高可扩展性,容器还是提供了遍历的接口。在面向对象的软件设计中,我们经常会遇到一类集合对象,这类集合对象的内部结构可能有着各种各样的实现,但是归结起来,无非有两点是需要我们去关心的:一是集合内部的数据存储结构,二是遍历集合内部的数据。面向对象设计原则中有一条是类的单一职责原则,所以我们要尽可能的去分解这些职责,用不同的类去承担不同的职责。Iterator模式就是分离了集合对象的遍历行为,抽象出一个迭代器类来负责,这样既可以做到不暴露集合的内部结构,又可让外部代码透明的访问集合内部的数据。 在Java Collection的应用中,提供的具体迭代器角色是定义在容器角色中的内部类。这样便保护了容器的封装。但是同时容器也提供了遍历算法接口,你可以扩展自己的迭代器。至于迭代器模式的使用。客户程序要先得到具体容器角色,然后再通过具体容器角色得到具体迭代器角色。这样便可以使用具体迭代器角色来遍历容器了。 OOA和OOD之间没有明显的界限。OOA与OOD的不可分割性正好说明了OO思想的强大,即软件过程阶段的无缝连接,在交流与沟通中不会产生鸿沟,这是相对结构化思想的好处,因为从功能模块到某块详细控制逻辑设计两者之间的联系不是十分紧密,需要分析人员与设计人员的再沟通。 通过课程的学习与实践,对面向对象的理念,以及相关方法,设计模式有了更为深刻的理解与掌握。针对面向对象的分析与设计课程的授课内容及方法,我个人觉得对我还是有不少的帮助和 提高。结合自己的工作,虽然与开发接触的比较少,但是在运维过程中,如果能了解开发原理,结合实际的工作,会对一些源代码的分析能力以及工作效率的提高起到明显的帮助作用。 第4章江西师范大学“网上商城”建模实例 本文所要进行建模分析的系统是学校小型电子商务系统,以欲构建的江西师范大学的便利店和生活超市“网上商城”为例,是满足校园客户(主要在校学生)网购要求的综合性的应用系统,本文以Rational rose 2003为建模工具,并应用第三章提出的基于UML的电子商务系统建模过程,完成该系统的详细分析和设计。对系统进行需求分析,建立系统需求模型、静态结构视图、动态结构视图、数据库模型、物理模型。 4.1系统的需求分析 4.1.1系统的设计背景 江西师范大学瑶湖校区江西师范大学新校区,地处南昌市昌东镇,在校学生3万余人,由于学校占地面积很大,离市区比较远,周围设施还不是很齐全,该校区为解决师生日常生活需要,建设了商业街并且每个宿舍区都有便利超市,这些店是一个小型的生活用品采购区,在校学生平时的大部分消费都是在这些地方,包便利店和小型超市等生活服务的实体商店,满足了师生不出校门就能买到自己想要的东西。近些年,随着高校的扩招,该校区学生和老师的数量也不断增加,新的问题也随之而来,高校学生由于社会发展带来的的巨大压力,生活节奏也日益加快,空闲时间也越来越少。所以如果他们每次生活消费都要到实体店购买,就给他们的生活带来不便,因而如果能够网上购物就解决了这个矛盾。另外,据数据显示,该校学生80%是网民,该群体的素质较高,接受新事物速度快,而且他们的消费兴趣和倾向也有高度的相似性。该校区学生居住地也比较集中,大都住在学校统一安排的公寓或者学校周围的小区,使物流配送更加方便和及时。目前学校的实体商店很多,但是大多数商店还没有自己的电子商务系统,所以如果通过一个统一的网上购物平台,商店将这些商品都发布在网上商城上,师生就可以足不出户选购商品,非常方便。只要授予他们可以在平台上销售自己的商品,提高了商店的知名度,也提高了他们的服务能力和影响力。该网上商城具有一般网上购物系统的功能: 1.师生可以通过该网上商城注册为商城用户,浏览商品订购商品放入购物车;客户可以通过该商城发布评论信息;客户可以查看自己订单;客户可以支付商品货款。 2.商户可以通过该商城发布自己的商品信息、供师生购买;可以通过该商城管理自己的商品信息和员工信息;可以进行订单处理。3.系统管理员对商户申请信息进行审核;对评论信息管理:对系统日常的维护和数据备份;对用户信息管理。 除了以上三个一般购物系统的功能商城的系统管理员可以通过对历史订单信息进行数据挖掘,找出顾客购买商品间的关联关系,建议商户对其营销策略进行调整或者绑定销售一些商品,以提高商户的销售利润,达到在线交易和实体店双重赢利。该功能模块的设计将在第五章详细说明。4.1.2系统的模块设计 根据以上背景,本文欲构建一个具有上述功能的江西师范大学“网上商城”。该商城可以满足师生网上购物的要求,注册该商城用户都可以直接登录到该商城。该商城为校园的客户提供了一个统一的网上交易平台,该网上商城的业务流程图,如图4.1所示。 通过以上背景分析和业务流程的设计,根据一般网上购物系统的功能,并结合该“网上商城”的特殊功能需求,根据商城所涉及到的主要参与者将该商城主要功能描述如下: 1,商城维护:管理员可以对商城日常维护和数据备份。2.商户信息管理:管理员对申请加盟的商户等级管理和商户信息修改,添加等操作。 3.商城用户信息管理:对商城注册用户信息的管理,以及其应用权限 4.评论管理:管理员可以对评论信息进行处理,对于不符合要求的评论可以删除。 5.收集数据:系统管理员可以根据数据库中一段时间的订单历史记录查询分析,收集到分析数据。 6.订单分析:管理员可以对收集到的数据进行分析,得出商品之间的关联性。建议商户调整销售策略,从而提高商店利润。 7.商城注册:非家园网或非商城用户的客户可以注册为商城用户。8.修改个人资料:注册用户可以修改自己的注册资料。包括地址,电话等基本信息。 9.商城登录:系统管理员、用户、商户都可以登录商城相应的模块在相应权限内操作。 IO.查看商品信息:进入商城的师生都可以浏览商品信息,该商品信息包括商品的基本信息和商品的库存。 11.购物:如果商品有库存则客户可以购买,如果缺货则不能购买,客户将商品放入购物车,进行购物。客户可以对购物车里的商品随时修改,删除,添加和清空。 12.下订单:客户将商品加入购物车后,可以填写订单,对于订单,在未处理之前,客户也可以随时登录系统修改并提交。 13.支付:订单提交以后,客户可选择支付方式,如选择货到付款则订单完成,如选择网上支付,则客户要登录网上银行支付,支付完成则该订单完成。 14.订单查看:客户可以随时登录系统查看自己的历史订单信息,可以删除历史订单,可以查看订单状态,订单在未处理之前都可以修改然后再提交,也可以对取消未处理的订单。 15.评论:收到商品以后客户对商品和商户的服务是否满意可以对此订单进行评论。 16.申请加盟商城:商户申请加盟商城,资格审核通过后可以在商城建立自己的网上商店,拥有该商店的管理权限,可以进行网上交易。17.商品信息维护:商户可以随时添加、修改、删除商品的信息。18.配送员信息管理:商户可以对商店里的配送员信息进行添加、修改、删除,以更好的管理商店的配送工作。 19.订单处理:客户提交订单以后,商户接收订单并与客户确认订单以后对订单进行处理,根据订单所购买的商品,商户查询库存,确认库存中有该商品,对订单进行审批,审批完了后则打印配送订单,安排送货。 20.派遣配送员:商户点击相关功能,将输出配送员编号,商户把送货单和商品交予该配送员负责,配送员把商品送到客户指定的地点,如果无人收货,则在订单回执中填写“无人接货”,如果收货成功,则填写“收货成功”,如收货人推迟收货则填写“推迟收货”。并将订单回执交予商户。 21.库存管理:商户可以对商品库存进行定期清点,并修改商品信息中的库存信息。 22.配送订单管理:对已经处理的订单,商户打印出配送订单,并安排配送员配送,对配送订单的完成情况进行管理。 23.查看商品销售记录:商户可以对本商店的商品信息随时查看。24.查询分析结果:商户可以登录商城查询商品的关联分析结果,通过结果设置相应的销售捆绑包或交叉销售。 25.设置销售捆绑包:对分析到的关联商品,通过后台输入设置到捆绑包中。 满足上述需求的系统主要包括以下几个模块: 系统管理模块:该模块是系统提供给系统管理员的接口模块。主要包括对校园商户的加盟审核,对商店申请信息的管理,根据商户等级和信誉来决定删除和添加商户,另外对网站用户信息的管理。该模块可以对系统日常维护和数据备份,并且通过对订单信息进行数据分析,以帮助商户制定营销策略,赢得更大的利润。 用户接口模块:该模块为想购买该网站商品的学生提供的了入口,所有校园的师生都可以通过浏览器浏览该网站商品,可以注册为该系统用户并登录该系统订购自己喜爱的商品。 商户操作模块:该模块是“网上商城”的核心模块。主要包括接受客户完成的订单需求,指派特定的配送员,配送员根据订单所需提货,配送员送货上门,客户签收商品并生成回执单,商户可以查看最近一段时间某商品的销售记录,根据查看的商品订单分析结果制定相应的捆绑销售或者交叉销售策略。 4.2需求建模 该系统需求建模描述系统用户使用一个系统的方式,描述系统应该具备什么功能,是系统用户或者另一个系统与系统之间的一次交互过程,是系统分析和设一计的第一步,以系统全局的功能作为参考,把系统所涉及的参与者和他们从外部观察到的系统的功能描述出来,而并不描述这些功能在系统功能的实现形式。这个过程使用UML建立系统的用例图,分离出系统执行者和用例,以及用例之间的关系。4.2.1系统参与者 参与者是系统外部的一个实体,可以是系统用户、与所建造的系统交互的其他系统或者是一些可以运行的进程。第一,在每一个系统中,几乎都存在着最常用的参与者一真实的人(用户);第二,需要建立联系的其他外部应用程序,即其他系统;第三,一些可运行的进程,如时一间;通过上面对该系统的功能分析和系统功能模块的设计,系统参与者主要有:系统管理员、客户、商户和支付系统。4.2.2识别用例 确定用例最常用的方法是从分析系统参与者开始,把每个系统参与者如何使用系统的行为都考虑进来。根据上一节系统的需求分析功能模块,可以确定系统参与者有系统管理员、客户、商户和支付系统。根据上一小节的功能模块分析,得出系统的顶层用例图,如图4.2 0 下面分别对三个用例细化,系统管理所涉及到的用例有:商城登录,商户信息管理,用户信自、管理,评论管理,商城日常维护和订单分析。涉及到的参与者是系统管理员,系统管理的用例图如4.3所示。 用户接口用例细化有:商城注册,商城登录,查看商品信息,修改个人资料,购物,下订单,支付,评论,订单查看。用户接口的用例图如图4.4所示。 其中“购物”用例细化的用例有:清空购物车,修改购物车商品,添加商品到购物车,查看购物车信息,删除购物车中的商品。细化后的用例图如图4.5 “订单查看”用例细化的用例有:修改订单,提交订单.,删除订单,查看历史订单,订单状态查询,取消订单。细化后用例图如图4.6所示。 商户操作的细化用例有:申请加盟商城,商城登录,商品信息维护,配送信息管理,订单处理,配送订单管理,派遣配送员,查看商品销售记录,库存管理,查看订单分析结果,设置商品销售捆绑包。商户操作用例细化图,如图4.7所示。 商品信息维护的细化的用例有:增加商品信息,删除商品信息,修改商品信息。细化后的用例图如图4.8所示。 订单处理的细化用例有:确认订单,接收发货,查询商品库存。如图4.9 支付系统用例有:支付,网上支付,货到支付。支付系统的用例图,如图4.10所示。 根据以上对系统参与者的用例图分析与建模,得出系统的完整的用例图,如图4.11所示。 4.3静态结构建模 静态结构模型是对有关系统实现内部和应用领域的概念进行建模,本文通过分析上述需求建模中的用例和问题域,抽取相关的类,并将这些类之间的关系表示出来,以及类的内部结构,最后完成类图,反应了系统的一种静态关系。(1)抽取系统中的类 系统中存在三种类,一种是系统与外界的交界处,包括各种窗体和接口(与报表、打印机和扫描仪等硬件的接口或者与其他系统的接口);另一种是负责协调其他类工作的控制类,是控制使用事件的顺序的类;第三种是保存放入永久存储体的数据信息类,即实体类。本文将以“下订单”举例说明分析类的整个流程。 下订单用例的主要功能是:客户登录商品信息查看页面,系统验证客户注册信息,系统打开下订单页面,填写订单并提交订单信息,根据以上描述,该用例涉及到的类如下: 边界类:商品信息查看页面,填写订单页面。 控制类:下订单。 实体类:客户信息类,商品详细信息类,订单信息类。 据以上方法分析系统其它用例并经过整理合并,得出网上商城的类如下: 1.边界类:用户注册界面,用户登录界面,商品详细信息界面,商品查看界面,下订单界面,评论界面,支付界面,个人资料修改界面,订单查看界面,商品信息维护界面,查看订单分析结果界面,派遣配送员界面,设置商品销售捆绑包界面,订单处理界面,配送订单管理界面,配送员信息管理界面,库存管理界面,查看商品销售记录界面,商户信息管理界面,用户信息管理界面,商城维护界面,审核界面,评论管理界面,收集数据界面,订单分析界面。 2.控制类:用户注册,用户登录,浏览商品,下订单,评论,支付,个人资料修改,订单查看,商品管理,配送员管理,查看订单分析结果,派遣配送员,设置商品销售捆绑包,订单处理,配送订单管理,库存管理,查看商品销售记录,用户管理,商户管理,商城维护审核,评论管理,收集数据,订单分析。 3.实体类:用户信息类,商品信息,订单信息,配送员信息类,购物车信息类,配送订单信息类,商户信息类,商品销售记录信息类,评论信息类。管理员和客户都属于系统的非商业用户,所以将它们统称为用户信息类。电子商务配送系统在Internet中使用,所以为了安全起见,在分析实体类中,将经常使用的类所涉及操作和基本信息分别设计一个类。例如,客户信息类,客户涉及到的信息设计到客户信息类中,而客户所涉及到的方法操作则归为客户信息操作类。这样体现了而向对象的封装性和安全性,能更好的满足系统运作要求。 (2)生成类图 通过上述类的分析,要生成类图还需要弄清楚类与类之间的关系,并且要确定类的属性和方法。上文分析了与“下订单”用例相关的类,下面接着讨论类的属性和方法,并生成相关类图。 边界类:商品详细信息界面(GoodsDetailslnterface)填写订单页面(OrdersInterface),主要是打开新的界面。 控制类:下订单C Order)。协作类之间的工作,起到“中介”的作用。 实体类:用户信息类(ClientInformations),商品信息类(GoodsInformations)订单信息类(OrderInformations),用户信息操作类(ClientOP),商品信息操作类(GoodsOP),订单信息操作类(OrderOP)。ClientInfornlations类的重要属性有:用户ID号,用户名,注册日期,登录密码,电子邮件;ClientOP类的主要操作有:系统注册,系统登录,查看商品,订购商品,支付;GoodsInformations类主要属性有:商品ID号,商品名称,商品描述,商品价格,商品库存,商品类别;GoodsOP类的主要操作有:获取商品ID号、商品名称和价格;OrderInformations类主要属性有:订单ID号,商品ID号,商户ID号,用户ID号,客户姓名,订购日期,订购者地址,商品数量,商品价格;OrderOP类涉及的操作有:搜索订单,查看订单,处理订单,添加订单,删除订单。 根据以上分析,下订单的类图如图4.12。实线箭头表示的是关联关系,虚线箭头表示的是依赖关系。 由于电子商务配送系统涉及到类图比较庞大,而分析类图的过程可以通过上述方法一一得出用例的类图,本文只对系统中的实体类图进行建模。运用上文方法分析实体类所涉及到的信息类,实体类图4.13a 4.4动态结构建模 用例图和类图描述了系统的静态结构,接下来建立系统的动态行为模型,动态行为模型主要是建立系统的顺序图和活动图,川页序图主要来表示对一象之间的关系和对象之间传送消息的时间顺序。活动图则是描述活动的顺序的一种流程图,是从一个活动到另一个活动的控制流。 (1)顺序图 该商城系统涉及到的顺序图有很多,比如用户登录顺序图,下订单顺序图,删除订单顺序图,增加订单顺序图,订单处理顺序图。本文将通过“系统登录”顺序图和“下订单”顺序图建模为例来说明系统动态结构建模。 “商城登录”用例涉及到参与者是用户,包括管理员和其他用户,这里以客户登录系统为例,涉及到的对象有“登录界面”,“服务器”和“数据中心”,根据ROSE中的顺序图的建模方法,本文得到“商城登录”用例的顺序图如图4.14。 根据上文分析的“下订单”用例类图,“下订单”用例的顺序图参与者是客户,所涉及到的对象有“登录界面(login)”“商品信息查看界面(GoodsDetailsInterface)"“下订单界面(OrdersInterface“ “订单信息操作(OrderOP)”,用ROSE建模得出的“下订单”顺序图如图4.15所示。 (2)活动图 活动图表示一个事件正在运行的状态,事件是系统中某个对象的一个操作,主要表现一个活动到另一个活动控制流,是系统内部的驱动流程。一个系统涉及到的活动图很多,本文提到的系统活动图有:客户下订单的活动图,商城用户登录活动图,派遣配送员的活动图等,本文将以“下订单”活动图为例。根据活动图的组成元素,“下订单”包括很多活动状态,比如:查看商品,提交订单,订单处理等一系列状态,“下订单”就是从一个活动状态转换为另一个活动状态,直至完成该动作,活动图中涉及两个对象,客户和商户,根据以上描述,在ROSE中建模的“下订单”活动图如图4.16所示。 4.5数据库建模 在以上小节本文成功建立了江西师范大学网上商城的业务流程图、需求模型、静态模型和动态模型,接下来就要介绍如何通过已建立L1ML静态结构模型中的类图转换为数据库模型。在类图转换为数据库模型,控制类和边界类不需要转换为系统数据库模型,这些类是为了实现用例的流程而产生的类,所以只有那些持久存储信息的实体类需要转换为数据库模型。转换过程由于篇幅问题不再一一叙述,如图4.17系统实体类图转换的数据库模型图。 系统的数据库模型图建立之后,将模型图映射为数据表,此处数据库模型中的属性映射为数据表的列,系统的数据结构表如下表所示。4.6物理建模 完成系统的逻辑设计后,下一步要定义设计的物理实现,为了将逻辑设计图转化成实际的事物,面向对一象系统的物理建模有两种图:组件图和配置图。组件图是系统实现视图的图形表示,描述了系统的各种组件和组件之间的依赖关系。配置图是系统执行过程中资源元素的配置情况以及软件到这些资源元素的映射,描述了系统中硬件和软件的物理结构。(1)组件图 组件是表示将类、接口等打包而形成的物理模块。组件图是用来描述代码的物理模块之间的关系,显示了代码的结构。组件图能够帮助客户和系统开发人员理解最终的系统结构。根据上文对江西师范大学“网上商城”的逻辑视图的分析,在ROSE中得到系统的组件图,图4.18所示,组件图中只有用虚线表示的依赖关系。 2.配置图 配置图用来表示系统的运行结构或者系统软件和硬件组织之间的关系,由节点和节点之间的联系构成,配置建模就是将软件系统在互联网上的运作方式模式化,南昌大学“网上商城”是一个基于其数据库和校园网的应用系统,根据第三章中电子商务系统多层B/S体系结构,“网上商城”的系统配置图如图4.19。 4.7小结 电子商务系统是一个结构复杂、规模庞大的系统,根据本文提出的基于UML的系统建模过程,本章以江西师范大学“网上商城”为实例,对其进行了系统的需求分析,建立了系统的需求模型、系统的静态结构模型、系统的动态结构模型、系统的数据库模型、系统的物理模型。确立了系统的功能模块,分别建立了业务流程图、用例图、类图、顺序图和活动图、数据库模型和数据表、组件图和配置图。 第5章基于数据挖掘的商品订单分析 电子商务的迅速发展使其规模越来越复杂,客户获得有效商品信息的难度也在增加,因此如何增加商品信息的针对性,提高网站的可用性成为了现今电子商务研究的热点。国内对该热点的研究很少,但是也有了一些研究成果,比如王兆红((2005)利用关联规则提出了商品的最佳打包组合:金伟健,金文进(2010)从理论上提出了基于关联规则的商品推荐模型;章杰鑫,张烈平(2009)提出了时序关联规则挖掘算法,并通过模拟超市数据预测了顾客在时间单位内的商品关联规则,使企业更好的了解客户需求。本文应用数据挖掘的关联规则对商城的“订单分析”功能进行了分析和设计。首先对商城历史订单进行数据预处理,然后应用关联规则挖掘客户购买商品的关联关系,这样商户可以掌握客户的购物兴趣,设置相应的捆绑或交叉销售,使商户在降低成本的同时为广大师生提供更好的生活服务,增加现有客户的满意度。5.1数据挖掘技术 5.1.1数据挖掘的概念 1997年SAS研究所将数据挖掘定义为将大量相关数据进行探索,最后建立相关模型的方法;1999年Bhavani将数据挖掘定义为一个过程,即利用数学,统计和模式识别技术,在大量的数据中发现新的趋势、新关系和模式的过程;最后一种是最具有影响力且至今被广泛采用的Usama M.Fayyad等给出的,即数据挖掘(Data Mining)是从大量的、有噪声、模糊的、不完全的、随机的数据中挖掘出隐含的、未知的、用户可能感兴趣的但又有潜在价值的知识和信息的过程。5.1.2数据挖掘的功能一可以挖掘什么类型的模式 数据挖掘的目标从大量的数据中发现隐含的、有意义的知识并对现有数据记录进行分析,预测未来趋势和行为,做出基于知识的决策,主要有以下功能。 1.描述功能:将数据库中的对象通过数据分类、聚类分析、数据汇总与归纳、概括等过程最终获得数据简明、准确的描述。 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 面向对象分析与设计试题B卷 一、单项选择题(在每小题的四个备选答案中,选出一个正确答案,并将正确答案的序号填在题干的括号内。每小题 1 分,共 20 分)3.下列不属于面向对象技术的基本特征的是()。 A.封装性 B.模块性 C.多态性 D.继承性 4.面向对象程序设计将描述事物的数据与()封装在一起,作为一个相互依存、不可分割的整体来处理。 A.信息 B.数据隐藏 C.对数据的操作 D.数据抽象 5.关于面向对象方法的优点,下列不正确的叙述是()。 A.与人类习惯的思维方法比较一致 B.可重用性好 C.以数据操作为中心 D.可维护性好 8.下列不属于类的成员函数的是()。 A.构造函数 B.析构函数 C.友元函数 D.拷贝构造函数 9.继承机制的作用是()。 A.信息隐藏 B.数据封装 C.派生新类 D.数据抽象 14.()是从用户使用系统的角度描述系统功能的图形表达方法。 A.类图 B.对象图 C.序列图 D.用例图 15.()是表达系统类及其相互联系的图示,它是面向对象设计的核心,建立状态图、协作图和其他图的基础。 A.对象图 B.组件图 C.类图 D.配置图 16.()描述了一组交互对象间的动态协作关系,它表示完成某项行为的对象和这些对象之间传递消息的时间顺序。 A.对象图 B.协作图 C.状态图 D.序列图 17.()就是用于表示构成分布式系统的节点集和节点之间的联系的图示,它可以表示系统中软件和硬件的物理架构。 A.组件图 B.协作图 C.状态图 D.配置图 18.在用UML进行数据库的分析与设计过程中,()就是进行数据库的需求分析,使用用例图、类图、顺序图、活动图等建立业务模型。 A.逻辑数据模型设计 B 业务Use Case模型设计 C.物理数据模型设计 D.物理实现设计 19.使用UML进行关系数据库的()时,需要设计出表达持久数据的实体类及其联系,并把它们映射成为关系数据库表(Table)、视图(View)等。 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” A.业务Use Case模型设计 B.逻辑数据模型设计 C.物理数据模型设计 C.物理实现设计 20.UML的动态建模表示包含()种图。 A.9 B.5 C.4 D.2 二、填空题(每空 1 分,共 20 分)1.面向对象开发方法一改过去传统的以_______________为基础的______________的结构化分析与设计方法,它模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列_______的集合,其______________又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的______,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与____________在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的________、________、_________等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服____________。因此,它已成为成熟的广为采用的软件开发方法。 2.对象是客观实体的抽象表示,是由__________________________和________________________两部分组成。而______是对具有相同属性和行为的一组对象的抽象描述。因此,它可作为一种用户自定义类型和创建对象的样板,而按照这种样板所创建的一个个具体对象就是类的___________。通过________关系又可形成一种类层次结构。 3.UML中用于描述系统的静态建模的视图称为静态视图,包括________、_________、_________、__________和__________。 四.简答题(每空4分,共 20 分)1.简述面向对象软件开发方法的优点。2.简述面向对象技术的三大机制。3.简述OOA模型的层次结构。 4.简述OOD模型的总体结构,并画图表示。 5.应用UML进行系统分析和设计所需建立视图有那几种? 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 五.试用UML对教学管理系统及相关的数据库系统进行分析和设计。学生选课系统一般包括(1)选课管理功能;(2)成绩管理功能。试完成下列工作:(1)建立系统静态结构模型—画出系统用例图和类图;(10分)(2)建立系统动态结构模型—画出系统序列图和协作图;(10分)(3)建立关系数据库逻辑模型。(10分) 面向对象分析与设计试题参考答案 一、单项选择题(每小题 1 分,共 20 分) 1.D 2.C 3.B 4.C 5.C 6.D 7.D 8.C 9.C 10.D 11.B 12.B 13.B 14.D 15.C 16.D 17.D 18.B 19.B 20.C 二、填空题(每空 1 分,共 20 分) 1.功能分析, 面向过程, 对象,面向对象的设计, 概念,解空间,封装, 继承, 多态, 软件危机 2.描述对象属性的数据,四.简答题 1.简述面向对象技术发展的动因。 答:为了超越程序复杂性障碍,克服软件危机,人们提出了面向对象软件开发方法。面向对象开发方法一改过去传统的以功能分析为基础的面向过程的结构化分析与设计方法,面向对象开发方法模拟人们理解和处理客观世界的方式来分析问题,把系统视为一系列对象的集合,其面向对象的设计又将分析的结果映射到某种面向对象实现工具的结构上,使映射过程有着比较直接的对应关系,使分析者、设计者和编程者都可使用相同的概念,从而使面向对象的软件开发能比较自然地模拟客观世界的活动,使问题描述空间与解空间在结构上尽可能一致。因此,采用面向对象方法可以更有效地开发大型软件系统。面向对象方法的封装、继承、多态等机制不仅支持软件复用,而且使软件维护工作可靠有效,可实现软件系统的柔性制造,更好地克服软件危机。因此,它已成为成熟的广为采用的软件开发方法。请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 2.简述面向对象技术的三大机制。答:(1)封装性(encapsulation) 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” , 类,实例,继承 3.用例图、类图、对象图、包图、构件图、配置图 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 所谓封装就是把对象的属性和行为结合成一个独立的单位,使外界不能直接访问或修改这些数据和代码,外界只能通过对象提供的接口函数来改变或获取对象的属性数据,这就实现了消息隐蔽。(2)继承性 如果在一个已定义的类上,增加一些特殊属性或操作,可以形成一个新的类,这个类不仅继承了前一个类的全部特征,而且具有新的特性,因此可看作前一个类的特例,是对前一个类的继承。前一个类称为父类,新产生的类叫做子类。通过继承关系可形成一种类层次结构,叫做继承结构。(3)多态性 在类层次结构的不同类中,可用相同的函数名实现功能不同的函数。3.简述OOA模型的层次结构。 答:OOA模型采用五层次结构,它们分别是:(1)对象-类层 划分待开发系统及其环境信息的基本构造单位,标出反映问题域的对象和类,并用符号进行规范的描述,用信息提供者熟悉的术语为对象和类命名。(2)属性层 定义对象和某些结构中的数据单元,继承结构中所有类的公共属性可放于通用类中。标识对象类必需的属性并放在合适的继承层次上,属性的特殊限制和实例连接关系也应标识出来。(3)服务层 表示对象的服务或行为,即是要定义类上的操作。(4)结构层 标识现实世界中对象之间的关系。当一个对象是另一个对象的一部分时,用“整体-部分”关系表示;当一个类属于另一个类时,用类之间继承关系表示。(5)主题层 可将相关类或对象划分为一个主题。4.简述OOD模型的总体结构,并画图表示。OOD体系结构的各个部分内容:(1)问题论域部分,在OOA模型的基础上,细化分析结果,设计一组构成底层应用模型的类和对象。 (2)人机交互部分:设计用户界面模型,该用户界面模型中的类和对象提供实现人机交互操作的接口函数。用户界面设计包括 菜单设计、窗口设计、输入/输出界面设计等等。 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” (3)任务管理部分:建立一些类,用以负责处理操作系统级的并发问题、中断、调度以及其它与特定平台有关的问题。 (4)数据管理部分:提供数据管理系统中存储和检索对象的基本结构,包括对永久性数据的访问和管理。数据管理设计包括: — 数据存放设计:数据存放设计选择数据存放的方式(文件存放、关系数据库表格存放或面向对象的数据库存放)。 — 设计相应的操作。为每个需要存储的对象和类增加用于存储管理的属性和操作,在类和对象的定义中加以描述。 class & object layer(类及对象层)attribute layer(类及对象层)service layer(服务层)问题论域部分人机交互部分任务管理部分数据管理部分类边界实例边界实例连接属性消息服务struct layer(结构层)subject layer(主题层)主题图1.5 OOD模型的总体结构5.(1)系统用例图如下 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 查询课程信息老师老师查询学生成绩选课注册学生学生查询课程成绩管理老师信息学生成绩管理管理学生信息管理员管理课程信息管理开设课程管理员成绩统计(b)成绩管理的用例图(a)选课管理的用例图 对象类图如下: 教师编号姓名地址电话1..*0..*课程课程名描述学时加入课程()1..*0..*学生编号姓名地址电话开设课程课程名授课日期授课时间地点指定老师()学生满否()选修课程学生名课程名学期增加记录()选课统计()(a)选课对象类图开设课程课程名授课日期授课时间地点指定老师()学生满否()学生成绩登记学生名学期课程名成绩加入成绩()打印()(b)成绩管理对象类图成绩统计学期课程名成绩按课程统计()按学生统计()打印() 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品” (2)把需要持久存储的数据实体类及其联系,映射成为如下关系数据库表: 学生(学生号、姓名、出生日期、性别、籍贯、地址、电话、入学时间、专业、班级备注)教师(教师号、姓名、出生日期、性别、籍贯、地址、电话、职称、专长、备注)课程(课程号、课程名、描述、学分、学时、性质、备注) 开设课程(课程号、学期、授课日期、授课时间、地点、选修人数、备注) 请大家帮忙把这句话设为QQ签名,“淘热门 http://www.xiexiebang.com , 精选淘宝热门商品”第二篇:使用java实现面向对象编程总结
第三篇:学习心得《面向对象》
第四篇:面向对象的设计与分析(网上商城的建模设计)
第五篇:面向对象系统分析与设计试卷与答案1