影碟出租管理系统.docx
- 文档编号:23110780
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:87
- 大小:1.77MB
影碟出租管理系统.docx
《影碟出租管理系统.docx》由会员分享,可在线阅读,更多相关《影碟出租管理系统.docx(87页珍藏版)》请在冰豆网上搜索。
影碟出租管理系统
影碟出租管理系统
实验一:
需求分析
系统的名称
影碟出租管理系统
可行性分析
通过对该影碟出租店的各个方面进行了具体的了解之后,现对该影碟出租店开发影碟出租管理系统的可行性进行分析。
(1)技术上可行:
该系统所需硬件设备,市场上销售且价格较低,,软件上,操作系统采用Windows系列操作系统,数据库管理系统采用Visual Basic,这些软件在MIS开发中已被大量应用,技术上都比较成熟。
因此在技术上是可行的。
(2)经济上可行:
由于学校该影碟出租店已经到了一定的规模需要采用计算机来对影碟出租店的业务进行管理,因此对开发影碟出租管理系统大力支持,开发经费没有问题。
(3)管理上可行:
该影碟出租店原先主要就是以会员为主要服务对象,每位会员均
收集信息
在对世面上的影碟出租店进行了初步的了解后,发现其业务主要是集中在影碟的管理和碟片的出租归还上。
对影碟的管理工作量较大,采用手工的方式还容易出错,并且不能满足顾客对影碟的详细信息的查询功能。
在现有的影碟出租中对会员的管理也很重要,传统的登记方式不仅费时而且不能对其出租日志进行系统的管理,造成了不必要的经济损失。
影碟出租信息系统的建立,需要进行用户的需求调查与分析,以确定系统目标,提出解决问题的详细方案,这是系统建设的重要环节。
该影碟出租店规模相对较小,但要有着完善的影碟信息,对每一张影碟都要有详细的记录信息,功能上对系统的需求是全面的。
因此对用户的需求可分为四个方面:
一方面是影碟出租店工作人员通过计算机来管理各类影碟,分类编号,调整影碟结构,增加影碟库存,适应顾客的需求;二方面是顾客们能通过计算机来查询浏览影碟出租店中的碟片,来确定自已需要的影碟,为租赁做好准备;三方面是工作人员对顾客们的会员的注册,注册能作好全面的掌握,
E-R图(侯璠)
数据流图
思考题
1、需求分析在软件开发中真的有那么重要吗?
在软件工程中,需求分析指的是在建立一个新的或改变一个现存的电脑系统时描写新系统的目的、范围、定义和功能时所要做的所有的工作。
需求分析是软件工程中的一个关键过程。
在这个过程中,系统分析员和软件工程师确定顾客的需要。
只有在确定了这些需要后他们才能够分析和寻求新系统的解决方法。
在软件工程的历史中,很长时间里人们一直认为需求分析是整个软件工程中最简单的一个步骤,但在过去十年中越来越多的人认识到它是整个过程中最关键的一个过程。
假如在需求分析时分析者们未能正确地认识到顾客的需要的话,那么最后的软件实际上不可能达到顾客的需要,或者软件无法在规定的时间里完工。
需求分析是一项重要的工作,也是最困难的工作。
该阶段工作有以下特点:
(1)用户与开发人员很难进行交流
在软件生存周期中,其它四个阶段都是面向软件技术问题,只有本阶段是面向用户的。
需求分析是对用户的业务活动进行分析,明确在用户的业务环境中软件系统应该"做什么"。
但是在开始时,开发人员和用户双方都不能准确地提出系统要"做什么?
"。
因为软件开发人员不是用户问题领域的专家,不熟悉用户的业务活动和业务环境,又不可能在短期内搞清楚;而用户不熟悉计算机应用的有关问题。
由于双方互相不了解对方的工作,又缺乏共同语言,所以在交流时存在着隔阂。
(2)用户的需求是动态变化的
对于一个大型而复杂的软件系统,用户很难精确完整地提出它的功能和性能要求。
一开始只能提出一个大概、模糊的功能,只有经过长时间的反复认识才逐步明确。
有时进入到设计、编程阶段才能明确,更有甚者,到开发后期还在提新的要求。
这无疑给软件开发带来困难。
(3)系统变更的代价呈非线性增长
需求分析是软件开发的基础。
假定在该阶段发现一个错误,解决它需要用一小时的时间,到设计、编程、测试和维护阶段解决,则要花2.5、5、25、100倍的时间。
因此,对于大型复杂系统而言,首先要进行可行性研究。
开发人员对用户的要求及现实环境进行调查、了解,从技术、经济和社会因素三个方面进行研究并论证该软件项目的可行性,根据可行性研究的结果,决定项目的取舍。
2、分析系统流程图,程序流程图和数据流图的区别和各自的特点。
系统流程图是概括的描绘物理系统的传统工具。
它的基本思想是用图形符号以黑盒子形式描绘组成系统的每个部件(程序、文档、数据库、人工过程等)。
系统流程图表达的是数据在系统各部件之间流动的情况,而不是对数据加工处理的控制过程,因此尽管系统流程图的某些符号和程序流程图的符号形式相同,但是他却是物理数据流图而不是程序流程图。
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型。
在结构化开发方法中,数据流图是需求分析阶段产生的结果。
3、怎样写合乎规范的数据流图和数据词典
画数据流图原则:
(1)数据流图上所有图形符号只限于前述四种基本图形元素。
(2)顶层数据流图上的数据流必须封闭在外部实体之间。
(3) 每个处理框至少有一个输入数据流和一个输出数据流。
(4)在数据流图中,需按层给处理框编号。
表明该处理所处层次及上下层的亲子关系。
(5) 规定任何一个数据流子图必须与它上一层的一个处理对应,两者的输入数据流和输出数据流必须一致。
此即父图与子图的平衡。
(6)图上每个元素都必须有名字。
写数据字典:
数据字典由下列四类元素定义组成
(1)数据流
(2)数据流分量即数据元素
(3)数据存储
(4)处理
实验二:
系统设计
层次图
结构图
归还管理模块
程序流程图
盒图
Jackson图
租借管理模块
程序流程图
2.2盒图
2.3jackson图
思考题
1、如何分辨事务中心数据流和变换中心数据流?
2、设计软件结构图时,如何把握内聚和耦合的度?
(1)尽量使用数据耦合,少用控制耦合和特征耦合,限制公共耦合的范围,完全不用内容耦合
(2)功能内聚10分、顺序内聚9分、通信内聚7分、过程内聚5分、时间内聚3分、逻辑内聚1分、偶然内聚0分
3、设计程序流程图时,循环嵌套以几层为好?
4、怎么判断盒图的正确性?
实验三:
编码实现
2.2类
1.CD类:
该类拥有私有数据成员CDID(碟片编号)、CDname(碟片名称)、mainstar(主演明星)、country(国家)、style(碟片类型)、director(导演)、company(制作公司)、lend(借出数量)、inventory(库存量)。
成员函数包含有参构造函数、重载流插入提取运算符、拷贝复制构造函数以及获取私有成员函数和更改私有成员函数,具体类信息如下:
classCD{
private:
stringCDID;//碟片编号
stringCDname;//碟片名称
stringmainstar;//主演明星
stringcountry;//国家
stringstyle;//碟片类型
stringdirector;//导演
stringcompany;//制作公司
intlend;//借出数量
intinventory;//库存量
public:
CD(stringci="无",stringcna="无",stringmst="无",stringcot="无",stringsty="无",stringdir="无",stringcom="无",intle=0,intinv=0);
friendistream&operator>>(istream&is,CD&die);//重载输入运算符
friendostream&operator<<(ostream&os,CD&die);//重载输出运算符
friendofstream&operator<<(ofstream&ofs,CD&die);//重载文件插入运算符
CD(constCD&c);//复制构造函数
CD(CD&c,constCD&d);//复制构造函数
stringgetCDID(){returnCDID;}
stringgetCDname(){returnCDname;}
stringgetmainstar(){returnmainstar;}
stringgetcountry(){returncountry;}
stringgetstyle(){returnstyle;}
stringgetdirector(){returndirector;}
stringgetcompany(){returncompany;}
intgetlend(){returnlend;}
intgetinventory(){returninventory;}
voidsetCDID(stringci){CDID=ci;}
voidsetCDname(stringcna){CDname=cna;}
voidsetmainstar(stringmst){mainstar=mst;}
voidsetcountry(stringcot){country=cot;}
voidsetstyle(stringsty){style=sty;}
voidsetdirector(stringdir){director=dir;}
voidsetcompany(stringcom){company=com;}
voidsetlend(intle){lend=le;}
voidsetinventory(intinv){inventory=inv;}
};
2.member类:
该类拥有私有成员memberID(会员号)、membername(会员姓名)、sex(性别)、money(会费剩余)。
成员函数包含有参构造函数、流重载插入运算符、拷贝构造函数以及获取私有成员函数和更改私有成员函数,具体类信息如下:
classmember
{
friendistream&operator>>(istream&is,member&me);//重载插入运算符
friendostream&operator<<(ostream&os,member&me);//重载提取运算符
friendofstream&operator<<(ofstream&ofs,member&me);//重载文件插入运算符
private:
stringmemberID;//会员号
stringmembername;//会员名字
stringsex;//会员性别
floatmoney;//会费剩余
public:
member(stringmid="无",stringmna="无",stringse="无",floatmon=0.0);//带参默认构造函数
member(constmember&m);//拷贝构造函数
stringgetmemberID(){returnmemberID;}
stringgetmembername(){returnmembername;}
stringgetsex(){returnsex;}
floatgetmoney(){returnmoney;}
voidsetmemberID(stringmid){memberID=mid;}
voidsetmembername(stringmna){membername=mna;}
voidsetsex(stringse){sex=se;}
voidsetmoney(floatmon){money=mon;}
};
3.caozuo类:
该类私有成员分别为:
memberhy[100](能存100个会员信息)、CDzu_dip[100][10](每个会员租借的碟片信息,且规定每人最多只能租借10种影碟)、CDdip[100](定义能存100种碟片信息)、intcategory(用来做影碟的下标)、intkind(用来做会员的下标)、intlendnumber[100](记录每个会员租借的碟片种类)、stringtime[100][10][20](用来记录每个会员租借的每一种碟片对应的租借时间信息)。
成员函数主要有有参构造函数以及各种功能函数,详细信息如下所示:
classcaozuo
{
private:
memberhy[100];//定义能存100个会员信息
CDzu_dip[100][10];//每个会员对应租借的碟片信息,且规定最多只能租10种影碟
CDdip[100];//定义能存100种碟片信息
intcategory;//用来做影碟的下标
intkind;//用来做会员的下标
intlendnumber[100];//记录每个会员租借的碟片种类
stringtime[100][10][20];//用来记录每个会员租借的每张碟片的租借时间信息
public:
caozuo(intc=0,intk=0)//初始化category和kind
{
category=c;
kind=k;
}
voidaiddp();//增加影碟信息
voidgxdp();//更新影碟信息
voidfind_dp();//查询影碟信息
voiddelete_dp();//删除碟片信息
voidput_all_dp();//输出全部影碟信息
voidaidhy();//注册新会员
voidgxhy();//更新会员信息
voidfind_hy();//查询会员信息
voidaid_money();//会员费充值
voiddelete_hy();//删除会员信息
voidput_all_hy();//输出全部会员信息
voidrent_cd();//租赁影碟
voidback_cd();//归还影碟
voiddp_statistics();//统计影碟种类清单
voidread_cd();//读取影碟文件上的信息
voidread_hy();//读取会员文件上的信息
voidread_lendcdcategory();//读取借碟片种类数据
voidread_rent_cd();//读取已租出碟片的信息
voidread_rent_time();//读取已租碟片的时间信息
};
2.3类的分析
在CD类中,主要就是碟片的基本信息,包括碟片的编号、名称、导演等等。
在member类中就是会员的基本信息,主要就是会员的ID、姓名、性别和账户余额这些信息。
在caozuo类中就是把CD类和member类作为它的私语成员然后集中处理他们之间的关系,主菜单里的各种功能也全部在该类中定义实现。
在caozuo类中,定义了类数组memberhy[100],其功能作用是可以存储100个会员信息。
CD类数组CDdip[100],其功能作用是可以存储100种碟片信息。
另一个CD类二维数组CDzu_dip[100][10];其是与会员类数组绑定在一起的。
例如hy[5]对应着zu_dip[5][i],i代表会员hy[5]借的第几种碟片,且其上线是10张。
Member类中的私有成员category是用来标记当前共入库的碟片的种类,用来做影碟CD类数组的下标。
私有成员函数kind是用来标记当前已注册的会员数量,即用来做会员类数组的下标。
类中定义的整形数组intlendnumber[100],是用来记录每个会员租借的碟片种类,例如lendnumber[5]=4,就是会员hy[5]租借了4种碟片。
并且lendnumber[10]也就是用来标记zu_dip[100][10]中的列数的,即做列的下标。
在caozuo类数组中还定义了一个string字符型二维数组stringtime[100][10][20],其中100是和会员hy[100]中的100是一一对应的,10是和zu_dip[100][10]中的10是一一对应的,20是字符长度。
该string字符型二维数组主要是用来记录每个会员租借的每种碟片的租借时间信息。
caozuo类组合了CD类和member类,使程序可以灵活地处理会员和碟片之间的关系。
而该类中的成员函数也主要都是在处理CD类和member之间的关系,最具有体现性的就是租赁函数和碟片归还函数。
3详细设计
1.类型统计功能:
进入该功能,程序使用者可以查看某种类型的碟片信息。
信息存储功能:
凡在执行程序中涉及到系统内存改变的地方都要把改变的信息写入文件保存起来,以达到存储功能。
例如碟片的写入文件操作
ofstreamofile;
ofile.open("碟片信息.txt");
for(intj=0;j if(j==0){ ofile.setf(ios: : left); ofile< ofile.setf(ios: : left); ofile< } ofile.close(); cout<<"添加成功! "< 2.界面设计 inlinevoidmenu() { cout<<"********************************************************"< cout<<"**----------------影碟出租管理系统-------------------**"< cout<<"**----主菜单----**"< cout<<"** (1)租赁影碟**"< cout<<"** (2)归还影碟**"< cout<<"**(3)影碟信息维护**"< cout<<"**(4)会员信息维护**"< cout<<"**(5)信息查询系统**"< cout<<"**(6)影碟类型统计**"< cout<<"**(7)退出系统**"< cout<<"**----------------------------------------------------**"< cout<<"********************************************************"< } inlinevoidmenu3() { cout<<"********************************************************"< cout<<"**-------------------影碟信息维护系统-----------------**"< cout<<"** (1)添加新影碟**"< cout<<"** (2)删除影碟信息**"< cout<<"**(3)更新影碟信息**"< cout<<"**(4)返回主菜单**"< cout<<"**----------------------------------------------------**"< cout<<"********************************************************"< } inlinevoidmenu4() { cout<<"********************************************************"< cout<<"**------------------会员信息维护系统------------------**"< cout<<"** (1)注册新会员**"< cout<<"** (2)删除会员信息**"< cout<<"**(3)更新会员信息**"< cout<<"**(4)会员费充值**"< cout<<"**(5)返回主菜单**"< cout<<"**----------------------------------------------------**"< cout<<"********************************************************"< } inlinevoidmenu5() { cout<<"********************************************************"< cout<<"**-----------------信息查询系统-----------------------**"< cout<<"** (1)查询影碟信息**"< cout<<"** (2)查询会员信息**"< cout<<"**(3)查看所有影碟信息**"< cout<<"**(4)查看所有会员信息**"< cout<<"**(5)返回主菜单**"< cout<<"**----------------------------------------------------**"< cout<<"********************************************************"< } voidmain() { caozuoa; a.read_cd();//系统自动读取文件中的碟片信息,并放到系统内存中 a.read_hy();//系统自动读取文件中的会员信息,并放到系统内存中 a.read_lendcdcategory();//系统自动读取文件中每个会员借的碟片种类信息,并放到系统内存中 a.read_rent_cd();//系统自动读取文件中的已租出碟片信息,并放到系统内存中 a.read_rent_time();//系统自动读取文件中的已租出的每张碟片对应租借的时间信息,并放到系统内存中 模块设计 //--------------------碟片查询模块------------------------------ intcheck(void)//碟片查询 { FILE*a;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 影碟 出租 管理 系统