C++音像出租管理系统设计.docx

上传人:b****6 文档编号:7044779 上传时间:2023-01-16 格式:DOCX 页数:33 大小:236.73KB
下载 相关 举报
C++音像出租管理系统设计.docx_第1页
第1页 / 共33页
C++音像出租管理系统设计.docx_第2页
第2页 / 共33页
C++音像出租管理系统设计.docx_第3页
第3页 / 共33页
C++音像出租管理系统设计.docx_第4页
第4页 / 共33页
C++音像出租管理系统设计.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

C++音像出租管理系统设计.docx

《C++音像出租管理系统设计.docx》由会员分享,可在线阅读,更多相关《C++音像出租管理系统设计.docx(33页珍藏版)》请在冰豆网上搜索。

C++音像出租管理系统设计.docx

C++音像出租管理系统设计

一、问题分析与功能定义

科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。

信息化时代的到来成为不可拒的潮流,人类文明正在进入一个崭新的时代。

因此,音像管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使顾客可以花更多的时间在选择光盘上。

同时,也使音像管理员可以有更多的时间了解顾客的需要和市场的需求。

1、设计内容及要求

设计一个音像出租管理系统,完成光盘管理和顾客管理的功能,并能对租借信息进行管理,要求完成一下功能:

租借音像光盘、归还音像光盘、光盘管理(增加光盘、删除光盘、查询光盘、修改光盘信息、输出租借光盘信息、输出所有光盘列表)、顾客管理(增加顾客、删除顾客、查询顾客信息、查询顾客信息借光盘数量、修改顾客信息、输出顾客列表)

该项目是在VisualC++6.0的平台下用c++语言实现,创建对象,程序运行开始,打开文件并将其分别链入链表之中;程序结束关闭并保存文件。

整体系统功能全部由链表实现。

2、模块图

 

二、对象(类)设计及实现

1、概要设计

Customer顾客类、CDatabase顾客库类、Gpan光盘类、GDatabase光盘库类

classCDatabase//顾客库类

inttop;//顾客记录指针

Customercustom[Maxr];//顾客记录

CDatabase();//构造函数,将customer.txt读到custom[]中

voidclear();//删除所有顾客信息

intaddcustomer(intn,char*na);//增添顾客信息

Customer*query(intcustomerid);//按编号查找

voiddisp();//输出所有顾客信息

intCustomernum();//记录顾客信息

voidcustomerdata();//顾客库维护

~CDatabase();//析构函数,将custom[]写入customer.txt文件中

2、详细设计

1)类的原型描述

classCustomer//顾客类

inttag;//删除标记1:

已删0:

未删

intno;//顾客编号

charname[10];//顾客姓名

intborbook[Maxbor];//所租借光盘

Customer(){}

char*getname()//获取姓名

intgettag()//获取删除标记

intgetno()//获取顾客编号

voidsetname(charna[])//设置姓名

voiddelgpan()//设置删除标记

voidaddcustomer(intn,char*na);//增加顾客

voidborrowgpan(intgpanid);//出租操作

intretgpan(intgpanid);//归还操作

voiddisp();//输出顾客信息

classGDatabase//光盘库类

inttop;//光盘记录指针

Gpangpan[Maxb];//光盘记录

GDatabase();//构造函数,将gpan.txt读到gpan[]中

voidclear();//全删

intaddgpan(intn,char*na);//增加光盘

Book*query(intgpanid);//查找光盘

voiddisp();//输出所有光盘信息

voidgpandata();//光盘库维护

~GDatabase();//析构函数,将gpan[]写入gpan.txt文件中

classGpan//光盘类

inttag;//删除标记1:

已删0:

未删

intno;//光盘编号

charname[20];//名称

intonshelf;//是否在架1:

在架0:

已借

Gpan(){}

char*getname();//获取姓名

intgetno();//获取光盘编号

intgettag();//获取删除标记

voidsetname(charna[]);//设置名称

voiddelgpan();//删除光盘

voidaddgpan(intn,char*na);//增加光盘

intborrowgpan();//出租操作

voidretgpan();//归还操作

voiddisp();//输出光盘

3、核心控制设计

1、在主函数中我们要做的操作包括:

(1)建立1个Customer顾客类、1个CDatabase顾客库类、1个Gpan光盘类、1个GDatabase光盘库类

(2)建立菜单界面。

完成以下内容:

①进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑光盘数据以及修改光盘数据、维护光盘的采购信息。

添加、删除、查看顾客个人信息,浏览光盘信息。

②能够对光盘基本信息、光盘采购信息、光盘的出租信息进行统计,统计的结果能够以表格的形式来表示。

(3)将光盘基本信息、光盘采购信息、光盘的出租信息存储在相应的文件中。

(4)系统界面友好,易操作。

2、本程序应具备的功能:

A.添加、出租、归还功能:

(1)添加顾客和光盘信息。

(2)出租尚在架的光盘。

