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

上传人:b****4 文档编号:5063657 上传时间:2023-05-08 格式:DOCX 页数:24 大小:20.05KB
下载 相关 举报
C++杂志订阅管理系统.docx_第1页
第1页 / 共24页
C++杂志订阅管理系统.docx_第2页
第2页 / 共24页
C++杂志订阅管理系统.docx_第3页
第3页 / 共24页
C++杂志订阅管理系统.docx_第4页
第4页 / 共24页
C++杂志订阅管理系统.docx_第5页
第5页 / 共24页
C++杂志订阅管理系统.docx_第6页
第6页 / 共24页
C++杂志订阅管理系统.docx_第7页
第7页 / 共24页
C++杂志订阅管理系统.docx_第8页
第8页 / 共24页
C++杂志订阅管理系统.docx_第9页
第9页 / 共24页
C++杂志订阅管理系统.docx_第10页
第10页 / 共24页
C++杂志订阅管理系统.docx_第11页
第11页 / 共24页
C++杂志订阅管理系统.docx_第12页
第12页 / 共24页
C++杂志订阅管理系统.docx_第13页
第13页 / 共24页
C++杂志订阅管理系统.docx_第14页
第14页 / 共24页
C++杂志订阅管理系统.docx_第15页
第15页 / 共24页
C++杂志订阅管理系统.docx_第16页
第16页 / 共24页
C++杂志订阅管理系统.docx_第17页
第17页 / 共24页
C++杂志订阅管理系统.docx_第18页
第18页 / 共24页
C++杂志订阅管理系统.docx_第19页
第19页 / 共24页
C++杂志订阅管理系统.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

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

《C++杂志订阅管理系统.docx》由会员分享,可在线阅读,更多相关《C++杂志订阅管理系统.docx(24页珍藏版)》请在冰点文库上搜索。

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

C++杂志订阅管理系统

C++杂志订阅管理系统

 

 

————————————————————————————————作者:

————————————————————————————————日期:

 

#include//数据流输入输出

#include//字符串操作

#include//文件输入输出

#include//时间库函数

#include//输入输出格式符

usingnamespacestd;//命名空间

intyear,month;

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

classOrder_infor

{

stringname;//用户姓名

stringsex;//用户性别

stringaddr;//用户地址

stringtel;//用户号码

stringmage;//杂志单位

floatprice;//杂志单价

intnum;//订阅数目

inty,m;//订阅限期

intg;

public:

Order_infor*head;//信息类头指针

Order_infor*next;//信息类next域

voidinput();//录入函数

voidinput(ifstream&infile);//读取函数

voidoutput();//输出函数

voidoutput(ofstream&outfile);//写入函数

floatgetprice();

intgetnum();

intgetyear();//获取期限时间函数

intgetmonth();

stringgetname();

voidorder();//录入信息

voidmend();//修改信息

voiddel_select();

voiddel1();//删除信息

voiddel2();

voidfound();

Order_infor*find(stringn);

boolfind(inty,intm);

voidstatistic();

voidshow();//显示信息

boolcomp(inty,intm);//判断当前订阅状况函数

voidsave();//保存信息

voidbegin();//初始信息

voidclear();//清除函数

voidsetg(intk){g=k;}//设置系统修改标志

intgetg(){returng;}//返回系统修改标志

}d;

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

floatOrder_infor:

:

getprice()

{

returnprice;

}

intOrder_infor:

:

getnum()

{

returnnum;

}

intOrder_infor:

:

getyear()

{

returny;

}

intOrder_infor:

:

getmonth()

{

returnm;

}

stringOrder_infor:

:

getname()

{

returnname;

}

/*888888888888888888888888888888888888888888888888888888888888888888888888*/

classMenu

{

public:

voidabout();//关于

voidmainmenu();//主菜单函数

boolland();//管理员登陆

};

/*888888888888888888888888888888888888888888888888888888888888888888888888*/

voidMenu:

:

about()

{

cout<<"┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"<

<<"\t1."<

<<"\t2."<

<<"\t3."<

<<"\t4."<

cout<<"┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅"<

}

/*88888888888888888888888888888888888888888888888888888888888888888888888888*/

boolMenu:

:

land()

