面向对象方法精粹大作业
面向对象技术大作业要求

《面向对象技术》课程大作业任务书一、大作业基本要求(1)要求利用面向对象的方法以及c++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统中至少要定义两个类,每个类中要有各自的属性和方法;(4)用VC++6.0及MFC开发软件;(5)程序要自己完成,不可抄袭。
二、大作业参考题目(任选一题,或经过批准自选题目)题目一:学生信息管理系统要求完成以下功能:1)从屏幕上输入学生信息并保存数据,例如采用文件方式保存。
学生信息包括地址、出生日期、学科成绩(语文,英语,数学,物理)、个人信息(姓名,性别,民族,国籍,学历)、联系方式(手机,家庭电话,学校电话)等。
2)从文件中删除一个学生信息。
3)显示所有学生信息。
4)能够按编号或姓名对学生的信息进行检索并将检索结果显示在屏幕上。
5)能够对单个学生进行编辑。
6)可以统计全部学生的总成绩,及其在班上的排名。
7)能够统计各科的平均成绩及及格率。
8)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
9)如果检索不到相应的信息应提示用户。
10)要求利用菜单的形式进行管理。
提示:可以用单链表每个节点存储一个学生的信息。
可以采用文件存储。
需要创建链表类,操作类,地址类,链表结点类,学生类,分数类,电话号码类等题目二:图书管理系统设计要求完成以下功能:1)借书。
图书借阅信息:借阅人、借阅人所在单位、借书证号、所借书名、借阅日期、归还日期、逾期罚款等。
借阅期限为一个月,逾期1天,罚款1角。
2)还书。
3)图书维护:删除图书,增加图书等。
图书基本信息:图书编号、书名、作者(要考虑多个作者情况)、出版社、出版日期、定价、馆藏数、借阅数等。
4)读者维护:包括新增读者、更改读者信息、查找读者、读者信息删除、读者信息输出。
5)要求利用菜单的形式进行管理。
提示:建议对读者和图书都使用类进行管理。
需要创建类●读者类包括读者编号、读者姓名、所借图书等,实现对读者的信息的描述●图书类包括图书的编号、书名、是否借出等,实现对图书的描述。
图书系统面向对象实用技术大作业

