C++课程设计.docx
- 文档编号:30757202
- 上传时间:2023-08-20
- 格式:DOCX
- 页数:24
- 大小:166.73KB
C++课程设计.docx
《C++课程设计.docx》由会员分享,可在线阅读,更多相关《C++课程设计.docx(24页珍藏版)》请在冰豆网上搜索。
C++课程设计
目录
1题目内容及设计要求1
2总体设计1
2.1总体功能框图1
2.2类的设计说明2
2.3主要算法流程图3
3程序清单及注释6
4运行结果与分析14
5总结17
6参考文献18
1题目内容及设计要求
设计对象数组,类中包含数据:
商品编号、商品名称、数量、日期、单价等。
能统计当日销售额。
实现录入数据(入库),显示数据,查询商品信息,删除指定记录等功能。
所有记录保存到文件中,也可以将文件的内容显示在屏幕上。
为了允许用户交替选择各功能,使用菜单实现选择功能。
2总体设计
2.1总体功能框图
图2-1总体框图
2.2类的设计说明
定义了一个Goods类,它包含了商品的编号,名称,日期,单价,日销售量的属性;然后又定义了一个Goods的派生类Supermarket类以实现超市商品的主菜单功能,它包含了商品的添加函数Add(),商品的删除函数Delete(),商品的修改函数Modify(),商品的查询函数Query,商品的统计函数Add_up()以及对商品操作后的数据保存函数Save()和链表。
用它来实现程序的各项功能。
Goods
-name[20]:
char
-num:
double
-address[30]:
char
-price:
int
-count:
double
-Goods*next
+Goods(doublenum,char*name,char*address,intprice,doublecount)
+Output():
Void
+friendclassSupermarket
Supermarket
-Clear():
Void
-Good*goods
+Supermarket()
+~Supermarket()
+Add():
Void
+Delete():
Void
+Modify():
Void
+Query():
Void
+Add_up():
Void
+Save():
Void
+Load():
Void
图2-2类的UML图
2.3主要算法流程图
主函数main()流程图,如图2-3所示:
图2-3商品主函数流程图
商品增加函数Add()流程图,如图2-4所示:
图2-4商品增加算法流程图
商品删除函数Delete()流程图,如图2-5所示:
图2-5商品删除算法流程图
商品修改函数Modify()流程图,如图2-6所示:
图2-6商品修改算法流程图
商品查询函数Query()流程图,如图2-7所示:
图2-7商品查询算法流程图
商品统计函数Add_up()流程图,如图2-8所示:
图2-8商品统计算法流程图
3程序清单及注释
#include
#include
#include
#include
#include
intn=0;//全局数据,结点数量
classGoods
{
protected:
charname[20];//商品名称
doublenum;//商品代码
charaddress[30];//商品日期
intprice;//商品单价
doublecount;//商品日销售量
Goods*next;
public:
Goods(doublenum,char*name,char*address,intprice,doublecount)
{
this->num=num;
strcpy(this->name,name);
strcpy(this->address,address);
this->price=price;
this->count=count;
}
voidOutput()
{
cout<<"num:
"< "< "< <<"price: "< "< } friendclassSupermarket; }; classSupermarket { private: Goods*goods;//商品表 voidClear();//清除内存中数据 public: Supermarket() { goods=NULL; Load(); } ~Supermarket() { Goods*p; p=goods; while(p) { p=p->next; deletegoods; goods=p; } goods=NULL; } voidAdd();//增加商品 voidDelete();//删除商品 voidModify();//修改商品 voidQuery();//查询商品 voidAdd_up();//商品日销售额统计 voidSave();//基础数据存盘 voidLoad();//基础数据装入 }; voidSupermarket: : Clear()//清除内存中商品数据(内部使用) { Goods*p; p=goods; while(p) { goods=p->next; deletep; p=goods; } } voidSupermarket: : Add() { Goods*p; doublenum,count; charname[20],address[30]; intprice; cout<<"\n请输入新增商品信息: \n"; cout<<"商品代码: ";cin>>num; cout<<"商品名称: ";cin>>name; cout<<"商品日期: ";cin>>address; cout<<"商品单价: ";cin>>price; cout<<"商品日销售量: ";cin>>count; p=newGoods(num,name,address,price,count);//创建新商品类结点 p->next=NULL; if(goods==NULL) { goods=p; n++; } else { Goods*p2=goods; while(p2->next) p2=p2->next; p2->next=p; n++; } } voidSupermarket: : Delete()//删除商品 { charname[20]; cout<<"\n请输入要删除的商品名称: \n"; cin>>name;//查找要删除的结点 Goods*p1,*p2;p1=goods; while(p1) { if(strcmp(p1->name,name)==0)break; else { p2=p1; p1=p1->next; } }//删除结点 if(p1! =NULL)//若找到结点,则删除 { if(p1==goods)//若要删除的结点是第一个结点 { goods=p1->next; deletep1; n--; } else//若要删除的结点是后续结点 { p2->next=p1->next; deletep1; n--; } cout<<"找到并删除\n"; } else//未找到结点 cout<<"Sorry,未找到! \n"; } voidSupermarket: : Modify()//修改商品信息 { doublenum,count; charname[20],address[30]; intprice; cout<<"\n修改商品,请输入要查的商品名称: \n"; cout<<"Name: ";cin>>name;//查找要修改的结点 Goods*p1,*p2;p1=goods; while(p1) { if(strcmp(p1->name,name)==0)break; else { p2=p1; p1=p1->next; } }//修改结点 if(p1! =NULL)//若找到结点 { p1->Output(); cout<<"\n请选择要修改的信息(1—商品代码,2—商品名称,3—日期,4—单价,5—商品日销售量,6—修改全部信息): \n"; inta;cin>>a; switch(a) { case1: cout<<"请输入新代码: ";cin>>num; strcpy(name,p1->name);strcpy(address,p1->address);price=p1->price;count=p1->count;break; case2: cout<<"请输入新名称: ";cin>>name; num=p1->num;strcpy(address,p1->address);price=p1->price;count=p1->count;break; case3: cout<<"请输入新日期: ";cin>>address; num=p1->num;strcpy(name,p1->name);price=p1->price;count=p1->count;break; case4: cout<<"请输入新单价: ";cin>>price; num=p1->num;strcpy(name,p1->name);strcpy(address,p1->address);count=p1->count;break; case5: cout<<"请输入新商品日销售量: ";cin>>count; num=p1->num;strcpy(name,p1->name);strcpy(address,p1->address);price=p1->price;break; case6: cout<<"请输入新信息: \n"; cout<<"商品代码: ";cin>>num; cout<<"商品名称: ";cin>>name; cout<<"商品日期: ";cin>>address; cout<<"商品单价: ";cin>>price; cout<<"商品日销售量: ";cin>>count;break; }//创建新商品结点 Goods*p3; p3=newGoods(num,name,address,price,count);//员工结点替换到链表 p3->next=p1->next; if(p1==goods)//若要替换的结点是第一个结点 goods=p3; else//若要替换的结点是后续结点 p2->next=p3; deletep1;//删除原来的商品结点 cout<<"修改成功! \n"; } else//未找到结点 cout<<"Sorry,未找到! \n"; } voidSupermarket: : Query() { cout<<"\n****查询商品****\n"; charname[20]; cout<<"\n请输入要查询的商品名称: \n"; cin>>name; Goods*p1=goods; while(p1) { if(strcmp(p1->name,name)==0)break; elsep1=p1->next; } if(p1! =NULL)//若找到结点 { cout<<"\n要查询的信息如下: \n"; cout<<"该类商品代码: \t"< \t"< cout<<"该类商品日期: \t"< \t"< cout<<"商品日销售量: \t"< } else//未找到结点 cout<<"\nSorry,未找到该类商品! \n"; } voidSupermarket: : Add_up()//统计超市商品日销售额 { cout<<"\n****商品统计****\n"; doubleAmount=0,Value=0; charname[20]; cout<<"\n请输入要统计的商品名称: \n"; cin>>name; Goods*p1; p1=goods; while(p1) { if(strcmp(p1->name,name)==0)break; elsep1=p1->next; } if(p1) { while(p1) { Amount+=p1->count; Value+=p1->count*p1->price; p1=p1->next; } cout<<"商品日销售量是: \n"; cout< cout<<"\n商品日销售额是: \n"; cout< } else cout<<"\nSorry,未找到该类商品! \n"; } voidSupermarket: : Save()//数据存盘 { cout<<"是否保存? [Y/N]"; chara; cin>>a; if(a=='n')return; if(a=='y'||a=='Y') { ofstreamoutfile("base.txt",ios: : out); if(! outfile){cerr<<"openerror! ";exit (1);} Goods*p;p=goods; while(p) { outfile<<"商品代码\t\t"< outfile<<"商品名称\t\t"< outfile<<"商品日期\t\t"< outfile<<"商品单价\t\t"< outfile<<"商品日销售量\t"< cout< p=p->next; } outfile.close(); cout<<"已完成数据的保存\n"; } } voidSupermarket: : Load()//数据装入 { Goods*p=goods; ifstreaminfile("base.txt",ios: : in|ios: : nocreate);//读一条信息 infile>>p->num>>p->name>>p->address>>p->price>>p->count; while(infile.good()) { p=newGoods(p->num,p->name,p->address,p->price,p->count);//创建商品结点 p->next=NULL;//商品结点加入 if(goods)//若已存在结点 { Goods*p2; p2=goods; while(p2->next)//查找尾结点 p2=p2->next; p2->next=p;//连接 } else//表空 goods=p;//连接 infile>>p->num>>p->name>>p->address>>p->price>>p->count;//读下一条信息 } cout<<"\n商品数据已经装入\n"; } intmain() { charc; Supermarketa; do{ cout<<"\n****超市进销存管理系统****\n"; cout<<"1—增加商品\n"; cout<<"2—删除商品\n"; cout<<"3—修改商品\n"; cout<<"4—查询商品\n"; cout<<"5—统计商品日销售额\n"; cout<<"6—退出\n请选择(1—6): "; cin>>c; switch(c) { case'1': a.Add(); a.Save();break; case'2': a.Load(); a.Delete(); a.Save();break; case'3': a.Load(); a.Modify(); a.Save();break; case'4': a.Load(); a.Query();break; case'5': a.Load(); a.Add_up();break; } }while(c! ='6'); return0; } 4运行结果与分析 超市管理系统定义了菜单界面,能够实现菜单管理方便操作者能够快速的进行每一项功能的操作。 该程序的菜单功能有1.添加商品2.删除商品3.修改商品4.查询商品5统计商品当日量及销售额的五项功能。 操作者按界面提示进行操作,输入分别对应的数字进行对应的功能操作。 如图4-1所示: 图4-1菜单主界面运行结果图 按照程序提示输入数字“1”,进入商品添加功能。 它分别能够添加商品的编号,名称,日期,单价,日销售量。 并对添加的商品进行保存处理。 保存输入Y,不保存输入N。 如图4-2所示: 图4-2商品添加运行结果图 进入主菜单界面输入数字“2”进行商品删除功能的操作,进入商品删除界面后操作者输入商品的名称确认后程序自动开始查找该商品的信息,查找到此商品后程序提示是否删除该商品信息,删除输入Y否则输入N之后程序进行保存。 如果没有该商品的信息程序提示未找到该商品。 如图4-3所示: 图4-3商品删除运行结果图 商品修改功能,进入菜单主界面后输入数字“3”进入该功能的操作,首先输入需要修改的商品名称,程序开始自动查找商品的信息,包括(1.编号2.名称3.日期4.单价5.日销售量)得信息。 之后程序提示修改商品各属性的功能列表,按照提示进行操作,输入需要修改属性对应的编号进行修改。 如输入“1”是对商品的编号进行修改。 修改完成后,进行数据的保存操作。 如果程序未找到该商品则显示“未找到此商品”。 如图4-4所示: 图4-4商品修改运行结果图 商品的查询功能,进入菜单界面输入数字“4”则对该功能的操作。 输入需要查询的商品名称,程序自动查找现储存的商品信息,并显示该商品所有的信息列表。 如果输入有误或无此商品程序显示“无法找到该商品”如图4-5所示: 图4-5商品查询运行结果图 对商品的日销售额的统计,进入主菜单之后输入数字“5”进行日销售额的统计操作,输入需要统计的商品名称,程序在保存的数据中自动查找后并显示出该商品的日销售量以及当日的日销售额。 如果没有该类商品则显示“未找到该商品”。 如图4-6所示: 图4-6商品统计运行结果图 5总结 通过近一个周对《面向对象程序设计》的课程设计,使我对c++语言有了近一步的理解,我体会到c++语言在各处的应用是非常方便的也体会到了c++语言的奇妙之处,提升了自己对它的学习兴趣,使我对这门课程又有了更进一步的理解,为我以后的学习打下了坚实的基础。 做课设不仅让我修补了以前学习的漏洞,也让我知道一个道理: 编程需要兴趣和实际动手。 这可以借鉴老师的教学工作。 创新思维至关重要,它不仅让我们写出精简的代码,也有助于开发出高效的程序。 虽然之前的课学的不是很好,但是以后会加倍努力,把这门有意思又方便的课学好。 学好了它,不仅能解决一些比较复杂的问题,还能提高我们的思维能力以及理解能力。 总之,此次c++语言课程设计让我受益匪浅,感觉从各方面都有了一定的提高。 最后感谢帮助过我的老师和同学,为大家加油也为我自己加油! 只要好好学,我相信希望就在前方! 6参考文献 [1]李爱华,程磊著.面向对象程序设计(C++语言).北京: 清华大学出版社,2010 [2]刘振安,刘燕君著.C++程序设计课程设计.北京: 机械工业出版社,2004 [3]谭浩强著.C++程序设计实践指导.北京: 清华大学出版社,2005
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计