武汉理工大学计算机影碟租赁租赁者管理课程设计.docx

上传人:b****0 文档编号:17975062 上传时间:2023-08-05 格式:DOCX 页数:56 大小:294.59KB
下载 相关 举报
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第1页
第1页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第2页
第2页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第3页
第3页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第4页
第4页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第5页
第5页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第6页
第6页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第7页
第7页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第8页
第8页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第9页
第9页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第10页
第10页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第11页
第11页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第12页
第12页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第13页
第13页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第14页
第14页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第15页
第15页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第16页
第16页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第17页
第17页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第18页
第18页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第19页
第19页 / 共56页
武汉理工大学计算机影碟租赁租赁者管理课程设计.docx_第20页
第20页 / 共56页
亲,该文档总共56页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

武汉理工大学计算机影碟租赁租赁者管理课程设计.docx

《武汉理工大学计算机影碟租赁租赁者管理课程设计.docx》由会员分享,可在线阅读,更多相关《武汉理工大学计算机影碟租赁租赁者管理课程设计.docx(56页珍藏版)》请在冰点文库上搜索。

武汉理工大学计算机影碟租赁租赁者管理课程设计.docx

武汉理工大学计算机影碟租赁租赁者管理课程设计

学号:

课程设计

 

题目

影碟租赁系统租赁者管理的设计与实现

学院

计算机科学与技术

专业

计算机科学与技术

班级

姓名

指导教师

 

 

 

计算机基础强化训练任务书

学生姓名:

专业班级:

计算机班

指导教师:

工作单位:

计算机科学与技术学院

题目:

初始条件:

理论:

学完计算机基础知识,掌握C++语言编程基础和VC开发平台的使用。

实践:

计算机科学系实验中心提供计算机及软件开发环境。

要求完成的主要任务:

(1)系统需求分析,得到系统的数据需求和功能需求,分析结果用表格记录。

(2)系统设计,包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。

至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。

(2)编制好程序后,设计若干测试用例,上机测试所设计的程序。

(4)设计报告按格式要求书写。

设计报告正文的内容应包括:

1)系统描述包括问题说明、数据需求和功能需求。

2)系统设计包括内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

3)系统测试包括测试用例的描述、测试方法和测试结果。

4)设计的特点、不足、收获和体会。

时间安排:

1、第20周(7月4日至7月8日)完成。

2、7月8日8:

00到计算机学院实验中心(三楼)检查程序、交课程设计报告、源程序(CD盘)。

指导教师签名:

年月日

系主任(或责任教师)签名:

年月日

 

课程设计报告书

1.问题描述

1.1问题描述

针对影像店影碟出租的管理,设计一个对租赁者进行管理的系统。

1.2基本要求

内存数据结构设计、数据文件设计、代码设计、输入/输出设计、用户界面设计、处理过程设计。

要求内存数据用链表组织,数据文件用文本文件,用户界面用字符界面。

至少实现数据记录的增加、修改、删除、查询(查询应能按不同数据项进行)。

1.3数据需求

经过对影像店的观察,最终确定租赁者的信息包括:

租赁者注册时间、租赁时间、对应时间的租赁影碟的名称、租赁影碟的数量、租赁押金、租赁者的编号。

如下表:

姓名

编号

注册时间

租赁数量

租赁影碟的信息

押金(元)

租赁时间

影碟名字

张三

0001

20110101

2

20110103

《哈利波特7》

50

20110509

《指环王3》

……

……

……

……

……

……

……

1.4功能需求

为实现对影碟租赁者的管理,本系统主要实现以下几个功能:

[1]增加租赁会员。

其中信息包括注册时间、租赁时间、对应时间的租赁影碟的名称、租赁影碟的数量、租赁押金、租赁者的编号。

[2]删除租赁会员。

将对应的会员的信息删除。

[3]修改会员的租赁信息。

对需要修改租赁信息的会员实现影碟数量的增减及相关租赁时间、影碟名字的修改。

[4]查询租赁信息。

设计的查询功能分为以下两种:

Ø按租赁者相关信息查询。

包括按照租赁者姓名查询和按照编号查询,若成功,则返回相关租赁信息,若失败,返回失败信息。

Ø按照租赁日期查询。

对输入的一个日期进行查询,查询结果为:

对应日期注册会员的数量、对应日期租赁影碟的信息(租赁者、租赁数量)。

[5]保存文件。