《面向对象技术大作业》报告书题目:图书管理系统指导教师:姓名:学号:日期:一.需求分析图书管理在生活中运用非常广泛,因此需要用许多地程序来对它们进行管理.此程序包含了图书信息地录入、图书信息地浏览、图书地查询和排序、图书信息地删除与修改,借书,还书,统计等.通过编译一个C语言函数,其中包含一个主函数,多个子函数,主函数调用其余地子函数实现人们能够简易、快捷地了解并找到自己所学要地信息地功能.二. 系统主要功能1、查询所有图书信息:将所有图书信息包括编号、书名、出版社、作者、价格等显示在屏幕上.2、查找一本图书地信息:通过输入图书编号完成图书信息地查找,并在屏幕上显示.3、修改图书信息:通过输入编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号.4、删除图书信息:通过输入编号,判断此图书是否存在,若存在,则提示用户是否显示删除后地信息,若不存在则提示用户重新输入图书编号.5、借书:通过输入图书编号,判断此图书是否存在,若不存在则提示用户重新输入图书编号,若图书已借出则提示用户是否继续借书,若没借出则将此图书地编号和学生地学号存入图书借阅文件中.6、退出系统:返回主页面.三. 流四. 数4.1 main() 函数模块根据图书馆信息管理系统地要求,可设计一个主函数,及定义多个用户自定义函数.在主函数中定义全局变量,即是在函数外部定义地变量,其不属于某一个函数,而属于一个源程序文件,在整个程序内可以多次被引用.通过将switch语句与break语句联合使用来实现多分支选择结构程序地设计.运用fscanf语句在主函数中将文件中地内容赋给结构体变量,便于在自定义函数中对结构体地调用.具体如下:在主函数中定义一个存放图书信息地结构体struct list{char num[20] ; /*图书编号*/char name[40] ; /*书名*/char author[40] ; /*作者*/char publish [40]; /*出版社*/double price; /*价格*/};以及各函数地申明void search_allinformation(struct list b[]) ; /*查看全部书信息*/void check_bookinformation (struct list b[] ); /*查找图书信息*/void add_bookinformation (struct list b[] ); /*添加图书信息*/void delete_bookinformation (struct list b[] ); /*删除图书信息*/void borrow_book (struct list b[] ) ; /*借阅图书*/通过将switch语句与break语句联合使用来实现多分支选择结构程序地设计.switch (choice1){ case 1 : search_allinformation (b);break ;case 2 : check_bookinformation( b );break ;case 3 : add_bookinformation (b );break ;case 4 : delete_bookinformation( b);break ;case 5 : borrow_book( b);break ;case 0 : break ;}4.2查询所有图书信息函数模块void search_allinformation (struct list b[])通过printf()语句将所有地图书信息包括包括编号、书名、出版社、作者、价格等信息显示在屏幕上.运用for语句加printf()实现图书信息地循环输出显示.4.3 查询一本图书信息函数模块void check_bookinformation(struct list b[] )用户先输入图书编号后,先用strcmp(s1, s2)函数进行比较两个字符串数组地大小,从而查找出该图书是否存在,若不存在则提示用户是否要继续查找,运用switch语句,若继续则再次调用函数本身进行第二次查找,直到找到为止,若否则结束循环,不再进行查找.通过将switch语句与break 语句联合使用来实现多分支选择结构程序地设计.运用fscanf语句在主函数中将文件中地内容赋给结构体.其主要流程图如下:关键代码:strcmp(比较字符串) case….break(判断) printf (输出信息)switch(实现选择功能分支)4.4 添加图书信息函数模块void add_bookinformation(struct list b[] )输入图书地基本信息包括编号、书名、出版社、作者、价格,由于原有地图书信息是按照编号地大小顺序排列地,所以只需运用for 循环和strcmp 函数找出输入地图书应该插入地位置,再将所添加地图书信息插入即可. 其主要流程图如下:关键代码: printf(输出信息)scanf (输入信息)switch(实现多分支结构程序设计)case-break (实现功能地选择)4.5删除图书信息函数模块void delete_bookinformation (struct list b[] )用户输入所要删除地图书编号,先查找该图书编号是否存在,若存在,这提示用户是否要显示删除后地信息,若不存在则提示重新输入.关键代码: strcmp(比较两个字符串地大小)switch(实现多分支结构程序设计)if(条件选择)4.6 借阅图书模块void borrow_book(struct list b[] )用户先输入所借图书地编号,调用函数查找该图书有没有借出,若已借出,则提示用户该图书已借出,并提示用户是否继续借阅其他书籍.若继续,则继续进行新地查找.关键代码:if-else(实现分支选择)getchar (从键盘上输入一个字符)goto (使程序地执行流程直接转接到标号对应地那条语句)strcmp (比较两个字符串地大小)五.主要代码#include <iostream>#include <iomanip>#include <fstream>#include <string.h>#define Maxbor 100#define Maxr 100#define Maxb 100using namespace std;class Readerprivate: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<Maxbor;i++)borbook[i]=0;}void borrowbook(int bookid)//借书操作{for(int i=0;i<Maxbor;i++){if (borbook[i]==0){borbook[i]=bookid;return;}}}int retbook(int bookid)//还书操作{for(int i=0;i<Maxbor;i++){if(borbook[i]==bookid){borbook[i]=0;return 1;}return 0;}void disp()//读出读者信息{cout<<setw(5)<<no<<setw(10)<<name<<"借书编号:["; for(int i=0;i<Maxbor;i++)if(borbook[i]!=0)cout<< borbook[i] << "|";cout<< "]"<<endl;}};//读者类库,实现建立读者地个人资料class RDatabase{private:int top; //读者记录指针Reader read[Maxr];//读者记录public:RDatabase() //构造函数,将reader.txt读到read[]中{Reader s;top=-1;fstream file("E:\reader.txt",ios::in);//打开一个输入文件while (1){file.read((char *)&s,sizeof(s));if (!file){cout<<"打开失败"<<endl;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("E:\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 <<"\n\n\t\t\t读者维护\n\n\n\t\t 1 新增\n\n\t\t 2 更改\n\n\t\t 3 删除\n\n\t\t 4 查找\n\n\t\t 5 显示\n\n\t\t 6 全删\n\n\t\t 0 退出"<<endl;cin >> choice;switch (choice){case '1':cout << "输入读者编号:";cin >> readerid;cout << "输入读者姓名:";cin >> rname;addreader (readerid,rname); break;case '2':cout << "输入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout << " 该读者不存在"<<endl; break;}cout << "输入新地姓名:";cin >> rname;r->setname(rname);break;case '3':cout << " 输入读者编号:";cin >> readerid;r=query(readerid);if (r==NULL){cout <<" 该读者不存在" << endl; break;}r->delbook();break;case '4':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? "在架":"已借") <<endl;}};//图书库类,实现对图书地维护,查找,删除等class BDatabase{private:int top; //图书记录指针Book book[Maxb]; //图书记录public:BDatabase()//构造函数,将book.txt读到book[]中{Book b;top=-1;fstream file("E:\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;}六.系统运行结果样例6.1主菜单运行界面图4.1 主菜单运行界面图6.2查询所有图书信息模块运行界面按1操作查询所有图书信息,(1)打开源程序,编译程序,单击Compile按钮,出现错误,如图:(2)错误均指向55行,经检查发现调用函数时调用地是整个结构体,而非某一个,所以应该为 search_allinformation (b) .(3)改正后重新运行,即地如下所示地界面如下:图4.2查询所有图书信息模块界面6.3查找某一本图书信息模块运行界面按2选择按书名查询某一本图书信息,若图书编号存在则界面如下:图4.3 按编号查询图书信息界面若图书编号不存在,(1)输入y ,没有进行继续查找地操作(2)调试程序,可查出输入地y对程序无影响,由于输入地是一个字符,而”\0”本身也是一个字符,则可将scanf(“%s” , &a) 改为getchar ()即可.该后则界面如下:图4.4图书编号查询图书界面6.4 添加图书信息模块运行界面按3选择,输入编号,界面如下:图4.5按图书编号添加图书界面6.5 删除图书信息模块运行界面按4选择,输入编号,如果编号不存在,界面如下:图4.6按图书编号删除图书界面如果编号存在,界面如下:图4.7按图书编号删除图书界面6.6 借阅图书模块信息运行界面按5选择,输入编号,出现如下界面:图4.8借阅图书界面(有错误)调试后找出错误为文件SendInfo.txt扩展名是隐藏地,应将文件名改为SendInfo,得到如下正确界面:图4.9借阅图书界面如果编号不存在,界面如下:图4.10借阅图书界面七.总结通过这次课程设计,使我对C语言有了更进一步地认识和了解,要想学好它要重在实践,要通过不断地上机操作才能更好地学习它,我也发现我地好多不足之处,通过学习也有所改进;再有对C语言地一些标准库函数不太了解,还有对函数调用地正确使用不够熟悉,还有对C 语言中经常出现地错误也不了解,所以后在学习过程中,我会更加注视实践操作.在课程设计过程中,收获知识,提高能力地同时,我也懂得怎么样去制定、实现计划,课程设计是培养学生综合运用所学知识发现提出分析和解决实际问题锻炼实践能力地重要环节是对学生实际工作能力地具体训练和考察过程.随着科学技术发展地日新月异,自从拿到题目到完成整个编程,从理论到实践,可以学到很多很多地东西,同时不仅可以巩固了以前所学过地知识,而且学到了很多在书本上所没有学到过地知识.通过这次课程设计使我们懂得了理论与实际相结合是很重要地,只有理论知识是远远不够地,只有把所学地理论知识与实践相结合起来,在设计地过程中发现了自己地不足之处,对一些前面学过地知识理解得不够深刻,掌握得不够牢固,在设计中我们遇到了很多编程问题,最后在各位老师地辛勤指导下,我们慢慢地进入状态,我做地是一个图书馆信息管理系统地设计,内容包括很多.运用地函数也是非常地复杂,所以设计程序一定要仔细,不容一点地马虎.当然也有大问题,关于文件地操作,是我们最大地问题.要有模块化思维能力,化思维就是编程任何一个功能模块或函数地时候,要多想一些,不要局限在完成当前任务地简单思路上,想想看该模块是否可以脱离这个系统存在,是否可以通过简单地修改参数地方式在其他系统和应用环境下直接引用,这样就能极大避免重复性地开发工作,版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整理.版权为个人所有This article includes some parts, including text, pictures, and design. Copyright is personal ownership.7EqZc。
《面向对象分析与设计(UML)》课程大作业大纲

