影碟出租管理系统.docx

上传人:b****5 文档编号:7422817 上传时间:2023-01-23 格式:DOCX 页数:16 大小:122.83KB
下载 相关 举报
影碟出租管理系统.docx_第1页
第1页 / 共16页
影碟出租管理系统.docx_第2页
第2页 / 共16页
影碟出租管理系统.docx_第3页
第3页 / 共16页
影碟出租管理系统.docx_第4页
第4页 / 共16页
影碟出租管理系统.docx_第5页
第5页 / 共16页
点击查看更多>>
下载资源
资源描述

影碟出租管理系统.docx

《影碟出租管理系统.docx》由会员分享,可在线阅读,更多相关《影碟出租管理系统.docx(16页珍藏版)》请在冰豆网上搜索。

影碟出租管理系统.docx

影碟出租管理系统

影碟出租管理系统

 

    影碟出租店分布在每个城市的大街小巷,虽然经营的范围相同,但是进货管道、订货、管理以及出租等方面存在着一定的差异。

在正常的运营中总是面对着大量光盘信息、租借信息、归还信息。

因此管理上纷繁复杂。

以及了解各个环节的信息变更有利于提高管理以及经营的效率。

1系统设计

1.1系统功能分析

   系统开发的总体任务是实现各种信息的系统化、规范化和自动化。

系统主要功能分析是在系统开发总体任务的基础上完成的。

本实例中的影碟管理系统主要是应用在普通的影碟出租店,它需要完成以下主要功能:

★影碟管理:

包括影片入库、影片预览、旧影片删除以及用户口令的修改;

★影碟租借:

包括租借影碟、归还影碟以及浏览借出的影片;

★影碟查询:

包括按片名查询、按日期查询以及按主演查询;

★月租管理:

包括等级月租用户和查看月租用户;

★统计销量帮助

1.2功能模块设计

    对上述各项功能进行集中、分块,按照结构化程序设计的要求,得到如图1所示的影碟出租管理系统功能模块图。

 

图1 影碟出租管理系统功能模块图。

2数据库设计

   设计数据库时应该充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求,数据库设计包括以下步骤:

●数据库需求分析

●数据库概念结构设计

●数据库逻辑结构设计

2.1数据库需求分析

   用户需求具体体现在对各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出。

手机基本数据、数据结构数据处理的流程,组成一份详细的数据字典为后面的具体设计打下基础。

   仔细分析调查有关影碟管理信息需求的基础上,将得到如图2的数据处理流程。

针对一般影碟管理系统的需求,并通过对影碟管理工作过程的内容和数据流程分析设计出下面的数据项和数据结构:

◆影片信息:

包括影碟编号、影碟名称、张数、演员、日期、价格及说明;

◆用户信息:

包括用户编号、用户姓名、注册时间、电话号码、月押金、罚金;

◆租借信息:

包括影碟编号、借出日期、应还日期、押金、租金、罚金;

◆出租影片信息:

日期、租出影片、租金。

 

图2 影碟出租管理系统功能模块关系图

2.2数据库概念结构设计

   得到上面得数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体以及他们之间的关系为以后的逻辑结构打下基础

根据设计规划出实体集有:

影片信息实体、用户信息实体、租借信息实体、出租影片信息实体,各实体的具体描述ER图如下:

 

图3 ER图

2.3数据逻辑结构设计

   基于上面实体之间的关系,即可形成数据库中的表之间的关系。

数据逻辑结构设计就是把数据库概念结构转化为具体的DBMS(SQL2000)数据库所支持的实际数据模型。

影碟管理系统数据库中的各个表格的设计结果如下面的表格所示:

表2.3.1影碟信息Vedioinfo

列名

数据类型

是否为空

说明

Discid

Char(8)

NO

影碟编号(主键)

Discname

Char(30)

YES

影碟名称

Number

int

YES

张数

Star

Char(30)

YES

演员

Duydata