(3)顾客归还的光盘。

B.查找功能

(1)根据光盘的编号查找光盘信息。

(2)根据顾客的编号查找顾客的信息。

C.系统的操作

(1)系统在进入时,要有菜单提示;

(2)系统在用户退出时,有一定的提示。

3、算法分析

1)添加操作:

(顾客信息的添加与光盘信息的添加类似)

包括两个部分,先通过输入设备输入信息,系统获取;然后添加入顾客数据库customer.txt文件中。

㈠获取信息

voidCustomer:

:

addcustomer(intn,char*na)//增加顾客

{

tag=0;

no=n;

strcpy(name,na);

for(inti=0;i

borgpan[i]=0;

}

 

intCDatabase:

:

addcustomer(intn,char*na)//增添顾客信息

{

der*p=query(n);

if(p==NULL)

{

top++;

custom[top].addcustomer(n,na);

cout<<"顾客添加成功"<

return1;

}

return0;

}

流程图:

 

㈡析构函数写入新顾客的编号跟姓名

CDatabase:

:

~CDatabase()

{

fstreamfile("customer.txt",ios:

:

out);

for(inti=0;i<=top;i++)

{

if(custom[i].gettag()==0)

file.write((char*)&custom[i],sizeof(custom[i]));

else

file.close();

}

}

 

流程图:

2)借书操作:

利用for语句和if语句,通过判断光盘的borgpan的编号是否为0,来判断光盘是否未被租走或还没有被租完。

voidCustomer:

:

borrowgpan(intgpanid)//出租操作

{

for(inti=0;i

{

if(borgpan[i]==0)

{

borgpan[i]=gpanid;

return;

}

}

}

流程图:

3)归还操作:

利用for语句和if语句,通过判断关盘的borgpan的编号是否为要归还的编号,来判断是否租出此光盘。

intCustomer:

:

retgpan(intgpanid)//归还操作

{

for(inti=0;i

{

if(borgpan[i]==gpanid)

{

borgpan[i]=0;

return1;

}

else

continue;

}

return0;

}

流程图:

 

4)查找功能:

利用for语句和if语句,寻找与要查询的编号相同的顾客编号或光盘编号,如果找到,向系统返回相应的编号,输出相应的信息。

(顾客的查找与光盘查找类似)

Customer*query(intcustomerid)//按编号查找

{

for(inti=0;i<=top;i++)

if(custom[i].getno()==customerid&&

custom[i].gettag()==0)

return&custom[i];

returnNULL;

}

流程图:

四、测试分析

(一)、此系统存在问题

1)未设登录密码保护系统,是整个音像出租管理系统失去了一定的安全性;

2)程序运行界面

此界面运行时选择4有时会出现内存读取错误;

1)当输入错的数据类型时可能导致内存错误;

2)读者、图书信息不完善;

3)命名不是很规范;

4)信息存储有限;

五、源程序代码

#include

#include

#include

#include//输入/输出文件流类

usingnamespacestd;

constintMaxr=100;//最多的顾客

constintMaxb=100;//最多的光盘

constintMaxbor=5;//每位顾客最多借五张光盘

//顾客类,实现对顾客的信息的描述

classCustomer

{

private:

inttag;//删除标记1:

已删0:

未删

intno;//顾客编号

charname[20];//顾客姓名

intborgpan[Maxbor];//所租光盘

public:

Customer(){}//构造函数

char*getname()//获取姓名

{

returnname;

}

intgettag()//获取删除标记

{

returntag;

}

intgetno()//获取顾客编号

{

returnno;

}

voidsetname(charna[])//设置姓名

{

strcpy(name,na);

}

voiddelgpan()//设置删除标记

{

tag=1;

}

voidaddcustomer(intn,char*na);//增加顾客

voidborrowgpan(intgpanid);//出租操作

intretgpan(intgpanid);//归还操作

voiddisp();//输出顾客信息

voidprint();//输出原顾客信息

};

voidCustomer:

:

addcustomer(intn,char*na)//增加顾客