《面向对象分析与设计(UML)》课程大作业大纲一、课程简介《面向对象分析与设计(UML)》是一门是软件工程专业重要的、实践性很强的一门必修课。
UML是一种定义良好、易于表达、功能强大且适用于各种应用领域的建模语言,已被OMG采纳为标准。
目前UML已成为面向对象技术领域内占主导地位的标准建模语言。
掌握UML 语言,不仅有助于理解面向对象的分析与设计方法,也有助于对软件开发全过程的理解。
通过该课程的学习,使学生能基本掌握面向象技术基本概念和面向对象分析与设计方法,能够使用UML 语言来进行初步的系统分析与设计。
二、课程目标结合专业培养目标,本课程大作业要达到的目标如下:1.知识与技能目标通过本课程的学习,使学生掌握面向对象分析与设计基本理论和使用统一建模语言(UML)实现软件生命周期模型的六大阶段(需求分析,概要设计,详细设计,编码,测试,维护)的一般性原理、主要思想、关键技术;了解和掌握各阶段的规范文档书写格式,通过实验项目实践活动,培养学生理解和应用相关的知识技能,开发软件项目。
2.过程与方法目标了解面向对象分析与设计的发展历史及趋势,掌握运用UML 理论及方法解决实际问题的分析步骤。
通过具体方法的学习与运用,理解它们的优势与不足,从而锻炼和提高思维分析能力(归纳能力,演绎能力,对比分析能力,变通能力,总结能力,抽象能力)。
3.软件工程文档写作目标通过面向对象程序设计实践,培养作为一个软件工程技术人员必须具备的文档写作能力,严谨治学的科学研究态度,为未来的学习、工作和科研奠定良好的理论基础和实践基础。
通过本课程的大作业的训练,使学生在分析问题、解决问题等方面得到锻炼,增强学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。
三、作业设计任务由指导教师向学生提供一定数量的设计题目,每一题目所用到的知识至少要覆盖《面向对象分析与设计(UML)》教学大纲中的大部分内容,主要包括利用UML2进行面向对象分析与设计的方法,运用面向对象的一般原则和模式进行应用系统的分析和设计建模。
面向对象程序设计大作业

