C++杂志订阅管理系统_第1页
C++杂志订阅管理系统_第2页
C++杂志订阅管理系统_第3页
免费预览已结束,剩余9页可下载查看

下载本文档

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

文档简介

1、#include/数据流输入输出#include / 字符串操作#include / 文件输入输出#include / 时间库函数#include / 输入输出格式符usingnamespacestd; / 命名空间intyear,month; classOrder_infor stringname;/用户姓名stringsex;/用户性别stringaddr;/用户地址stringtel;/用户号码stringmage;/杂志单位floatprice;/杂志单价intnum;/订阅数目inty,m;/订阅限期intg; public: Order_infor*head;/信息类头指针Orde

2、r_infor*next;/信息类 next 域voidinput(); / 录入函数voidinput(ifstream&infile); / 读取函数voidoutput(); / 输出函数voidoutput(ofstream&outfile); / 写入函数floatgetprice(); intgetnum(); intgetyear(); / 获取期限时间函数intgetmonth(); stringgetname(); voidorder(); / 录入信息voidmend(); / 修改信息voiddel_select(); voiddel1(); / 删除信息

3、voiddel2(); voidfound(); Order_infor*find(stringn); boolfind(inty,intm); voidstatistic(); voidshow(); / 显示信息boolcomp(inty,intm); / 判断当前订阅状况函数voidsave(); / 保存信息voidbegin(); / 初始信息voidclear(); / 清除函数voidsetg(intk)g=k; / 设置系统修改标志intgetg()returng; / 返回系统修改标志d; floatOrder_infor:getprice() returnprice; in

4、tOrder_infor:getnum() returnnum; intOrder_infor:getyear() returny; intOrder_infor:getmonth() returnm; stringOrder_infor:getname() returnname; classMenu public: voidabout(); / 关于voidmainmenu(); / 主菜单函数boolland();/管理员登陆; voidMenu:about() cout endl t1.endl t2.endl t3.endl t4.endl; cout endl; boolMenu:l

5、and() Menub;/ 定义菜单类对象b.about();/输出系统说明strings; inti=0;/计数变量cout 请输入管理员密码: s; if(s=123456)/输入正确returntrue;/返回正确else/输错了 cout=3)/连输三次错误break;/跳出循环 cout 输入错误三次!系统自动退出!endl;/提示将退出登录system(pause);/显示暂停returnfalse;/返回错误 voidMenu:mainmenu() system(cls); strings; cout*endl; cout 欢迎使用杂志订阅管理软件endl; cout*endl;

6、 couttt0.退出程序 4. 浏览订阅用户 endl; couttt1.增加新订户 5. 查找用户信息 endl; couttt2.删除用户 6. 修改用户信息 endl; couttt3.统计本期杂志订户数7. 保存信息 endl; couts; switch(s0) case1:d.order();break; case2:d.del_select();break; case3:d.statistic();break; case4:d.show();break; case5:d.found();break; case6:d.mend();break; case7:d.save();br