将内存的信息保存到外存储器上,实现信息的永久保存。

2.实现分析

(1)针对某个影像店的租赁者信息先建立一个链表,存储租赁者的信息:

注册时间、租赁时间、对应时间的租赁影碟的名称、租赁影碟的数量、租赁押金、租赁者的编号。

(2)对于已经建立的链表通过人机交互窗口进行相关的操作。

包括:

退出系统、查询租赁者、添加新租赁者、修改租赁数量、删除租赁者、查看所有租赁者、按日期查询、保存成文件。

(3)对于用户的各种选择操作进行相关的操作,并对用户的错误输入进行处理。

3.程序设计

3.1存储结构设计

本次课程设计采用链表来存储租赁者的相关信息,用到的存储结构如下:

typedefstruct

{charName[20];//租赁者姓名

intMount;//租借影碟数量

doublePrice;//押金

longintData;//注册日期

longintCDData[10];//租赁影碟的时间

longintNum;//租赁者编号

charCDName[CDNUMMAX][20];//租赁影碟的名称

}members;//结构体memember,每个结点的内容

typedefstructnode{

membersdata;

node*next;

}LNode,*LinkList;//结构体LNode,链表的结点

3.2主要算法设计

3.2.1程序主要函数原型及功能

[1]主要函数原型及功能:

LinkListCreat_LinkList()

功能:

创建一个空链表,并返回链表的头结点。

intequal(chara[],charb[])

功能:

判断两个字符数组是否相等函数。

voidAdd_LinkList(LinkListH)

功能:

添加新的租赁者信息,信息包括:

注册时间、租赁时间、对应时间的租赁影碟的名称、租赁影碟的数量、租赁押金、租赁者的编号;并输出租赁会员的总数。

voidRevise_LinkList(LinkListH)

功能:

修改租赁人的租赁信息。

首先需要用户输入需要修改信息的人数,如果人数大于已经注册的会员数,则会提示出错信息,并让用户重新输入;在正确输入后,用户可以输入相关租赁者姓名,并修改其租赁信息,如:

张三原本租赁一张影碟,现在又租借了1张影碟,将这张影碟的租赁信息增加到张三的租赁信息中。

voidDel_LinkList(LinkListH)

功能:

根据用户输入的需要删除的租赁者姓名,完成删除该租赁者的租赁信息,并返回剩余租赁者的数量。

LinkListSearch(LinkListH)

功能:

按照用户的选择:

按姓名查找和按编号查找,完成对相关信息的查找功能。

voidSearch_Time(LinkListH)

功能:

按日期查询租赁信息。

包括对于用户输入的日期,查询该日期的注册人数和租赁影碟的信息;如20110101,有一个人注册,没人租借影碟;20110109,租赁影碟1张:

《哈利波特7》,租赁者李四,押金20等。

voidbrowsing(LinkListH)

功能:

浏览所有租赁者的租赁信息。

voidPrintff(LinkListp)

功能:

输出租赁者的信息。

voidWriteCDdata(LinkListH)

功能:

将主存中的链表信息以文本文件的形式存储到外存储器中。

voidmain()

功能:

实现人机交互,提供用户选择相关操作。

3.2.2各函数的实现

(1)创建一个空链表,并返回头指针:

函数LinkListCreat_LinkList()的实现:

LinkListCreat_LinkList()

{

LinkListH;

H=(LinkList)malloc(sizeof(LNode));

if(H)

H->next=NULL;

returnH;

}

(2)判断两个字符数组是否相等函数

函数intequal(chara[],charb[])的实现:

intequal(chara[],charb[])//定义一个判断两个字符数组是否相等函数

{

inti=0,j;

while(a[i]!

='\0'||b[i]!

='\0')

{

j=0;

if(a[i]==b[i])

{

i++;

j=1;

}

else

break;

}

returnj;//字符串比较,返回值非零相等,零不相等

}

(3)添加租赁者

Ø使用尾插法插入链表的结点,结点信息包括:

租赁者注册时间、租赁时间、对应时间的租赁影碟的名称、租赁影碟的数量、租赁押金、租赁者的编号。

Ø添加租赁者信息voidAdd_LinkList(LinkListH)的实现:

voidAdd_LinkList(LinkListH)//添加新的租赁者信息