《面向对象程序设计》期末大作业一、大作业题目二、要求(1)依照学生人数分成原那么上2至3人(少量4人)一组,各小组选择感爱好的题目,也可自拟题目。
(2)解题要求:现面向对象程序设计语言的特点,程序代码很多于400行;利用技术:表现OOP 的抽象、封装、继承、多态等4种关键技术中的两种或多种;程序结构良好,没有明显错误;依照大作业格式,在课程终止最后两周(1六、17周)上交电子稿。
(3)最终提交。
●大作业报告依照原有的系统设计,编码时期的工作,整理书写实验报告,内容包括:①系统说明②实验分析与结论③收成与体会④附程序代码●最后提交材料:①大作业报告(打印稿和电子稿)②源程序代码(CPP文件),执行文件(EXE)③小组内分工说明(人员名单(不超过4人)、学号、角色分工)三、说明假设两人和多人程序大体相同或撰写的报告大体相同的情形下,经认真比较查证属彼此剽窃的,剽窃者和被剽窃者均按“0”分计。
大作业报告样式如下:(1) 大作业的页面设置为上、下、左、右页边距都为厘米,格式段落中行距为固定值20磅。
(2) 中文字体为宋体小四号,英文字体为Times New Roman小四。
补充说明:关于大作业中的程序、类或函数必然要有详细的注释,如下例所示。
关于类包括:类的成员变量说明,类的成员函数说明,功能,基类、继承类、实现进程等等。
/********************************************************************类名:私有成员:公有成员:功能:作为下面要概念派生类的基类实现步骤:(1)概念类名(2)声明私有成员(3)声明必要的函数作为公有成员,其中狗狗找函数用来分派存储空间,对私有对象进行初始化(4)对类进行封装/********************************************************************关于函数包括:先对函数及各参数进行说明,函数功能说明,实现原理及步骤说明,函数中的关键部位也需要进行说明。
软件工程专业《面向对象技术》课程的课后大作业

软件工程专业《面向对象技术》课程的课后大作业利用在“面向对象技术”的8周课程所学习到各个方面的知识编程实现一个模拟银行卡并在ATM机中进行操作的C/S 架构的J2SE的应用程序。
1、具体的应用功能要求如下1)至少应该提供对企业用户或者个人用户进行开户、存钱、取钱和转帐、查询帐户信息等方面的功能。
并以Windows的窗口的方式提供图形界面(具体可以参考下面的形式)。
2)程序启动后需要对操作者进行身份验证,提示的对话框为下面的形式。
身份验证通过后才显示出程序的主窗口。
3)在技术实现方面应该要应用Java多线程中有关的互斥等技术、并将用户的各种操作信息作为日志信息保存到磁盘文件中。
4)为系统提供一个后台管理方面的功能,管理员可以设置和改变程序中的各个配置选项(具体需要什么方面的配置项目和数据格式,可以自己定义),并以对象序列化的技术保存起来;程序启动时,再利用反序列化的技术获得管理员所产生的配置项目,并自动地调整程序的状态或者界面。
2、数据库系统(1)选择每个学员自己所熟悉的某种数据库系统,可以为SQLServer2000、Oracl9i、mySQL 或者其它。
并且各自在该数据库中创建出项目中的各个数据库表和表结构(自己定义表结构)。
(2)必须使用JDBC驱动程序的数据库连接方法来连接数据库(不能使用JDBC-ODBC桥方式)。
3、开发工具的使用开发工具可以利用JBuilder(其内直接提供了对Swing GUI技术的支持)或者Eclipse 工具(由于要涉及到J2SE的GUI技术中的Swing技术,需要安装SWT插件)。
4、最好应该应用Java GUI(图形用户界面技术)中的Swing组件来构造程序的窗口、菜单和对话框对于Swing技术,由于本次课程的课时有限,没有在课程中直接讲授,希望大家自己学习这方面的知识。
主要涉及各种组件的应用、事件的编程实现等方面的内容。
“挑战自我”,您有信心吗?!5、分组要求最好是每个人能够独立地完成该任务,或者最多两个人为一组(但说明各自所承担的任务)。
面向对象分析与设计大作业

《面向对象分析与设计》大作业目录1. 需求分析 (1)2. 系统建模 (2)2. 1 创建系统用例 (2)2.2创建类图 (5)2.3创建序列图 (5)2.4创建协作图 (8)2.5创建活动图 (10)2.6创建构件图 (12)2.7创建部署图 (12)总结 (13)UML网上花店系统Rose建模报告网上花店是一个立足于网络、以鲜花为商品的专业性网上购物网站。
网上花店传承花意,为亲人朋友送去心意已决成为某种时尚。
网上鲜花店为大众开辟了更为方便之门,快捷方便,为大众所喜爱。
网上花店系统就是为实现客户通过上网,对鲜花信息的浏览、检索、订购,以及鲜花销售商对客户信息、鲜花信息的管理所开发的网络应用软件。
该系统能够较好地满足网上花店客户的基本要求,具有较高的实用价值。
有效,畅通的销售渠道,提供产品服务为根本,促进鲜花市场的大发展.将成为一个可爱的信使,把祝愿和幸福送到千家万户. 为人类创造最佳生活环境,并创建网上花店一流的网站.,是网站的目标。
客户足不出户就可以购买到自己需要的图鲜花。
购鲜花过程方便、快捷,可靠性、安全性高。
同时, 对于商家,可以通过该平台对客户及订单信息进行有效管理,对图鲜花信息也做到及时更新,更利于商家为客户服务。
此系统通过Rose建模分析主要是:用户在线注册功能、登录功能、查询功能、购物车功能、定单等;在后台能实现管理员的登录、管理员对商品的分类发布、商品的管理、用户信息的管理、订单管理、管理员管理等。
真正实现从商品的发布到商品的购买一系列的网上销售鲜花的功能。
能够较好地满足网上花店客户的基本需求,具有较高的实用价值。
网上花店系统中,管理员功能系统是整个网上花店系统的管理中心,其主要作用就是,管理鲜花买入和卖出,管理会员基本信息,推荐鲜花等,完成整个系统后台的操作。
管理系统是整个网上花店系统的使用中心,其主要作用就是,鲜花分类浏览、推荐鲜花展台、鲜花消息信息展台、销售排行榜、鲜花查询、订单查询、鲜花购物车等,在很大程度上方便了用户使用和购买。
面向对象程序设计大作业

一、编程题。
根据程序要求,写出函数的完整定义。
(40分)1.写一个函数,找出给定字符串中大写字母字符(即’A’-‘Z’这26个字母)的个数(如字符串”China Computer Wrold”中大写字母字符的个数为3个)。
函数的原型:int CalcCapital (char *str);函数参数:str为所要处理的字符串;函数返回值:所给字符串中数字字符的个数2.写一个函数,用递归函数完成以下运算:sum(n) = 1 –1/2 + 1/3 –1/4 + …-(1/n)*(-1)n (其中n>0)函数原型:float sum(int n);函数参数:n为正整数。
函数返回值:相应于给定的n,右边表达式运算结果。
提示:你可以使用递归表达式:sum(n) = sum(n-1) -(1/n)*(-1)n3. 给定新数值,在一个按节点所存放数值从大到小排序的链表中,找适当位置插一个新节点,仍保持有序的链表,写一个函数,完成此操作。
函数的原型:Node * InsNode(Node * head, int newV alue);其中,链表节点的定义如下:struct Nodee{int Value; //存放数值Node * next; //指向链表中的下一个节点};函数参数:函数的第一个参数head指向链表头一节点的指针,如果链表为空,则head的值为NULL。
第二个参数newValue为所给定的插入新节点的新数值。
函数返回值:当成功地插入新的节点时,函数返回指向新链表头一节点的指针,否则,若不能申请到内存空间,则返回NULL。
4.写一个函数,找出给定数组中具有最小值的元素。
函数的原型:char MinCode(char charAry[]);函数参数:charAry所要处理的字符数组名;函数返回值:返回具有最小ASCII码的字符。
二、理解问答题:(20分)下面的文件stack.h是一个堆栈类模板Stack的完整实现。
《面向对象分析与设计》大作业范例

《面向对象分析设计》大作业网上招聘系统分析设计专业:班级:学号:姓名:成绩:二〇一四年六月大连理工大学城市学院目录第一章网上招聘系统需求规格说明书 ............................................. - 3 - 第二章软件项目的概要设计说明书 . (16)第三章网上招聘系统详细设计 (51)第四章软件项目的编码案例说明 (64)第五章网上招聘系统客户端系统测试计划 (71)第六章网上招聘系统客户端系统测试设计 (75)第八章网上招聘系统客户端系统测试报告 (92)第一章网上招聘系统需求规格说明书1.导言1.1 目的该文档是关于用户对于网上招聘系统的功能和性能的要求,重点描述了网上招聘系统的功能需求,是概要设计阶段的重要输入。
本文档的预期读者是:·设计人员;·开发人员;·项目管理人员;·测试人员;·用户。
1.2 范围该文档是借助于当前系统的逻辑模型导出目标系统的逻辑模型的,解决整个项目系统的“做什么”的问题。
在这里,没有涉及开发技术,而主要是通过建立模型的方式来描述用户的需求,为客户、用户、开发方等不同参与方提供一个交流的平台。
1.3 编写说明HR,Human Resource(人力资源管理)的缩写。
JSP,Java Server Page(Java服务器页面)的缩写,一个脚本化的语言。
UML,Unified Modeling Language(统一建模语言)的缩写,是一个标准的建模语言。
1.4 术语定义无1.5 引用标准[1]《企业文档格式标准》,****************有限公司软件工程过程化组织[2]《需求规格报告格式标准》,************有限公司软件工程过程化组织1.6 参考资料[1]《UML说明》,***********************软件有限公司[2]《需求规格报告格式标准》,************公司软件工程过程化组织1.7 版本更新信息本文档的更新记录如表A-1所示。
面向对象程序设计大作业参考题目及要求

面向对象程序设计大作业参考题目1、学生信息管理(1)问题描述学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。
试设计一学生信息管理系统,使之能提供以下功能:●系统以菜单方式工作●学生信息录入功能(学生信息用文件保存)---输入●学生信息浏览功能——输出●查询、排序功能——算法1、按学号查询2、按姓名查询●学生信息的删除与修改(可选项)(2)功能要求●界面简单明了;●有一定的容错能力,比如输入的成绩不在0~100之间,就提示不合法,要求重新输入;●最好用链表的方式实现。
(3)算法分析首先,一个学生包括这么多的属性,应该考虑定义一个结构,其次,我们应该考虑数据的存储形式:是定义一个数组来存储,还是定义一个链表呢?在这里假如我们以数组的方式来存储,当然可以,但是我们知道,假如我们定义一个数组的话,我们首先必须知道学生人数大概是多少,以便我们确定数组的大小,但是题目中没有给出,而且题目要求中有大量的删除、插入操作,所以用链表的方式比较方便。
对于菜单的实现,其实也比较简单,首先我们用printf语句把程序的功能列出来,然后等待用户输入而执行不同的函数,执行完了一个功能后又回到菜单。
文件的读写操作大家参照书中的有关文件的章节。
2、学生综合测评系统每个学生的信息为:学号、姓名、性别、家庭住址、联系电话、语文、数学、外语三门单科成绩、考试平均成绩、考试名次、同学互评分、品德成绩、任课教师评分、综合测评总分、综合测评名次。
考试平均成绩、同学互评分、品德成绩、任课教师评分分别占综合测评总分的60%,10%,10%,20%。
A、学生信息处理(1) 输入学生信息、学号、姓名、性别、家庭住址、联系电话,按学号以小到大的顺序存入文件中。
提示:学生信息可先输入到数组中,排序后可写到文件中。
(2) 插入(修改)同学信息:提示:先输入将插入的同学信息,然后再打开源文件并建立新文件,把源文件和输入的信息合并到新文件中(保持按学号有序)若存在该同学则将新记录内容替换源内容,(3) 删除同学信息:提示:输入将删除同学号,读出该同学信息,要求对此进行确认,以决定是否删除将删除后的信息写到文件中。
面向对象方法学大作业(学生成绩管理系统)

作用:业务逻辑层的接口类。
SSMSServiceImpl.java
类型:类
作用:业务逻辑层接口类的实现类。
2.4.
SSMSAction.java
类型:类
作用:接收用户从页面上传递回来的信息,并传递到业务逻辑层。
2.5.
Index.jsp
ቤተ መጻሕፍቲ ባይዱ类型:JSP页面
作用:负责给用户展示的页面。
2.6.
applicationContext.xml
类型:类
作用:对象实体的持久化类。
2.2.
ScoresDao.java
类型:接口
作用:数据库连接层的接口类。
ScoresDaoImpl.java
类型:类
作用:数据库连接层接口类的实现类。
ScoresDao.xml
类型:XML文件
作用:负责与数据库交互的SQL语句的存放。
2.3.
SSMSService.java
1.
1.1.
字段
描述
类型
主键
可空
描述
StuId
学号
Varchar(255)
Y
N
唯一
StuName
姓名
Varchar(255)
N
N
ObjSco1
课程一
Int
N
Y
成绩
ObjSco2
课程二
Int
N
Y
成绩
ObjSco3
课程三
Int
N
Y
成绩
注:学号格式为01070833,专业+年份+班级+序号。
2.
2.1.
Scores.java
《面向对象方法精粹》广东开放大学 网上终考复习资料题库及答案题

A、 实体类 B、 边界类 C、 控制类 D、 消息 参考答案:C
12 、 下图中的 LoginForm 是一个()
A、 实体类 B、 边界类 C、 控制类 D、 消息 参考答案:B
13 、类图中的()表达了一个事物访问另一个事物的能力。 A、 抽象依赖 B、 授权依赖 C、 绑定依赖 D、 使用依赖 参考答案:B
23 、以下哪个不属于类之间的关系()
A、 关联 B、 泛化 C、 依赖 D、 调用 参考答案:D
24 、类之间的()关系说明一个事物声明说明的变化可能影响到使用它的另一个事物,但反之未必。
A、 依赖 B、 泛化 C、 关联 D、 调用 参考答案:A
25 、活动图中的()可以用来描述每个活动是由哪个对象负责完成的。
19 、类可以分为()3 种类型。
A、 实体类、边界类、控制类 B、 实体类、状态类、控制类 C、 实体类、边界类、状态类 D、 实体类、事件类、控制类 参考答案:A
20 、类图中的()是对系统中需要存储的信息和其信息的行为建立模型。
A、 实体类 B、 边界类 C、 控制类 D、 事件类 参考答案:A
参考答案:D
6 、()是通过从特定实现语言的映射而把代码转换为模型的过程。
A、 系统部署 B、 架构设计 C、 需求分析 D、 逆向工程
参考答案:D
7 、顺序图中的()代表顺序图中的对象在一段时间内的存在。
A、 类角色 B、 生命线 C、 激活期 D、 消息
参考答案:B
8 、顺序图中的()是定义交互和协作中交换的信息。
14 、类图中的()表明对目标模板使用给定的实际参数进行实例化。
A、 抽象依赖 B、 绑定依赖 C、 授权依赖 D、 使用依赖 参考答案:B
面向对象大作业

教育培训系统Uml设计段传明150620050 硕研一班1用例建模用例图是由软件需求分析到最终实现的第一步,它描述人们如何使用一个系统。
用例视图显示谁是相关的用户、用户希望系统提供什么样的服务,以及用户需要为系统提供的服务,以便使系统的用户更容易理解这些元素的用途,也便于软件开发人员最终实现这些元素。
由需求调研文档可知,此教育培训系统主要包括以下:招生管理,学员管理,课程管理,教务管理,财务管理,就业管理,系统管理七个模块所以可得到系统模块用例图如图1.1所示:图1.1系统用例图下面分别对着7个模块进行用例建模(1)招生管理模块结合招生招生管理业务流程可知,用例包括招生管理员和未报名者两名角色,具体用例如图1.2所示图1.2招生管理用例图用例文档举例,更新招生简章文档如表1.1所示:表1.1更新招生简章用例文档(2)财务管理模块用例图如图1.3所示图1.3财务管理用例图财务管理用例文档如表1.2 所示:(3)就业管理模块用例图如图1.4所示图1.4就业管理用例图(4)系统管理用例图如图1.5所示图1.5系统管理用例图系统管理用例文档如表1.3所示:表1.3系统管理用例文档(5)教务管理模块用例分析如图1.6所示图1.6 教务管理用例2用例分析顺序图:顺序图用于显示对象间的交互活动,它关注对象之间消息传送的时间顺序。
(1)招生管理顺序图如图2.1所示图2.1招生管理顺序图(2)教务管理顺序图如图2.2所示图2.2 教务人员顺序图(3)就业管理顺序图如图2.3所示图2.3就业管理顺序图(4)系统管理人员顺序图如图2.4所示图2.4系统管理人员顺序图(5)财务管理顺序图如图2.5所示:图2.5财务管理顺序图3架构设计(1)教育培训系统总体架构如图3.1所示图3.1教育培训系统总体架构(2)系统类之间的关系如图3.2所示:图3.2系统类之间的关系(3)系统部署图如图3.3所示:图3.3 系统部署图4构件设计本部分选则招生管理和财务管理两大模块进行构件设计招生管理分析类图如图4.1所示:图4.1招生管理类图招生管理构件图如图4.2所示:图4.2招生管理构件图财务管理分析类图如图4.3所示:图4.3财务管理分析类图财务管理构件图如图4.4所示图4.4财务管理构件图招生管理状态图如图4.5所示:图4.5 招生管理状态图财务管理状态图如图4.6所示:图4.6 财务管理状态图5建模过程总结及心得通过对需求调研的分析,依据项目的业务流程图和数据流程图以及项目中涉及的各级操作人员,通过分析,识别出系统中的所有用例和角色。
面向对象大作业

面向对象作业指导教师:院系:控制科学与工程学院班级:学号:姓名:提交时间:2013-12-22大连理工大学Dalian University of Technology一问题分析随着计算机网络的不断发展,人们越来越习惯于在网上交流信息,上网聊天已经成为人们日常生活的一部分。
使用网上聊天已经成为现代年轻人一种新的交往方式。
聊天室更适合于陌生人之间进行较为主观、感兴化的讨论。
所以有大部分的人会进入聊天室聊天,它会给人一个完全自由的聊天世界。
尤其是针对公司等团体越来越需求一款可以群聊的并且可以发送文件的软件。
基于局域网的聊天室可以满足人们发送消息等基本功能,因此,制作一个聊天软件是很重要且非常有意义的。
本设计主要根据作业要求,实现单文档多视图交互、群聊、服务器文件传输、聊天记录的保存、视频播放等功能。
二算法选择在聊天室设计中,使用的协议主要有TCP(Transmission Control Protocol)、UDP(User Datagram Protocol)。
其中TCP提供IP环境下的数据可靠传送,而UDP则不为IP提供可靠性、流控或差错恢复功能。
一般来说TCP对应的是可靠性要求高色应用,为UDP则是可靠性要求低传输经济的应用。
并且TCP属于面向连接的传输,UDP属于面向非连接的传输。
相对来说,虽然TCP编程复杂,需要经过单词“对话”建立起来连接,但是稳定性强,不会出现对数据情况,所以选择TCP协议设计。
使用MFC的封装类CSocket进行数据的传送,流程图如图1所示。
图 1 消息发送流程三方案设计此系统分为两部分:服务器端和客户端。
服务器端用于提供一个网络接口,等待客户端连接及发送请求,登录到洗服务器,然后进行消息的发送;客户端可以通过服务器端的IP地址发送连接请求,登录到聊天系统。
聊天系统主要是通过使用各个类来实现相应的功能。
1. 服务器端三个子窗口类CChatView、CleftView、CSmallView分别用于聊天信息显示、在线用户的显示、文件的发送。
2017-2018学年 面向对象程序设计 大作业

2017-2018学年第一学期期末考试《面向对象程序设计》大作业
一、名词解释(每题5分,共50分)
1、构造函数
构造函数,是一种特殊的方法。
主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new运算符一起使用在创建对象的语句中。
特别的一个类可以有多个构造函数,可根据其参数个数的不同或参数类型的不同来区分它们即构造函数的重载。
2、对象
对象,常有两层意思,指行动或思考时作为目标的事物或特指恋爱的对方等含义个体的对象世界是指从个体诞生开始就围绕在个体周围的世界,它包括支持该个体存在的物质实体和用于该个体发展的各种因素。
从个体的生存处境看,个体的对象世界是我们通常所指的广泛意义上的自然界以及这个自然界的展开形式。
这个世界由低级到高级依次展开,它们呈现给个体的是由“原始自然——人化自然——能动自然——虚拟自然”等所构成的序列。
3、运算符重载
运算符重载,就是对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。
4、析构函数
析构函数(destructor)与构造函数相反,当对象结束其生命周期时(例如对象所在的函数已调用完毕),系统自动执行析构函数。
析构函数往往用来做“清理善后”的工作(例如在建立对象时用new开辟了一片内存空间,delete会自动调用析构函数后释放内存)。
5、组合
组合(combination)是一个数学名词。
一般地,从n个不同的元素中,任取m(m≤n)个。
面向对象分析与设计(UML)课程大作业题目及要求

《面向对象分析与设计(UML)课程大作业》题目一、课程大作业目的和要求1.初步了解UML语言的概念、结构、语义与表示方法;2.掌握UML建模工具Rational Rose的使用方法;3.给出某个简单系统的模型,能够熟练地使用Rose工具表达;二、课程大作业主要内容及要求课程设计的主要任务:1.根据所收集的简单需求,利用UML和Rational Rose工具对系统进行建模;2.根据前述需求的分析,进行需求建模,绘制系统的用例图和活动图;3.根据用例模型,进行架构建模,绘制系统的时序图,状态图,类图和交互图;4.绘制系统中某些重要功能的对象图;5.绘制系统的组件图和部署图;6.程序实现(选做)选题如下:1.网上选课系统主要包括如下功能:管理员通过系统管理界面进入,建立本学期要开的各种课程,将课程信息保存在数据库中并可以对课程进行改动和删除。
学生通过客户机浏览器根据学号和密码进入选课界面,在这里学生可以进行三种操作:查询已选课程、选课以及付费。
同样,通过业务层,这些操作结果存入到数据库中。
2.设计运动会的计分系统本运动会在若干各会场进行,每个会场进行若干个项目。
有若干支运动队参赛,每支运动队有数名运动员。
各赛事分预决赛,预赛成绩部分带入决赛。
成绩由裁判员给出,计分员记录。
要求在比赛结束后,产生各队排名表及运动员的详细成绩表。
3. 试题管理系统其中试题分正式试题和临时试题,出题人设置课程名和试卷难度等内容后,系统自动出卷。
对试题要进行管理,并提供查询功能。
4. 工资管理系统一个公司下分若干部门,每个部门有若干名职员和经理,每个部门经销若干种产品。
工资由基本工资、产品销售业绩、若干种保险的扣除等组成。
其中的销售业绩:职员按其完成额5%提成,经理按该部门的完成额的1%提成。
每个月要生成一个工资表,每年末再按个人的总销售额发放1%的奖金。
5.宿舍楼管理系统该系统涉及到的事物有:宿舍楼、楼层、房间、家具;室长、楼长、保洁员、学生;学生所属的系。
java面向对象课程大作业

(3)参考了书本,并结合其他代码。我又添加了两种方法的音乐【背 景音乐和钟表的伴奏声】:
• • • • • • • • • //第一种方法 //play(getDocumentBase(),"六月的雨.mid "); //播放背景音乐" 六月的 雨.wav "播放一遍 //第一种方法 AudioClip clip;//在下面循环播放歌曲是的定义 clip = getAudioClip(getCodeBase(),"六月的雨.mid");//添加背景声音 clip.play();//循环播放 //循环播放歌曲的功 能 clip.loop();//循环播放 // play(getDocumentBase(),"Device Failed.wav"); //播放音乐"Device Failed.wav"与秒针同步的声音//
(5)由于指针的运动会导致窗口汉字符号随着repaint()和刷新二产生闪烁, 所以又添加克服屏幕闪烁的两种方法,其中双缓冲的比较好。
/* 克服屏幕闪烁的方法一 */ public void update1(Graphics g) { paint(g); } /* 克服屏幕闪烁的方法二 *//* 双缓冲技术 */ Image offImage; Graphics offGraphics; public void update(Graphics g) { if ((offGraphics == null)){ offImage = createImage(getWidth(),getHeight()); offGraphics = offImage.getGraphics(); } offGraphics.setColor(getBackground()); offGraphics.fillRect(0, 0, getWidth(),getHeight()); paint(offGraphics); g.drawImage(offImage, 0, 0, null); }
面向对象程序设计(大作业)

