C++杂志订阅管理系统.pdf

上传人:ylj18****70940 文档编号:73116522 上传时间:2023-02-15 格式:PDF 页数:13 大小:324.14KB
返回 下载 相关 举报
C++杂志订阅管理系统.pdf_第1页
第1页 / 共13页
C++杂志订阅管理系统.pdf_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《C++杂志订阅管理系统.pdf》由会员分享,可在线阅读,更多相关《C++杂志订阅管理系统.pdf(13页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、#include/数据流输入输出#include/字符串操作#include/文件输入输出#include/时间库函数#include/输入输出格式符using namespace std;/命名空间int year,month;class Order_inforstring name;/用户姓名string sex;/用户性别string addr;/用户地址string tel;/用户号码string mage;/杂志单位float price;/杂志单价int num;/订阅数目int y,m;/订阅限期int g;public:Order_infor*head;Order_infor*

2、next;void input();void input(ifstream&infile);void output();void output(ofstream&outfile);float getprice();int getnum();int getyear();int getmonth();string getname();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

3、 statistic();void show();bool comp(int y,int m);void save();void begin();/信息类头指针/信息类 next 域/录入函数/读取函数/输出函数/写入函数/获取期限时间函数/录入信息/修改信息/删除信息/显示信息/判断当前订阅状况函数/保存信息/初始信息void clear();d;/清除函数/设置系统修改标志/返回系统修改标志void setg(int k)g=k;intgetg()return g;float Order_infor:getprice()int Order_infor:getnum()int Order_i

4、nfor:getyear()int Order_infor:getmonth()string Order_infor:getname()class Menupublic:;void Menu:about()coutendlt1.endlt2.endlt3.endlt4.endl;coutendl;bool Menu:land()Menu b;/定义菜单类对象string s;b.about();/输出系统说明void about();/关于/主菜单函数void mainmenu();return name;return m;return y;return num;return price;bo

5、ol land();/管理员登陆int i=0;/计数变量void Menu:mainmenu()system(cls);string s;cout*cout欢 迎 使 用 杂 志 订 阅 管 理 软 件cout*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();brea

6、k;case4:d.show();break;case5:d.found();break;case6:d.mend();break;case7:d.save();break;default:return;cout请输入管理员密码:s;if(s=123456)/输入正确return true;/返回正确else/输错了cout输入密码错误,请重新输入:;/输出提示信息i+;/计数变量自加break;/跳出循环cout输入错误三次!系统自动退出!=3)/连输三次错误endl;endl;endl;void Order_infor:input()couttel;/输入电话号码if(cin.fail()

7、/判断输入的数据类型是否有错coutaddr;/输入地址if(cin.fail()else break;/输入正确则跳出循环cout n 地址输入错误,请重新输入:;cin.clear();/清除错误状态cin.get();/重输/判断输入的数据类型是否有错coutsex;/输入性别if(cin.fail()else break;/输入正确则跳出循环cout n 性别输入错误,请重新输入:;cin.clear();/清除错误状态cin.get();/重输/判断输入的数据类型是否有错coutname;/输入姓名if(cin.fail()else break;/输入正确则跳出循环cout n 姓名

8、输入错误,请重新输入:;cin.clear();/清除错误状态cin.get();/重输/判断输入的数据类型是否有错else break;/输入正确则跳出循环cout n 号码输入错误,请重新输入:;cin.clear();/清除错误状态cin.get();/重输cout请输入杂志单位:;/设置杂志单位while(1)coutnum;/输入订阅数if(cin.fail()else break;/输入正确则跳出循环cout price;/输入单价if(cin.fail()else break;/输入正确则跳出循环cout n 单价输入错误,请重新输入:;cin.clear();/清除错误状态ci

9、n.get();/重输coutmage;/输入杂志单位if(cin.fail()else break;/输入正确则跳出循环cout n 杂志单位输入错误,请重新输入:;cin.clear();/清除错误状态cin.get();/重输/判断输入的数据类型是否有错while(1)/判断输入的数据类型是否有错coutym;/输入期限if(cin.fail()else break;/输入正确则跳出循环cout y|(year=y&monthm)/先比较年,若一样则比较月elsereturn false;/返回表示订阅未超期return true;/比较当前时间与限期,获得订阅的当前状况,返回表示订阅o

10、utfilesetw(10)namesetw(10)sexsetw(10)addrsetw(12)telsetw(10)magesetw(10)pricesetw(10)numsetw(10)ysetw(10)mendl;/setw()设置输出宽度coutsetw(8)namesetw(4)sexsetw(10)addrsetw(13)telsetw(10)magesetw(6)pricesetw(4)numsetw(2)y/mnamesexaddrtelmagepricenumym;/输入至链表超期system(cls);/清屏Order_infor*p1,*p2=NULL;/定义对象指针p

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

12、or:setg(1);/标记为修改coutn;/输入 n入录入的信息录入新的数据给 p2点数据赋值间,连接了 p1 和 p2紧随 p2 之后void Order_infor:show()息while(p-next)/只要下一结点不为空则执行/此循环功能在于输出所有setw(13)telsetw(8)magesetw(8)pricesetw(8)numsetw(4)ynext;/P 指向下一节点coutsetw(8)namesetw(8)sexsetw(8)addr循环订阅信息system(cls);/清屏cout.setf(ios:left);cout订阅基本信息如下:endl/显示所有订阅信

13、息setw(8)姓名setw(8)性别setw(8)地址setw(13)电话setw(8)单位setw(8)单价setw(8)定阅数setw(8)期限endl;Order_infor*p;/定义订阅信息类对象指针p=head;/指向链表头部,启用链表信mendl;/调用 next 所指对象的输出信息函数,头结点未存放数据只是初始化了 nextvoid Order_infor:found()system(cls);/清屏string n;/定义辅助变量coutn;/输入选择if(!find(n)couttt 找不到你要查找的内容!next)if(p-next)-getname()=n)cout.

14、setf(ios:left);cout订阅基本信息如下:endlnext)-output();return p;结点的前一结点p=p-next;return NULL;void Order_infor:mend()system(cls);Order_infor*p;string n;coutn;p=find(n);/调用 find 函数查找/找不到的话输出相应提示信/函数调用结束/清屏/定义辅助指针/指向链表头结点/当链表未至尾部时执行循环/班次匹配上则输出所查到的订阅信息/输出信息单位单价定阅数期限endl;/调用输出函数/表示找到,返回的是目标/指向下一节点/修改函数/清屏/定义信息类指针

15、变量/输出提示信息/调用查找函数息if(!p)/判断是否找到couttt 找不到你要修改的内容!请利用程序查询功能确认!next)-input();/调用录入函数对目标结点数据再录入Order_infor:setg(1);void Order_infor:del_select()cout请选择删除选项:endl;cout1.删除过期用户;2.删除指定用户c;switch(c)case 1:d.del2();break;case 2:d.del1();break;default:cout输入错误!;void Order_infor:del1()system(cls);Order_infor*p1

16、,*p2,*p3;操作string n;coutn;p1=find(n);if(!p1)NULLcouttt 找不到你要删除的内容!endl;return;couta;if(a=y|a=Y)域所以只要考虑被删结点是中间结点和尾结点情况if(p1-next)-next=NULL)/删除车辆信息函数/清屏/定义两对象指针用于链表/输出提示信息/调用查找函数/判断函数返回值是否为/输出没找到的提示/函数调用结束/显示将要删除数据信息供用户/输入指示/因为头结点为空仅有 next/目标结点为尾结点时else/目标结点为中间节点时Order_infor:setg(1);/标记为修改p2=p1-next;

17、/p2 指向目标结点p3=(p1-next)-next;/p3 指向目标结点下一结点p1-next=p3;/连接目标结点前后结点delete p2;/释放目标结点p2=p1-next;/p2 指向目标结点p1-next=NULL;/p1 连接目标结点的 nextdelete p2;/释放目标空间域重新赋值为空指针void Order_infor:del2()system(cls);/清屏Order_infor*p1,*p2,*p3;/定义两对象指针用于链表操作int n;char c;while(p1-next)n=p(p1-next)-y,(p1-next)-m);if(n)system(c

18、ls);cout订阅基本信息如下:endl/输出信息 姓名性别地址电话单位单价定阅数期限next)-output();p1=head;coutc;点为空仅有 next 域所以只要考虑被删结点是中间结点和尾结点情况 if(p1-next)-next=NULL)/目标结点为尾结p2=p1-next;/p2 指向目标点时结点p1-next=NULL;/p1 连接目标结delete p2;/释放目标空间点的 next 域重新赋值为空指针return;else/目标结点p2=p1-next;/p2 指向目标结点p3=(p1-next)-next;/p3 指向目标p1-next=p3;/连接目标结为中间节

19、点时结点下一结点点前后结点delete p2;点Order_infor:setg(1);p1=p1-next;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()tnext)-getnum()*(p-next)-getprice()next)-getnum();sum+=(p-next)-getnum()*(p-next)-getprice();

20、p=p-next;cout合计tn ttsuminput(infile);p-next=p2;p=p-next;p2-next=NULL;infile.close();p=head;p2=p;while(p-next)p=p-next;p2-next=NULL;void Order_infor:save()void Order_infor:clear()Order_infor*p,*p2;p=head-next;while(p)p2=p;p=p-next;delete p2;Order_infor*p;p=head;ofstream outfile(杂志订阅.txt,ios:out);(p-next)-output(outfile);p=p-next;while(p-next)coutttt 文件已保存!next=NULL;Menu menu;int k=menu.land();/调用登录函数返回值赋给 Kint n=1,m;d.begin();coutyearmonth;while(k&n)if(d.getg()=1)/若信息被修改过,则提醒是否保存coutm;if(m=1)d.save();menu.mainmenu();coutn;d.clear();return 0;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 工作报告

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