7、eak; default:return; voidOrder_infor:input() coutname;/ 输入姓名if(cin.fail() / 判断输入的数据类型是否有错 coutn姓名输入错误 , 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebreak;/输入正确则跳出循环 coutsex;/输入性别if(cin.fail() / 判断输入的数据类型是否有错 coutn性别输入错误 , 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebreak;/输入正确则跳出循环 coutaddr;

8、/输入地址if(cin.fail() / 判断输入的数据类型是否有错 coutn地址输入错误 , 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebreak;/输入正确则跳出循环 couttel;/输入电话号码if(cin.fail() / 判断输入的数据类型是否有错 coutn号码输入错误 , 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebreak;/输入正确则跳出循环 coutmage;/ 输入杂志单位if(cin.fail() / 判断输入的数据类型是否有错 coutn杂志单位输入错误 ,

9、 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebreak;/输入正确则跳出循环 coutprice;/输入单价if(cin.fail() / 判断输入的数据类型是否有错 coutn单价输入错误 , 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebreak;/输入正确则跳出循环 coutnum;/ 输入订阅数if(cin.fail() / 判断输入的数据类型是否有错 coutn订阅数输入错误 , 请重新输入 :; cin.clear();/清除错误状态cin.get(); / 重输 elsebr

10、eak;/输入正确则跳出循环 coutym;/ 输入期限if(cin.fail() / 判断输入的数据类型是否有错 coutnamesexaddrtelmagepricenumym;/输入至链表 voidOrder_infor:output()/信息输出函数向显示屏输出 coutsetw(8)namesetw(4)sexsetw(10)addrsetw(13)telsetw(10)magesetw(6)pricesetw(4)numsetw(2)y/mendl; voidOrder_infor:output(ofstream&outfile)/向文件输出信息 outfilesetw(1

11、0)name /setw()设置输出宽度setw(10)sex setw(10)addr setw(12)tel setw(10)mage setw(10)price setw(10)num setw(10)y setw(10)m y|(year=y&monthm)/先比较年,若一样则比较月returntrue;/比较当前时间与限期 , 获得订阅的当前状况 , 返回表示订阅超期else returnfalse; / 返回表示订阅未超期 voidOrder_infor:order()/向链表尾部录入订阅信息 system(cls);/清屏Order_infor*p1,*p2=NULL;/

12、定义对象指针p1=head;/ 将头指针赋给 p1 intn=1;/定义循环控制变量while(p1-next)/当头结点后有数据时执行循环,头结点为空也不会执行循环p1=p1-next;/使 p 能够指向未存放数据的内存, 录入信息会存放在所有信息之后while(n)/此循环执行在链表尾部插入录入的信息/ 通过循环不断开辟新空间录入新的数据p2=newOrder_infor;/开辟存储空间,返回地址给p2 p2-input();/调用录入函数 , 为 p2 所指结点数据赋值p1-next=p2;/p1的 next 指向新开辟空间,连接了p1 和 p2 p2-next=NULL;/p2的 ne

13、xt 变为空指针p1=p1-next;/p1指向新开辟的空间, p1 紧随 p2 之后Order_infor:setg(1);/标记为修改coutn;/输入 n voidOrder_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)/只要下一结点不为空则执行循环/ 此循环功能在于输出所有订阅信息p=p-next;/

14、P指向下一节点coutsetw(8)namesetw(8)sexsetw(8)addr setw(13)telsetw(8)magesetw(8)pricesetw(8)numsetw(4)y/mendl;/调用 next 所指对象的输出信息函数,头结点未存放数据只是初始化了next voidOrder_infor:found() system(cls);/清屏stringn;/定义辅助变量coutn;/输入选择if(!find(n)/调用 find 函数查找 couttt找不到你要查找的内容 !next)/当链表未至尾部时执行循环 if(p-next)-getname()=n)/班次匹配上则

15、输出所查到的订阅信息 cout.setf(ios:left); cout 订阅基本信息如下 :endl/输出信息姓名性别地址电话单位单价定阅数期限next)-output();/调用输出函数returnp;/表示找到,返回的是目标结点的前一结点 p=p-next;/指向下一节点 returnNULL; voidOrder_infor:mend()/修改函数 system(cls);/清屏Order_infor*p;/定义信息类指针变量stringn; coutn; p=find(n);/调用查找函数if(!p)/判断是否找到 couttt找不到你要修改的内容!请利用程序查询功能确认!next)

16、-input();/调用录入函数对目标结点数据再录入Order_infor:setg(1); voidOrder_infor:del_select() cout 请选择删除选项 :endl; cout1. 删除过期用户; 2. 删除指定用户 c; switch(c) case1:d.del2();break; case2:d.del1();break; default:cout输入错误! ; voidOrder_infor:del1()/删除车辆信息函数 system(cls);/清屏Order_infor*p1,*p2,*p3;/定义两对象指针用于链表操作stringn; coutn; p1

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

18、ext)-next;/p3指向目标结点下一结点p1-next=p3;/连接目标结点前后结点deletep2;/释放目标结点 Order_infor:setg(1);/标记为修改 voidOrder_infor:del2() system(cls);/清屏Order_infor*p1,*p2,*p3;/定义两对象指针用于链表操作intn; charc; p1=head; while(p1-next) n=p(p1-next)-y,(p1-next)-m); if(n) system(cls); cout 订阅基本信息如下 :endl/输出信息姓名性别地址电话单位单价定阅数期限next)-outp

19、ut(); coutc; if(c=y|c=Y) / 因为头结点为空仅有next 域所以只要考虑被删结点是中间结点和尾结点情况if(p1-next)-next=NULL)/目标结点为尾结点时 p2=p1-next;/p2指向目标结点p1-next=NULL;/p1连接目标结点的 next 域重新赋值为空指针deletep2;/释放目标空间return; else / 目标结点为中间节点时p2=p1-next;/p2指向目标结点p3=(p1-next)-next;/p3指向目标结点下一结点p1-next=p3;/连接目标结点前后结点deletep2;/释放目标结点 Order_infor:setg(1);/标记为修改 p1=p1-next; voidOrder_infor:statistic() Order_infor*p; intn=0; intsum=0; p=head; cout 本期订阅信息 endl; cout 用户名订阅数单价全额 next) coutnext)-getname()tnext)-getnum() tnext)-getprice()t next)-getnum()*(p-

温馨提示

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

评论

0/150

提交评论