一、名词解释(每题4分,共40分)1.面向对象面向对象:相对于面向过程而言的,所谓面向对象就是不在追求其操作的过程而是去实现其中的方法。
2.对象对象:对象就是用来描述客观事物的一个实体,有一组属性和方法构成的。
3.构造函数构造函数:主要用来在创建对象时初始化对象,即为对象成员变量赋初始值,总与new 运算符一起使用在创建对象的语句中,也是一种特殊的方法。
4.析构函数析构函数:是与构造函数相反,当对象结束其生命周期时,系统自动执析构函数。
其主要作用是用delete释放建立对象用new开辟内存空间。
5.继承继承:继承是指一个对象直接使用另一对象的属性和方法6.多态多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果,这就是多态性7.引用引用:使用它指向了一个A对象,也可以说它引用了一个A对象8.友元友元:指某些虽然不是类成员却能够访问类的所有成员的函数。
9.模板模板:某种事物所依照的样本10.异常处理异常处理:是编程语言或计算机硬件里的一种机制,用于处理软件或信息系统中出现的异常状况。
二、综合回答题(每小题15分,共60分)1.请介绍运算符重载的意义。
答:所谓重载,就是重新赋予新的含义。
运算符函数重载就是对原有元算符进行赋予新的含义从而实现运算符的重载.可以实现运算符重载的包括:算术运算符:+,-,*,/,%,++,--;位操作运算符:&,,~,^,<<,>>逻辑运算符:!,&&,;比较运算符:<,>,>=,<=,==,!=;赋值运算符:=,+=,-=,*=,/=,%=,&=,=,^=,<<=,>>=;其他运算符:[],(),->,,(逗号运算符),new,delete,new[],delete[],->*不能实现运算符重载的运算符包括:.,.*,::,?:2.谈谈多态的意义。
答:封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了代码重用。
面向对象方法精粹大作业