{

LinkListp,q,temp,r;

intk=0,i=0,j=1,n,count=0,x;

charname[20],name1[20];

floatprice=0.0;

longintdata,n1,cddata;

do

{

printf("请输入需要增加租赁者数量:

");

scanf("%d",&k);

if(k==0)return;

if(H->next==NULL)q=H;

else

{

temp=H->next;

while(temp->next)

{temp=temp->next;}

q=temp;

}

while(j<=k)

{

p=(LinkList)malloc(sizeof(LNode));

if(!

p)

{

printf("申请空间失败!

\n");

return;

}

else

{

q->next=p;

p->next=NULL;

}

do

{

printf("请输入第%d个租赁者的姓名:

",j);

scanf("%s",&name);

printf("请输入租借数目,押金,注册时间,租赁者编号例如:

350.0201007011\n");

scanf("%d%f%ld%ld",&n,&price,&data,&n1);

//把新信息赋给新结点

strcpy(p->data.Name,name);

p->data.Mount=n;

p->data.Price=price;

p->data.Data=data;

p->data.Num=n1;

if(n>0)

{

while(i

{

printf("请输入要增加的第%d个影碟的信息:

\n",i+1);

printf("请输入增加租赁日期:

");

scanf("%d",&cddata);

p->data.CDData[j+i-1]=cddata;

printf("请输入对应的影碟名字:

");

scanf("%s",name1);

strcpy(p->data.CDName[j+i-1],name1);

i++;

}

}

i=0;

}while(n<=0||price<=0||n1<=0||data<=0);

printf("新会员添加成功!

\n");

j++;

q=p;

}

j=1;

r=H->next;

while(r)

{

count++;

r=r->next;

}

printf("此时共有%d个注册会员\n",count);

count=0;

printf("继续添加8;其他数字退出添加\n请输入:

");

scanf("%d",&x);

}while(x==8);

}

(4)修改租赁者的租赁信息

Ø首先提示用户选择相应的修改方式:

按姓名修改信息、按编号修改信息。

Ø根据用户选择的修改方式,输入要修改租赁信息的租赁者名字或编号,进行查找,若查找成功,则修改相关租赁信息,同时对租借数量进行判断是否超过最大租借限度;查找失败,返回失败信息。

Ø显示哈希表的函数voidRevise_LinkList(LinkListH)的实现:

voidRevise_LinkList(LinkListH)//修改租赁人的租赁信息

{

LinkListp,q;

intk=0,k2=1,mount=0,i=0,j=0,count=0,x,m,n,u,v;

charname[20],name1[20];

do

{

printf("请输入需要修改信息的租赁者数量:

");

scanf("%d",&k);

q=H->next;

while(q)

{

count++;

q=q->next;

}

while(k>count)

{

printf("你输入的修改人数大于注册数量!

");

printf("请重新输入:

");

scanf("%d",&k);

}

p=H;

do

{

printf("1按照姓名修改\t2按照编号修改\n请输入:

");

scanf("%d",&m);

if(m!

=1&&m!

=2)printf("你的输入有误!

请重新输入!

");

}while(m!

=1&&m!

=2);

if(m==1)

{

printf("请输入要修改信息的租赁者姓名:

");

scanf("%s",&name);

while(p->next)

{

if(equal(p->next->data.Name,name)==1)

{

k=0;

break;

}

else

p=p->next;

}

}

if(m==2)

{

printf("请输入要修改信息的租赁者编号:

");

scanf("%d",&n);

while(p->next)

{

if(p->next->data.Num=n)

{

k=0;

break;

}

else

p=p->next;

}

}

if(k==0)//修改租借数量

{

printf("会员中有记录!

\n请输入修改租借数量:

");

scanf("%d",&mount);

j=p->next->data.Mount;

p->next->data.Mount=p->next->data.Mount+mount;

while(p->next->data.Mount)

{

if(p->next->data.Mount>10)

{

printf("租借数量超出上限!

\n请重新输入修改租借数量:

");

scanf("%d",&mount);

p->next->data.Mount=p->next->data.Mount+mount;

}

elsebreak;

}

if(mount>0)

{

while(i

{

printf("请输入要增加的第%d个影碟的信息:

\n",i+1);

printf("请输入租赁日期:

");

scanf("%d",&p->next->data.CDData[j+i]);

printf("请输入对应的影碟名字:

");

scanf("%s",name1);

strcpy(p->next->data.CDName[j+i],name1);

i++;

}

}

if(mount<0)

{

printf("输入修改租借数量为负,既需要删除租赁的影碟!

\n");

while(i<0-mount)

{

do

{

printf("1按影碟名字修改\t2按租赁日期修改\n请输入:

");

scanf("%d",&u);

if(u!

=1&&u!

=2)printf("你的输入有误!

请重新输入!

");

}while(u!

=1&&u!

=2);

if(u==1)

{

printf("请输入要删除影碟名字:

");

scanf("%sd",&name1);

inth=0;

while(h

{

if(equal(p->data.CDName[h],name1)==1)

{

while(h

{

strcpy(p->data.CDName[h],p->data.CDName[h+1]);

p->data.CDData[h]=p->data.CDData[h+1];

h++;

}

}

h++;

}

}

if(u==2)

{

printf("请输入要删除影碟的租赁日期:

");

scanf("%d",&v);

inth=0;

while(h

{

if(p->data.CDData[h]==v)

{

while(h

{

strcpy(p->data.CDName[h],p->data.CDName[h+1]);

p->data.CDData[h]=p->data.CDData[h+1];

h++;

}

}

h++;

}

}

i++;

}

}

i=0;

printf("修改成功!

\n");

}

elseprintf("没有相应的会员!

\n");

printf("继续修改8;其他数字退出修改\n请输入:

");

scanf("%d",&x);

}while(x==8);

}

(5)删除某些租赁者的信息

Ø首先提示用户选择相应的删除方式:

按姓名删除信息、按编号删除信息。

Ø根据用户选择的删除方式,输入要删除租赁信息的租赁者名字或编号,进行查找,若查找成功,则删除相关租赁信息,同时对租借者数量进行减操作;查找失败,返回失败信息。

Ø删除租赁者信息函数voidDel_LinkList(LinkListH)的实现:

voidmain()

{charch1;

InitNameList();

CreateHashList();

do

{printf("D.显示哈希表\nF.查找\nQ.退出\n请选择:

");

cin>>&ch1;

switch(ch1)

{

case'D':

Display();cout<

case'F':

FindList();cout<

case'Q':

exit(0);

}

cout<<"comeon!

(y/n):

";

cin>>&ch1;

}while(ch1!

='n');

}

(6)租赁信息的查找

Ø首先提示用户选择相应的查找方式:

按姓名查找信息、按编号编号信息。

Ø根据用户选择的查找方式,输入要查找租赁信息的租赁者名字或编号,进行查找,若查找成功,则输出相关租赁信息;查找失败,返回失败信息。

Ø查找租赁者信息函数LinkListSearch(LinkListH)的实现:

LinkListSearch(LinkListH)//查找功能函数定义

{

intk1,x;

LinkListp;

charname[20];

longintnum;

do

{

p=H;

printf("请选择:

\t1,按租赁者姓名查询\t2,按租赁者编号查询\t0,退出查询\n");

printf("请选择:

");

scanf("%ld",&k1);

if(k1==1)//按租赁者姓名查询

{

printf("请输入租赁者姓名:

");

scanf("%s",name);

while(p)

{

if(equal(p->data.Name,name)==1)//查找租赁者姓名

{

printf("查找成功!

\n");

Printff(p);

break;

}

else

p=p->next;

}

if(!

p)

{

printf("查找失败,未注册!

\n");

}

}

if(k1==2)//按租赁者编码查询

{

printf("请输入租赁者编码(数字):

");

scanf("%ld",&num);

while(p)

{

if(p->data.Num==num)

{

printf("查找成功!

\n");

Printff(p);

break;

}

else

p=p->next;

}

if(!

p)

{

printf("查找失败,未注册!

\n");

}

}

if(k1==0)return(NULL);

printf("继续查找8;其他数字退出查找\n请输入:

");

scanf("%d",&x);

}while(x==8);

returnp;

}

(7)按日期查找租赁信息

Ø根据用户输入的日期,进行查找,若查找到相关日期有会员注册或者有影碟租赁出去,则返回相关注册信息或者租赁信息

Ø按日期查找函数voidSearch_Time(LinkListH)的实现:

voidSearch_Time(LinkListH)//按日期查询租赁信息

{

LinkListp;

longinttime;

inti=0,x,j=0,k=0;

do

{

p=H;

printf("请输入日期(格式):

");

scanf("%ld",&time);

while(p)//遍历查找

{

if(p->data.D

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2