C杂志订阅管理系统_第1页
C杂志订阅管理系统_第2页
C杂志订阅管理系统_第3页
C杂志订阅管理系统_第4页
C杂志订阅管理系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、#include#include/ 字符串操作/ 文件输入输出#include/ 时间库函数#include using namespace std; int year,month;/ 输入输出格式符/ 命名空间#include/数据流输入输出/*888888888888888888888888888888888888888888888888888888888888888888888888888*/class Order_inforstring name;/用户姓名string sex; /用户性别string addr;/用户地址string tel;/用户号码string mage;/杂志

2、单位float price; /杂志单价int num; /订阅数目int y,m; /订阅限期int g;public:Order_infor* head;/信息类头指针Order_infor* next;/信息类 next域void input();/录入函数void input(ifstream & infile);/读取函数void output();/输出函数void output(ofstream & outfile);/写入函数float getprice();int getnum();int getyear();/获取期限时间函数int getmonth();string ge

3、tname();void order();/录入信息void mend();/修改信息void del_select();void del1();/删除信息void del2();void found();Order_infor*find(string n); bool find(int y,int m);void statistic();void show(); bool comp(int y,int m);订阅状况函数void save();/显示信息 判断当前保存信息/void begin();/初始信息void clear();/清除函数void setg(int k) g=k; /设

4、置系统修改标志int getg() return g;/返回系统修改标志d;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ float Order_infor:getprice()return price;int Order_infor:getnum()return num;int Order_infor:getyear()return y;int Order_infor:getmonth()return m;string Order_infor:getname()return na

5、me;/*888888888888888888888888888888888888888888888888888888888888888888888888*/class Menupublic:void about(); / 关于void mainmenu(); / 主 菜 单 函 数bool land(); / 管理员登 陆 ;/*888888888888888888888888888888888888888888888888888888888888888888888888*/ void Menu:about()cout endlt1.endlt2.endlt3.endlt4.endl;cou

6、t e ndl;/*88888888888888888888888888888888888888888888888888888888888888888888888888*/bool Menu:land()Menu b;b.about();string s;int i=0;couts; if(s=123456)return true;elsecout=3)break;/endl;/定义菜单类对象输出系统说明计数变量 输出提示信息/, 请重新输入: ; /输入正确 返回正确 输错了输出提示信息 计数变量自加 连输三次错误 跳出循环cout 输入错误三次!系统自动退出! endl; / system