面向对象方法精粹目录1需求分析........................... 错误!未定义书签。
1.1项目描述 (3)1.2功能描述 (3)2构建功能模型 (5)2.1确定系统边界 (5)2.2寻找参与者 (5)2.3寻找用例 (5)3构建结构模型 (8)3.1寻找并保留正确的类 (8)3.2准备数据词典 (8)3.3寻找关联属性并细化 (9)4构建行为模型 (11)4.1状态机图 (11)4.2活动图 (12)4.3顺序图 (14)1需求分析1.1项目描述该项目建立一个育童网站,旨在为没有时间呵护孩子成长的年轻父母提供育童服务。
网站采取B/S架构,客户通过浏览器获取所需服务,注册账号,订购服务。
公司通过后台管理订单。
同时,网站设有育童论坛,供年轻父母进行交流与分享,通过论坛方式可获得育童积分,累积可转换为育童券,进行购物。
网站同时为年轻父母提供第三方支付的服务和旅游,餐饮与医疗服务。
在购买服务时的支付方式为第三方支付和育童券支付,育童券可以冲抵现金,但不能兑换现金。
每个账号有自己的等级,等级越高则购买相应服务折扣越大。
该网站为一个P2P的线下服务平台,主要客户为时间不充裕的年轻父母,主要商家为育童公司,以及与育童网合作的旅游,餐饮和医疗公司。
通过育童公司订购的旅游,餐饮和医疗服务将享有折扣。
1.2功能描述用户(年轻父母):1.年轻父母可提交服务订单;2.年轻父母可提交自己的育童服务专页(含认知教程,营养食谱,医疗卫生,屋舍设施,户外环境);3.年轻父母可向亲朋好友发送孩子百日电子请柬;4.年轻父母在线支付育童服务费(如网银,第三方,爱童券等);5.年轻父母分享孩子成长视频/图片获得爱童券;6.年轻父母之间可以相互交流;7.评价后可获得爱童券;8.在线支付后可获得爱童积分;9.在支付后悔期内可自由退订;10.在支付后悔期外壳有限制退订;11.订单完成后支付积分转换为爱童积分;12.爱童积分可兑换爱童券;13.年轻父母可在线折扣购买爱童券;14.年轻父母介绍新用户加入爱童网可提升自己的级别; 服务平台(育童公司):1.可发布育童服务信息;2.浏览自己的育童服务专页;3.设置年轻父母的级别;4.设置年轻父母的升级规则;5.浏览服务订单进度;6.浏览营收;7.订购餐饮机构的服务;8.订购医疗机构的服务;9.订购旅游机构的服务;商家(餐饮/医疗/旅游机构):1.发布服务信息;2.浏览自己的服务专页;3.浏览自己的服务营收;2构建功能模型2.1确定系统边界系统主要的功能为用户向商家订购服务,商家向用户提供服务。
面向对象大作业

