1、胡婕(区块类)赵青荷(商家类)颜俊超20122734(协议类和菜单)链表的建立、读取、删除文件的读取(三个文件)(两个文件)类的定义、继承和派生一个基类、三个派生类一个基类、两个派生类一个基类、一个派生类系统调试文档整理(33%)(39%)(28%)所编程序行数757453889工作量百分比333%33.3%三、系统需求分析为了适应现在大型商场招商时所面临的巨大的工作量以及相关部门运转的混乱,本套商场招商管理系统应运而生。系统明确将商场招商分成三块模块,能有效缓解商场在招商时因为各种情况而产生的各种不明情况,减少不必要的经济损失以及人力资源的浪费,使得商场在招商时能够运转得更加顺利。在招商时,
2、大型的商场与一般专业的市场中心既存在某些相似之处,也有很大的区别。一般而言,特定的专业市场主要面向的商户群体为某一比较专业的客户群,而大型的商场则不同,现代的商业中心大多都是一个集大型的卖场,大型各类专业柜组,现代化的市场管理为一体的多功能,现代化的购物休闲中心。现代化的商场的经营理念都融合了比较先进的市场化思想,把顾客和厂商作为其最重要的资产,一切为顾客着想,为顾客做好一切,真诚与厂商合作。在运行上,实行大规模的经营,低成本运行,高速度运转,科学化管理,不断超越自我,向更优更好迈进。大型商场招商的需求有三点:a:为了积聚人气同时为了提升商场中心的形象,如何吸引一流品牌和商家入驻,以满足消费者
3、的各种购物需求。b:为了提高经济效益,如何最优并动态的进行市场中心各功能区域的设定及调整。c:为了留住厂商和消费者,与此同时又能继续吸引一批优秀的厂商,提供一流的服务和规范化的操作标准也是非常有必要的。为了适应以上的需求,招商系统也需满足三个需求:通过市场分析,项目定位,招商策略,建立一套行之有效的招商管理系统,以帮助市场中心吸引一流商业品牌的入驻。通过各种统计,分析,辅助决策等手段,帮助市场中心决策者在不断变化的市场情况下,不断动态变化和调整,以适应日新月异的市场需求。带有监督,管理,评估,反馈的机制为线索的诚信系统建立,以规范市场中心商户的经营,为消费者提供一个称心满意的消费场所。因此在我
4、们三个人在做这套商场招商管理系统时,将厂商的个人信息,商场区域的分配以及调整,与商家的协议各成一个类,各自管理,这样可以使得在招商管理时有条不紊,也就能功半事倍。四、总体设计功能概括l 根据用户身份不同进入不同操作界面。l 能实现用户根据账号和密码登录系统,且可以实现用户注册。l 管理员可以对已签协议,区块,商家信息进行录入,保存,查询,修改和删除,商家可以查询未出租区块信息和已签协议。详细说明信息录入: 对区块的信息录入 对商家的信息录入 对协议的信息录入 信息查询:管理员: 根据区块编号查询区块信息 根据商家姓名查询商家信息 根据区块编号或商家信息查询对应协议 商家:查询各种区块类型剩余所
5、有未出租的区块信息 查询自己已签订的协议信息删除: 根据区块编号删除文件中区块信息 根据商家姓名删除文件中商家信息 根据区块编号或商家姓名删除协议内容信息修改: 修改食品区块的清洁力度 修改奢侈品区块的保安个数 修改大型市场中区块附近其他区块的主营项目 修改各类区块的出租状态和价格 修改商家姓名 修改商家编号修改商家联系人电话,Email,网址信息保存: 根据用户选择确定是否保存数据到文件 2.类的描述:区块类: Block(区块类)double area; /面积double price; /价格char address20;/地址char Bnumber20;/编号char state20
6、; /区块状态Block();void changeprice(); /修改价格void changestate(); /修改状态void find(Block &p); /查询区块信息void searchno(Block & /查找未出租的区块信息void virtual show();/显示区块所有信息 LuxuryBlock奢侈品区类int guard; /保安个数LuxuryBlock();void show();void changeguard(); /修改保安个数public public publicFoodBlock食品区类char clean20; /清洁力度FoodBlo
7、ck();/信息显示void changeclean();/清洁力度修改MarketBlock大型市场区类char Mmanagement20; / 该大型市场中附近其他区主营的详细主营MarketBlock();void changeMmanagement();/修改保安个数商家类: Seller(基类) char snumberN;/商家编号char nameN;/商家负责人姓名char phoneN;/联系电话char managementN;/经营内容 char emailN;/电子邮箱Seller()/构造函数Void changename()/修改商家姓名Void changeph
8、one()/修改商家电话Void changemanage()/修改商家经营内容Void changemail()/修改商家邮箱Person数据成员:float loan ;/个体户在银行贷款额float profit;/个体户一年的大致盈利额函数成员:person();/构造函数以实现对个体户特有的属性的录入void judge();/商场对个体户的判断void changeloan();/修改个体户的银行贷款额void changeprofit();/修改个体户的年盈利额void scanp();/浏览个体户的所有信息Companychar siteN;/网址char otherN;/该企
9、业在商场经营的其他商品char creditN;/企业信用等级company();/构造函数以录入企业特有的信息void changesite();/修改企业的网址void changeother();/修改企业在商场经营的其他商品void changecredit();/修改企业的信用等级void scanc();/浏览企业的全部信息时间类: 时间类年(year),月(month),日(day)Date_in(读入现在的日期),showtime(显示日期)协议类: 时间类协议类派生商家编号(Snumber)、区块编号(Bnumber)租期(年)(renttime)租金(元/年)(rentmo
10、ney)付款方式(pway)收费方式(gway)日期(年月日)(year,month,day)agreement_in(初始化协议数据)、showagreement(显示协议内容)、operator=(agreement a)(重载运算符)、date_in(读入日期的函数)settime(修改日期)showtime(显示日期)3.各功能菜单介绍:struct manager char name10; char code7;/建立一个管理员结构体/struct accountchar name10;/用户名char idcard10;/身份证号char accnumber12;/账户char c
11、ode7;/密码struct account *next;/结构体自应用指针/建立一个用户的结构体struct account *readacc()FILE *fp;struct account *head;struct account *last,*p;if(fp=fopen(account_list,rb)=NULL)/判断文件是否存在,如果不存在就结束读取fp=fopen(wb);/如果文件无法打开,就以写读的方式打开,文件不存在就新建文件,文件存在则截取长度为0.return (NULL);last=(struct account *)malloc(sizeof(struct acco
12、unt);/动态分配一个struct account的指针空间last. if(!feof(fp)/判断是否读到文件末尾了 head=last;/设定好头的位置。fread(head,sizeof(struct account),1,fp);/从文件里面读取struct account长度的字节到head中。 else return (NULL); while(!feof(fp)/当文件没有结束继续读取数据入链表 p=(struct account *)malloc(sizeof(struct account);/动态分配一个struct account的指针空间p. fread(p,size
13、of(struct account),1,fp);/从文件里面读取struct account长度的字节到p中. last-next=p; last=p;/指针跳转实现结构体的连接成表。 p-next=NULL;/读完数据后最后的结构体中的指针为空。 fclose(fp);/关闭文件 return(head);/返回头指针/以下是输入密码void inputcode(char *mm)int i,j=0;char a7;for(i=0;i=0&ai9i!=6)printf(*/输入一个字符频幕上就打印一个* elseif(i!=6&ai!=8)|ai=8&i=0|(i=6&r=8)ai=0;i
14、=i-1;continue;if(ai=8&=0) ai=ai-1=i=i-2;b bai-1=strcpy(mm,a);/以下是创建一个账户void creataccount()FILE *fp;/文件指针int flag;/设置标识char mm6;/密码的临时存放空间struct account kaihu;/一个账户的结构体struct account *head,*p1,*p;/几个结构体指针head=readacc();/读取到文件的头指针p=head;/p指针指向头指针p1=&kaihu;coutkaihu.name;*【开户】*endl;loopacc1:请输入身份证号码: c
15、inkaihu.idcard;/读入身份证号码 flag=0; while(flag!=1&p!=NULL)/当标志flag不为1时并且p不是空的进行以下步骤if(strcmp(kaihu.idcard,p-idcard)!=0)/判断输入的身份证和已经注册了得用户的身份证是否有相同的p=p-next;elseflag=1;/如果有相同的,就把标志flag设为1if(flag=1)coutkaihu.accnumber;=NULL)if(strcmp(kaihu.accnumber,p-accnumber)!=0)/判断输入的账号和已经注册了得用户的账号是否有相同的对不起,您输入的账号已注册!
16、goto loopacc2;/输入注册账号do请输入一个六位数的密码:inputcode(mm);/输入密码 cout请再次输入一个密码:inputcode(kaihu.code);/再次输入密码if(strcmp(kaihu.code,mm)!=0)/判断两次输入密码是否相同两次输入密码不一致,请重新输入!Sleep(500);system(cls/清屏while(strcmp(mm,kaihu.code)!=0);/以上是设置密码 if(fp=fopen(ab)=NULL)/打开文件cannot open filenif(p1!fwrite(p1,sizeof(struct account
17、),1,fp); fclose(fp); cout=0)else flag=1;if(flag=1)int i=0;re_input_2: %sntt请输入密码:char mm7;if(strcmp(mm,p-code)!i+;if(i=3)printf(nnnt【对不起,您已经连续输错三次,为保障安全,请二十四小时后再试!】nnnnttsystem(pausereturn NULL;ntt密码输入错误,请重新输入!Sleep(1000);goto re_input_2;else nttt登录成功!elsennttt账号不存在!ntt是否继续(y/n)? if(getch()!y)return(NULL);Sleep(100);goto re_input;Sleep(1000);return(p);/菜单的设置/void menu0() cout* 1 管理员登陆 * 2 商家登陆 * 3 商家注册 * 4 退出程序 * 请输入选择void menu1()* 1 信息录入 2 信息查询 3 信息修改和删除 4 用户信息反馈 5 返回上一级目录 其他 退出程序 请输入选择/管理员登陆后的页面。/void menu1_1()cout1 商家,区块,协议信息录入2 返回上一级目录endl