7、(pause);/return false;/提示将退出登录 显示暂停 返回错误/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Menu:mainmenu()system(cls);string s;cout*endl;cout欢迎使用杂志订阅管理软件endl;浏览订阅用户 endl; 查找用户信息 endl; 修改用户信息 endl; 保存信息 endl;void Order_infor:input()coutname;if (cin.fail()错cout n cin.c

8、lear(); cin.get();else break;coutsex;if (cin.fail()/输入姓名判断输入的数据类型是否有姓名输入错误 , 请重新输入 :;/清除错误状态重输输入正确则跳出循环输入性别判断输入的数据类型是否有couttt0. 退出程序4.couttt1. 增加新订户 5.couttt2. 删除用户6.couttt3. 统计本期杂志订户数 7.couts;switch(s0)case1:d.order();break; case2:d.del_select();break; case3:d.statistic();break;case4:d.show();break

9、;case5:d.found();break;case6:d.mend();break;case7:d.save();break;default:return;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/cout n 性别输入错误 , 请重新输入 :;cin.clear(); / cin.get();else break;/coutaddr; / if (cin.fail()错cout n 地址输入错误 cin.clear(); / cin.get();else break;/co

10、uttel;if (cin.fail()/cout n号码输入错误cin.clear(); cin.get();/else break;/coutmage; if (cin.fail()/输入电话号码/ 判断输入的数据类型是否有请重新输入 :;清除错误状态/ 重输输入正确则跳出循环/ 设置杂志单位输入杂志单位/ 判断输入的数据类型是否有cout n 杂志单位输入错误 cin.clear(); / cin.get();else break; /, 请重新输入 :;清除错误状态/ 重输输入正确则跳出循环/coutprice; / if (cin.fail()设置单价输入单价/ 判断输入的数据类型是

11、否有cout n 单价输入错误 , 请重新输入 :;cin.clear(); cin.get();else break;coutnum;if (cin.fail()/cout n 订阅数输入错误cin.clear();cin.get();else break;coutym;if (cin.fail(), 请重新输入 /月) : ; /清除错误状态重输输入正确则跳出循环设置订阅数输入订阅数 判断输入的数据类型是否有清除错误状态重输输入正确则跳出循环设置期限输入期限判断输入的数据类型是否有cout namesexaddrtelmagepricenumym;/输入至链表/*8888888888888

12、88888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:output()/ 信息输出函数向显示屏输出 coutsetw(8)namesetw(4)sexsetw(10)addrsetw(13)telsetw(10)magesetw(6)pricesetw(4)numsetw(2)y/mendl;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:o

13、utput(ofstream & outfile) / 向文件输出信息outfilesetw(10)name /setw() 设置输出宽度 setw(10)sexsetw(10)addrsetw(12)telsetw(10)magesetw(10)pricesetw(10)numsetw(10)ysetw(10)my|(year=y&monthm)/ return true; / 状况 ,返回表示订阅超期elsereturn false;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

14、 判断是否超期先比较年,若一样则比较月比较当前时间与限期 , 获得订阅的当前/ 返回表示订阅未超期/*888888888888888888888888888888888888888888888888888888888888888888888888888*/向链表尾清屏定义对象将头指针void Order_infor:order() / 部录入订阅信息system(cls); /Order_infor *p1,*p2=NULL; / 指针p1=head; / 赋给 p1int n=1;/定义循环控制变量while(p1-next)/当头结点后有数据时执行循环,头结点为空也不会执行循环p1=p1-

15、next;/使p能够指向未存放数据的内存 , 录入信息会存放在所有信息之后while(n)/此循环执行在链表尾部插入录入的信息/通过循环不断开辟新空间录入新的数据p2=new Order_infor;/开辟存储空间,返回地址给 p2p2-input();/调用录入函数,为p2所指结点数据赋值p1-next=p2;/p1的 next指向新开辟空间,连接了 pl和p2p2-next=NULL;/p2的 next变为空指针p1=p1-next;/p1指向新开辟的空间, p1 紧随 p2 之后Order_infor:setg(1);/标记为修改coutn;/输入 n/*8888888888888888

16、88888888888888888888888888888888888888888888888888888888888*/ void Order_infor:show()system(cls); / 清屏cout.setf(ios:left);cout 订阅基本信息如下 :endl / 显示所有订 阅信息setw(8)姓名setw(8)性别setw(8)地址”setw(13) 电话 setw(8) 单位 setw(8) 单价 setw(8) 定阅数 setw(8) 期限 next)/只要下一结点不为空则执行循环 / 此循环功能 在于输出所有订阅信息节点coutsetw(8)namesetw(8

17、)sexsetw(8)addrsetw(13)telsetw(8)magesetw(8)pricesetw(8)nums etw(4)y/mendl; / 调用 next 所指对象的输出信息函数,头结点未存放数据只是初始化了 next/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:found()system(cls); /清屏 定义辅助输出提示变量string n;/coutn;/输入选择if(!find(n)/调用find函数查找rcouttt 找

18、不到你要查找的内容!next) / 尾部时执行循环if( (p-next)-getname()=n ) 所查到的订阅信息cout.setf(ios:left);cout 订阅基本信息如下 :next)-output();/调用输出函数return p;到,返回的是目标结点的前一结点p=p-next;/表示找/指向下endl;II节点姓名 性别 地址 电话 单位 单价 定阅数 期限 return NULL;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Order_infor:

19、mend()/system(cls);/Order_infor *p;/量string n;coutn;p=find(n); / if(!p) / couttt 找不到你要修改的内容!修改函数清屏定义信息类指针变/ 输出调用查找函数判断是否找到请利用程序查询功能确认! next)-input(); / 点数据再录入Order_infor:setg(1);函数调用结束调用录入函数对目标结/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:del_selec

20、t()cout 请选择删除选项 :endl;cout1. 删除过期用户; 2. 删除指定用户 c;switch(c)case 1:d.del2();break;case 2:d.del1();break;default:cout 输入错误! /*888888888888888888888888888888888888888888888888888888888888888888888888888*/void Order_infor:del1()/辆信息函数system(cls);/Order_infor *p1,*p2,*p3;对象指针用于链表操作string n;coutn;p1=find(n

21、); / 函数/返回值是否为NULLcouttt找不到你要删除的内容到的提示return;/结束if(!p1) /!endl;/ couta; /if(a=y|a=Y) /点为空仅有 next 域所以只要考虑被删结点是中间结点和尾结点情况if(p1-next)-next=NULL) /为尾结点时p2=p1-next;/p2标结点p1-next=NULL;/p1标结点的next 域重新赋值为空指针delete p2;/空间else /删除车清屏定义两输出提示调用查找判断函数输出没找函数调用显示将要输入指示因为头结目标结点指向目连接目释放目标目标结点为中间节点时指向目void Order_info

22、r:del2() system(cls); Order_infor *p1,*p2,*p3;针用于链表操作int n; char c;p1=head; while(p1-next) n=p(p1-next)-y,(p1-next)-m); if(n)/清屏定义两对象指p3=(p1-next)-next;/p3指向目标结点下一结点p1-next=p3;/连接目标结点前后结点delete p2;/释放目标结点iOrder_infor:setg(1);/标记为修标结点p2=p1-next;/p2改/*888888888888888888888888888888888888888888888

23、888888888888888888888888888888*/system(cls);/单位 单价输出信息定阅数 期限cout 订阅基本信息如下 :endl 姓名 性别 地址 电话next)-output();coutc;if(c=y|c=Y) / 因为头结 点为空仅有 next 域所以只要考虑被删结点是中间结点和尾结点情况if(p1-next)-next=NULL)/ 目标结点为尾结点时p2=p1-next;/p2 指向目标结点p1-next=NULL;/p1 连接目标结点的 next/ 释放目标空间 点时/p2 指向目标结点/p3 指向目标结点下一结点/ 连接目标结点前后结点/ 释放目标

24、结点域重新赋值为空指针deletereturn;else/p2=p1-next;p3=(p1-next)-nextp1-next=p3;p2;目标结点为中间节deleteOrder_infor:setg(1);/ 标记为修改p1=p1-next;p2;/*888888888888888888888888888888888888888888888888888888888888888888888888888*/ void Order_infor:statistic()Order_infor *p;int n=0;int sum=0;p=head;cout 本期订阅信息 endl;cout 用户名 订阅数 单价 全额 next)coutnext)-getname()tnext)-getnum() tnext)-getprice()t next)-getnum()*(p-next)-getpri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论