商店管理系统.cpp
上传用户:scshmc
上传日期:2022-03-20
资源大小:117k
文件大小:58k
源码类别:

百货/超市行业

开发平台:

Visual C++

  1. //mymain.cpp
  2. #include<iostream>
  3. #include<conio.h>
  4. #include<string>
  5. #include<ctype.h>                                                  
  6. #include<stdio.h>
  7. #include<time.h>
  8. #include<iomanip>
  9. using namespace std;
  10. template <typename T>
  11. void addback(T *&p,T *&t)                           //模板函数
  12. {
  13. p->next=t;
  14. p=t;
  15. p->next=NULL;
  16. }
  17. //////////////////////////////////////////////////////////
  18. //mygoods
  19. class ware                                   // 抽象类        商品基本信息
  20. {
  21. protected:
  22. char *warename ;                      //名称
  23. int amount;                              //数量
  24. char* number;                              //编号
  25. char *manufacturer;                   //厂商信息
  26. char *describe ;                      //商品描述
  27.     char * date;               //时间
  28. char *sortname;                   //类别
  29. float consultprice;                   //参考售货价
  30. public:
  31. ware (){};                                         
  32. ware( char *,int , char* , char *, char *, char* , char *) ;       //初始化
  33. virtual ~ware(){delete []warename;delete []number;delete []manufacturer;delete []describe;delete []date;} //虚析构
  34. char *getwarename(){return (warename+2);}                    //获取名称
  35. void setwarename(char *aa){warename=new char[strlen(aa)+1];strcpy(warename,aa);}    //重置名称
  36. int getamount(){return amount;}                          //获取数量
  37. void setconsultprice(double nnn){consultprice=nnn;}      //设置参考售货价
  38. float getconsultprice(){return consultprice;}           //返回参考售货价
  39. char* getnumber(){return (number+2);}                           //获取编号
  40.     void setnumber(char*cc){number=new char[strlen(cc)+1];strcpy(number,cc);}  //重设编号
  41. char *getmanfacturer(){return (manufacturer+2);}               //获取厂家信息
  42. void setmanufacturer(char *dd){manufacturer=new char[strlen(dd)+1];strcpy(manufacturer,dd);}  //重设厂家信息
  43. char *getdescribe(){return (describe+2);}                       //获取商品描述
  44. void setdescribe(char *ee){describe=new char[strlen(ee)+1];strcpy(describe,ee);} //重设商品描述
  45.     char * getdate(){return (date+2);}                                //获取时间
  46. void setdate(char *ff){date=new char[strlen(ff)+1];strcpy(date,ff);}   //重设时间
  47.     char *getsortname(){return (sortname+2);}                         //获取类别
  48. void setsortname(char *gg){sortname=new char[strlen(gg)+1];strcpy(sortname,gg);}//重设类别
  49.     virtual void setamount(int)=0;                  //重设数量
  50.     virtual void setprice(double)=0;                 //纯虚 置价格
  51.     virtual float getprice()=0;                          // //纯虚 获取价格
  52. virtual void sethandle(char*)=0;                          //纯虚 设置经手人
  53. virtual char *gethandle()=0;                  //纯虚  返回经手人   
  54.     ware *next;                                                   //增加指针成员
  55. };
  56. ware::ware( char *a,int b, char* c,char *d, char *e, char* f, char *g)
  57. {
  58. warename=new char[strlen(a)+1];
  59. strcpy(warename,a);
  60. amount=b;
  61. number=new char[strlen(c)+1];
  62. strcpy(number,c);
  63. manufacturer=new char[strlen(d)+1];
  64. strcpy(manufacturer,d);
  65. describe=new char[strlen(e)+1];
  66. strcpy(describe,e);
  67. date=new char[strlen(f)+1];
  68. strcpy(date,f);
  69. sortname=new char[strlen(g)+1];
  70. strcpy(sortname,g);
  71. }
  72. ////////////////////////////////////////////////////////////////////////////////////////////////
  73. class stocklist:public ware                                     // 具体类  进货单
  74. {
  75. protected :
  76. char *handle;
  77. char *listname;                                              //单名
  78. float price;
  79. public :
  80. stocklist(){};
  81. stocklist(char *aa,int bb,char* cc,char *dd,char *ee,char* ff,char *gg,char* hh):ware( aa, bb, cc, dd, ee,ff, gg){listname=new char[strlen(hh)+1];strcpy(listname,hh);}
  82.     ~stocklist(){delete []listname;delete []sortname;delete[]handle;}
  83. void sethandle(char *id){handle=new char[strlen(id)+1];strcpy(handle,id);}      //用id记录经手人
  84.     virtual void setamount(int aaaa) {amount=aaaa;}                 //重设数量
  85.     void setprice(double m){price=m;}                                    //设置进货价格
  86. float getprice(){return price;}                                    //返回进货 价格
  87. char *gethandle(){return(handle);}                                // 返回经手人
  88. };
  89. ///////////////////////////////////////////////////////////////////////////////////
  90. class sellgoodslist:public ware                                     // 具体类  售货单
  91. {
  92. protected :
  93. char *handle;
  94. char *listname;                                               //单名
  95. float price;
  96. public :
  97. sellgoodslist(){};
  98. sellgoodslist(char *aa,int bb,char* cc,char *dd,char *ee,char* ff,char *gg,char* hh):ware( aa, bb, cc, dd, ee,ff, gg){listname=new char[strlen(hh)+1];strcpy(listname,hh);}
  99.     ~sellgoodslist(){delete []listname;delete []sortname;delete[]handle;}
  100.     void sethandle(char *id){handle=new char[strlen(id)+1];strcpy(handle,id);}      //用id记录经手人
  101.     virtual void setamount(int aaaa) {amount=aaaa;}                 //重设数量
  102.     void setprice(double m){price=m;}                                    //设置参考售价格
  103. float getprice(){return price;}                                       //返回参考售价格
  104.     char *gethandle(){return(handle);}                                // 返回经手人
  105.     
  106. };
  107. ///////////////////////////////////////////////////
  108. ///myemployee
  109. class field                        //抽象类,   基本信息
  110. {
  111. protected:
  112. char * name;                     // 姓名
  113. int sex;                         //性别  男为1女为0
  114. char * cardnumber;                    // 身份编号
  115. char *individuallike;                 //个人爱好
  116. char * birthday;                      //  个人生日
  117. int degree;                           //学位  0为专科1为本科2为硕士3为其他
  118.     char * jointtime;                          //加入时间
  119. char *password;                      //登陆密码初始为身份编号
  120. public:
  121. field(){};
  122. field( char *a,int b, char * c, char *d, char * e,int f, char *g);
  123. ~field(){delete[]name;delete[]cardnumber;delete[]individuallike;delete[]birthday;delete[]jointtime;delete[]password;}    
  124. char *getname(){return name+2;}              //返回姓名
  125. char *getcardnumber(){return (cardnumber+2);}         //返回身份编号
  126.     void setname(char *aa){name=new char[strlen(aa)+1];strcpy(name,aa);}    //重设姓名
  127. void setsex(int bb){sex=bb;}                                         //重设性别
  128. void setcardnumber(char *cc){cardnumber=new char[strlen(cc)+1];strcpy(cardnumber,cc);}  //重设编号
  129. void setindividuallike(char *dd){individuallike=new char[strlen(dd)+1];strcpy(individuallike,dd);}  //重设个人爱好
  130. void setbirthday(char *ee){birthday=new char[strlen(ee)+1];strcpy(birthday,ee);}                 //重设生日
  131. void setdegree(int ff){degree=ff;}                              //重设学位
  132. void setjointtime(char *gg){jointtime=new char[strlen(gg)+1];strcpy(jointtime,gg);}       //重设加入时间
  133.     char *getpassword(){return(password+2);}         //返回密码
  134. void setpassword(char *aaa){password=new char[strlen(aaa)+1];strcpy(password,aaa);}   //重设密码
  135. virtual void setplace(int )=0;           //设置职位
  136. virtual void printfield() =0;                                //打印基本信息
  137. virtual  void printpayslip(ware *,ware * )=0;                  //打印工资单
  138. virtual float getscale1()=0;                                   //返回 奖金比例
  139. virtual void setscale(float)=0;                       //设置 奖金比例
  140. field *next;
  141. };
  142. field::field( char *a,int b,char * c, char *d, char * e,int f, char *g)
  143. {
  144. name=new char[strlen(a)+1];
  145. strcpy(name,a);
  146. sex=b;
  147. cardnumber=new char[strlen(c)+1];
  148.     strcpy(cardnumber,c);
  149. individuallike=new char[strlen(d)+1];
  150. strcpy(individuallike,d);
  151. birthday=new char[strlen(e)+1];
  152. strcpy(birthday,e);
  153. degree=f;
  154. jointtime=new char[strlen(g)+1];
  155. strcpy(jointtime,g);
  156. password=new char[strlen(c)+1];
  157. strcpy(password,cardnumber);                                 //登陆密码初始为身份编号
  158. }
  159. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  160. class staff:public field                                       //具体类   员工级别 
  161. {  
  162. protected:                                                       
  163. int place;                                                  //1为售货员0为仓库管理员 2为经理
  164. public:
  165. static float scale1;                            //静态奖金比率
  166. staff(){};
  167. staff(char *aa,int bb,char* cc,char *dd,char*ee,int ff,char* gg):field(aa,bb,cc,dd,ee,ff,gg){};
  168. ~staff(){};
  169. void setplace(int hh){place=hh;}          //设置职位
  170. void setscale(float oo){scale1=oo;}     //设置员工奖金比例
  171. int getplace(){return place;}               //返回职位
  172. void printfield();
  173.     void  printpayslip(ware *firstgoods,ware *sellfirstgoods) ;
  174. float getscale1(){return scale1;}       //虚,返回奖金比例
  175. };
  176. float staff::scale1 =0.005;
  177. void staff::printfield()
  178. {
  179. cout<<setiosflags(ios::left)<<setw(8)<<(name+2);
  180. if(sex==1)cout<<setw(5)<<"男";
  181. else cout<<setw(5)<<"女";
  182. cout<<setw(10)<<(cardnumber+2)<<setw(15)<<(individuallike+2)<<setw(10)<<(birthday+2);
  183. if(degree==0)cout<<setw(5)<<"专科";
  184. if(degree==1)cout<<setw(5)<<"本科";
  185. if(degree==2)cout<<setw(5)<<"硕士";
  186. if(degree==3)cout<<setw(5)<<"其他";
  187. cout<<setw(10)<<(jointtime+2);
  188. if(place==1)cout<<setw(10)<<"售货员"<<endl;
  189. if(place==0)cout<<setw(10)<<"仓库管理员"<<endl;
  190. if(place==2)cout<<setw(10)<<"经理"<<endl;
  191. }
  192. void staff::printpayslip (ware *firstgoods,ware *sellfirstgoods)  //打印工资单的实现版本返回员工工资
  193. {
  194. if(this->getplace ()==1)
  195. {float tatal=0;
  196. ware *ptr=sellfirstgoods;
  197. while(ptr!=NULL)
  198. {if(strcmp(this->getname (),ptr->gethandle ())==0)
  199. tatal+=((ptr->getamount ())*(ptr->getprice ()));
  200. ptr=ptr->next ;
  201. }
  202. cout<<setiosflags(ios::left)<<setw(10)<<"姓名"<<setw(25)<<"工资单=基本工资+奖金"<<endl;
  203.     cout<<setiosflags(ios::left)<<setw(10)<<(name+2)<<setw(6)<<"1000"<<"++"<<tatal*scale1<<"=="<<(1000+tatal*scale1)<<endl;
  204. }
  205. if(this->getplace ()==0)
  206. {float tatal=0;
  207. ware *ptr=firstgoods;
  208. while(ptr!=NULL)
  209. {if(strcmp(this->getname (),ptr->gethandle ())==0)
  210. tatal=((ptr->getamount ())*(ptr->getprice ()));
  211. ptr=ptr->next ;
  212. }
  213. cout<<setiosflags(ios::left)<<setw(10)<<"姓名"<<setw(25)<<"工资单=基本工资+奖金"<<endl;
  214.     cout<<setiosflags(ios::left)<<setw(10)<<(name+2)<<setw(6)<<"1000"<<"++"<<tatal*scale1<<"=="<<(1000+tatal*scale1)<<endl;
  215. }
  216. }
  217. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  218. class manager:public staff
  219. {protected:
  220. public:
  221. manager(){};
  222. manager(char *aaa,int bbb,char* ccc,char *ddd,char* eee,int fff,char* ggg):staff(aaa,bbb,ccc,ddd,eee,fff,ggg){};
  223. float getscale1(){return scale2;}       //虚,返回奖金比例
  224. void printpayslip(ware *,ware * );
  225.     void setscale(float ooo){scale2=ooo;}     //设置经理奖金比例
  226. ~manager(){};
  227. static float scale2;                                      //静态奖金比率
  228. };
  229. float manager::scale2=0.03;
  230. void  manager::printpayslip (ware *firstgoods,ware *sellfirstgoods)              //打印工资单的实现版本返回经理工资
  231. { float tatal=0;
  232. ware *ptr=firstgoods;
  233. while(ptr!=NULL)
  234. {tatal+=((ptr->getamount ())*(ptr->getprice ()));
  235. }
  236. ptr=sellfirstgoods;
  237. while(ptr!=NULL)
  238. {tatal+=((ptr->getamount ())*(ptr->getprice ()));
  239. }
  240. cout<<setiosflags(ios::left)<<setw(10)<<"姓名"<<setw(25)<<"工资单=基本工资+奖金"<<endl;
  241. cout<<setiosflags(ios::left)<<setw(10)<<(name+2)<<setw(35)<<"1000"<<"++"<<tatal*scale2<<"=="<<(1000+tatal*scale2)<<endl;
  242. }
  243. /////////////////////////////////////////////////////////////////////////////////////////////////
  244. ////////////////////////////////////////////////////////////////////////////////
  245. void run();                                                      //界面函数
  246. void landing(char *&mainhandle,field *&firstemployee,int &flag0);                                                //登陆验证  函数
  247. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  248. void addnewemployee(field *&firstemployee,field *&lastemployee) ;                  //增加员工信息
  249. void cancelstaff(field *&firstemployee,field *&lastemployee) ;                         //删除员工信息
  250. void searchstaff(field *&firstemployee,field *&lastemployee) ;                    //搜索员工信息
  251. void chancestaff(field *&firstemployee,field *&lastemployee) ;                         //修改员工信息
  252. void scanstaff(field *&firstemployee) ;                              //浏览员工信息
  253. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  254. void addnewgoods(ware *&firstgoods,ware *&lastgoods);                         //增加新进商品并生成进货单
  255. void cancelappointgoods(ware *&firstgoods,ware *&lastgoods);               //删除指定商品
  256. void searchappointgoods(ware *&firstgoods);                        //搜索指定商品
  257. void chanceappintgoods(ware *&firstgoods);                           //修改指定商品
  258. void scanallgoods(ware *&firstgoods);                         //浏览所有商品
  259. //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  260. void sellappointgoods(ware *&firstgoods,ware *&sellfirstgoods,ware *&selllastgoods);//售出指定商品并生成售货单
  261. void sellgoodstaxis(ware *&sellfirstgoods);                                 //售出商品排行
  262. void ownreportcard(ware *&sellfirstgoods);              //生成个人销售业绩表
  263. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  264. void allgoodsworth(ware *&firstgoods);                                           //仓库商品总值
  265. void nowcashearning(ware *&sellfirstgoods);                                      //目前现金收入
  266. void payoffreport(ware *&firstgoods);                                      //商品盈利报告
  267. void scanstaffsalary(ware *firstgoods,ware *sellfirstgoods,field *firstemployee);                                 //员工薪水浏览
  268. void shopfare(ware *&firstgoods,ware *&sellfirstgoods);       //公司收支状况
  269. void chancesalarystandard(field *firstemployee);                    //修改薪水标准
  270. ///////////////////////////////////////////////////////////////////////////////////////////////////
  271. void showfunction();                                       //           系统功能菜单说明
  272. void visitpurview();                                     //          系统访问权限说明
  273. void systemmemory();                                  //        系统内存限制
  274. ///////////////////////////////////////////////
  275. char*mainhandle;
  276. char adiminister[20]={''};
  277. char password[10]={''};
  278. char youranswer[20]={''};
  279. int ooooo=0;
  280. ////////////////////////////////////////////////////////////////////////////////////
  281. /////////////////////////////////////////
  282. void main()
  283. {  
  284. int flag0=0;
  285. ware *firstgoods=NULL;
  286. ware *lastgoods=NULL;
  287. ware *sellfirstgoods=NULL;
  288. ware *selllastgoods=NULL;
  289. field *firstemployee=NULL;
  290. field *lastemployee=NULL; 
  291.     run();
  292. AA: landing(mainhandle,firstemployee,flag0);
  293. A:
  294.     int mainchoice;
  295. do
  296. {
  297. cout<<"主菜单:"<<"n(1) 员工管理(2)仓库管理(3)销售管理(4)财务管理(5)帮助文档(6)注销用户"<<endl;
  298. cin>>mainchoice;
  299. if(mainchoice!=1&&mainchoice!=2&&mainchoice!=3&&mainchoice!=4&&mainchoice!=5&&mainchoice!=6)
  300. cout<<"输入错误!请从新输入!"<<endl;
  301. }while(mainchoice!=1&&mainchoice!=2&&mainchoice!=3&&mainchoice!=4&&mainchoice!=5&&mainchoice!=6);
  302. switch(mainchoice)
  303. case 1:
  304. {
  305. int _10choice;
  306. B:   do
  307.   {
  308.   cout<<"请选择操作:"<<"n(1)增加员工信息(2)删除员工信息(3)搜索员工信息n(4)修改员工信息(5)浏览员工信息(6)返回上级"<<endl;
  309.   cin>>_10choice;
  310.               if(_10choice!=1&&_10choice!=2&&_10choice!=3&&_10choice!=4&&_10choice!=5&&_10choice!=6)
  311.   cout<<"输入错误!请从新输入!"<<endl;
  312.   }while(_10choice!=1&&_10choice!=2&&_10choice!=3&&_10choice!=4&&_10choice!=5&&_10choice!=6);
  313.   char _11choice=0;
  314.   switch(_10choice)
  315.   {
  316.   
  317.   case 1:  
  318.   {
  319.   do
  320.   {
  321.   addnewemployee(firstemployee,lastemployee);                //  增加员工信息 
  322.   
  323.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  324.   cin>>_11choice;
  325.   }while(_11choice=='Y'||_11choice=='y');
  326.   
  327.   goto B;
  328.   }
  329.   
  330.   case 2:
  331.   {
  332.   do
  333.   {
  334.   cancelstaff(firstemployee,lastemployee );                    //删除员工信息
  335.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  336.   cin>>_11choice;
  337.   }while(_11choice=='Y'||_11choice=='y');
  338.   
  339.   goto B;
  340.   }
  341.   case 3:
  342.   {
  343.   do
  344.   {
  345.   searchstaff(firstemployee,lastemployee);                      //搜索员工信息
  346.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  347.   cin>>_11choice;
  348.   }while(_11choice=='Y'||_11choice=='y');
  349.   
  350.   goto B;
  351.   }
  352.   case 4:
  353.   {
  354.   do
  355.   {
  356.   chancestaff(firstemployee,lastemployee );                       //修改员工信息
  357.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  358.   cin>>_11choice;
  359.   }while(_11choice=='Y'||_11choice=='y');
  360.   
  361.   goto B;
  362.   }
  363.   case 5:{
  364.   do
  365.   {
  366.   scanstaff(firstemployee );                     //浏览员工信息
  367.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  368.   cin>>_11choice;
  369.   }while(_11choice=='Y'||_11choice=='y');
  370.   
  371.   goto B;
  372.  }
  373.   case 6: goto A;                                                     //返回上一级
  374.   
  375.   }
  376.   
  377.   break;
  378. }
  379. case 2:
  380. {
  381. int _20choice;
  382. C:       do
  383.   {cout<<"请选择操作:"<<"n(1)增加新进商品并生成进货单(2)删除指定商品(3)搜索指定商品n(4)修改指定商品(5)浏览所有商品(6)返回上一级"<<endl;
  384.   cin>>_20choice;
  385.   if(_20choice!=1&&_20choice!=2&&_20choice!=3&&_20choice!=4&&_20choice!=5&&_20choice!=6&&_20choice!=7)
  386.   cout<<"输入错误!请从新输入!"<<endl;
  387.   }while(_20choice!=1&&_20choice!=2&&_20choice!=3&&_20choice!=4&&_20choice!=5&&_20choice!=6&&_20choice!=7);
  388.   char _21choice=0;
  389.   switch(_20choice)
  390.   {
  391.   
  392.   case 1:
  393.   {
  394.   do
  395.   {
  396.   addnewgoods(firstgoods,lastgoods) ;                 //增加新进商品并生成进货单
  397.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  398.   cin>>_21choice;
  399.   }while(_21choice=='Y'||_21choice=='y');
  400.   goto C;
  401.   }
  402.   case 2:
  403.   {
  404.   do
  405.   {
  406.   cancelappointgoods(firstgoods,lastgoods);                   //删除指定商品
  407.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  408.   cin>>_21choice;
  409.   }while(_21choice=='Y'||_21choice=='y');
  410.   goto C;
  411.   }
  412.   case 3:
  413.   {
  414.   do
  415.   {
  416.   searchappointgoods(firstgoods);                        //搜索指定商品
  417.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  418.   cin>>_21choice;
  419.   }while(_21choice=='Y'||_21choice=='y');
  420.   goto C;
  421.   }
  422.   case 4:
  423.   {
  424.   do
  425.   {
  426.   chanceappintgoods(firstgoods);                           //修改指定商品
  427.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  428.   cin>>_21choice;
  429.   }while(_21choice=='Y'||_21choice=='y');
  430.   goto C;
  431.   }
  432.   
  433.   case 5:
  434.   {
  435.   do
  436.   {
  437.   scanallgoods(firstgoods);                         //浏览所有商品
  438.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  439.   cin>>_21choice;
  440.   }while(_21choice=='Y'||_21choice=='y');
  441.   goto C;
  442.   }
  443.   case 6: goto A;                                                              //返回上一级
  444.   
  445.   }
  446.   break;
  447. }
  448. case 3:
  449. {
  450. int _30choice;
  451. D:       do
  452.   {cout<<"请选择操作:"<<"n(1)售出指定商品并生成售货单(2)搜索指定商品(3)售出商品排行n(4)生成个人销售业绩表(5)返回上一级"<<endl;
  453.   cin>>_30choice;
  454.   if(_30choice!=1&&_30choice!=2&&_30choice!=3&&_30choice!=4&&_30choice!=5)
  455.   cout<<"输入错误!请从新输入!"<<endl;
  456.   }while(_30choice!=1&&_30choice!=2&&_30choice!=3&&_30choice!=4&&_30choice!=5);
  457.   char _31choice=0;
  458.   switch(_30choice)
  459.   {
  460.   
  461.   case 1:
  462.   {
  463.   do
  464.   {
  465.   sellappointgoods(firstgoods,sellfirstgoods,selllastgoods);     //售出指定商品并生成售货单
  466.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  467.   cin>>_31choice;
  468.   }while(_31choice=='Y'||_31choice=='y');
  469.   goto D;
  470.   }
  471.   case 2:
  472.   {
  473.   do
  474.   {
  475.   searchappointgoods(firstgoods);                        //搜索指定商品
  476.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  477.   cin>>_31choice;
  478.   }while(_31choice=='Y'||_31choice=='y');
  479.   goto D;
  480.   }
  481.   
  482.   case 3:
  483.   {
  484.   do
  485.   {
  486.   sellgoodstaxis(sellfirstgoods);               //售出商品排行
  487.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  488.   cin>>_31choice;
  489.   }while(_31choice=='Y'||_31choice=='y');
  490.   goto D;
  491.   }
  492.   case 4:
  493.   {
  494.   do
  495.   {
  496.   ownreportcard(sellfirstgoods);              //生成个人销售业绩表
  497.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  498.   cin>>_31choice;
  499.   }while(_31choice=='Y'||_31choice=='y');
  500.   goto D;
  501.   }
  502.   case 5:
  503.   goto A;                                                                            //返回
  504.   }
  505.   break;
  506. }
  507. case 4:{
  508. int _40choice;
  509. E:       do
  510.   {cout<<"请选择操作:"<<"n(1)仓库商品总值(2)目前现金收入(3)商品盈利报告n(4)员工薪水浏览(5)公司收支状况(6)修改薪水标准(7)返回上一级"<<endl;
  511.   cin>>_40choice;
  512.   if(_40choice!=1&&_40choice!=2&&_40choice!=3&&_40choice!=4&&_40choice!=5&&_40choice!=6&&_40choice!=7)
  513.   cout<<"输入错误!请从新输入!"<<endl;
  514.   }while(_40choice!=1&&_40choice!=2&&_40choice!=3&&_40choice!=4&&_40choice!=5&&_40choice!=6&&_40choice!=7);
  515.   char _41choice=0;
  516.   switch(_40choice)
  517.   {
  518.   
  519.   case 1:
  520.   {
  521.   do
  522.   {
  523.   allgoodsworth(firstgoods);                       //仓库商品总值
  524.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  525.   cin>>_41choice;
  526.   }while(_41choice=='Y'||_41choice=='y');
  527.   goto E;
  528.   }
  529.   case 2:
  530.   {
  531.   do
  532.   {
  533.   nowcashearning(sellfirstgoods);                   //目前现金收入
  534.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  535.   cin>>_41choice;
  536.   }while(_41choice=='Y'||_41choice=='y');
  537.   goto E;
  538.   }
  539.   case 3:
  540.   {
  541.   do
  542.   {
  543.   payoffreport(firstgoods);    //商品盈利报告
  544.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  545.   cin>>_41choice;
  546.   }while(_41choice=='Y'||_41choice=='y');
  547.   goto E;
  548.   }
  549.   case 4:
  550.   {
  551.   do
  552.   {
  553.   scanstaffsalary(firstgoods,sellfirstgoods,firstemployee);     //员工薪水浏览
  554.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  555.   cin>>_41choice;
  556.   }while(_41choice=='Y'||_41choice=='y');
  557.   goto E;
  558.   }
  559.   case 5:
  560.   {
  561.   do
  562.   {
  563.   shopfare(firstgoods,sellfirstgoods);                 //公司收支状况
  564.   cout<<"如果想继续此项操作,请输入Y!"<<endl;;
  565.   cin>>_41choice;
  566.   }while(_41choice=='Y'||_41choice=='y');
  567.   goto E;
  568.   }
  569.   case 6:
  570.   {
  571.   do
  572.   {
  573.   chancesalarystandard(firstemployee);  //修改薪水标准
  574.   cout<<"如果想继续此项操作,请输入Y!"<<endl;
  575.   cin>>_41choice;
  576.   }while(_41choice=='Y'||_41choice=='y');
  577.   goto E;
  578.   }
  579.   case 7: goto A;                                                              //返回上一级
  580.   
  581.   }
  582.   break;
  583.    }
  584. case 5:
  585. {
  586. int _50choice;
  587. F:      do{
  588. cout<<"请选择操作:"<<"n(1)系统功能菜单说明(2)系统访问权限说明(3)系统内存限制(4)返回上一级"<<endl;
  589. cin>>_50choice;
  590. if(_50choice!=1&&_50choice!=2&&_50choice!=3&&_50choice!=4)
  591. cout<<"输入错误!请从新输入!"<<endl;
  592. }while(_50choice!=1&&_50choice!=2&&_50choice!=3&&_50choice!=4);
  593. switch(_50choice)
  594. {
  595. case 1:
  596. showfunction();                                       //           系统功能菜单说明
  597. goto F;
  598. case 2:
  599. visitpurview();                                     //          系统访问权限说明
  600. goto F;
  601. case 3:
  602. systemmemory();                                  //        系统内存限制
  603. goto F;
  604. case 4:
  605. goto A;                                         //返回上一级
  606. }
  607. break;
  608. }
  609. case 6:
  610. cout<<"感谢您的使用!"<<endl;
  611. goto AA;                         //返回登陆界面
  612. break;
  613. }
  614. }
  615. ////////////////////////////////////////////////////////////////////
  616. /////////////////////////////////////////////////////////////////////////////////
  617. void addnewemployee(field *&firstemployee,field *&lastemployee)      //增加员工信息
  618. {if(strcmp(mainhandle,adiminister))
  619. {cout<<"对不起您没有此项操作的权限!"<<endl;
  620. return;
  621. }
  622. if(firstemployee==NULL)
  623. { ooooo=1;
  624. field *ptr;
  625. field *ptr0;
  626. firstemployee=new manager("gg郭靖",1,"0001","gg爱好篮球,睡觉 ","gg1989.07.21",1,"gg2007.05");
  627. ptr0=firstemployee;
  628. ptr0->setplace (2);
  629. ptr=new manager("gg黄蓉",0,"0002","gg和郭靖在一起","gg1989.07.21",1,"gg2007.05");
  630. addback(ptr0,ptr);
  631. ptr0->setplace (2);
  632. ptr=new staff("gg张三",1,"0003","gg看书,上网","gg1988.01.01",2,"gg2006.06");
  633. addback(ptr0,ptr);
  634. ptr0->setplace (1);
  635. ptr=new staff("gg李四",1,"0004","gg喜欢网球","gg1985.05.06",0,"gg2006.04");
  636. addback(ptr0,ptr);
  637. ptr0->setplace (0);
  638. lastemployee=ptr0;
  639. lastemployee->next  =NULL;
  640. }
  641. char *a=new char[20];                        //存放姓名
  642. int b;                                      //存放性别
  643. char *c=new char[20];                       // 存放编号
  644. char *d=new char[20];                        //存放个人爱好
  645. char *e=new char[40];                         //存放个人生日
  646. int f;                                          //存放学位
  647. int h;                                       //存放职位
  648. char *g=new char[20];                        //存放进入时间
  649. field *ptr;
  650. cout<<"请输入姓名:"<<endl;
  651. cgets(a);
  652. do
  653. {
  654. cout<<"请输入性别(1代表男0代表女):"<<endl;
  655. cin>>b;
  656. if(b!=1&&b!=0)cout<<"输入错误!请重新输入!"<<endl;
  657. }while(b!=1&&b!=0);
  658. int flag00=0;
  659. do{ flag00=0;
  660. cout<<"请输入编号:"<<endl; //搜索已有链表,链表不能重复
  661. cgets(c); 
  662. field *ptr=firstemployee;
  663. while(ptr!=NULL)
  664. {
  665. if(strcmp(ptr->getcardnumber (),c+2)==0)
  666. {cout<<"编号重复,请重新输入!"<<endl;
  667. flag00=1;
  668. break;
  669. }
  670. ptr=ptr->next ;
  671. }
  672. }while(flag00==1);
  673. cout<<"请输入个人爱好:"<<endl;
  674. cgets(d);
  675. cout<<"请输入生日:"<<endl;
  676. cgets(e);
  677. do{
  678. cout<<"请选择学位(0)专科(1)本科(2)硕士(3)其他:"<<endl;
  679. cin>>f;
  680. if(f!=0&&f!=1&&f!=2&&f!=3)cout<<"输入错误!请重新输入!"<<endl;
  681. }while(f!=0&&f!=1&&f!=2&&f!=3);
  682. do
  683. {
  684. cout<<"请输入职位(1为售货员0为仓库管理员 2为经理):"<<endl;
  685. cin>>h;
  686. if(h!=0&&h!=1&&h!=2)cout<<"输入错误!请重新输入!"<<endl;
  687. }while(h!=0&&h!=1&&h!=2);
  688. cout<<"请输入加入日期:"<<endl;
  689. cgets(g);
  690. if(h!=2)
  691. {
  692. ptr=new staff(a,b,c,d,e,f,g);
  693. ptr->setplace (h);
  694. addback(lastemployee,ptr);
  695. cout<<"增加成功!"<<endl;
  696. }
  697. else
  698. {
  699. ptr=new manager(a,b,c,d,e,f,g);
  700. ptr->setplace (h);
  701. addback(lastemployee,ptr);
  702. cout<<"增加成功!"<<endl;
  703. }
  704. }
  705. //////////////////////////////////////////////////////////////////////////////////////////////////
  706. ///////////////////////////////////////////////////////////////////////
  707. void cancelstaff(field *&firstemployee,field *&lastemployee)         //删除员工信息
  708. {if(strcmp(mainhandle,adiminister))
  709. {cout<<"对不起您没有此项操作的权限!"<<endl;
  710. return;
  711. }
  712. int flag00=0;
  713. char *a=new char[20];
  714. cout<<"请输入您想删除的员工的编号:"<<endl;
  715. cgets(a);
  716. if(strcmp(firstemployee->getcardnumber (),a+2)==0)
  717. {flag00=1;
  718. cout<<"您不能删除他因为他要和黄蓉在一起!"<<endl;
  719. }
  720. if(strcmp(firstemployee->next->getcardnumber(),a+2)==0)
  721. {flag00=1;
  722. cout<<"您不能删除她因为她要和郭靖在一起!"<<endl;
  723. }
  724. field *ptr=firstemployee->next->next;
  725. field *ptr0=firstemployee->next;
  726. while(ptr!=NULL)
  727. {
  728. if(strcmp(ptr->getcardnumber (),a+2)==0)
  729. {flag00=1;
  730. ptr->printfield ();
  731. char aa;
  732. cout<<"您确定要删除该名员工的信息吗?确定(Y)取消(N)"<<endl;
  733. cin>>aa;
  734. if(aa=='Y'||aa=='y') 
  735. {
  736. ptr0->next=ptr->next;
  737. delete ptr;
  738. cout<<"已经成功删除!"<<endl;
  739. return;
  740. }
  741. else return;
  742. }
  743. ptr0=ptr;
  744. ptr=ptr->next ;
  745. }
  746. if(flag00==0)cout<<"找不到您输入的编号所对应的员工信息!"<<endl;
  747. return;
  748. }
  749. ///////////////////////////////////////////////////////////////////////////////////////////////////
  750. void  searchstaff(field *&firstemployee,field *&lastemployee )          //搜索员工信息
  751. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  752. {cout<<"对不起您没有此项操作的权限!"<<endl;
  753. return;
  754. }
  755. cout<<"请输入您想搜索的员工的编号:"<<endl;
  756. char *a=new char[20];
  757. cgets(a);
  758. field *ptr;
  759. int flag000=0;
  760. ptr=firstemployee;
  761. while(ptr!=NULL)
  762. {if(strcmp(ptr->getcardnumber(),a+2)==0)
  763. {flag000=1;
  764. cout<<setw(10)<<"姓名"<<setw(4)<<"性别"<<setw(10)<<"身份编号"<<setw(15)<<"个人爱好"<<setw(10)<<"生日"<<setw(5)<<"学位"<<setw(10)<<"加入时间"<<setw(10)<<"职位"<<endl;
  765. ptr->printfield();
  766. return;
  767. }
  768. ptr=ptr->next;
  769. }
  770. if(flag000==0)cout<<"找不到您输入的编号所对应的员工信息!"<<endl;
  771. }
  772. /////////////////////////////////////////////////////////////////////////////////////////////////////////
  773. void  chancestaff(field *&firstemployee,field *&lastemployee )       //修改员工信息
  774. {if(strcmp(mainhandle,adiminister))
  775. {cout<<"对不起您没有此项操作的权限!"<<endl;
  776. return;
  777. }
  778. cout<<"请输入您想修改的员工的编号:"<<endl;
  779. char *a=new char[20];
  780. cgets(a);
  781. field *ptr=firstemployee;
  782. int flag000=0;
  783. while(ptr!=NULL)
  784. {if(strcmp(ptr->getcardnumber(),a+2)==0)
  785. {flag000=1;
  786. cout<<setiosflags(ios::left)<<setw(8)<<"姓名"<<setw(5)<<"性别";
  787. cout<<setw(10)<<"身份编号"<<setw(15)<<"个人爱好"<<setw(10)<<"生日"<<setw(5)<<"学位"<<setw(10)<<"加入时间"<<setw(10)<<"职位"<<endl;
  788. ptr->printfield();
  789. break;
  790. }
  791. ptr=ptr->next;
  792. }
  793. if(flag000==0)
  794. {cout<<"找不到您输入的编号所对应的员工信息!"<<endl;
  795. return;}
  796. if(flag000==1)
  797. {   int choice_0;
  798. do{
  799. cout<<"请选择您想要修改的信息:"<<"n(1)姓名(2)性别(3)编号(4)个人爱好(5)生日n(6)学位(7)职位(8)修改密码(9)取回密码(10)返回上一级"<<endl;
  800. cin>>choice_0;
  801. if(choice_0!=1&&choice_0!=1&&choice_0!=2&&choice_0!=3&&choice_0!=4&&choice_0!=5&&choice_0!=6&&choice_0!=7&&choice_0!=8&&choice_0!=9&&choice_0!=10)
  802. cout<<"输入错误!请重新输入!"<<endl;
  803. }while(choice_0!=1&&choice_0!=1&&choice_0!=2&&choice_0!=3&&choice_0!=4&&choice_0!=5&&choice_0!=6&&choice_0!=7&&choice_0!=8&&choice_0!=9&&choice_0!=10);
  804. switch(choice_0)
  805. {
  806. case 1:
  807. {char *aa=new char[25];                //修改姓名
  808. cout<<"请输入新名字"<<endl;
  809. cgets(aa);
  810. ptr->setname (aa);
  811. cout<<"修改成功!"<<endl;
  812. break;
  813. }
  814. case 2:                                                            //修改性别
  815. {  int bb;
  816. do
  817. {
  818. cout<<"请输入性别(1代表男0代表女):";
  819. cin>>bb;
  820. if(bb!=1&&bb!=0)cout<<"输入错误!请重新输入!"<<endl;
  821. }while(bb!=1&&bb!=0);
  822. ptr->setsex (bb);
  823. cout<<"修改成功!"<<endl;
  824. break;
  825. }
  826. case 3:                                                                //修改编号
  827. {  char *cc=new char[20];
  828. int flag00=0;
  829. do{
  830. cout<<"请输入编号:"; //搜索已有链表,链表不能重复
  831. cgets(cc); 
  832. field *ptr0=firstemployee;
  833. while(ptr0!=NULL)
  834. {
  835. if(strcmp(ptr0->getcardnumber (),cc+2)==0)
  836. {cout<<"编号重复!请重新输入!"<<endl;
  837. flag00=1;
  838. break;
  839. }
  840. ptr0=ptr0->next ;
  841. }
  842. }while(flag00==1);
  843. ptr->setcardnumber (cc);
  844. cout<<"修改成功!"<<endl;
  845. break;
  846. }
  847. case 4:                                                                  // 修改爱好
  848. {char *dd=new char[70];
  849. cout<<"请输入新的个人爱好:";
  850. cgets(dd);
  851. ptr->setindividuallike (dd);
  852. cout<<"修改成功!"<<endl;
  853. break;
  854. }
  855. case  5:                                                               //修改生日
  856. {char *ee=new char[18];
  857. cout<<"请输入新的生日:";
  858. cgets(ee);
  859. ptr->setbirthday (ee);
  860. cout<<"修改成功!"<<endl;
  861. break;
  862. }
  863. case 6:                                                         //修改学位
  864. {int ff;
  865. do{
  866. cout<<"请输入您的选择(0)专科(1)本科(2)硕士(3)其他:";
  867. cin>>ff;
  868. if(ff!=0&&ff!=1&&ff!=2&&ff!=3)
  869. cout<<"输入错误!请重新输入!"<<endl;
  870. }while(ff!=0&&ff!=1&&ff!=2&&ff!=3);
  871. ptr->setdegree (ff);
  872. cout<<"修改成功!"<<endl;
  873. break;
  874. }
  875. case 7:                                                                //修改职位
  876. {int hh;
  877. do{
  878. cout<<"请输入您的选择(1)售货员(0)仓库管理员(2)经理:";
  879. cin>>hh;
  880. if(hh!=0&&hh!=1&&hh!=2)
  881. cout<<"输入错误!请重新输入!"<<endl;
  882. }while(hh!=0&&hh!=1&&hh!=2);
  883. ptr->setplace (hh);
  884. cout<<"修改成功!"<<endl;
  885. break;
  886. }
  887. case 8:                                                              //修改密码
  888. {char *ii=new char[20];
  889. int iii=0;
  890. do{  iii++;
  891. if(iii>3)
  892. {cout<<"输入错误密码三次!必须结束操作!"<<endl;
  893. return;
  894. }
  895. cout<<"请输入您原来的密码:"<<endl;
  896. cgets(ii);
  897. if(strcmp(ii+2,ptr->getpassword ())!=0)
  898. cout<<"您输入的密码不正确!"<<endl;
  899. }while(strcmp(ii+2,ptr->getpassword ())!=0);
  900. cout<<"请输入您的新密码!"<<endl;
  901. char *iiii=new char[20];
  902. cgets(iiii);
  903. ptr->setpassword (iiii);
  904. cout<<"操作结束!"<<endl;
  905. break;
  906. }
  907. case 9:                                                             //取回密码 
  908. {
  909. cout<<"您的密码是:"<<endl;
  910. cout<<ptr->getpassword()<<endl;
  911. break;
  912. }
  913. case 10:
  914. return;
  915. }
  916. return;
  917. }
  918. }
  919. /////////////////////////////////////////////////////////////////////////////////////////////////////////////
  920. void scanstaff(field *&firstemployee)                   //浏览员工信息
  921. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  922. {cout<<"对不起您没有此项操作的权限!"<<endl;
  923. return;
  924. }
  925. field *ptr=firstemployee;
  926. cout<<"            所有的员工的信息如下             "<<endl;
  927. cout<<setiosflags(ios::left)<<setw(8)<<"姓名"<<setw(5)<<"性别";
  928. cout<<setw(10)<<"身份编号"<<setw(15)<<"个人爱好"<<setw(10)<<"生日"<<setw(5)<<"学位"<<setw(10)<<"加入时间"<<setw(10)<<"职位"<<endl;
  929. while(ptr!=NULL)
  930. {
  931. ptr->printfield ();
  932. ptr=ptr->next ;
  933. }
  934. cout<<"输出结束!"<<endl;
  935. }
  936. ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  937. /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  938. void addnewgoods(ware *&firstgoods,ware *&lastgoods)               //增加新进商品并生成进货单
  939. {
  940. char *a=new char[20];                     //存放名称
  941. int  b=0;                               //存放数量
  942. char *c=new char[20];                     //存放编号
  943. char *d=new char[20];                     //存放厂家信息
  944. char *e=new char[20];                     //存放商品信息
  945. char *f=new char[20];                     //存放时间
  946. char *g=new char[20];                     //存放商品类别
  947. float h;                                   //存放价格
  948. float nn;                                     //存放售货参考价
  949. ware *ptr;
  950. cout<<" 请填写进货单信息!"<<endl;
  951. cout<<"请输入商品名称:"<<endl;
  952. cgets(a);
  953. cout<<"请输入商品数量:"<<endl;
  954. cin>>b;
  955. int ff;
  956. do{
  957. cout<<"请输入商品编号:"<<endl;                                                   //搜索已有链表,编号不能重复
  958. cgets(c);
  959. ff=0;
  960. ware *check=firstgoods;
  961. while(check!=NULL)
  962. {if(strcmp(check->getnumber (),c+2)==0)
  963. {cout<<"编号重复!请重新输入!"<<endl;
  964. ff=1;
  965. break;}
  966. check=check->next ;
  967. }
  968. }while(ff==1);
  969. cout<<"请输入厂家信息:"<<endl;
  970.     cgets(d);
  971. cout<<"请输入商品信息:"<<endl;
  972. cgets(e);
  973. cout<<"请输入进货时间:"<<endl;
  974. cgets(f);
  975. cout<<"请输入商品类别:"<<endl;
  976. cgets(g);
  977. cout<<"请输入商品进货价格:"<<endl;
  978. cin>>h;
  979. cout<<"请输入商品参考销售价格:"<<endl;
  980. cin>>nn;
  981. ptr=new stocklist(a,b,c,d,e,f,g,"进货单");          //完善登陆系统后这里应该有一个操作者的身份ID
  982. ptr->sethandle (mainhandle);                      ///////////////////////////////////这里加入id  
  983. ptr->setprice (h);
  984. ptr->setconsultprice (nn);
  985. if(firstgoods==NULL)
  986. {firstgoods=ptr;
  987. lastgoods=firstgoods;
  988. lastgoods->next =NULL;
  989. }
  990. else addback(lastgoods,ptr);
  991. cout<<"增加成功!"<<endl;
  992. cout<<"                               进货单                                      "<<endl;
  993.     cout<<"名称"<<ptr->getwarename ()<<endl;
  994. cout<<"类别"<<ptr->getsortname()<<endl;
  995. cout<<"编号"<<ptr->getnumber ()<<endl;
  996. cout<<"价格"<<ptr->getprice()<<endl;
  997. cout<<"参考销售价"<<ptr->getconsultprice()<<endl;
  998. cout<<"数量"<<ptr->getamount ()<<endl;
  999. cout<<"厂家信息"<<ptr->getmanfacturer ()<<endl;
  1000. cout<<"商品描述"<<ptr->getdescribe ()<<endl;
  1001. cout<<"时间"<<ptr->getdate ()<<endl;
  1002. cout<<"经手人"<<ptr->gethandle ()<<endl;
  1003. }
  1004. //////////////////////////////////////////////////////////////////////////////////////////////////////
  1005. void cancelappointgoods(ware *&firstgoods,ware *&lastgoods)                   //删除指定商品
  1006. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1007. {cout<<"对不起您没有此项操作的权限!"<<endl;
  1008. return;
  1009. }
  1010. ware *ptr;
  1011. ware *ptr0;
  1012. char *a=new char[20];
  1013. int flag=0;
  1014. ptr=firstgoods;
  1015. ptr0=ptr;
  1016. cout<<"请输入您想删除的商品的编号:"<<endl;
  1017. cgets(a);
  1018. while(ptr!=NULL)
  1019. {
  1020. if(strcmp(a+2,ptr->getnumber())==0)
  1021. {
  1022. flag=1;
  1023. if(ptr==firstgoods)
  1024. {
  1025. firstgoods=ptr->next;
  1026. delete ptr;
  1027. cout<<" 删除成功!"<<endl;
  1028. break;
  1029. }
  1030. if(ptr==lastgoods)
  1031. {
  1032. ptr0->next=NULL;
  1033. delete ptr;
  1034. cout<<"删除成功!"<<endl;
  1035. break;
  1036. }
  1037. ptr0->next=ptr->next;
  1038. delete ptr;
  1039. cout<<" 删除成功!"<<endl;
  1040. break;
  1041. }
  1042. ptr0=ptr;
  1043. ptr=ptr->next;
  1044. }
  1045. if(flag==0)cout<<"您输入的编号不存在!"<<endl;
  1046. }
  1047. //////////////////////////////////////////////////////////////////////////////////////////////////////////
  1048. void searchappointgoods(ware *&firstgoods)                       //搜索指定商品
  1049. {
  1050. ware *ptr;
  1051. char *a=new char[20];
  1052. int flag=0;
  1053. ptr=firstgoods;
  1054. cout<<"请输入您想搜索的商品的编号:"<<endl;
  1055. cgets(a);
  1056. while(ptr!=NULL)
  1057. {
  1058. if(strcmp(a+2,ptr->getnumber ())==0)
  1059. {
  1060. flag=1;
  1061. cout<<"在仓库中为您找到如下商品信息!"<<endl;
  1062. cout<<setiosflags(ios::left)<<setw(8)<<"名称"<<setw(6)<<"类别"<<setw(6)<<"编号"<<setw(7)<<"进货价"<<setw(10)<<"参考售价"<<setw(6)<<"数量"<<setw(12)<<"厂家信息"<<setw(12)<<"商品描述"<<setw(6)<<"时间"<<setw(8)<<"经手人"<<endl;
  1063. cout<<setiosflags(ios::left)<<setw(8)<<ptr->getwarename ()<<setw(6)<<ptr->getsortname()<<setw(6)<<ptr->getnumber ()<<setw(7)<<ptr->getprice()<<setw(10)<<ptr->getconsultprice()<<setw(6)<<ptr->getamount ()<<setw(12)<<ptr->getmanfacturer ()<<setw(12)<<ptr->getdescribe ()<<setw(6)<<ptr->getdate ()<<setw(8)<<ptr->gethandle ();
  1064. break;
  1065. }
  1066. ptr=ptr->next ;
  1067. }
  1068. if(flag==0)cout<<" 您要搜索的商品不存在!"<<endl;
  1069. }
  1070. //////////////////////////////////////////////////////////////////////////////////////////
  1071. void chanceappintgoods(ware *&firstgoods)                          //修改指定商品
  1072. {
  1073. ware *ptr;
  1074. int flag=0;
  1075. char *a=new char[20];
  1076. ptr=firstgoods;
  1077. cout<<"请输入您想修改的商品的编号:"<<endl;
  1078. cgets(a);
  1079. while(ptr!=NULL)
  1080. {
  1081. if(strcmp(a+2,ptr->getnumber ())==0)
  1082. {
  1083. flag=1;
  1084. cout<<"在仓库中为您找到如下商品信息!"<<endl;
  1085. cout<<setiosflags(ios::left)<<setw(8)<<"名称"<<setw(6)<<"类别"<<setw(6)<<"编号"<<setw(6)<<"价格"<<setw(10)<<"参考售格"<<setw(6)<<"数量"<<setw(12)<<"厂家信息"<<setw(12)<<"商品描述"<<setw(6)<<"时间"<<setw(8)<<"经手人"<<endl;
  1086. cout<<setiosflags(ios::left)<<setw(8)<<ptr->getwarename ()<<setw(8)<<ptr->getsortname()<<setw(6)<<ptr->getnumber ()<<setw(6)<<ptr->getprice()<<setw(10)<<ptr->getconsultprice()<<setw(6)<<ptr->getamount ()<<setw(12)<<ptr->getmanfacturer ()<<setw(12)<<ptr->getdescribe ()<<setw(6)<<ptr->getdate ()<<setw(8)<<ptr->gethandle ()<<endl;
  1087. break;
  1088. }
  1089. ptr=ptr->next ;
  1090. }
  1091. if(flag==0)
  1092. {
  1093. cout<<"您想修改的商品的编号不存在!"<<endl;
  1094. return;
  1095. }
  1096. if(flag==1)
  1097. { int choice_00;
  1098. cout<<"请选择您想要修改的信息:n(1)名称(2)类别(3)编号(4)参考售货价价格(5)数量n(6)厂家信息(7)商品描述(8)进货时间(9)返回上一级"<<endl;
  1099. cin>>choice_00;
  1100. if(choice_00!=1&&choice_00!=1&&choice_00!=2&&choice_00!=3&&choice_00!=4&&choice_00!=5&&choice_00!=6&&choice_00!=7&&choice_00!=8&&choice_00!=9)
  1101. { cout<<"输入错误!"<<endl;
  1102. return;
  1103. }
  1104. switch(choice_00)
  1105. {
  1106. case 1:
  1107. {char *aa=new char[23];                               //修改姓名
  1108. cout<<"请输入新的姓名:"<<endl;
  1109. cgets(aa);
  1110. ptr->setwarename (aa);
  1111. cout<<"修改成功!"<<endl;
  1112. break;
  1113. }
  1114. case 2:                                                  //修改类别
  1115. {char *gg=new char[20];
  1116. cout<<"请输入新的类别:"<<endl;
  1117. cgets(gg);
  1118. ptr->setsortname (gg);
  1119. cout<<"修改成功!"<<endl;
  1120. break;
  1121. }
  1122. case 3:
  1123. {                                /////////////////////// 这段是修改编号
  1124. char *cc=new char[20];
  1125. int flag00=0;
  1126. do{
  1127. cout<<"请输入编号:"<<endl; //搜索已有链表,链表不能重复
  1128. cgets(cc); 
  1129. ware *ptr0=firstgoods;
  1130. while(ptr0!=NULL)
  1131. {
  1132. if(strcmp(ptr0->getnumber (),cc+2)==0)         
  1133. {cout<<"编号重复!请重新输入!"<<endl;
  1134. flag00=1;
  1135. break;
  1136. }                                              ////这里改变编号时不能重复,先搜索不重复后才允许重设
  1137. ptr0=ptr0->next ;
  1138. }
  1139. }while(flag00==1);
  1140. ptr->setnumber (cc);
  1141. cout<<"修改成功!"<<endl;                                                         
  1142. break;
  1143. }
  1144. case 4:
  1145. {   float mm;                    //修改价格
  1146. cout<<"请输入新价格:"<<endl;
  1147. cin>>mm;
  1148. ptr->setconsultprice (mm);
  1149. cout<<"修改成功!"<<endl;
  1150. break;
  1151. }
  1152. case 5:
  1153. { int bb;                                     //修改数量
  1154. cout<<"请输入新的数量:"<<endl;
  1155. cin>>bb;
  1156. ptr->setamount (bb);
  1157. cout<<"修改成功!"<<endl;
  1158. break;}
  1159. case 6:
  1160. {char *dd=new char[50];                  //重设厂家信息
  1161. cout<<"请输入新的厂家信息:"<<endl;
  1162. cgets(dd);
  1163. ptr->setmanufacturer (dd);
  1164. cout<<"修改成功!"<<endl;
  1165. break;}
  1166. case 7:
  1167. {char *ee=new char[50];            //重设商品信息
  1168. cout<<"请输入新的商品信息:"<<endl;
  1169. cgets(ee);
  1170. ptr->setdescribe (ee);
  1171. cout<<"修改成功!"<<endl;
  1172. break;
  1173. }
  1174. case 8:
  1175. {char *ff=new char[20];                //重设时间
  1176. cout<<"请输入新的时间:"<<endl;
  1177. cgets(ff);
  1178. ptr->setdate (ff);
  1179. cout<<"修改成功!"<<endl;
  1180. break;}
  1181. case 9:
  1182. return;
  1183. }
  1184. }
  1185. }
  1186. ////////////////////////////////////////////////////////////////////////////////////////
  1187. /////////////////////////////////////////////////////////////////////////////////////
  1188. void scanallgoods(ware *&firstgoods)                        //浏览所有商品
  1189. {cout<<"所有商品信息如下:"<<endl;
  1190. cout<<setiosflags(ios::left)<<setw(8)<<"名称"<<setw(6)<<"类别"<<setw(6)<<"编号"<<setw(10)<<"参考售价"<<setw(6)<<"数量"<<setw(12)<<"厂家信息"<<setw(12)<<"商品描述"<<setw(6)<<"时间"<<setw(8)<<"经手人"<<endl;
  1191. ware *ptr=firstgoods;
  1192. if(ptr==NULL)
  1193. {cout<<"目前为空!"<<endl;
  1194. return;
  1195. }
  1196. while(ptr!=NULL)
  1197. {cout<<setiosflags(ios::left)<<setw(8)<<ptr->getwarename ()<<setw(6)<<ptr->getsortname()<<setw(6)<<ptr->getnumber ()<<setw(10)<<ptr->getconsultprice()<<setw(6)<<ptr->getamount ()<<setw(12)<<ptr->getmanfacturer ()<<setw(12)<<ptr->getdescribe ()<<setw(6)<<ptr->getdate ()<<setw(8)<<ptr->gethandle ()<<endl;
  1198. ptr=ptr->next ;
  1199. }
  1200. cout<<"输出完毕!"<<endl;
  1201. }
  1202. //////////////////////////////////////////////////////////////////////////////////////
  1203. ////////////////////////////////////////////////////////////////////////////////////////////////
  1204. //售出指定商品并生成售货单
  1205. void sellappointgoods(ware *&firstgoods,ware *&sellfirstgoods,ware *&selllastgoods)
  1206. {
  1207. char *mmm=new char[30];
  1208. int nn;
  1209. int flag0000=0;
  1210. cout<<"请输入您想出售的商品的编号:"<<endl;
  1211. cgets(mmm);
  1212. ware *ptr;
  1213. ptr=firstgoods;
  1214. while(ptr!=NULL)
  1215. {if(strcmp(mmm+2,ptr->getnumber ())==0)
  1216. { flag0000=1;
  1217. cout<<"请输入售出数量:"<<endl;
  1218. cin>>nn;
  1219. ptr->setamount (ptr->getamount ()-nn);
  1220. if(sellfirstgoods==NULL)
  1221. {sellfirstgoods=new sellgoodslist(ptr->getwarename ()-2,nn,ptr->getnumber ()-2,ptr->getmanfacturer ()-2,ptr->getdescribe ()-2,ptr->getdate (),ptr->getsortname ()-2,"售货单");
  1222. sellfirstgoods->sethandle (mainhandle);
  1223. sellfirstgoods->setprice (ptr->getconsultprice ());
  1224. sellfirstgoods->setamount (nn);
  1225. sellfirstgoods->next =NULL;
  1226. selllastgoods=sellfirstgoods;
  1227. }
  1228. else{
  1229. ware *ptr0;
  1230. ptr0=new sellgoodslist(ptr->getwarename ()-2,nn,ptr->getnumber ()-2,ptr->getmanfacturer ()-2,ptr->getdescribe ()-2,ptr->getdate ()-2,ptr->getsortname ()-2,"售货单");
  1231. ptr0->sethandle (mainhandle);
  1232. ptr0->setprice (ptr->getconsultprice ());
  1233. ptr0->setamount (nn);
  1234. addback(selllastgoods,ptr0);
  1235. }
  1236. cout<<"                             售货单                   "<<endl;
  1237. cout<<setiosflags(ios::left)<<setw(10)<<"商品名称"<<setw(10)<<"商品编号"<<setw(10)<<"商品数量"<<setw(10)<<"商品单价"<<setw(10)<<"总金额"<<setw(10)<<"经手人"<<endl;
  1238. cout<<setiosflags(ios::left)<<setw(10)<<selllastgoods->getwarename ()<<setw(10)<<selllastgoods->getnumber ()<<setw(10)<<selllastgoods->getamount ()<<setw(10)<<selllastgoods->getprice ()<<setw(10)<<((selllastgoods->getamount()) *(selllastgoods->getprice ()))<<setw(10)<<selllastgoods->gethandle ()<<endl;
  1239. return;
  1240. }
  1241. ptr=ptr->next ;
  1242. }
  1243. if(flag0000==0)cout<<"找不到您所输入的编号所对应的商品!"<<endl;
  1244. return;
  1245. }
  1246. /////////////////////////////////////////////////////////////////////////////////////////////////////
  1247. void sellgoodstaxis(ware *&sellfirstgoods)              //售出商品排行
  1248. {ware *ptr=sellfirstgoods;
  1249. cout<<"                       售出商品排行                  "<<endl;
  1250. cout<<setiosflags(ios::left)<<setw(10)<<"商品名称"<<setw(10)<<"商品编号"<<setw(10)<<"商品数量"<<setw(10)<<"商品单价"<<setw(10)<<"总金额"<<setw(10)<<"经手人"<<endl;
  1251. if(ptr==NULL)
  1252. {cout<<"目前表为空!"<<endl;
  1253. return;
  1254. }
  1255. while(ptr!=NULL)
  1256. { cout<<setiosflags(ios::left)<<setw(10)<<ptr->getwarename ()<<setw(10)<<ptr->getnumber ()<<setw(10)<<ptr->getamount ()<<setw(10)<<ptr->getprice()<<setw(10)<<((ptr->getamount()) *(ptr->getprice ()))<<setw(10)<<ptr->gethandle ()<<endl;
  1257. ptr=ptr->next ;
  1258. }
  1259. cout<<"输出完毕!"<<endl;
  1260. }
  1261. ////////////////////////////////////////////////////////////////////////////////////////////////////////
  1262. void ownreportcard(ware *&sellfirstgoods)              //生成个人销售业绩表
  1263. {ware *ptr=sellfirstgoods;
  1264. if(ptr==NULL)
  1265. {cout<<"列表为空!"<<endl;
  1266. return;
  1267. }
  1268. int flag00=0;
  1269. cout<<setiosflags(ios::left)<<setw(10)<<"商品名称"<<setw(10)<<"商品编号"<<setw(10)<<"商品数量"<<setw(10)<<"商品单价"<<setw(10)<<"总金额"<<setw(10)<<"经手人"<<endl;
  1270. while(ptr!=NULL)
  1271. {if(strcmp(ptr->gethandle (),mainhandle)==0)
  1272. {flag00=1;
  1273. cout<<setiosflags(ios::left)<<setw(10)<<ptr->getwarename ()<<setw(10)<<ptr->getnumber ()<<setw(10)<<ptr->getamount ()<<setw(10)<<ptr->getprice()<<setw(10)<<((ptr->getamount()) *(ptr->getprice ()))<<setw(10)<<ptr->gethandle ()<<endl;
  1274. ptr=ptr->next ;
  1275. }
  1276. if(flag00==0)cout<<"目前记录为空!"<<endl;
  1277. }
  1278. }
  1279. //////////////////////////////////////////////////////////////////////////////////////////////////////
  1280. /////////////////////////////////////////////////////////////////////////////////////////////////////
  1281. void showfunction()                                      //           系统功能菜单说明
  1282. {
  1283. cout<<"首先很感谢您的使用.下面是这个商店系统的功能菜单说明:"<<endl;
  1284. cout<<"系统有六大功能模块:";
  1285. cout<<"员工管理模块:实现了五个功能(增加员工信息,删除员工信息,搜索";
  1286. cout<<"             员工信息,修改员工信息,浏览员工信息)"<<endl;
  1287. cout<<"             其中增加员工信息需要填写员工的姓名,性别,身份编号(每个人都有独一"<<endl;
  1288. cout<<"             无二的编号不能重复,如有重复会有提示)个人爱好,生日,学位,加入时"<<endl;
  1289. cout<<"             间和选择职位.第一次增加员工后在列表的前面会加入默认的四位员工信息."<<endl;
  1290. cout<<"             删除员工信息需要输入员工的编号,其中系统默认的前面两位经理不能删除."<<endl;
  1291. cout<<"             搜索员工信息需要输入员工的编号."<<endl;
  1292. cout<<"             修改员工信息需要输入员工的编号,并且可以选择需要修改的项目进行修改.";
  1293. cout<<"             浏览员工的信息将输出列表中的所有信息."<<endl;
  1294. cout<<"仓库管理模块:实现了五个功能(增加新进商品并生成进货单,删除指定商品,搜索指定商 ";
  1295. cout<<"             品,修改指定商品,浏览所有的商品信息."<<endl;
  1296. cout<<"             其中增加商品需要填写商品名称,类别,编号(独一无二),进货价,参考 ";
  1297. cout<<"             售货价,进货数量,商品信息,厂家信息和进货时间,经手人系统会添加."<<endl;
  1298. cout<<"             删除指定商品需要输入商品的编号"<<endl;
  1299. cout<<"             搜索指定商品需要输入商品的编号"<<endl;
  1300. cout<<"             修改指定商品需要输入商品的编号,并且可以选择需要修改的项目进行修改.";
  1301. cout<<"             浏览所有的商品会输出所有的商品信息."<<endl;
  1302. cout<<"销售管理模块:实现了四个功能(售出指定商品并生成售货单,搜索指定商品,售出商品排 ";
  1303. cout<<"             行,生成个人销售业绩表)"<<endl;
  1304. cout<<"             其中售出指定商品并且生成售货单需要输入商品编号和出售数量,系统将会 ";
  1305. cout<<"             输出售货单和添加经手人"<<endl;
  1306. cout<<"             搜索指定商品需要输入商品的编号"<<endl;
  1307. cout<<"             售出商品排行是最近售出的商品的列表."<<endl;
  1308. cout<<"             生成个人销售列表将列出登陆者为经手人的销售记录."<<endl;
  1309. cout<<"财务管理模块:实现了六个功能(仓库商品总值,目前现金收入,商品盈利报告,员工薪水 ";
  1310. cout<<"             浏览,公司收支状况,修改薪水标准)"<<endl;
  1311. cout<<"             这些功能都可以顾名思义,就不用介绍了."<<endl;
  1312. cout<<"帮助文档模块:包括(系统功能菜单说明,系统访问权限说明,系统内存限制)"<<endl;
  1313. cout<<"注销用户模块:登出目前用户,重新登陆.员工登陆密码初始为身份编号,取回密码可在修改 ";
  1314. cout<<"             员工信息一项取回。系统管理员遗忘密码可通过回答密码问题取回 "<<endl;
  1315. cout<<endl;
  1316. }
  1317. void visitpurview()                                    //          系统访问权限说明
  1318. {cout<<"系统的操作权限有三种级别:系统管理员,经理,普通员工."<<endl;
  1319. cout<<"系统管理员:拥有本系统最高的操作权限,可以进行任何操作"<<endl;
  1320. cout<<"经理:除了增加员工信息,修改员工信息,删除员工信息这三项操作外,其他都是允许的"<<endl;
  1321. cout<<"普通员工:不能操作员工管理模块和财务管理模块。"<<endl;
  1322. cout<<endl;
  1323. }
  1324. void systemmemory()                                  //        系统内存限制
  1325. {cout<<"由于篇幅所限,这里就不赘述了,总之在输入员工信息和商品信息时不宜过长!n"<<endl;}
  1326. /////////////////////////////////////////////////////////////////////////
  1327. void allgoodsworth(ware *&firstgoods)          //仓库商品总值
  1328. {
  1329. if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1330. {cout<<"对不起您没有此项操作的权限!"<<endl;
  1331. return;
  1332. }
  1333. ware *ptr=firstgoods;
  1334. double total=0;
  1335. cout<<setiosflags(ios::left)<<setw(10)<<"商品名称"<<setw(10)<<"库存量"<<setw(10)<<"参考售价"<<setw(10)<<"金额"<<endl;
  1336. while(ptr!=NULL)
  1337. {
  1338. cout<<setiosflags(ios::left)<<setw(10)<<ptr->getwarename ()<<setw(10)<<ptr->getamount ()<<setw(10)<<ptr->getconsultprice ()<<setw(10)<<((ptr->getamount ())*(ptr->getconsultprice ()))<<endl;
  1339. total+=(ptr->getamount ()*ptr->getconsultprice ());
  1340. ptr=ptr->next ;
  1341. }
  1342. cout<<"总金额:"<<"    "<<total;
  1343. cout<<"输出完毕!"<<endl;
  1344. }
  1345. //////////////////////////////////////////////////////////////////////////////////////////////
  1346. void nowcashearning(ware *&sellfirstgoods)            //目前现金收入
  1347. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1348. {cout<<"对不起您没有此项操作的权限!"<<endl;
  1349. return;
  1350. }
  1351. float total=0;
  1352. ware *ptr=sellfirstgoods;
  1353. cout<<setiosflags(ios::left)<<setw(10)<<"商品名称"<<setw(10)<<"出售量"<<setw(10)<<"售价"<<setw(10)<<"金额"<<endl;
  1354. while(ptr!=NULL)
  1355. {cout<<setiosflags(ios::left)<<setw(10)<<ptr->getwarename ()<<setw(10)<<ptr->getamount ()<<setw(10)<<ptr->getprice ()<<setw(10)<<((ptr->getamount ())*(ptr->getprice ()))<<endl;
  1356. total+=(ptr->getamount ()*ptr->getprice ());
  1357. ptr=ptr->next ;
  1358. }
  1359. cout<<"总金额:"<<"     "<<total<<endl;
  1360. cout<<"输出完毕!"<<endl;
  1361. /////////////////////////////////////////////////////////////////////////
  1362. void payoffreport(ware *&firstgoods)     //商品盈利报告
  1363. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1364. {cout<<"对不起您没有此项操作的权限!"<<endl;
  1365. return;
  1366. }
  1367.     ware *ptr=firstgoods;
  1368. cout<<"仓库里有如下商品,预计盈利如下:"<<endl;
  1369. cout<<setiosflags(ios::left)<<setw(10)<<"商品名称"<<setw(10)<<"进货价"<<setw(14)<<"参考售价"<<setw(14)<<"预计盈利值"<<endl;
  1370. while(ptr!=NULL)
  1371. {
  1372. cout<<setiosflags(ios::left)<<setw(10)<<ptr->getwarename ();
  1373. cout<<setw(10)<<ptr->getprice ()<<setw(14)<<ptr->getconsultprice ();
  1374. cout<<setw(14)<<((ptr->getconsultprice ())-(ptr->getprice ()))<<endl;
  1375. ptr=ptr->next ;
  1376. }
  1377. cout<<"输出完毕!如需修改价格请进入“仓库管理”!"<<endl;
  1378. }
  1379. ////////////////////////////////////////////////////////////////////////////////////////////////
  1380. void scanstaffsalary(ware *firstgoods,ware *sellfirstgoods,field *firstemployee)                        
  1381. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1382. {cout<<"对不起您没有此项操作的权限!"<<endl;                                            //员工薪水浏览
  1383. return;
  1384. }
  1385. field *ptr=firstemployee;
  1386. while(ptr!=NULL)
  1387. {ptr->printpayslip(firstgoods,sellfirstgoods);
  1388. ptr=ptr->next ;
  1389. }  
  1390. cout<<"输出完毕!"<<endl;
  1391. }
  1392. //////////////////////////////////////////////////////////////////////////////////////
  1393. void shopfare(ware *&firstgoods,ware *&sellfirstgoods)       //公司收支状况
  1394. {if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1395. {cout<<"对不起您没有此项操作的权限!"<<endl;                                          
  1396. return;
  1397. }
  1398. ware *ptr=firstgoods;
  1399. float total1=0;
  1400. while(ptr!=NULL)
  1401. {  total1+=(ptr->getamount ()*ptr->getprice  ());
  1402. ptr=ptr->next ;
  1403. }
  1404. cout<<"公司为库存商品支出:"<<total1;
  1405. ware *ptr000=sellfirstgoods;
  1406. float total2=0;
  1407. while(ptr000!=NULL)
  1408. {total2+=(ptr000->getprice ()*ptr000->getamount ());
  1409. ptr000=ptr000->next ;
  1410. }
  1411. cout<<"n公司售出商品总值:"<<total2;
  1412. cout<<"输出完毕!"<<endl;
  1413. ///////////////////////////////////////////////////////////////////////////////////////////////////////////
  1414. void chancesalarystandard(field *firstemployee)//修改薪水标准
  1415. {if(ooooo==0)
  1416. { cout<<"目前员工列表为空!请您先增加员工"<<endl;
  1417. return;
  1418. }
  1419. if((strcmp(mainhandle,adiminister))&&(strcmp(mainhandle,"郭靖"))&&(strcmp(mainhandle,"黄蓉")))
  1420. {cout<<"对不起您没有此项操作的权限!"<<endl;                                          
  1421. return;
  1422. }
  1423. float jj=0;
  1424. cout<<"原来的员工奖金比例:"<<firstemployee->next ->next->getscale1 ()<<endl;
  1425. cout<<"请输入新的员工奖金比例:";
  1426. cin>>jj;
  1427. firstemployee->next ->next ->setscale (jj);
  1428. cout<<"原来的经理奖金比例:"<<firstemployee->getscale1 () <<endl;
  1429. float kk=0;
  1430. cout<<"请输入新经理奖金比例:";
  1431. cin>>kk;
  1432. firstemployee->setscale (kk);
  1433. cout<<"修改成功!"<<endl;
  1434. }
  1435. ///////////////////////////////////////////////////////////////////////////////////
  1436. /////////////////////////////////////////////////////////////////////////////////////
  1437. //mylanding
  1438. void landing(char *&mainhandle,field *&firstemployee,int &flag0)
  1439. {  
  1440. string answer;
  1441. int choice;
  1442. char mima1[10]={''};
  1443. char mima2[10]={''};
  1444. if(flag0==0)
  1445. {
  1446. flag0=1;
  1447. cout<<"欢迎光临商店管理系统!"<<endl;
  1448. cout<<"您是第一个使用本系统的人,请先创建系统管理员。系统管理员将拥有本系统最高的权限,可以进行任何操作!"<<endl;
  1449. cout<<"请输入您的帐户名:"<<endl;
  1450. cin>>adiminister;
  1451. do
  1452. {
  1453. cout<<"请输入您的十位密码:"<<endl;
  1454. for(int i=0;i<10;i++ )
  1455. {
  1456. mima1[i]=getch();
  1457. putch('*');
  1458. }
  1459. cout<<endl;
  1460. cout<<"请再次输入您的十位密码:"<<endl;
  1461. for(int j=0;j<10;j++)
  1462. {
  1463. mima2[j]=getch();
  1464. putch('*');
  1465. }
  1466. cout<<endl;
  1467. if(*mima1!=*mima2)cout<<"输入的密码不一致!请从新输入!"<<endl;
  1468. }while(*mima1!=*mima2);
  1469. for(int k=0;k<10;k++)password[k]=mima1[k];
  1470. do
  1471. {
  1472. cout<<"为了保护您的密码安全,请选择问题:"<<"n(1)你的真实姓名(2)您就读的学校(3)您最喜欢的食物是"<<endl;
  1473. cin>>choice;
  1474. if(choice!=1&&choice!=2&&choice!=3)cout<<"输入错误!,请从新输入!"<<endl;
  1475. }while(choice!=1&&choice!=2&&choice!=3);
  1476. cout<<"请输入您问题的答案!"<<endl;
  1477. cin>>youranswer;
  1478. answer.assign (youranswer);
  1479. //cputs(password);///为什么会出现乱码????
  1480. cout<<"创建成功!"<<endl;
  1481. cout<<"您的帐户名是:"<<adiminister<<endl;
  1482. cout<<"您的密码是:";
  1483. for(k=0;k<10;k++)cout<<password[k];
  1484. cout<<"n您的问题的答案是:"<<youranswer;
  1485. cout<<endl;
  1486. mainhandle=new char[strlen(adiminister)+1];
  1487. strcpy(mainhandle,adiminister);
  1488. cout<<"由于您是第一次使用本系统,强烈建议您先浏览帮助信息 "<<endl;
  1489. }
  1490. else
  1491. {
  1492. G: cout<<"请输入您的登陆名:"<<endl;
  1493. char checkname[20]={''};
  1494. char checkpassword[11]={''};
  1495. cin>>checkname;
  1496. if(strcmp(adiminister,checkname)==0)
  1497. {
  1498. cout<<"您是系统管理员,请输入您的密码:"<<endl;
  1499. for(int j=0;j<10;j++)
  1500. {
  1501. checkpassword[j]=getch();
  1502. putch('*');
  1503. }
  1504. cout<<endl;
  1505. if(strcmp(checkpassword,password)!=0) 
  1506. {   char get;
  1507. cout<<"密码错误!"<<endl;
  1508. cout<<"忘记密码 ?取回系统管理员密码请输入q!"<<endl;
  1509. cin>>get;
  1510. if(get=='q'||get=='Q')
  1511. {char yourcheckanswer[20]={''}; 
  1512. cout<<"请输入您所选择的问题的答案:";
  1513. cin>>yourcheckanswer;
  1514. if(strcmp(youranswer,yourcheckanswer)==0)
  1515. { cout<<"n您的密码是:";
  1516. for(int k=0;k<10;k++)cout<<password[k];
  1517. cout<<endl;
  1518. }
  1519. else cout<<"对不起,答案错误!"<<endl;
  1520. }
  1521. goto G;
  1522. }
  1523. mainhandle=new char[strlen(adiminister)+1];
  1524. strcpy(mainhandle,adiminister);
  1525. cout<<"登陆成功!"<<endl;
  1526. return;
  1527. }
  1528. else{
  1529. field *ptr;
  1530. ptr=firstemployee;
  1531. int checknumber=0;
  1532. while(ptr!=NULL)
  1533. {
  1534. if(strcmp(ptr->getname (),checkname)==0)
  1535. {
  1536. cout<<"请输入您的密码:"<<endl;
  1537. for(int j=0;j<strlen(ptr->getpassword ());j++)
  1538. {
  1539. checkpassword[j]=getch();
  1540. putch('*');
  1541. }
  1542. cout<<endl;
  1543. if(strcmp(checkpassword,ptr->getpassword())!=0) 
  1544. {
  1545. cout<<"密码错误!"<<endl;
  1546. goto G;
  1547. }
  1548. mainhandle=new char[strlen(ptr->getname ())+1];
  1549. strcpy(mainhandle,ptr->getname ());
  1550. cout<<"登陆成功!"<<endl;
  1551. checknumber=1;
  1552. return;
  1553. }
  1554. ptr=ptr->next ;
  1555. }
  1556. if(checknumber==0)
  1557. {cout<<"登陆名不存在!"<<endl;
  1558. goto G;
  1559. }
  1560. }
  1561. }
  1562. }
  1563. /////////////////////////////////////////////////////
  1564. //myrun.cpp
  1565. void run()
  1566. {    
  1567.    time_t t;
  1568.    t=time(0);
  1569.        cout<<"*******************************************************************************"<<endl;
  1570.        cout<<"*                                                                             *"<<endl;
  1571.        cout<<"*                                                                             *"<<endl;
  1572.        cout<<"*                          这是小型商店管理系统                               *"<<endl;
  1573.        cout<<"*                        可以对职工和货物进行管理                             *"<<endl;
  1574.    cout<<"*                       欢迎使用该小型商店管理系统                            *"<<endl;
  1575.    cout<<"*                                                                             *"<<endl;
  1576.    cout<<"*                                                                             *"<<endl;
  1577.        cout<<"*                                                                             *"<<endl;
  1578.        cout<<"*作者:郭世清                                                                 *"<<endl;
  1579.    cout<<"*您登陆的时间:"<<ctime(&t);
  1580.        cout<<"*******************************************************************************"<<endl;
  1581.    
  1582. }
  1583. ///////////////////////////////////////////////////////////////////////////////////////////////////////////