{

Menub;//定义菜单类对象

b.about();//输出系统说明

strings;

inti=0;//计数变量

cout<<"请输入管理员密码:

"<

while

(1)

{

cin>>s;

if(s=="123456")//输入正确

returntrue;//返回正确

else//输错了

{

cout<<"输入密码错误,请重新输入:

";//输出提示信息

i++;//计数变量自加

if(i>=3)//连输三次错误

break;//跳出循环

}

}

cout<<"输入错误三次!

系统自动退出!

"<

system("pause");//显示暂停

returnfalse;//返回错误

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidMenu:

:

mainmenu()

{

system("cls");

strings;

cout<<"********************************************************************************"<

cout<<"欢迎使用杂志订阅管理软件"<

cout<<"********************************************************************************"<

cout<<"\t\t0.退出程序4.浏览订阅用户"<

cout<<"\t\t1.增加新订户5.查找用户信息"<

cout<<"\t\t2.删除用户6.修改用户信息"<

cout<<"\t\t3.统计本期杂志订户数7.保存信息"<

cout<<"请输入功能按钮:

";

cin>>s;

switch(s[0])

{

case'1':

d.order();break;

case'2':

d.del_select();break;

case'3':

d.statistic();break;

case'4':

d.show();break;

case'5':

d.found();break;

case'6':

d.mend();break;

case'7':

d.save();break;

default:

return;

}

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

input()

{

cout<<"请输入姓名:

";

while

(1)

{

cin>>name;//输入姓名

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n姓名输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入性别:

";

while

(1)

{

cin>>sex;//输入性别

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n性别输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入地址:

";//设置地址

while

(1)

{

cin>>addr;//输入地址

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n地址输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入电话号码:

";//设置电话号码

while

(1)

{

cin>>tel;//输入电话号码

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n号码输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入杂志单位:

";//设置杂志单位

while

(1)

{

cin>>mage;//输入杂志单位

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n杂志单位输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入单价:

";//设置单价

while

(1)

{

cin>>price;//输入单价

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n单价输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入订阅数:

";//设置订阅数

while

(1)

{

cin>>num;//输入订阅数

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n订阅数输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

cout<<"请输入订阅限期(年月):

";//设置期限

while

(1)

{

cin>>y>>m;//输入期限

if(cin.fail())//判断输入的数据类型是否有错

{

cout<<"\n订阅限期输入错误,请重新输入:

";

cin.clear();//清除错误状态

cin.get();//重输

}

elsebreak;//输入正确则跳出循环

}

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

input(ifstream&infile)//带参录入函数向链表输入

{

infile>>name>>sex>>addr>>tel>>mage>>price>>num>>y>>m;//输入至链表

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

output()//信息输出函数向显示屏输出

{

cout<

(2)<

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

output(ofstream&outfile)//向文件输出信息

{

outfile<

<

<

<

<

<

<

<

<

<

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

boolOrder_infor:

:

comp(inty,intm)//判断是否超期

{

if(year>y||(year==y&&month>m))//先比较年,若一样则比较月

returntrue;//比较当前时间与限期,获得订阅的当前状况,返回表示订阅超期

else

returnfalse;//返回表示订阅未超期

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

order()//向链表尾部录入订阅信息

{

system("cls");//清屏

Order_infor*p1,*p2=NULL;//定义对象指针

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的next变为空指针

p1=p1->next;//p1指向新开辟的空间,p1紧随p2之后

Order_infor:

:

setg

(1);//标记为修改

cout<<"\t\t\t按1继续,按0返回:

";//控制变量控制循环

cin>>n;//输入n

}

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

show()

{

system("cls");//清屏

cout.setf(ios:

:

left);

cout<<"订阅基本信息如下:

"<

<

<

<

Order_infor*p;//定义订阅信息类对象指针

p=head;//指向链表头部,启用链表信息

while(p->next)//只要下一结点不为空则执行循环

{//此循环功能在于输出所有订阅信息

p=p->next;//P指向下一节点

cout<name<sex<addr

<tel<mage<price<num<y<<"/"<m<

}

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

found()

{

system("cls");//清屏

stringn;//定义辅助变量

cout<<"输入姓名:

";//输出提示信息

cin>>n;//输入选择

if(!

find(n))//调用find函数查找

{

cout<<"\t\t找不到你要查找的内容!

"<

return;//函数调用结束

}

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

Order_infor*Order_infor:

:

find(stringn)

{

system("cls");//清屏

Order_infor*p;//定义辅助指针

p=head;//指向链表头结点

while(p->next)//当链表未至尾部时执行循环

{

if((p->next)->getname()==n)//班次匹配上则输出所查到的订阅信息

{

cout.setf(ios:

:

left);

cout<<"订阅基本信息如下:

"<

<<"姓名性别地址电话单位单价定阅数期限"<

(p->next)->output();//调用输出函数

returnp;//表示找到,返回的是目标结点的前一结点

}

p=p->next;//指向下一节点

}

returnNULL;

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

mend()//修改函数

{

system("cls");//清屏

Order_infor*p;//定义信息类指针变量

stringn;

cout<<"\t\t\t输入姓名方便查找:

";//输出提示信息

cin>>n;

p=find(n);//调用查找函数

if(!

p)//判断是否找到

{

cout<<"\t\t找不到你要修改的内容!

请利用程序查询功能确认!

"<

return;//函数调用结束

}

(p->next)->input();//调用录入函数对目标结点数据再录入

Order_infor:

:

setg

(1);

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

del_select()

{

cout<<"请选择删除选项:

"<

cout<<"1.删除过期用户;2.删除指定用户"<

intc;

cin>>c;

switch(c)

{

case1:

d.del2();break;

case2:

d.del1();break;

default:

cout<<"输入错误!

";

}

}

/*888888888888888888888888888888888888888888888888888888888888888888888888888*/

voidOrder_infor:

:

del1()//删除车辆信息函数

{

system("cls");//清屏

Order_infor*p1,*p2,*p3;//定义两对象指针用于链表操作

stringn;

cout<<"\t\t\t输入姓名:

";//输出提示信息

cin>>n;

p1=find(n);//调用查找函数

if(!

p1)//判断函数返回值是否为NULL

{

cout<<"\t\t找不到你要删除的内容!

"<

return;//函数调用结束

}

cout<<"\n\t\t\t确定删除(y/n)?

";//显示将要删除数据信息供用户核对

chara;

cin>>a;//输入指示

if(a=='y'||a=='Y')

{//因为头结点为空仅有next域所以只要考虑被删结点是中间结点和尾结点情况

if((p1->next)->next==NULL)//目标结点为尾结点时

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2