课程设计报告.docx
- 文档编号:11797482
- 上传时间:2023-04-02
- 格式:DOCX
- 页数:20
- 大小:208.40KB
课程设计报告.docx
《课程设计报告.docx》由会员分享,可在线阅读,更多相关《课程设计报告.docx(20页珍藏版)》请在冰豆网上搜索。
课程设计报告
C++程序设计课程设计报告
课题:
库存管理系统设计
专业班级:
信息管理与信息系统****
学号:
************
姓名:
******
指导教师:
*******
评阅意见:
评定成绩:
指导老师签名:
年月日
目录
1.设计系统的目的意义.............................2
2.系统需求、功能分析.............................2
3.数据结构表.....................................3
4.数据测试表.....................................3
5.运行和调试.....................................4
6.课程设计的心得.................................8
7.参考文献.......................................8
8.附录:
源代码...................................8
(一)设计系统的目的和意义
通过设计一个较为简单的《库存管理系统》,进一步熟悉和了解c++和c语言的知识点。
使应用更熟练。
并且了解和熟悉关于程序设计的流程的方法,了解系统开发的各项流程。
加深对c++的理解与Visualc++环境的使用,养成良好的编程习惯。
(2)系统需求、功能分析
1.系统需求
(1)添加商品信息:
主要完成商品信息的添加,包括商品代码、商品名称、生产日期、生产厂家、商品价格、商品品牌、商品库存。
输入完成后显示亲!
添加成功了哦!
要不要保存呢!
输入Y和enter键后会显示,亲!
你已完成数据的保存哦!
(2)删除商品信息:
主要完成对商品信息的删除功能。
在输入了一系列商品信息以后,选择2,删除商品信息,输入要删除的商品的名称,显示是否要删除,输入Y按enter键,显示亲!
你一完成数据的保存哦!
删除成功。
若无此商品信息则显示,亲!
没有这个商品哦!
(3)修改商品信息:
主要完成对输入商品信息的修改功能。
输入需要修改信息的商品的名称,选择要修改的商品信息,输入新的数据完成保存。
若无此商品信息则显示,亲!
没有这个商品哦!
(4)查询商品信息:
主要完成对商品信息的查询功能。
输入需要查询的商品名称,显示该商品的信息,若无此商品信息则显示,亲!
没有这个商品哦!
(5)统计商品信息:
主要完成对商品库存量和总价值的统计功能。
输入需要查询的商品名称,显示该商品的库存量和总价值。
若无此商品信息则显示,亲!
没有这个商品哦!
intread();//导入文件
(6)退出:
退出当前选择。
2.功能分析
系统通过调用函数来实现信息录入、信息修改、信息删除、信息查询以及数据保存文件等功能。
Add()函数用于信息的录入;Modify()函数修改信息;Delete()函数用来删除信息;Query()函数用来查询商品信息;Add-up()函数用来统计商品信息,read()函数用于读取文件中的数据;save()函数用于将基础数据存盘;Load()函数用于基础数据装入,主函数main()用于调用这些函数。
(三).数据结构表
(四)数据测试表
商
品
代码
名称
生产日期
生产厂家
价格
品牌
库存
2013072801
桃子
13.5.1
永兴
4
太红
50
2013072802
瓜子
13.2.3
太平
9
傻瓜
443
2013072803
方便面
13.5.2
康师傅
3.5
师傅
432
2013072804
番茄薯片
13.6.1
乐事
6
乐事
65
2013072805
香辣薯片
13.4.2
可比克
4.5
可比克
763
2013072806
三笑牙刷
13.6.16
三笑
1.5
三笑
907
2013072807
巧克力
13.6.23
德芙
60
德芙
23
2013072808
手机
13.3.22
日本
3999
索尼
12
2013072809
花生
13.6.17
安乡
8.6
爱脆
677
(5).运行和调试
主界面:
1.添加商品信息(以桃子为例):
2.删除商品信息(以牛奶为例):
3.修改商品信息(以生产地址永兴修改为常德为例):
4.查询商品信息:
商品不存在时(以牛奶为例):
商品存在在文件中时以桃子为例):
5.统计商品信息(以牛奶为例):
统计商品的总数量和总价值
6.退出
在主界面输入6,按enter键后如图所示
再按任意键退出
(六)课程设计的心得
通过这次关于库存系统的课程设计,通过近两周的来的设计及编写代码,通过我们共同的努力及合作,终于完成了超市管理系统的开发,此次课程设计,过程中遇到了许许多许多的难题,但最后都被我们一一克服,在增长了知识的同时,也增强了我们的能力。
我加深了对c++和c语言相关知识点的了解。
尤其是类、友元、指针和函数重载的相关知识。
发现自己还是有很多不足,自以为掌握了的知识点还是不能脱离书本应用。
以后的学习中还是要多将理论与实践相结合,不能自以为理解了就不管了,这样才能真正掌握知识。
才能灵活的运用。
编程序做系统真是不容易啊,一个小小的错误就导致不能运行,所以以后的学习中一定要多用心尽量细心。
(7).参考文献
[1]王育坚.VisualC++面对对象编程教程[M].清华大学出版社,2007.
[2]VisualC++程序设计与应用教程题解及课程设计/马石安,魏文平编著.—北京:
清华大学出版社,2009.7
[3]张立.VisualC++高级编程,北京:
人民邮电出版社,2002年
[4]何炜,张励.VisualC++.NET2003程序设计,冶金工业出版社,2004年
[5]
附录:
源代码
#include
#include
#include
#include
#include
intn=0;//全局数据,结点数量
classGoods
{
protected:
doublenumber;//商品代码
charname[20];//商品名称
intday;//生产日期
charcompany[30];//生产厂家
intprice;//商品价格
doublecount;//商品库存
charbrand[30];//商品品牌
Goods*next;
public:
Goods(doublenumber,char*name,intday,char*company,intprice,doublecount,char*brand)
{
this->number=number;
strcpy(this->name,name);
this->day=day;
strcpy(this->company,company);
this->price=price;
strcpy(this->brand,brand);
this->count=count;
}
voidOutput()
{
cout<<"number:
"< "< "< <<"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; } intread();//导入文件 voidAdd();//增加商品 voidDelete();//删除商品 voidModify();//修改商品 voidQuery();//查询商品 voidAdd_up();//统计商品 voidSave();//基础数据存盘 voidLoad();//基础数据装入 }; voidSupermarket: : Clear()//清除内存中商品数据(内部使用) { Goods*p; p=goods; while(p) { goods=p->next; deletep; p=goods; } } intSupermarket: : read() { charz; ifstreamfin("c: \\11.txt"); if(! fin) {cout<<"亲~不能打开文件哦~~"< return1; } while(fin.get(z)) cout< return0; } voidSupermarket: : Add() { Goods*p; doublenumber,count,day; charname[20],company[30],brand[30]; intprice; cout<<"亲! 请问你要添加神马商品息? "< cout<<"商品代码: ";cin>>number; cout<<"商品名称: ";cin>>name; cout<<"生产日期: ",cin>>day; cout<<"生产厂家: ";cin>>company; cout<<"商品价格: ";cin>>price; cout<<"商品品牌: ";cin>>brand; cout<<"商品库存: ";cin>>count; //创建新商品类结点 p=newGoods(number,name,day,company,price,count,brand); p->next=NULL; if(goods==NULL) { goods=p; n++; } else { Goods*p2=goods; while(p2->next) p2=p2->next; p2->next=p; n++; } ofstreamout("c: \\11.txt",ios: : app); out.write((char*)p,sizeof(Goods)); out.close(); cout<<"亲! 添加成功了哦! \n"; } voidSupermarket: : Delete()//删除商品 { charname[20]; cout<<"亲! 请问你要删除神马商品? \n"; cout<<"亲! 请输入要删除的商品名称: \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<<"亲! 木有这个商品哦! "; } voidSupermarket: : Modify()//修改商品信息 { doublenumber,count; charname[20],company[30],brand[30]; intprice,day; cout<<"\n亲! 请问你要修改神马商品? \n"; cout<<"商品名称: ";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<<"亲! 请选择要修改的信息(1—商品代码,2—商品名称,3—生产厂家,5,—生产日期,4—进货价格,5—商品库存,6—品牌,7—修改全部信息): \n"; inta;cin>>a; switch(a) { case1: cout<<"亲! 请输入新代码: ";cin>>number; strcpy(name,p1->name);strcpy(company,p1->company);price=p1->price;count=p1->count;break; case2: cout<<"亲! 请输入新名称: ";cin>>name; number=p1->number;strcpy(company,p1->company);price=p1->price;count=p1->count;break; case3: cout<<"亲! 请输入新生产厂家: ";cin>>company; day=p1->day;strcpy(company,p1->company);price=p1->price;count=p1->count;break; case4: cout<<"亲! 请输入新生产日期: ";cin>>day; number=p1->number;strcpy(name,p1->name);price=p1->price;count=p1->count;break; case5: cout<<"亲! 请输入新进货价格: ";cin>>price; number=p1->number;strcpy(name,p1->name);price=p1->price;count=p1->count;break; case6: cout<<"亲! 请输入品牌: ";cin>>brand; number=p1->number;strcpy(name,p1->name);strcpy(company,p1->company);count=p1->count;break; case7: cout<<"亲! 请输入新库存数据: ";cin>>count; number=p1->number;strcpy(name,p1->name);strcpy(company,p1->company);price=p1->price;break; case8: cout<<"亲! 请输入新信息: \n"; cout<<"商品代码: ";cin>>number; cout<<"商品名称: ";cin>>name; cout<<"生产日期: ";cin>>day; cout<<"生产厂家: ";cin>>company; cout<<"商品价格: ";cin>>price; cout<<"商品品牌: ";cin>>brand; cout<<"商品库存: ";cin>>count;break; cout<<"亲! 修改成功了哦! "; } //创建新商品结点 Goods*p3; p3=newGoods(number,name,day,company,price,count,brand); //员工结点替换到链表 p3->next=p1->next; if(p1==goods)//若要替换的结点是第一个结点 goods=p3; else//若要替换的结点是后续结点 p2->next=p3; deletep1;//删除原来的商品结点 cout<<"亲! 删除成功了哦! \n"; } else//未找到结点 cout<<"亲! 木有这个商品哦! "; } voidSupermarket: : Query() { cout<<"\n****查询商品****\n"; charname[20]; cout<<"\n亲! 你要查询神马商品? \n"; 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<<"亲! 木有这个商品哦! \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;//这个是C库函数语法大全中的描述,很简练很直观函数名: stpcpy功能: 拷贝一个字符串到另一个 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<<"亲! 木有这类商品哦! \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\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->number>>p->name>>p->company>>p->price>>p->count; while(infile.good()) { //创建商品结点 p=newGoods(p->number,p->name,p->day,p->company,p->price,p->count,p->brand); p->next=NULL; //商品结点加入 if(goods)//若已存在结点 { Goods*p2; p2=goods; while(p2->next)//查找尾结点 p2=p2->next; p2->next=p;//连接 } else//表空 goods=p;//连接 //读下一条信息 infile>>p->number>>p->name>>p->company>>p->price>>p->count; } cout<<"\n商品数据已经装入\n"; } intmain() {intSupermarket: : read(); charc; Supermarketa; do{ cout<<"\n****超市进销存管理系统****\n"; cout<<""<<"--------------------------------"< cout<<""<<"------"<<"库存管理系统"<<"------"< cout<<""<<"-----"<<"1.添加商品信息"<<"-----"< cout<<""<<"-----"<<"2.删除商品信息"<<"-----"< cout<<""<<"-----"<<"3.修改商品信息"<<"-----"< cout<<""<<"-----"<<"4.查询商品信息"<<"-----"< cout<<""<<"-----"<<"5.统计商品信息"<<"-----"< cout<<""<<"---------"<<"6.退出"<<"---------"< cout<<""<<"-------------------------------"< cout<<""<<"\t请选择(1—6): "; system("color8E"); cin>>c; system("cls"); system("pause"); switch(c) { case'1': a.Add(); a.Save();break; //system("cls")
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告