C++课程设计报告专业:学号:姓名:同组人:提交日期:【设计目的】1、通过设计一个较为简单的《商场库存货物管理系统》,进一步熟悉C++中类的概念、类的封装、继承的实现方式。
2、了解系统开发的需求分析、类层次设计、模块分析、编码测试、模块组装与整体调试的全过程,加深对C++的理解与Visual C++环境的使用;逐步熟悉程序设计的方法,并养成良好的编程习惯。
【设计内容】1、设计某公司的库存管理系统。
此程序是为了更好的处理货物的详细信息。
包括货物的货物的入库、出库、查询、统计。
并且能够很好的让使用者了解库存货物的有关信息。
2、系统要求能够按编号显示、查找、增加、删除、和保存各类货物的信息。
输入和输出货物的有关信息并且对输入保存文件里确定程序至少具备以下功能:查询模块、增加模块、删除模块、货物的有关信息数据存盘等的基本模块。
3、系统具有“货物的有关信息数据存盘”的功能,所以货物的有关信息数据可以保存到磁盘文件,那么也就意味着今后可以从磁盘文件读出货物的有关信息,可以方便用户使用,避免数据重复录入,考虑到系统实现简洁,货物数据文件采用文本文件,货物数据文件名:date.dat。
4、作为一个完整的系统,除了具有增加货物,删除货物的信息模块,还应该具有修改货物相关信息的功能,所以本系统具备了“商品入库”、“商品出库”、“查询统计”、“商品报损”、“退出系统”,这5个基本功能,就可以以最简捷的方式实现对货物的管理,也就实现了系统的要求。
5、下图中黑体字部分程序块为我完成的代码块【实验环境】1.硬件环境:(1)电脑型号戴尔 Inspiron 5557 笔记本电脑 (扫描时间:2017年01月11日)(2)操作系统Windows 10 Enterprise 64位 ( DirectX 12 )(3)处理器英特尔 Core i7-6500U @ 2.50GHz 双核(4)主板戴尔 03XTY7 ( 英特尔 PCI 标准主机 CPU 桥 - 100 Series 芯片组Family/eSPI Controller - 9D48 )(5)内存8 GB ( 镁光 DDR3L 1600MHz )(6)主硬盘三星 SSD 850 EVO 500GB ( 500 GB / 固态硬盘 )(7)显卡Nvidia GeForce 930M ( 4 GB )(8)显示器友达 AUO38ED ( 15.3 英寸 )2.软件环境:Windows 10 Enterprise 64位 ( DirectX 12 )、Visual Studio 2015【设计中使用函数说明】(1)char manage::first_face()//首页:该函数是该系统的首页。
(2)void manage::in_cangku()//入库函数:该函数是将商品信息录入到文件中。
(3)void manage::out_cangku()// 出库函数:该函数将商品信息读取后找到用户想要出库的商品然后进行商品报损。
(4)void manage::find_property()//查询函数:该函数用于让用户选择自己想要的查询商品的方式:俺商品名称查询、按商品价格查询、按商品价格查询。
(5)void manage::find_name()//按商品名称查询:该函数会读取用户输入的商品名称,然后打开存储文件找到该商品并显示在屏幕上。
(6)void manage::find_price()//按商品价格查询:该函数会读取用户输入的商品价格,然后打开存储文件找到该商品并显示在屏幕上。
(7)void manage::find_kind()//按大类查询该函数会读取用户输入的商品大类,然后打开存储文件找到该商品并显示在屏幕上。
(8)void manage::call_break()//商品报损函数:该函数将商品信息读取后找到用户想要报损的商品然后进行商品报损【测试结果】1.商场库存货物管理系统首页2.商品入库3.商品查询4.按商品名查询5.按商品价格查询6.按商品大类查询7.商品报损【设计总结】经过一个学期对《C++程序设计》的学习,我学习到了基本的理论知识,了解到了C++语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。
在为期近一周的C++课程设计中,我体会颇多,学到了很多东西。
我加强了对C++程序设计这门课程的认识,并且复习了自己以前学习到的知识。
这些都使得我对计算机语言的学习有了更深入的认识!总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
像职工信息表这样的程序设计,经历了平时在课堂和考试中不会出现的问题和考验。
而这些问题,这并不是我们平时只靠课本,就可以轻易解决的。
所以,锻炼了我们挑战难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。
特别是学会了在Visual C++中如何调试程序的方法。
当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。
在老师和同学的帮助下,通过自己的努力,终于完成了这次职工信息表的简单课程设计。
我经过这段时间的编程,对其中的艰辛,我是深有体会。
从刚开始的选择程序、理解程序到后来的调试程序以及改进程序这个过程中,我遇到了各种各样的困难和挫折。
但是我坚定信念,对自己充满了信心,想尽一切办法克服重重困难。
通过课程设计的训练,我进一步学习和掌握了对程序的设计和编写,从中体会到了面向对象程序设计的方便和巧妙。
懂得了在进行编写一个程序之前,要有明确的目标和整体的设计思想。
另外某些具体的细节内容也是相当的重要。
这些宝贵的编程思想和从中摸索到的经验都是在编程的过程中获得的宝贵财富。
这些经验对我以后的编程会有很大的帮助的,我要好好利用。
虽然这次课程设计是在参考程序的基础之上进行的,但是我觉得对自己是一个挑战和锻炼。
我很欣慰自己能在程序中加入自己的想法和有关程序内容,也就是对它的程序改进了一番改进,并有创新。
但是我感觉自己的创新还不够典型,总之还不是很满意。
另外由于时间的紧迫和对知识的了解不够广泛,造成了系统中还存在许多不足,功能上还不够完善。
以后我会继续努力,大胆创新,争取能编写出透射着自己思想的程序。
这次课程设计让我充分认识到了自己的不足,认识到了动手能力的重要性。
我会在以后的学习中更加努力锻炼自己,提高自己,让自己写出更好更完善的程序,为以后的编程打好基础!【参考文献】[1] Bjarne Stroustrup, THE C++ PROGRAMMING LANGUAGE, Higher Education Press Pearson Education,2002[2] [美]Walter Savitch著,周靖译,C++面向对象程序设计——基础、数据结构与编程思想,清华大学出版社,2004[3] [美]Brian Overland著,董梁等译,C++语言命令详解,电子工业出版社,2000[4] [美]AI Stevens著,林瑶等译,C++大学自学教程,电子工业出版社,2004[5] 刁成嘉主编,面向对象C++程序设计,机械工业出版社,2004[6] 刘瑞新主编,曹建春,沈淑娟,张连堂等编著,Visual C++面向对象程序设计程,机械工业出版社,2004【源程序清单】//list.h//首页char manage::first_face(){system("cls");cout << endl;cout << endl <<"\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆商场库存货物管理系统◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆ 1. 商品入库◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆ 2. 商品出库◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆ 3. 查询统计◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆ 4. 商品报损◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆ 5. 退出系统◆"<< endl <<"\t\t◆◆"<< endl <<"\t\t◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆◆"<< endl << endl <<"\t\t";return _getch();//入库void manage::in_cangku(){system("cls");string name;//商品名double price;//价格int store_Number;//仓库编号string dalei;//商品大类int shelf_Number;//货架号long quantity = 0; //商品数量cout << endl <<"商品入库,请输入相关信息: "<< endl << endl;cout <<"\t商品名称: ";cin >> name;cout << endl <<"\t商品价格: ";cin >> price;cout << endl <<"\t商品数量: ";cin >> quantity;cout << endl <<"\t仓库编号: ";cin >> store_Number;cout << endl <<"\t商品大类: ";cin >> dalei;cout << endl <<"\t货架编号: ";cin >> shelf_Number;ofstream storeFile("store.txt", ios::app);//ofstream类“写”,storeFile对象.//ios::app—写入的数据将被追加在文件的末尾,此方式使用ios::outstoreFile << setiosflags(ios::left) << setw(20) << name <<" "<< setw(15) << price <<" "<< setw(10) << quantity <<" "<< setw(10) << store_Number <<" "<< setw(20) << dalei <<" "<< shelf_Number << endl;//setiosflags(ios::left)左对齐输出storeFile.close();cout << endl << endl <<"\t该商品已经入库......."<< endl << endl <<"\t";system("pause");//暂停// 出库void manage::out_cangku(){system("cls");string name;//商品名cout << endl <<"\t商品出库,输入出库商品信息: "<< endl << endl;cout <<"\t商品名称: ";cin >> name;ifstream storeFile("store.txt");//ifstream类“读”if (!storeFile)//打开失败{ofstream storeFile1("store.txt");//“写”storeFile1.close();cout << endl << endl <<"\t仓存为空!!!!"<< endl << endl <<"\t";system("pause");return;}bool flag = false;string name_1;//商品名double price_1;//价格int store_Number_1;//仓库编号string dalei_1;//商品大类int shelf_Number_1;//货架号long quantity_1 = 0; //商品数量ofstream tempFile("temp.txt");//“写”临时文件while (storeFile >> name_1 >> price_1 >> quantity_1 >> store_Number_1 >> dalei_1 >> shelf_Number_1){if (name_1 == name)flag = true;else{tempFile << setiosflags(ios::left) << setw(8) << name_1 <<" "<< setw(5) << price_1 <<" "<< setw(8) << quantity_1 <<" "<< setw(5) << store_Number_1 <<" "<< setw(10) << dalei_1 <<" "<< shelf_Number_1 << endl;}}tempFile.close();storeFile.close();if (!flag)//“1”打开失败{cout << endl << endl <<"\t仓库中没有这种商品!!!"<< endl << endl <<"\t";system("pause");return;}ofstream storeFile1("store.txt");//“写”ifstream tempFile1("temp.txt");//“读”storeFile1 << tempFile1.rdbuf();//将tempFile1流对象中的流重定向到storeFile1上,实现替换.storeFile1.close();tempFile1.close();cout << endl <<"\t这些商品已经出库, 请仔细检查!!!"<< endl << endl <<"\t";system("pause");}//查询void manage::find_property(){while (1){system("cls");cout << endl << endl;cout <<"\t============================================================="<< endl <<"\t|| ||"<< endl<<"\t|| 商品查询||"<< endl<<"\t|| ||"<< endl<<"\t|| 1. 按商品名称查询||"<< endl<<"\t|| ||"<< endl<<"\t|| 2. 按商品价格查询||"<< endl<<"\t|| ||"<< endl<<"\t|| 3. 按大类查询||"<< endl<<"\t|| ||"<< endl<<"\t|| 4. 返回||"<< endl<<"\t|| ||"<< endl<<"\t============================================================="<< endl << endl <<"\t\t";char select = _getch();switch (select){case'1':find_name();break;case'2':find_price();break;case'3':find_kind();break;case'4':return;//跳出函数default:break;}}}//按商品名称查询void manage::find_name(){system("cls");cout << endl <<"\t按商品名查询: "<< endl << endl;cout <<"\t输入商品名: ";string name;cin >> name;string name_1;//商品名double price_1;//价格int store_Number_1;//仓库编号string dalei_1;//商品大类int shelf_Number_1;//货架号long quantity_1 = 0; //商品数量ifstream storeFile("store.txt");//“读”if (!storeFile)//打开失败{cout << endl << endl <<"\t对不起,你的库存为空!!!"<< endl << endl <<"\t";system("pause");return;}bool flag = false;cout << endl <<"商品名"<<"价格"<<"商品数量"<<"仓库编号"<<"商品大类"<<"货架号"<< endl << endl;while (storeFile >> name_1 >> price_1 >> quantity_1 >> store_Number_1 >> dalei_1 >> shelf_Number_1){if (name_1 == name){flag = true;cout << setiosflags(ios::left) << setw(8) << name_1 <<" "<< setw(5) << price_1 <<" "<< setw(8) << quantity_1 <<" "<< setw(5) << store_Number_1 <<" "<< setw(10) << dalei_1 <<" "<< shelf_Number_1 << endl;}}storeFile.close();if (!flag)cout << endl << endl <<"对不起,库存中没有这种商品!!!";cout << endl << endl;system("pause");}//按商品价格查询void manage::find_price(){system("cls");cout << endl <<"\t按商品价格查询: "<< endl << endl;cout <<"\t输入价格: ";double price;cin >> price;string name_1;//商品名double price_1;//价格int store_Number_1;//仓库编号string dalei_1;//商品大类int shelf_Number_1;//货架号long quantity_1 = 0; //商品数量ifstream storeFile("store.txt");//“读”if (!storeFile){cout << endl << endl <<"\t对不起,你的库存为空!!!"<< endl << endl <<"\t";system("pause");return;}bool flag = false;cout << endl <<"商品名"<<"价格"<<"商品数量"<<"仓库编号"<<"商品大类"<<"货架号"<< endl << endl;while (storeFile >> name_1 >> price_1 >> quantity_1 >> store_Number_1 >> dalei_1 >> shelf_Number_1){if (price_1 == price){flag = true;cout << setiosflags(ios::left) << setw(8) << name_1 <<" "<< setw(5) << price_1 <<" "<< setw(8) << quantity_1 <<" "<< setw(5) << store_Number_1 <<" "<< setw(10) << dalei_1 <<" "<< shelf_Number_1 << endl;}}storeFile.close();if (!flag)cout << endl << endl <<"对不起,库存中没有这个价格的商品!!!";cout << endl << endl;system("pause");}//按大类查询void manage::find_kind(){system("cls");cout << endl <<"\t按商品大类查询: "<< endl << endl;cout <<"\t输入大类名: ";string dalei;cin >> dalei;string name_1;//商品名double price_1;//价格int store_Number_1;//仓库编号string dalei_1;//商品大类int shelf_Number_1;//货架号long quantity_1 = 0; //商品数量ifstream storeFile("store.txt");//“读”if (!storeFile){cout << endl << endl <<"\t对不起,你的库存为空!!!"<< endl << endl <<"\t";system("pause");return;}bool flag = false;cout << endl <<"商品名"<<"价格"<<"商品数量"<<"仓库编号"<<"商品大类"<<"货架号"<< endl << endl;while (storeFile >> name_1 >> price_1 >> quantity_1 >> store_Number_1 >> dalei_1 >> shelf_Number_1){if (dalei_1 == dalei){flag = true;cout << setiosflags(ios::left) << setw(8) << name_1 <<" "<< setw(5) << price_1 <<" "<< setw(8) << quantity_1 <<" "<< setw(5) << store_Number_1 <<" "<< setw(10) << dalei_1 <<" "<< shelf_Number_1 << endl;}}storeFile.close();if (!flag)cout << endl << endl <<"对不起,库存中没有这类商品!!!";cout << endl << endl;system("pause");}//商品报损void manage::call_break(){system("cls");string name;//商品名cout << endl <<"\t商品报损,请输入要报损商品信息: "<< endl << endl;cout <<"\t商品名称: ";cin >> name;ifstream storeFile("store.txt");//“读”if (!storeFile){ofstream storeFile1("store.txt");//“写”storeFile1.close();cout << endl << endl <<"\t仓存为空!!!!"<< endl << endl <<"\t";system("pause");return;}bool flag = false;string name_1;//商品名double price_1;//价格string dalei_1;//商品大类string shelf_Number_1;//货架号long quantity_1 = 0; //商品数量ofstream tempFile("temp.txt");//“写”string store_Number_1;//仓库编号cout << endl << endl <<"你想报损商品信息如下: "<< endl << endl;cout << endl <<"商品名"<<"价格"<<"商品数量"<<"仓库编号"<<"商品大类"<<"货架号"<< endl << endl;while (storeFile >> name_1 >> price_1 >> quantity_1 >> store_Number_1 >> dalei_1 >>shelf_Number_1){if (name_1 == name){flag = true;cout << setiosflags(ios::left) << setw(8) << name_1 <<" "<< setw(5) << price_1 <<" "<< setw(8) << quantity_1 <<" "<< setw(5) << store_Number_1 <<" "<< setw(10) << dalei_1 <<" "<< shelf_Number_1 << endl;shelf_Number_1 +="(损坏)";}tempFile << setiosflags(ios::left) << setw(8) << name_1 <<" "<< setw(5) << price_1 <<" "<< setw(8) << quantity_1 <<" "<< setw(5) << store_Number_1 <<" "<< setw(10) << dalei_1 <<" "<< shelf_Number_1 << endl;}tempFile.close();storeFile.close();if (!flag){cout << endl << endl <<"对不起,仓库中没有这种商品!!!"<< endl << endl;system("pause");return;}ofstream storeFile1("store.txt");//“写”ifstream tempFile1("temp.txt");//“读”storeFile1 << tempFile1.rdbuf();//将tempFile1流对象中的流重定向到storeFile1上,实现替换.storeFile1.close();tempFile1.close();cout << endl << endl <<"这些商品已经损坏,请尽快从仓库中取出!!!"<< endl << endl;cout <<"报损成功,记录已经更改!!!"<< endl << endl;system("pause");}。