1、C+音像出租管理系统设计一、问题分析与功能定义科学技术日新月异的进步,让人类生活发生了巨大的变化,计算机技术的飞速发展,使各行各业在计算机技术应用方面得到了广泛的普及和使用。信息化时代的到来成为不可拒的潮流,人类文明正在进入一个崭新的时代。因此,音像管理系统也以方便、快捷、费用低的优点正慢慢地进入人们的生活,将传统的管理方式彻底的解脱出来,提高效率,减轻工人人员以往繁忙的工作,减小出错的概率,使顾客可以花更多的时间在选择光盘上。同时,也使音像管理员可以有更多的时间了解顾客的需要和市场的需求。1、设计内容及要求设计一个音像出租管理系统,完成光盘管理和顾客管理的功能,并能对租借信息进行管理,要求完
2、成一下功能:租借音像光盘、归还音像光盘、光盘管理(增加光盘、删除光盘、查询光盘、修改光盘信息、输出租借光盘信息、输出所有光盘列表)、顾客管理(增加顾客、删除顾客、查询顾客信息、查询顾客信息借光盘数量、修改顾客信息、输出顾客列表)该项目是在Visual C+ 6.0的平台下用c+语言实现,创建对象,程序运行开始,打开文件并将其分别链入链表之中;程序结束关闭并保存文件。整体系统功能全部由链表实现。 2、模块图二、对象(类)设计及实现1、概要设计Customer顾客类、CDatabase 顾客库类、Gpan 光盘类、GDatabase 光盘库类class CDatabase /顾客库类int top
3、;/ 顾客记录指针Customer customMaxr;/ 顾客记录CDatabase() ;/构造函数,将customer.txt读到custom中void clear();/删除所有顾客信息int addcustomer(int n,char *na);/增添顾客信息Customer *query(int customerid);/按编号查找void disp();/输出所有顾客信息int Customernum();/记录顾客信息void customerdata();/顾客库维护CDatabase();/析构函数,将custom写入customer.txt文件中2、详细设计1)类的原
4、型描述class Customer /顾客类int tag;/删除标记1:已删0:未删 int no;/顾客编号 char name10;/顾客姓名 int borbookMaxbor; /所租借光盘 Customer() char *getname() /获取姓名 int gettag() /获取删除标记 int getno() /获取顾客编号 void setname(char na)/设置姓名 void delgpan() /设置删除标记 void addcustomer(int n,char *na); /增加顾客void borrowgpan(int gpanid); /出租操作in
5、t retgpan(int gpanid); /归还操作void disp(); /输出顾客信息class GDatabase /光盘库类int top;/光盘记录指针Gpan gpanMaxb;/光盘记录GDatabase() ;/构造函数,将gpan.txt读到gpan中void clear();/全删 int addgpan(int n,char *na);/增加光盘Book *query(int gpanid);/查找光盘void disp();/输出所有光盘信息void gpandata();/光盘库维护GDatabase();/析构函数,将gpan写入gpan.txt文件中clas
6、s Gpan /光盘类 int tag; /删除标记1:已删0:未删 int no; /光盘编号 char name20;/名称 int onshelf;/是否在架1:在架0:已借 Gpan() char *getname();/获取姓名 int getno();/获取光盘编号 int gettag(); /获取删除标记 void setname(char na);/设置名称 void delgpan();/删除光盘 void addgpan(int n,char *na);/增加光盘int borrowgpan();/出租操作 void retgpan();/归还操作 void disp()
7、;/输出光盘 3、核心控制设计1、在主函数中我们要做的操作包括: (1)建立1个Customer顾客类、1个CDatabase 顾客库类、1个Gpan光盘类、1个GDatabase 光盘库类(2)建立菜单界面。完成以下内容: 进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑光盘数据以及修改光盘数据、维护光盘的采购信息。添加、删除、查看顾客个人信息,浏览光盘信息。 能够对光盘基本信息、光盘采购信息、光盘的出租信息进行统计,统计的结果能够以表格的形式来表示。(3) 将光盘基本信息、光盘采购信息、光盘的出租信息存储在相应的文件中。(4) 系统界面友好,易操作。2、本程序应具
8、备的功能:A.添加、出租、归还功能: (1)添加顾客和光盘信息。 (2)出租尚在架的光盘。 (3)顾客归还的光盘。B.查找功能(1) 根据光盘的编号查找光盘信息。(2)根据顾客的编号查找顾客的信息。C.系统的操作(1) 系统在进入时,要有菜单提示;(2) 系统在用户退出时,有一定的提示。3、算法分析1)添加操作:(顾客信息的添加与光盘信息的添加类似) 包括两个部分,先通过输入设备输入信息,系统获取;然后添加入顾客数据库customer.txt文件中。获取信息void Customer:addcustomer(int n,char *na) /增加顾客 tag=0; no=n; strcpy(n
9、ame,na); for (int i=0;iMaxbor;i+) borgpani=0; int CDatabase:addcustomer(int n,char *na) /增添顾客信息 der *p=query(n); if (p=NULL) top+; customtop.addcustomer(n,na); cout顾客添加成功endl; return 1; return 0; 流程图:析构函数写入新顾客的编号跟姓名CDatabase:CDatabase() fstream file(customer.txt,ios:out); for (int i=0;i=top;i+) if(c
10、ustomi.gettag()=0) file.write(char *)&customi,sizeof(customi); else file.close(); 流程图:2)借书操作:利用for语句和if语句,通过判断光盘的borgpan的编号是否为0,来判断光盘是否未被租走或还没有被租完。void Customer:borrowgpan(int gpanid) /出租操作 for (int i=0;iMaxbor;i+) if (borgpani=0) borgpani=gpanid; return; 流程图:3)归还操作:利用for语句和if语句,通过判断关盘的borgpan的编号是否为
11、要归还的编号,来判断是否租出此光盘。int Customer:retgpan(int gpanid) /归还操作 for(int i=0;iMaxbor;i+) if(borgpani=gpanid) borgpani=0; return 1; else continue; return 0; 流程图:4)查找功能:利用for语句和if语句,寻找与要查询的编号相同的顾客编号或光盘编号,如果找到,向系统返回相应的编号,输出相应的信息。(顾客的查找与光盘查找类似)Customer *query(int customerid) /按编号查找 for (int i=0;i=top;i+) if(cus
12、tomi.getno()=customerid& customi.gettag()=0) return &customi; return NULL; 流程图:四、测试分析(一)、此系统存在问题1) 未设登录密码保护系统,是整个音像出租管理系统失去了一定的安全性;2) 程序运行界面 此界面运行时选择4有时会出现内存读取错误;1)当输入错的数据类型时 可能导致内存错误;2)读者、图书信息不完善; 3)命名不是很规范; 4)信息存储有限;五、源程序代码#include #include #include #include /输入/输出文件流类using namespace std;const int
13、 Maxr=100;/最多的顾客const int Maxb=100;/最多的光盘const int Maxbor=5;/每位顾客最多借五张光盘/顾客类,实现对顾客的信息的描述class Customer private: int tag; /删除标记 1:已删 0:未删 int no; /顾客编号 char name20; /顾客姓名 int borgpanMaxbor;/所租光盘 public: Customer() /构造函数 char *getname() /获取姓名 return name; int gettag() /获取删除标记 return tag; int getno() /
14、获取顾客编号 return no; void setname(char na) /设置姓名 strcpy(name,na); void delgpan() /设置删除标记 tag=1; void addcustomer(int n,char *na); /增加顾客 void borrowgpan(int gpanid); /出租操作 int retgpan(int gpanid); /归还操作 void disp(); /输出顾客信息 void print(); /输出原顾客信息 ; void Customer:addcustomer(int n,char *na) /增加顾客 tag=0;
15、no=n; strcpy(name,na); for (int i=0;iMaxbor;i+) borgpani=0; void Customer:borrowgpan(int gpanid) /出租操作 for (int i=0;iMaxbor;i+) if (borgpani=0) borgpani=gpanid; return; int Customer:retgpan(int gpanid) /归还操作 for(int i=0;iMaxbor;i+) if(borgpani=gpanid) borgpani=0; return 1; else continue; return 0; v
16、oid Customer:disp() /输出顾客信息 cout setw(5) no setw(10) name 租借光盘编号:; for (int i=0;iMaxbor;i+) if (borgpani!=0) cout borgpani |; coutendl; void Customer:print() /输出原顾客信息 cout 原顾客编号:setw(5) no t原顾客姓名: setw(10) name t租借光盘编号:; for (int i=0;iMaxbor;i+) if (borgpani!=0) cout borgpani |; coutendl; /顾客类库,实现建立
17、顾客的个人资料 class CDatabase private: int top; /顾客记录指针 Customer customMaxr;/顾客记录public: CDatabase(); /构造函数,将customer.txt读到custom中 void clear() /删除所有顾客信息 top=-1; int addcustomer(int n,char *na); /增添顾客信息 Customer *query(int customerid) /按编号查找 for (int i=0;i=top;i+) if(customi.getno()=customerid& customi.ge
18、ttag()=0) return &customi; return NULL; void disp(); /输出所有顾客信息 void print(int customerid) /输出顾客原有信息 for (int i=0;i=top;i+) if(customi.getno()=customerid& customi.gettag()=0) customi.print(); int customernum(); /得到顾客编号 void customerdata(); /顾客库维护 CDatabase(); / 析构函数,将custom写入customer.txt文件中;CDatabase
19、:CDatabase() /构造函数,将customer.txt读到custom中 Customer s; top=-1; fstream file(customer.txt,ios:in); while (1) file.read(char *)&s,sizeof(s); if (!file) break; top+; customtop=s; file.close(); CDatabase:CDatabase() / 析构函数,将custom写入customer.txt文件中 fstream file(customer.txt,ios:out); for (int i=0;i=top;i+
20、) if(customi.gettag()=0) file.write(char *)&customi,sizeof(customi); else file.close(); int CDatabase:addcustomer(int n,char *na) /增添顾客信息 Customer *p=query(n); if (p=NULL) top+; customtop.addcustomer(n,na); cout顾客添加成功endl; return 1; return 0; void CDatabase:disp() /输出所有顾客信息 for (int i=0;i=top;i+) cu
21、stomi.disp(); int CDatabase:customernum() return top; void CDatabase:customerdata() /顾客库维护 char choice; char cname20; /顾客姓名 int customerid; Customer *r; do cout nnttt欢迎进入顾客维护界面nntt 1 新 增ntt 2 更 改ntt 3 删 除ntt 4 查 找ntt 5 显 示ntt 6 全 删ntt 0 退 出 choice; switch (choice) case 1: cout customerid; cout cname
22、; addcustomer (customerid,cname); break; case 2: cout customerid; r=query(customerid); if (r=NULL) cout 该顾客不存在 endl; break; print(customerid); coutcustomerid; cout cname; r-addcustomer(customerid,cname); cout修改成功!endl; break; case 3: cout customerid; r=query(customerid); if (r=NULL) cout 该顾客不存在 delg
23、pan(); break; case 4: cout customerid; r=query(customerid); if (r=NULL) cout 该顾客不存在disp(); break; case 5: cout显示:endl; disp(); break; case 6: clear(); cout已删除!endl; break; default:if (choice!=0) cout输入错误,请从新输入:;break; while (choice!=0);/光盘类,实现对光盘的描述,光盘的编号,名称,租出,归还等class Gpanprivate: int tag;/删除标记 1:
24、已删 0:未删 int no;/光盘编号 char name20;/名称 int onshelf;/是否再架 1:再架 0:已借public: Gpan() char *getname() return name; /获取姓名 int getno() return no; /获取光盘编号 int gettag() return tag; /获取删除标记 void setname(char na)/设置名称 strcpy(name,na); void delgpan() tag=1;/删除光盘 void addgpan(int n,char *na)/增加光盘 tag=0; no=n; strcpy(name,na); onshelf=1; int borrowgpan()/出租操作 if (onshelf=1) onshelf=0; return 1; return 0; void retgpan()/归还操作 onshelf=1; void print() /输出光盘 cout 光盘原编号: setw(6) no t光盘原名称: setw(18) name t setw(10) (onshelf=1? 在架:已借) endl; void disp()/显示 cout setw(6) no setw(18) name setw(10) (onshelf=1? 在架:已借)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1