datetime

YES

日期

Price

real

YES

价格

Ibstract

Char(50)

YES

说明

 

表2.3.2 用户信息表Userinfo

列名

数据类型

是否为空

说明

Id

Char(8)

NO

用户编号(主键)

Name

Char(8)

YES

用户姓名

Register

datetime

YES

注册时间

Deposit

int

YES

月金

Number

int

YES

张数

Phone

Char(12)

YES

电话

Returndata

datetime

YES

到期日期

 

表2.3.3出租信息表Returned

列名

数据类型

是否为空

说明

Discid

Char(8)

NO

影碟信息(主键)

Loandate

datetime

YES

借出日期

Returndate

datetime

YES

应还日期

Deposit

Char(10)

YES

押金

Hire

int

YES

租金

Fine

int

YES

罚金

 

3数据库的实现

 

4、应用程序的设计

4.1登录窗口设计

4.1.1用户登陆窗口设计

    登录窗口的创建创建是依次单击FILE---NEW---WINDOWS,然后命名为w_login,(其他窗口创建类似,故不再累述)

 

在上图“确定”按钮的clicked事件中写入

stringpassword,is_password

password=sle_1.text

ifddlb_1.text=""then

      messagebox("提示","请选择操作级别")

      return

endif

selectpassword

into:

is_password

fromispassword

wherename=:

ddlb_1.text;

ifpassword=is_passwordthen

      open(w_main)

      ifddlb_1.text="高级管理员"then

             m_main.m_影碟管理.m_修改口令.enabled=enabled

      endif     

  close(w_login)

else

      messagebox("警告","口令有误,请重新输入")

      sle_1.text=""

endif

在上图“取消”按钮的clicked事件中写入(其他的“取消”事件都是关闭窗口,故不再累述)

close(parent)

 

4.1.2口令修改窗口设计

 

创建“修改密码”窗口并布局好控件后,在上图“确定”按钮的clicked事件中写入

stringis_password

selectpassword

into:

is_password

fromispassword

wherename=:

ddlb_1.text;

ifis_password=sle_old.textthen

      ifsle_new.text=sle_new2.textthen

             updateispassword

setpassword=:

sle_new.text

             wherename=:

ddlb_1.text;         

             messagebox("提示","修改成功!

")

             sle_old.text=""

             sle_new.text=""

             sle_new2.text=""

             return

      else

             messagebox("警告","两次输入新口令不一样")

             sle_new.text=""

             sle_new2.text=""

             return

      endif

else

      messagebox("警告","原口令错误")

      sle_old.text=""

      return

endif

在“取消”按钮写入(即将表单清空,类似功能不在累述)

sle_old.text=""

sle_new.text=""

sle_new2.text=""

4.2主窗口设计

4.2.1菜单设计

   登录窗口的创建创建是依次单击FILE---NEW---PBObject---MENU,然后命名为m_main,

 

如图所示,创建相应的菜单。

如果向实现某一菜单的功能(即跳转到相应的页面),则在clicked事件中写入

opensheet(w_add,w_main,6,original!

 

4.2.2应用程序主窗口设计

 

新建一窗口后,将菜单m_main添加进来即可。

4.3影碟管理模块设计

4.3.1影碟入库窗口设计

 

   创建“新片入库”窗口并布局好控件后,在上图“确定”按钮的clicked事件中写入

intis_number

doubleis_max,is_discid,ll_id

stringis_name,is_star

dateis_duydate

doubleis_price

ll_id=double(em_discid.text)

selectdiscid

into:

is_discid

fromVideoinfo

wherediscid=:

ll_id;

ifem_discid.text=""then

      messagebox("警告","请输入编号")

      em_discid.setfocus()

      return

endif

ifis_discid<>0then

      messagebox("警告","编号重复,请重新输入")

      em_discid.setfocus()

      return

endif

is_name=sle_name.text

ifis_name=""then

      messagebox("警告","请输入影碟名称")

      sle_name.setfocus()

      return

endif

is_number=integer(em_number.text)

ifis_number=0then

      messagebox("警告","请输入影片的盘数信息")

      em_number.setfocus()

      return

endif

ifsle_star.text=""then

      messagebox("警告","请输入主演信息")

      sle_star.setfocus()

      return

endif

is_star=sle_star.text

ifisdate(em_date.text)then

      is_duydate=date(em_date.text)

else

      messagebox("警告","请输入正确的日期格式")

      em_date.setfocus()

      return

endif

ifem_price.text=""then

      messagebox("警告","请输入价格")

      em_date.setfocus()

      return

endif

is_price=double(em_price.text)

 

insertintoVideoinfo

(discid, discname,number,star,duydate,price,ibstract)

values

(:

ll_id,:

is_name,:

is_number,:

is_star,:

is_duydate,:

is_price,:

mle_ibstract.text)

 

commit;

ifSQLCA.sqlcode<>0then

      rollback;

else

      commit;

endif

messagebox("警告","影片已经添加!

")

sle_name.text=""

sle_star.text=""

mle_ibstract.text=""

em_discid.text=string(ll_id+1)

4.3.2影片预览窗口设计

 

此功能直接用按片名查询窗口来实现,故在此不累述。

 

4.3.3旧片删除窗口设计

 

   创建“旧片删除”窗口并布局好控件后,在上图“删除”按钮的clicked事件中写入

dw_1.deleterow(dw_1.getrow())

在上图“修改”按钮的clicked事件中写入

dw_1.update()

4.4影碟租借模块设计

4.4.1租借影碟窗口设计

   创建“影碟租借”窗口并布局好控件后,在上图“租借”按钮的clicked事件中写入

intis_times

stringis_id,is_discid

is_id=sle_1.text

ifis_id=""then

      messagebox("警告","请用户编号!

")

      sle_1.setfocus()

      return

endif

is_discid=sle_2.text

ifis_discid=""then

      messagebox("警告","请影碟编号!

")

      sle_2.setfocus()

      return

endif

is_times=integer(sle_3.text)

ifsle_3.text=""then

      messagebox("警告","请租借天数!

")

      sle_3.setfocus()

      return

endif

 

insertintoLends

(Id,      Discid,     Times)

Values  (:

is_id,  :

is_discid,   :

is_times)

commit;

ifSQLCA.sqlcode<>0then

      rollback;

else

      commit;

endif

messagebox("提示","租借信息输入数据库中")

sle_1.text=""

sle_2.text=""

sle_3.text=""

4.4.2归还影碟窗口设计

   在“影碟租借”窗口跳到“影碟归还”,在上图“确定”按钮的clicked事件中写入(显示该用户的租借信息)

stringis_id

longrow,row_count

is_id=sle_4.text

ifis_id=""then

      messagebox("提示","请输入用户编号")

endif

dw_1.setfilter("Id='"+is_id+"'")

dw_1.filter()

dw_1.retrieve()

row_count=dw_1.rowcount()

ifrow_count<1then

      messagebox("提示","对不起,暂无此用户")

endif

在上图“归还”按钮的clicked事件中写入

intnow_row,ret

now_row=dw_1.getrow()

dw_1.deleterow(now_row)

ret=messagebox("提示","确定要归还?

",question!

yesno!

2)

ifret=2then

      dw_1.retrieve()

      return

else

      dw_1.update()

      return

endif

4.5查询模块设计

4.5.1按片名查询窗口设计

 

   创建“按片名查询”窗口并布局好控件后,在上图“查询”按钮的clicked事件中写入

stringlp_name

longrow,row_count

lp_name=sle_name.text

dw_1.setfilter("Discname='"+lp_name+"'")

dw_1.filter()

dw_1.retrieve()

row_count=dw_1.rowcount()

ifrow_count<1then

      messagebox("提示","对不起暂无此影片")

endif

 

4.5.2按主演查询窗口设计

 

   “按主演查询”与“按片名查询”实现方式相同,故在此不再累述。

 

4.5.3按日期查询窗口设计

 

   “按时间查询”与“按片名查询”实现方式相同,故在此不再累述。

(注:

PB和SQL2000Datatime类型不匹配)

 

4.6月租管理管理模块设计

4.6.1登记月租用户窗口设计

 

   创建“月租用户登记”窗口并布局好控件后,在上图“查询”按钮的clicked事件中写入

stringis_id,is_name,is_phone,lid

dateis_startdate,is_enddate

intis_deposit

is_id=em_id.text

 

select Id

into:

lid

fromUserinfo

whereid=:

is_id;

 

ifem_id.text=""orlid<>""then

      messagebox("警告","编号重复,请重新输入")

      em_id.setfocus()

      return

endif

ifsle_name.text=""orisnull(sle_name.text)then

      messagebox("警告","请输入用户姓名")

      sle_name.setfocus()

      return

endif

is_name=sle_name.text

ifsle_phone.text=""orisnull(sle_phone.text)then

      messagebox("警告","请输入联系电话")

      sle_phone.setfocus()

      return

endif

is_phone=sle_phone.text

ifem_deposit.text=""orisnull(em_deposit.text)then

      messagebox("警告","请输入押金")

      em_deposit.setfocus()

      return

endif

is_deposit=integer(em_deposit.text)

ifisdate(sle_date.text)then

      is_startdate=date(sle_date.text)

else

      messagebox("警告","请输入日期")

      sle_date.setfocus()

      return

endif

is_enddate=date(year(is_startdate),month(is_startdate)+1,day(is_startdate))

 

insertintoUserinfo

(Id,   Name,    Phone,   Register,   Deposit,     Returndate, Number)

 VALUES(

:

is_id, :

is_name, :

is_phone, :

is_startdate, :

is_deposit, :

is_enddate, 0);

 

 em_id.text=string(integer(is_id)+1)

 sle_name.text=""

 sle_phone.text=""

 sle_name.setfocus()

4.6.2删除月租用户窗口设计

 

创建“修改月租用户”窗口并布局好控件后,在上图“删除”按钮的clicked事件中写入

intnow_row,ret

now_row=dw_1.getrow()

dw_1.deleterow(now_row)

ret=messagebox("提示","是否要删除",question!

yesno!

2)

ifret=2then

      dw_1.retrieve()

      return

else

      dw_1.update()

      return

endif

在上图“修改”按钮的clicked事件中写入

intnow_row,ret

ret=messagebox("提示","是否修改",question!

yesno!

2)

ifret=1then

      dw_1.update()

      return

endif

 

5编译和发布

   完成以上设计和实施后,在数据库中装载一定量的数据,然后最终对整个程序运行一遍。

单击FILE---NEW---PROJECT---APPLICATIONWIZARD,然后按期默认就可以创建可执行文件了。

 

 

 

你还可以桌面创建一个快键方式,并改变成你想要的图标(如下图所示)。

 

 

6.总结和收获

   1.由于加入软件学院冰峰工作室,未能按正常安排时间上机,在此向老师表示歉意。

但此次课程设计都是我利用课下时间自己独立完成,并没有因为时间紧而放低要求。

   2.权限管理。

数据库用SQL2000实现,但未对其用户权限做过多设置,而是通过菜单来实现。

当以高级管理员身份登录时,其拥有全部的权限,所以菜单上的功能使对其可用的。

当以普通用户身份登录时,则某些菜单功能对其隐藏,通过这可以实现权限管理。

   3.数据类型不匹配。

SQL2000中Datatime与PB中不匹配,参阅相关的资料仍无法解决,所以有关Datatime变量未实现。

同时由于原例中租借管理功能未详细讲解实现过程,此版本为自己设计的实现。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 理学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1