1、用况图西安/宝鸡车站路线系统使用者有西安/宝鸡车站、乘客、汽车和路线;(1)、西安/宝鸡车站:为系统产生随机位数的乘客数,可以获得候车室的候车人数、各车型的车辆数以及在行驶中的车辆的具体位置;(2)、乘客:上车和下车会对系统产生影响;(3)、汽车:发车、停车以及到站都会给系统产生不同的影响;(4)、路线:汽车发车和到站会影响路线中的车辆数。
2、类图类有Car类、passenger类、time类、Station类和route类、Yiweike类以及Woerwo 类,其中Yiweike和Woerwo类继承Car类;Car类和Station类依赖passenger类,又与route 类关联;Car 类和route 类是关联关系。
3、 顺序图整个系统在工作时间内都是循环式的,每隔1分钟会产生随机人数的乘客,汽车到站后会等待下一次发车……(1)、在工作时间内,西安/宝鸡车站的生命时间是整个工作时间,它获取候车室的候车人数、各车型的车辆数、行驶中的车辆的具体位置等;(2)、乘客是在车站生成乘客后才有的,故其生命时间比车站晚,由于乘客是对所有乘客的总称,故其生命时间一直延续到最后一个乘客下车;(3)、依维柯和沃尔沃:在整个工作时间内都是其生命时间,到终点站后继续等待下一次发车;(4)、路线:在汽车发车后才产生,故比汽车的生命时间晚,一直延续到最后一辆车到达终点站。
4、 状态图每分钟循环一次若此战有乘客下车则停车,否则继续行驶到下一站此处为其他站点的省略最后一辆车到达终点站整个系统有六种状态:停止工作状态、产生乘客状态、发车状态、到达下一站状态、有乘客下车状态和到达停车状态;(1)、停止工作状态:即未到工作时间或超过工作时间时系统的状态;(2)、产生乘客状态:即西安/宝鸡车站每分钟产生依次随机数的乘客数的状态,是一个循环状态;(3)、发车状态:即到了依维柯或沃尔沃发车时的状态,此时乘客上车、车站候车室人数变化、车站车辆数减1;(4)、到达下一车站状态:此时会判断有没有人下车,若有,则进入有乘客下车状态,否则继续行驶,到达下一车站继续判断,直到到达终点站,进入到站停车状态;(5)、有乘客下车状态:停车2分钟,车上乘客数减少;(6)、到站(即终点站)停车状态:所有乘客下车,车站(终点站)车辆加1。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象方法精粹
目录
1 需求分析..................................................... 错误!未定义书签。
1.1 项目描述 (3)
1.2 功能描述 (3)
2 构建功能模型 (5)
2.1 确定系统边界 (5)
2.2 寻找参与者 (5)
2.3 寻找用例 (5)
3 构建结构模型 (8)
3.1 寻找并保留正确的类 (8)
3.2 准备数据词典 (8)
3.3 寻找关联属性并细化 (9)
4 构建行为模型 (11)
4.1 状态机图 (11)
4.2 活动图 (12)
4.3 顺序图 (14)
1需求分析
1.1 项目描述
该项目建立一个育童网站,旨在为没有时间呵护孩子成长的年轻父母提供育童服务。
网站采取B/S架构,客户通过浏览器获取所需服务,注册账号,订购服务。
公司通过后台管理订单。
同时,网站设有育童论坛,供年轻父母进行交流与分享,通过论坛方式可获得育童积分,累积可转换为育童券,进行购物。
网站同时为年轻父母提供第三方支付的服务和旅游,餐饮与医疗服务。
在购买服务时的支付方式为第三方支付和育童券支付,育童券可以冲抵现金,但不能兑换现金。
每个账号有自己的等级,等级越高则购买相应服务折扣越大。
该网站为一个P2P的线下服务平台,主要客户为时间不充裕的年轻父母,主要商家为育童公司,以及与育童网合作的旅游,餐饮和医疗公司。
通过育童公司订购的旅游,餐饮和医疗服务将享有折扣。
1.2 功能描述
用户(年轻父母):
1.年轻父母可提交服务订单;
2.年轻父母可提交自己的育童服务专页(含认知教程,营养食谱,医疗
卫生,屋舍设施,户外环境);
3.年轻父母可向亲朋好友发送孩子百日电子请柬;
4.年轻父母在线支付育童服务费(如网银,第三方,爱童券等);
5.年轻父母分享孩子成长视频/图片获得爱童券;
6.年轻父母之间可以相互交流;
7.评价后可获得爱童券;
8.在线支付后可获得爱童积分;
9.在支付后悔期内可自由退订;
10.在支付后悔期外壳有限制退订;
11.订单完成后支付积分转换为爱童积分;
12.爱童积分可兑换爱童券;
13.年轻父母可在线折扣购买爱童券;
14.年轻父母介绍新用户加入爱童网可提升自己的级别;服务平台(育童公司):
1.可发布育童服务信息;
2.浏览自己的育童服务专页;
3.设置年轻父母的级别;
4.设置年轻父母的升级规则;
5.浏览服务订单进度;
6.浏览营收;
7.订购餐饮机构的服务;
8.订购医疗机构的服务;
9.订购旅游机构的服务;
商家(餐饮/医疗/旅游机构):
1.发布服务信息;
2.浏览自己的服务专页;
3.浏览自己的服务营收;
2构建功能模型
2.1确定系统边界
系统主要的功能为用户向商家订购服务,商家向用户提供服务。
其中订购的过程中会伴随订单的产生,支付,完成,评价。
同时在服务过程中,伴随用户爱童积分的积累,爱童券的积累。
还有用户之间的交流与分享。
商家的行为主要是基于服务器端,查看订单情况,支付情况,以及提供服务和帮助用户订购其他服务。
综上,本系统的主要边界为客户端边界内的用例和服务端边界内的用例。
2.2寻找参与者
在确认边界的基础上,寻找与系统直接交互的外部对象。
对于被系统而言,参与者主要有用户,公司和第三方服务商。
这三类参与者都会执行一部分系统功能,且有不同的操作界面。
2.3 寻找用例
结合上述分析,我找出了两类用例分别在用户系统内和服务端系统内。
者两类用例会以完全不同的方式使用本系统。
其中图1表示用户使用本系统的功能,图2表示服务端下本系统提供给公司和第三方机构的功能。
图1:客户端系统用例图
本图描述了用户即年轻父母在本系统内与公司以及第三方机构的一切交互,
主要分为订单系统,用户论坛系统和主页系统三大模块。
图2 的主要参与者为公司和第三方服务机构。
3构建结构模型
3.1寻找并保留正确的类
首先从用户,公司第三方机构三类参与者中找出相关的对象。
再从对用户,公司的功能描述中找出相关的概念。
用户要提交订单,订单要被执行,确认,评价。
等行为过程中找出对象。
然后将这些对象逐层抽象为类。
然后,去掉表示相同概念的类,保留最具描述能力的名称,即去掉冗余类;然后
去掉不相关的属性。
最终我得出本系统中的类如下所示:
3.2准备数据词典
为避免单词的歧义,编制数据字典如下。
同时对一些重要类的作用域,生命周期作出解释,并描述了类间的关联,聚合以及一些重要的属性。
3.3寻找关联属性并细化
进一步细化类之间的关联,并表明重要的唯一属性,对类间的关联做出约束。
并使用继承来细化,调整继承的层次和多重继承,增强代码的复用性。
综上步骤,我所得出的类图如图3所示。
图3.类图
4构建行为模型
4.1状态机图
经过分析我认为,本项目中存在状态变化生命周期的有两个。
一是订单状态,二是育童积分和育童券之间的转换。
分别入图4,图5所示。
图4表示订单的生命周期,从被用户建立,支付到执行完毕,最终由用户做出评价。
图5表示育童积分与育童券之间的相互转化,用户获得育童积分的手段主要有参与在线支付,参与评价和完成一笔订单,当育童积分到达一定数量自动转换为育童券可以冲抵现金进行购物。
图4.订单状态机图
图5.爱童积分状态机图
4.2活动图
活动图主要表示用户和服务商进行主要活动的单方向流程,尽量不要涉及循环迭代的过程。
本例中我设计了用户端活动图和服务端活动图如图6,图7所示。
图6表示用户从注册账号到完成一笔订单所需要的活动。
图7表示服务器端操作用户订单,并联系进行相应服务的活动。
图6
4.3顺序图
图8表示客户订购服务的流程图,订购服务,生成订单,公司根据已支付的订单提供相应的育儿服务或者联系第三方进行服务。
由对象的生命线和激活时间可以清楚的了解这个线上服务网站的业务流程。
图8。