{

tag=0;

no=n;

strcpy(name,na);

for(inti=0;i

borgpan[i]=0;

}

voidCustomer:

:

borrowgpan(intgpanid)//出租操作

{

for(inti=0;i

{

if(borgpan[i]==0)

{

borgpan[i]=gpanid;

return;

}

}

}

intCustomer:

:

retgpan(intgpanid)//归还操作

{

for(inti=0;i

{

if(borgpan[i]==gpanid)

{

borgpan[i]=0;

return1;

}

else

continue;

}

return0;

}

voidCustomer:

:

disp()//输出顾客信息

{

cout<

[";

for(inti=0;i

if(borgpan[i]!

=0)

cout<

cout<<"]"<

}

voidCustomer:

:

print()//输出原顾客信息

{

cout<<"原顾客编号:

"<

"<

[";

for(inti=0;i

if(borgpan[i]!

=0)

cout<

cout<<"]"<

}

//顾客类库,实现建立顾客的个人资料

classCDatabase

{

private:

inttop;//顾客记录指针

Customercustom[Maxr];//顾客记录

public:

CDatabase();//构造函数,将customer.txt读到custom[]中

voidclear()//删除所有顾客信息

{

top=-1;

}

intaddcustomer(intn,char*na);//增添顾客信息

Customer*query(intcustomerid)//按编号查找

{

for(inti=0;i<=top;i++)

if(custom[i].getno()==customerid&&

custom[i].gettag()==0)

return&custom[i];

returnNULL;

}

voiddisp();//输出所有顾客信息

voidprint(intcustomerid)//输出顾客原有信息

{

for(inti=0;i<=top;i++)

if(custom[i].getno()==customerid&&

custom[i].gettag()==0)

custom[i].print();

}

intcustomernum();//得到顾客编号

voidcustomerdata();//顾客库维护

~CDatabase();//析构函数,将custom[]写入customer.txt文件中

};

CDatabase:

:

CDatabase()//构造函数,将customer.txt读到custom[]中

{

Customers;

top=-1;

fstreamfile("customer.txt",ios:

:

in);

while

(1)

{

file.read((char*)&s,sizeof(s));

if(!

file)break;

top++;

custom[top]=s;

}

file.close();

}

CDatabase:

:

~CDatabase()//析构函数,将custom[]写入customer.txt文件中

{

fstreamfile("customer.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(custom[i].gettag()==0)

file.write((char*)&custom[i],sizeof(custom[i]));

else

file.close();

}

intCDatabase:

:

addcustomer(intn,char*na)//增添顾客信息

{

Customer*p=query(n);

if(p==NULL)

{

top++;

custom[top].addcustomer(n,na);

cout<<"顾客添加成功"<

return1;

}

return0;

}

voidCDatabase:

:

disp()//输出所有顾客信息

{

for(inti=0;i<=top;i++)

custom[i].disp();

}

intCDatabase:

:

customernum()

{

returntop;

}

voidCDatabase:

:

customerdata()//顾客库维护

{

charchoice;

charcname[20];//顾客姓名

intcustomerid;

Customer*r;

do

{

cout<<"\n\n\t\t\t欢迎进入顾客维护界面\n\n\t\t1新增\n\t\t2更改\n\t\t3删除\n\t\t4查找\n\t\t5显示\n\t\t6全删\n\t\t0退出"<

cin>>choice;

switch(choice)

{

case'1':

cout<<"新增\n输入顾客编号:

";

cin>>customerid;

cout<<"输入顾客姓名:

";

cin>>cname;

addcustomer(customerid,cname);

break;

case'2':

cout<<"更改\n输入顾客编号:

";

cin>>customerid;

r=query(customerid);

if(r==NULL)

{

cout<<"该顾客不存在"<

break;

}

print(customerid);

cout<<"输入新的顾客编号:

";

cin>>customerid;

cout<<"输入新的顾客姓名:

";

cin>>cname;

r->addcustomer(customerid,cname);

cout<<"修改成功!

"<

break;

case'3':

cout<<"删除\n输入顾客编号:

";

cin>>customerid;

r=query(customerid);

if(r==NULL)

{

cout<<"该顾客不存在"<

break;

}

r->delgpan();

break;

case'4':

cout<<"查找\n读入顾客编号:

";

cin>>customerid;

r=query(customerid);

if(r==NULL)

{

cout<<"该顾客不存在"<

break;

}

r->disp();

break;

case'5':

cout<<"显示:

"<

disp();

break;

case'6':

clear();

cout<<"已删除!

"<

break;

default:

if(choice!

='0')cout<<"输入错误,请从新输入:

";break;

}

}while(choice!

='0');

}

//光盘类,实现对光盘的描述,光盘的编号,名称,租出,归还等

classGpan

{

private:

inttag;//删除标记1:

已删0:

未删

intno;//光盘编号

charname[20];//名称

intonshelf;//是否再架1:

再架0:

已借

public:

Gpan(){}

char*getname(){returnname;}//获取姓名

intgetno(){returnno;}//获取光盘编号

intgettag(){returntag;}//获取删除标记

voidsetname(charna[])//设置名称

{

strcpy(name,na);

}

voiddelgpan(){tag=1;}//删除光盘

voidaddgpan(intn,char*na)//增加光盘

{

tag=0;

no=n;

strcpy(name,na);

onshelf=1;

}

intborrowgpan()//出租操作

{

if(onshelf==1)

{

onshelf=0;

return1;

}

return0;

}

voidretgpan()//归还操作

{

onshelf=1;

}

voidprint()//输出光盘

{

cout<<"光盘原编号:

"<

"<

<<(onshelf==1?

"在架":

"已借")<

}

voiddisp()//显示

{

cout<

<<(onshelf==1?

"在架":

"已借")<<

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

当前位置:首页 > PPT模板 > 其它模板

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

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