软件开发感想
为了能够更好的学习软件开发与创新这门课程,托朋友给我发了几个他原先学习过程中练手写的几个小程序,选择了其中一个进行了一定的修改,在这个过程中也有了些关于这门课程的感想。
原代码:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Food
{
protected:
string name;
double price;
int num;
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
virtual void set_name(string name)
{
this->name=name;
}
virtual string get_name()
{
return name;
}
virtual void set_price(double price)
{
this->price=price;
}
virtual double get_price()
{
return price;
}
virtual void set_num(int num)
{
this->num=num;
}
virtual int get_num()
{
return num;
}
};
class Foods:public Food
{
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
};
class Snack:public Food
{
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
};
class Drink:public Food
{
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
};
class Factory
{
public:
virtual Food*food()=0;
};
class Factory_Foods:public Factory
{
public:
Food*food()
{
return new Foods;
}
};
class Factory_Snack:public Factory
{
public:
Food*food()
{
return new Snack;
}
};
class Factory_Drink:public Factory
{
public:
Food*food()
{
return new Drink;
}
};
class Menu
{
private:
public:
void main_menu()
{
cout<<"**********************************"<<endl;
cout<<" 欢迎蜀味川菜馆自助点餐系统!"<<endl;
cout<<"**********************************"<<endl;
cout<<" 输入1开始点餐 "<<endl;
}
void middle_menu()
{
cout<<"**********************************"<<endl;
cout<<" 请选择您要点的菜品: "<<endl;
cout<<"主食: "<<endl;
cout<<" 1.水煮肉片 --56元 "<<endl;
cout<<" 2.毛血旺 --59元 "<<endl;
cout<<" 3.辣子鸡丁 --35元 "<<endl;
cout<<"副菜: "<<endl;
cout<<" 4.酥肉 --15元 "<<endl;
cout<<" 5.冰粉 --10元 "<<endl;
cout<<"饮品: "<<endl;
cout<<" 6.橙汁 --8元 "<<endl;
cout<<" 7.啤酒 --7元 "<<endl;
cout<<" 8.铁观音 --12元 "<<endl;
cout<<" 若点餐结束,请输入0以结束点餐哦!"<<endl;
}
void menu()
{
main_menu();
int choice;
int foods[3], snack[2], drink[3],set[2];
for(int i = 0; i < 3; i++)
{
foods[i]=0;
drink[i]=0;
}
for(int i=0;i<2;i++)
{
snack[i]=0;
set[i]=0;
}
cin>>choice;
if(choice==1)
{
middle_menu();
int order,point=1;
while(point)
{
cout<<"请输入对应菜品序号:";
cin>>order;
switch(order)
{
case(0):
{
point=0;
break;
}
case(1):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
foods[0]=number;
break;
}
case(2):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
foods[1]=number;
break;
}
case(3):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
foods[2]=number;
break;
}
case(4):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
snack[0]=number;
break;
}
case(5):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
snack[1]=number;
break;
}
case(6):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
drink[0]=number;
break;
}
case(7):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
drink[1]=number;
break;
}
case(8):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
drink[2]=number;
break;
}
default:
{
cout<<"请输入正确的序号!"<<endl;
break;
}
}
}
}
//生成主菜工厂类
Factory_Foods* fac_h=new Factory_Foods();
//生成具体的主菜类
Food*foods1=fac_h->food();
Food*foods2=fac_h->food();
Food*foods3=fac_h->food();
//实例化各道主菜
//水煮肉片
foods1->set_name("水煮肉片");
foods1->set_price(56);
foods1->set_num(foods[0]);
//毛血旺
foods2->set_name("毛血旺");
foods2->set_price(59);
foods2->set_num(foods[1]);
//辣子鸡丁
foods3->set_name("辣子鸡丁");
foods3->set_price(35);
foods3->set_num(foods[2]);
//生成小吃工厂类
Factory_Snack* fac_s=new Factory_Snack();
//生成具体的小吃类
Food*snack1=fac_s->food();
Food*snack2=fac_s->food();
//实例化各个小吃
//酥肉
snack1->set_name("酥肉");
snack1->set_price(15);
snack1->set_num(snack[0]);
//冰粉
snack2->set_name("冰粉");
snack2->set_price(10);
snack2->set_num(snack[1]);
//生成饮料饮品类
Factory_Drink* fac_d=new Factory_Drink();
//生成具体的饮品类
Food*drink1=fac_d->food();
Food*drink2=fac_d->food();
Food*drink3=fac_d->food();
//实例化各个饮品
//橙汁
drink1->set_name("橙汁");
drink1->set_price(8);
drink1->set_num(drink[0]);
//啤酒
drink2->set_name("啤酒");
drink2->set_price(7);
drink2->set_num(drink[1]);
//铁观音
drink3->set_name("铁观音");
drink3->set_price(12);
drink3->set_num(drink[2]);
cout<<"**********************************"<<endl;
double sum=0;
sum=sum+foods1->get_sum();
sum=sum+foods2->get_sum();
sum=sum+foods3->get_sum();
sum=sum+snack1->get_sum();
sum=sum+snack2->get_sum();
sum=sum+drink1->get_sum();
sum=sum+drink2->get_sum();
sum=sum+drink3->get_sum();
cout<<"您共计消费:"<<sum<<endl;
cout<<"您所支付金额:";
double pay;
cin>>pay;
double payback=pay-sum;
while(0>payback)
{
cout<<"请支付应付金额!";
cin>>pay;
payback=pay-sum;
}
cout<<"共计收您:"<<pay<<"元。"<<endl;
cout<<"找零:"<<payback<<"元。"<<endl;
cout<<" 祝您用餐愉快! "<<endl;
cout<<"**********************************"<<endl;
}
};
int main()
{
Menu k;
k.menu();
}
修改加工后代码:
#include<iostream>
#include<string>
#include<fstream>
using namespace std;
class Food
{
protected:
string name;
double price;
int num;
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
virtual void set_name(string name)
{
this->name=name;
}
virtual string get_name()
{
return name;
}
virtual void set_price(double price)
{
this->price=price;
}
virtual double get_price()
{
return price;
}
virtual void set_num(int num)
{
this->num=num;
}
virtual int get_num()
{
return num;
}
};
class Foods:public Food
{
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
};
class Snack:public Food
{
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
};
class Drink:public Food
{
public:
virtual double get_sum()
{
double sum=price*num;
return sum;
}
};
class Factory
{
public:
virtual Food*food()=0;
};
class Factory_Foods:public Factory
{
public:
Food*food()
{
return new Foods;
}
};
class Factory_Snack:public Factory
{
public:
Food*food()
{
return new Snack;
}
};
class Factory_Drink:public Factory
{
public:
Food*food()
{
return new Drink;
}
};
class Menu
{
private:
public:
void main_menu()
{
cout<<"**********************************"<<endl;
cout<<" 欢迎蜀味川菜馆自助点餐系统!"<<endl;
cout<<"**********************************"<<endl;
cout<<" 输入1开始点餐 "<<endl;
}
void middle_menu()
{
cout<<"**********************************"<<endl;
cout<<" 请选择您要点的菜品: "<<endl;
cout<<"主食: "<<endl;
cout<<" 1.水煮肉片 --56元 "<<endl;
cout<<" 2.毛血旺 --59元 "<<endl;
cout<<" 3.辣子鸡丁 --35元 "<<endl;
cout<<"副菜: "<<endl;
cout<<" 4.酥肉 --15元 "<<endl;
cout<<" 5.冰粉 --10元 "<<endl;
cout<<"饮品: "<<endl;
cout<<" 6.橙汁 --8元 "<<endl;
cout<<" 7.啤酒 --7元 "<<endl;
cout<<" 8.铁观音 --12元 "<<endl;
cout<<" 若点餐结束,请输入0以结束点餐哦!"<<endl;
}
void menu()
{
main_menu();
int choice;
int foods[3], snack[2], drink[3],set[2];
for(int i = 0; i < 3; i++)
{
foods[i]=0;
drink[i]=0;
}
for(int i=0;i<2;i++)
{
snack[i]=0;
set[i]=0;
}
cin>>choice;
if(choice==1)
{
middle_menu();
int order,point=1;
while(point)
{
cout<<"请输入对应菜品序号:";
cin>>order;
switch(order)
{
case(0):
{
point=0;
break;
}
case(1):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
foods[0]=number;
break;
}
case(2):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
foods[1]=number;
break;
}
case(3):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
foods[2]=number;
break;
}
case(4):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
snack[0]=number;
break;
}
case(5):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
snack[1]=number;
break;
}
case(6):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
drink[0]=number;
break;
}
case(7):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
drink[1]=number;
break;
}
case(8):
{
cout<<"请输入需要菜品份数:";
int number;
cin>>number;
drink[2]=number;
break;
}
default:
{
cout<<"请输入正确的序号!"<<endl;
break;
}
}
}
}
//生成主菜工厂类
Factory_Foods* fac_h=new Factory_Foods();
//生成具体的主菜类
Food*foods1=fac_h->food();
Food*foods2=fac_h->food();
Food*foods3=fac_h->food();
//实例化各道主菜
//水煮肉片
foods1->set_name("水煮肉片");
foods1->set_price(56);
foods1->set_num(foods[0]);
//毛血旺
foods2->set_name("毛血旺");
foods2->set_price(59);
foods2->set_num(foods[1]);
//辣子鸡丁
foods3->set_name("辣子鸡丁");
foods3->set_price(35);
foods3->set_num(foods[2]);
//生成小吃工厂类
Factory_Snack* fac_s=new Factory_Snack();
//生成具体的小吃类
Food*snack1=fac_s->food();
Food*snack2=fac_s->food();
//实例化各个小吃
//酥肉
snack1->set_name("酥肉");
snack1->set_price(15);
snack1->set_num(snack[0]);
//冰粉
snack2->set_name("冰粉");
snack2->set_price(10);
snack2->set_num(snack[1]);
//生成饮料饮品类
Factory_Drink* fac_d=new Factory_Drink();
//生成具体的饮品类
Food*drink1=fac_d->food();
Food*drink2=fac_d->food();
Food*drink3=fac_d->food();
//实例化各个饮品
//橙汁
drink1->set_name("橙汁");
drink1->set_price(8);
drink1->set_num(drink[0]);
//啤酒
drink2->set_name("啤酒");
drink2->set_price(7);
drink2->set_num(drink[1]);
//铁观音
drink3->set_name("铁观音");
drink3->set_price(12);
drink3->set_num(drink[2]);
cout<<"**********************************"<<endl;
double sum=0;
sum=sum+foods1->get_sum();
sum=sum+foods2->get_sum();
sum=sum+foods3->get_sum();
sum=sum+snack1->get_sum();
sum=sum+snack2->get_sum();
sum=sum+drink1->get_sum();
sum=sum+drink2->get_sum();
sum=sum+drink3->get_sum();
cout<<"您共计消费:"<<sum<<endl;
cout<<"请问您是否需要使用优惠券?(如需使用请输入0)";
int choice1;
cin>>choice1;
int coupon=0;
if(choice1==0)
{
cout<<"您所拥有的优惠券如下:"<<endl;
cout<<"1.满50元减5元"<<endl;
cout<<"2.满100元减15元"<<endl;
cout<<"3.满200元减30元"<<endl;
cout<<"每次消费仅能使用一张优惠券,请选择您想要使用的优惠券"<<endl;
int point1=1;
while(point1)
{
int ch;
cin>>ch;
if(ch==1)
{
if(sum>50)
{
sum-=5;
cout<<"使用成功!";
}
else
{
cout<<"您的消费金额不足以使用优惠券!"<< endl;
}
point1=0;
}
if(ch==2)
{
if(sum>100)
{
sum-=15;
cout<<"使用成功!";
}
else
{
cout<<"您的消费金额不足以使用优惠券!"<<endl;
}
point1=0;
}
if(ch==3)
{
if(sum>200)
{
sum-=30;
cout<<"使用成功!";
}
else
{
cout<<"您的消费金额不足以使用优惠券!"<<endl;
}
point1=0;
}
if(ch==0)
{
cout<<"不使用优惠券"<<endl;
point1=0;
}
}
}
cout<<"您所支付金额:";
double pay;
cin>>pay;
double payback=pay-sum;
while(0>payback)
{
cout<<"请支付应付金额!";
cin>>pay;
payback=pay-sum;
}
cout<<"共计收您:"<<pay<<"元。"<<endl;
cout<<"找零:"<<payback<<"元。"<<endl;
cout<<" 祝您用餐愉快! "<<endl;
cout<<"**********************************"<<endl;
}
};
int main()
{
Menu k;
k.menu();
}
个人感想:原程序是一个完成自助点餐功能的程序,我在其原有自助点餐,结账找零的功能上添加了一个使用优惠券的功能,使其能够在确定用户有无对应优惠券后决定是否能够使用,并对金额进行相应减免。完成这个程序的过程虽然不算很难,但是让我学习到了不少,我了解到了软件开发过程中不只是写代码,还需要对问题需求进行分析和规划,我们应该不只是学习各种编程语言,还需要学习如何去制定问题的解决方式,如何去根据需求写出所需的代码。这个过程听起来简单,但是实际上需要的是我们处理问题的熟练度和思维能力,所以在今后这门课的学习过程中我会尽我所能去学习一些软件开发的技巧与知识,争取变得更好。
浙公网安备 33010602011771号