C++淘宝管理系统及课程设计.docx
《C++淘宝管理系统及课程设计.docx》由会员分享,可在线阅读,更多相关《C++淘宝管理系统及课程设计.docx(14页珍藏版)》请在冰豆网上搜索。
![C++淘宝管理系统及课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/10/826d8386-9bc6-41ae-95b7-9fa8a5a07d28/826d8386-9bc6-41ae-95b7-9fa8a5a07d281.gif)
C++淘宝管理系统及课程设计
面向对象程序设计(C++)课程设计
题目:
我的淘宝购物系统
系别:
专业(含班级):
学号:
姓名
指导教师职称
填表日期:
年月日
选题的依据及意义:
随着电脑的越来越普及,人们已经不满足于往常的店铺购物,现在大多数人都喜欢网络购物,网络购物的方便,快捷,给我们带来了许许多多的惊喜,因此我选择如今越来越多人喜欢在淘宝上购买自己喜爱的东西,设计了一个简单的网上购物系统。
本课程设计内容
使用系统实现达到增加信息,输出信息,修改信息,删除信息的功能。
然后用到淘宝的购物系统。
研究目标
对C++的课程设计进行初步的了解,设计出一个自己独立未完成的系统,来检验自己的对C++面向对象的了解更加深刻,从而提高自己的学习激情,对C++的应用了解更加的多。
C++面向对象程序设计实现方案
一、项目要求
1.项目描述
储存,查询,修改,宝贝信息,主要信息为宝贝编号、买家姓名、发货时间、收货地址、预定详情。
2.运行界面
3.功能说明
我要淘宝:
逐步显示涛宝信息如宝贝编号,购买者姓名,发货时间,收获地址,预订性情,各数据间用”\t”格式分隔
输出购买信息:
逐步输出宝贝编号,购买信息等。
修改订单信息:
从键盘上读取要修改的数据类型,基本信息都可以进行修改,修改以后交易信息的数目会自动进行统计,这主要采用的是静态成员函数实现的。
删除订单信息:
可以对订单信息进行修改,然后在文件夹里面进行空格删除的方式,使需要删除的信息进行消失处理。
推出我的淘宝信息:
结束程序。
二、设计分析
1.首先做的这个系统是没有自带文件夹的,但系统进行运行以后,都会产生相应的文件夹,文件夹里面会存储每次操作以后的数据,数据主要是宝贝编号,购买者姓名,发货时间,收获地址,预订性情等五项基本信息,这五项基本信息都存储在文件的同一行,这样可以存储多行数据信息。
2.定义每条信息的为:
classYage
{
public:
voidgetdetail();//获取信息
voidprint();//输出单个订单信息
voiddisplay();//显示初始化化信息
char*getnumber();//获取作为号使用指针
voidsetorder();//修改订单信息
voidsetdelete();//删除订单信息
staticvoidstatistics();
private:
charnumber[20];//宝贝编号
charname[40];//购买者姓名
chartime[20];//发货时间
charaddress[40];//收货地点
charstatue;//预定详情
staticintsum;
};
3.每个公有成员函数都在类的定义中有所提及,并在后面都有备注,每行代码几乎都有备注,这样有利于函数的可读性操作。
具体设计
1.我要淘宝信息用getdetail()的设计
获取信息的方式是逐步提示下操作的,这样有利于操作的方便性,逐步是在"请输入您要预定的宝贝编号:
""请输入您的姓名:
";"请输入您要发货时间:
""请输入收货地点:
""您确定要预定吗?
(f/t):
"这五个单独信息构成的,最后一步才是是否要订购,这样不会造成纠纷,使购买者赶到迷惑的设计要求。
2.输出购买信息是用print()设计
首先调用函数display();显示出"宝贝编号""购买者姓名""发货时间""收获地点""预定详情";这五个基本的购物信息,然后使用指针
分别找出已经在文件夹里面的信息,然后逐一输出,再每组数据输出完以后,再调用静态成员函数统计函数,对本次次操作的交易数目进行动态全局的输出,这样使得函数的使用记录的是每次操作的准确数据。
3.想修宝贝信息是调用setorder()函数,即重新已经存储的数据进行动态修改。
首先使用采用动态数据查找到所需修改数据的宝贝编号,然后询问用户是不是要确定修改订单信息,如果用户确定要修改订单信息,则使用“请选择要修改的内容:
"
"如果想修改宝贝编号,请按1"
"如果想修购买者姓名,请按2"
"如果想修改发货时间,请按3"
"如果想修改收获地点,请按4"
"如果想修改预定详情,请按5"
选定需要修改的信息,并按数字键来确定,然后再输入需要修改的内容,最后在返回函数,现在函数采用二进制编码进行读写,让后关闭文件,这样就就可以实现文件信息的查找,修改,与存储了。
4.使用setdelete()函数进行数据删除操作.
这个函数的使用非常简单,只是将其他的数据替换掉不能显示的数据,在屏幕中是不能显示的。
这个函数和setorder()函数的内容调用差不多,在这里我就不重复的说了。
5.就是退出系统,使用exit(0);就可以实现退出系统的功能了。
C++面向对象程序设计课程设计小结
这个课程设计的主题都是自己逐步调试功能并运行出来的,开始想到这个系统时是借用了老师的飞机售票系统,然后有联想到淘宝的购物,最后决定写一个淘宝的购物系统。
在最开始的时候就要整体的布局,系统有那几个功能,需要那些函数的使用。
我初步确定的是五个操作大体,每个购物信息包含五个子信息。
五个主体操作是"1.)我要淘宝信息"、"2.)输出购买信息"、"3.)修改订单信息"、"4.)删除订单信息"、"5.)退出雅阁淘宝"。
首先我想到的是对数据的输出操作,感觉这个应该会比较简单,然后在做的时候发现了很多问题,字符串的读取开始准备用string实现的,但用的时候发现了很多问题,最后没办法,只有选择用字符串数组来实现数据的处理。
在前面的主题布局完场以后,现在开始实现每一个比较小的共能模板块,我要淘宝信息这个板块比较简单,很快就做好,输出信息这个模板块是使用指针实现的,在后面基本上是把飞机售票系统的一些类容拿来借鉴使用的,定位,查找,这些都比较难,然后都是借鉴的,在修改信息的时候就用到了定位,查找功能的函数,这个只是对内容的修改,这个最后完成的还是比较快的。
主要是灾后一个删除信息的,因为我在开始用的是指针定位,与查找,但在用到删除信息的时候,就不知道该怎么用了。
然后又把原来的师生管理系统拿来看,因为里面有删除师生,看时候发现里面是用数组进行存储,然后再删除的时候,数组下标实现前移,这样就掩盖了要删除的信息,这样的方法让我没办法,我最后准备将所有的数据进行数组存储的时候,发现了很多不能修改的问题,没办法,就在网上找资料,看有什么好的办法是删除文件夹的数据的,最后还是没找到,最后,在实在没办法的时候,就想到了替换,将那些要删除的信息。
这就是这个课程设计最大的缺憾,因为时间用了很长,十多个小时就为了这个系统的设计。
不过最后的整体功能还是实现了,基本的要求也达到了。
实施方案包括:
一、项目要求
1.项目描述(描述项目的主要内容)
2.交互效果(键盘输入前的提示,及输入后的效果等,可以用截图)
3.功能说明(每个功能区的作用)
二、设计分析(标题是什么设计就写什么设计,内容是主要设计部分的说明,特别要分析数据的存储。
)
三、具体设计(能写多少就多少,可直接附上VC项目文件(夹))
成绩确定
基本分60分(各项约10分):
能进行文件的输入和输出,有一定的功能,对数据能查询、添加、删除、更改,有必须的文档资料。
项目必须可以运行(不可运行的项目总分0分)。
知识运用分:
类、对象、构造函数、string类、继承派生、多态性、运算符重载、模板、异常处理等各加5分。
设计分满分10分:
有实际意义,有良好的交互性。
其它10分:
学习积极性、上课表现、文档资料的写作情况等。
源代码
#include
#include
#include
#include"iomanip"
#include
usingnamespacestd;
classYage
{
public:
voidgetdetail();//获取信息
voidprint();//输出单个订单信息
voiddisplay();//显示初始化化信息
char*getnumber();//获取作为号使用指针
voidsetorder();//修改订单信息
voidsetdelete();//删除订单信息
staticvoidstatistics();
private:
charnumber[20];//宝贝编号
charname[40];//购买者姓名
chartime[20];//发货时间
charaddress[40];//收货地点
charstatue;//预定详情
staticintsum;
};
intYage:
:
sum=0;
voidYage:
:
statistics()
{
cout<<"本次操作需要交易数目:
"<}
voidYage:
:
getdetail()//接受预定信息
{
cout<<"请输入您要预定的宝贝编号:
";
cin.ignore();
cin.getline(number,20,'\n');//宝贝编号
cout<<"请输入您的姓名:
";
cin.getline(name,40,'\n');
cout<<"请输入您要发货时间:
";
cin.getline(time,20,'\n');//发货时间
cout<<"请输入收货地点:
";
cin.getline(address,40,'\n');
cout<<"您确定要预定吗?
(f/t):
";
cin>>statue;
if(statue=='t')sum++;
}
voidYage:
:
display()//显示初始化化信息
{
cout<<"宝贝编号"<<"\t"<<"购买者姓名"<<"\t"<<"发货时间"<<"\t"<<"收获地点"<<"\t"<<"预定详情"<}
voidYage:
:
print()//输出预定信息
{
cout<}
char*Yage:
:
getnumber()//获取作为号使用指针
{
returnnumber;
}
voidYage:
:
setorder()//取消订单信息
{
charc;intn;charxinxi[20];chart;
cout<<"你想修改订单信息吗?
:
(y/n)";
cin>>c;
if(c=='y'||c=='Y')
{
cout<<"请选择要修改的内容:
"<cout<<"如果想修改宝贝编号,请按1"<cout<<"如果想修购买者姓名,请按2"<cout<<"如果想修改发货时间,请按3"<cout<<"如果想修改收获地点,请按4"<cout<<"如果想修改预定详情,请按5"<cin>>n;
cout<<"请输入修改后的类容:
"<if(n==1){cin>>xinxi;strcpy(number,xinxi);}
if(n==2){cin>>xinxi;strcpy(name,xinxi);}
if(n==3){cin>>xinxi;strcpy(time,xinxi);}
if(n==4){cin>>xinxi;strcpy(address,xinxi);}
if(n==5){cin>>t;if(statue=='f'&&t=='t'){sum++;};if(statue=='t'&&t=='f'){sum--;}statue=t;}
}
}
voidYage:
:
setdelete()
{
charc;charxinxi[20]={'\t'};
cout<<"你想删除订单信息吗?
:
(y/n)";
cin>>c;
if(c=='y'||c=='Y')
{
strcpy(number,xinxi);
strcpy(name,xinxi);
strcpy(time,xinxi);
strcpy(address,xinxi);
statue='';
sum--;
}
}
voidmain()
{
intchoice;
while(true)
{Yagebaobei;
cout<cout<<"*****请让输入真确的操作:
*****"<cout<<"********雅阁淘宝欢迎您********"<cout<<"------------------------------"<cout<<"1.)我要淘宝信息"<cout<<"2.)输出购买信息"<cout<<"3.)修改订单信息"<cout<<"4.)删除订单信息"<cout<<"5.)退出雅阁淘宝"<cout<<"请选择:
";
cin>>choice;
switch(choice)
{
case1:
{
//定义对象
ofstreamout("cilent.dat",ios:
:
app);//以输入方式打开,写入的数据添加到文件的尾部
baobei.getdetail();//调用获取详细信息的函数
out.write((char*)&baobei,sizeof(baobei));//用二进制的方式写入文本文件
out.close();//关闭文件夹
break;
}
case2:
{
ifstreamin("cilent.dat");//读取信息
baobei.display();//调用显示初始化化信息函数
while(in.read((char*)&baobei,sizeof(baobei)))//采用循环二进制读取数据,将每组储存的数据都进行读取
{
baobei.print();//输出宝贝预定信息
}
Yage:
:
statistics();
in.close();//关闭文件夹
break;
}
case3:
{
charnumber1[20];
cout<<"请输入您要预定的宝贝编号:
";
cin>>number1;
cin.ignore();
fstreamfs("cilent.dat",ios:
:
in|ios:
:
out);//输入输出都包含的函数,进行数据的修改
while(fs.read((char*)&baobei,sizeof(baobei)))//采用循环二进制读取数据,将每组储存的数据都进行读取
{
intp=fs.tellg();//返回输入文件读指针的当前位置
if(strcmp(number1,baobei.getnumber())==0)//输入的宝贝编号与文件中的编号相同
{
fs.seekg(p-sizeof(baobei),ios:
:
beg);//表示输入流开始的位置
baobei.setorder();//调用取消订单信息
fs.write((char*)&baobei,sizeof(baobei));//将修改了以后的信息写入文本文件中
fs.close();//关闭文本文件
break;
}
}
break;
}
case4:
{
charnumber1[20];
cout<<"请输入您要预定的宝贝编号:
";
cin>>number1;
cin.ignore();
fstreamfs("cilent.dat",ios:
:
in|ios:
:
out);//输入输出都包含的函数,进行数据的修改
while(fs.read((char*)&baobei,sizeof(baobei)))//采用循环二进制读取数据,将每组储存的数据都进行读取
{
intp=fs.tellg();//返回输入文件读指针的当前位置
if(strcmp(number1,baobei.getnumber())==0)//输入的宝贝编号与文件中的编号相同
{
fs.seekg(p-sizeof(baobei),ios:
:
beg);//表示输入流开始的位置
baobei.setdelete();//调用取消订单信息
fs.write((char*)&baobei,sizeof(baobei));//将修改了以后的信息写入文本文件中
fs.close();//关闭文本文件
break;
}
}
break;
}
case5:
exit(0);//退出系统
}
}
system("pause");
}