资源描述
C++程序设计课程设计报告
————超市管理系统
班级:
目 录
一.设计题目与要求…………………………………
二.需求分析………………………………………………
三.概要设计…………………………………
四.详细设计……………………………………………
五.测试………………………………………………
六.结论及改进设想…………………………………
一、课程设计题目与要求
1.设计题目
超市管理系统
2.系统功能要求
(1)销售功能。
购买商品时,先输入类别,然后输入商品名称,并在库存中查找该商品的相关信息。如果有库存量,输入购买的数量,进行相应计算。如果库存量不够,给出提示信息,结束购买。
(2)商品简单管理功能。
①添加功能:主要完成商品信息的添加。
②查询功能:可按商品类别、商品名称、生产厂家进行查询。若存在相应信息,输出所查询的信息,若不存在该记录,则提示“该记录不存在!”。
③修改功能:可根据查询结果对相应的记录进行修改。
④删除功能:主要完成商品信息的删除。先输入商品类别,再输入要删除的商品名称,根据查询结果删除该物品的记录,如果该商品不在物品库中,则提示“该商品不存在”。
(3)统计功能。
输出当前库存中所有商品的总数及详细信息;
可按商品的价格、库存量、生产厂家进行统计,输出统计信息时,要按从大到小进行排序。
(4)保存功能:将当前程序中的商品信息存入文件中。
(5)读取功能:从文件中将商品信息读入程序。
二.需求分析
中小型超市采购的商品一般都成千上万件。对这些商品进行有效的管理必不可少。每件商品一般都需要记录商品名、条形码、类别、价格、出厂日期等商品的基本信息。除此之外,还需要记录商品的其他相关信息,如生产厂家、供货处代码、厂家网址、厂家电话等。超市商品的相关信息需要存储到文件系统中,一般都需要提供对商品信息的添加、编辑、删除等操作。超市管理员每天都会记录购进的商品信息,核销过期的商品等。
为了巩固我们所学的C++语言程序设计知识,也为了满足课程设计的要求,我们在对几个中小型超市进行调研的基础上,设计和实现一个小型的超市商品管理系统,提供商品系统的添加、删除、编辑等功能。同类系统多数使用结构体数组来操作数据,本系统使用链表结构操作数据,提高了数据处理的效率。
三.概要设计
1增加商品
2显示商品
3排序统计商品
4查找商品
5删除商品
6修改商品
7安全退出
四.详细设计
1.设计class Supermarket商品类,实现对商品信息的描叙;设计 class Supermarketmassage类,实现对商品信息的增加,删除,修改,查询,统计等。以下是函数功能表:
函数
功能
void Display()
输出商品的信息
Supermarket()
构造函数
~Supermarket()
析构函数
void AddItem()
增加商品
void RemoveItem()
删除商品
void ModifyItem()
修改商品
void Find()
查询商品
int ListCount()
统计商品
void Save()
基础数据存盘
void Sort()
排序商品
Supermarketmassage()
构造函数
(1) 用类的成员函数对链表的数据进行操作,其功能如上表所列。
2.设计类及对象
本程序定义了两个类,定义如下:
1) class Supermarket
class Supermarket
{public:
char name[20];
char Num[20];
int Cnum; //进货总数
int Mnum; //销售数目
int Enum; //剩余库存数目
double Price; //单价
char Add[20]; //产地
double Sum; //销售额
Supermarket * Next;
void Input()
{
cout<<"\t\t请输入商品名:";cin>>name;
cout<<"\t\t请输入商品编号:"; cin>>Num;
cout<<"\t\t请输入商品进货总数:"; cin>>Cnum;
cout<<"\t\t请输入商品销售数目:"; cin>>Mnum;
cout<<"\t\t请输入商品剩余库存数目:"; cin>>Enum;
cout<<"\t\t请输入商品产地:"; cin>>Add;
cout<<"\t\t请输入商品单价:"; cin>>Price;
Sum=Mnum*Price;
}
void ReadFile(istream & in) //文件指针
{
in>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum;
}
void Show()
{
cout<<"商品名:"<<name<<endl
<<"商品编号:"<<Num<<endl
<<"进货总数:"<<Cnum<<endl
<<"销售数目:"<<Mnum<<endl
<<"剩余库存:"<<Enum<<endl
<<"产地:"<<Add<<endl
<<"单价:"<<Price<<endl
<<"销售额:"<<Sum<<endl
<<endl;
}
};
2 ) class Supermarketmassage;
class Supermarketmassage
{
public:
Supermarketmassage();
~Supermarketmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Supermarket *,Supermarket *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Supermarket * p=Head->Next;p!=End;p=p->Next)
p->Show(); cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Supermarket;
End=End->Next;
cout<<"添加成功!"<<endl; cout<<"输入任意字符!继续……";
getch();
}
private: Supermarket * Head,* End;
ifstream in;
ofstream out;
Supermarket *FindItem(char * name)
{
for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Supermarket *FindNum(char * Num)
{
for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->Num,Num))return p;
return NULL;
}
Supermarket *FindAdd(char * Add)
{
for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空
if(!strcmp(p->Next->Add,Add))return p;
return NULL;
}
};
3.程序源代码
# include <iostream>
# include <fstream>
# include <string.h>
#include <conio.h>//用getch();
using namespace std;
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarket类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Supermarket
{public:
char name[20];
char Num[20];
int Cnum; //进货总数
int Mnum; //销售数目
int Enum; //剩余库存数目
double Price; //单价
char Add[20]; //产地
double Sum; //销售额
Supermarket * Next;
void Input()
{
cout<<"\t\t请输入商品名:";cin>>name;
cout<<"\t\t请输入商品编号:"; cin>>Num;
cout<<"\t\t请输入商品进货总数:"; cin>>Cnum;
cout<<"\t\t请输入商品销售数目:"; cin>>Mnum;
cout<<"\t\t请输入商品剩余库存数目:"; cin>>Enum;
cout<<"\t\t请输入商品产地:"; cin>>Add;
cout<<"\t\t请输入商品单价:"; cin>>Price;
Sum=Mnum*Price;
}
void ReadFile(istream & in) //文件指针
{
in>>name>>Num>>Cnum>>Mnum>>Enum>>Add>>Price>>Sum;
}
void Show()
{
cout<<"商品名:"<<name<<endl
<<"商品编号:"<<Num<<endl
<<"进货总数:"<<Cnum<<endl
<<"销售数目:"<<Mnum<<endl
<<"剩余库存:"<<Enum<<endl
<<"产地:"<<Add<<endl
<<"单价:"<<Price<<endl
<<"销售额:"<<Sum<<endl
<<endl;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌Supermarketmassage类﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
class Supermarketmassage
{
public:
Supermarketmassage();
~Supermarketmassage();
void ShowMenu();
void Find();
void Save();
void ModifyItem();
void RemoveItem();
void Swap(Supermarket *,Supermarket *);
void Sort();
//void Unpass();
int ListCount();
//void Average();
void Display()
{
for(Supermarket * p=Head->Next;p!=End;p=p->Next)
p->Show(); cout<<"输入任意字符!继续……";
getch();
}
void AddItem()
{
End->Input();
End->Next=new Supermarket;
End=End->Next;
cout<<"添加成功!"<<endl; cout<<"输入任意字符!继续……";
getch();
}
private: Supermarket * Head,* End;
ifstream in;
ofstream out;
Supermarket *FindItem(char * name)
{
for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->name,name))return p;
return NULL;
}
Supermarket *FindNum(char * Num)
{
for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成功就返回空
if(!strcmp(p->Next->Num,Num))return p;
return NULL;
}
Supermarket *FindAdd(char * Add)
{
for(Supermarket * p=Head;p->Next!=End;p=p->Next)//匹配成功则返回上一个指针,不成就返回空
if(!strcmp(p->Next->Add,Add))return p;
return NULL;
}
};
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌构造函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Supermarketmassage::Supermarketmassage()
{
Head=new Supermarket;
Head->Next=new Supermarket;
End=Head->Next;
in.open("sort.txt");
if(!in)
cout<<"这是一个新系统,无商品信息。请先输入。"<<endl;
else
{
while(!in.eof())
{
End->ReadFile(in);
if(End->name[0]=='\0')break;
End->Next=new Supermarket; End=End->Next;
}
in.close();
cout<<"\t\t读取商品信息成功!"<<endl;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌析构函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
Supermarketmassage::~Supermarketmassage()
{
Save();
for(Supermarket * temp;Head->Next!=End;)
{
temp=Head->Next;
Head->Next=Head->Next->Next;
delete temp;
}
delete Head,End;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌菜单﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::ShowMenu()
{
cout<<"〓〓〓〓〓〓〓〓〓〓 ☆ 超 市 商 品 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓★★★★★ ★★★★★★★★ ★★★★★〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 1.增加商品信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 2.显示商品信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 3.排序统计商品 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 4.查找商品信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 5.删除商品信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 6.修改商品信息 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓"<<endl;
cout<<"\n\t\t\n\t\t请选择:";
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌查找函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::Find()
{
char name[20] ,Num[10];
int x; Supermarket * p=NULL;
cout<<"\n\t\t*********************************\n";
cout<<"\t\t※ 1.按商品的名称查找\n\t\t※ 2.按商品编号查找";
cout<<"\n\t\t*********************************\n请选择:";
cin>>x;
switch(x)
{
case 1:
{
cout<<"\t\t请输入要查找的商品的名称:";
cin>>name;
if(p=FindItem(name))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该商品信息!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
case 2:
{
cout<<"\t\t请输入要查找的商品编号:";
cin>>Num;
if(p=FindNum(Num))
{
p->Next->Show();
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到该编号的商品!"<<'\n'<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}break;
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌修改信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::ModifyItem() //修改信息
{
char name[20];
Supermarket* p=NULL;
cout<<"\t\t请输入要修改的商品名:";
cin>>name;
if(p=FindItem(name))
{
cout<<"\t\t已找到商品的信息,请输入新的信息!"<<endl;
p->Next->Input();
cout<<"修改成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌删除信息﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::RemoveItem() // 删除信息
{
char name[20]; Supermarket * p=NULL,*temp=NULL;
cout<<"\t\t请输入要删除的商品名:"<<endl;cin>>name;
if(p=FindItem(name))
{
temp=p->Next;
p->Next=p->Next->Next;
delete temp;
cout<<"\t\t删除成功!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
else
{
cout<<"\t\t没有找到!"<<endl;
cout<<"输入任意字符!继续……";
getch();
}
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::Swap(Supermarket *p1, Supermarket *p2)//交换两个combox变量的数据域
{
Supermarket *temp=new Supermarket;
strcpy(temp->name,p1->name); //字符串name里面
strcpy(temp->Num,p1->Num);
strcpy(temp->Add,p1->Add);
temp->Cnum=p1->Cnum;
temp->Mnum=p1->Mnum;
temp->Enum=p1->Enum;
temp->Price=p1->Price;
temp->Sum=p1->Sum;
strcpy(p1->name,p2->name);
strcpy(p1->Num,p2->Num);
strcpy(p1->Add,p2->Add);
p1->Cnum=p2->Cnum;
p1->Mnum=p2->Mnum;
p1->Enum=p2->Enum;
p1->Price=p2->Price;
p1->Sum=p2->Sum;
strcpy(p2->name,temp->name);
strcpy(p2->Num,temp->Num);
strcpy(p2->Add,temp->Add);
p2->Cnum=temp->Cnum;
p2->Mnum=temp->Mnum;
p2->Enum=temp->Enum;
p2->Price=temp->Price;
p2->Sum=temp->Sum;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌统计﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int Supermarketmassage::ListCount()//统计当前链表的记录总数,返回一个整数
{
if(! Head)
return 0;
int n=0;
for(Supermarket * p=Head->Next;p!=End;p=p->Next)
{
n++;
}
return n;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌排序﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::Sort()//对当前链表进行排序
{
cout <<"Sorting..."<<endl;
Supermarket *p=NULL,*p1=NULL,*k=NULL;
int n=Supermarketmassage::ListCount();
if(n<2)
return;
for(p=Head->Next;p!=End;p=p->Next)
for(k=p->Next;k!=End;k=k->Next)
{
if(p->Add>k->Add)
{
Supermarketmassage::Swap(p,k);
}
}
cout <<"排序完成!"<<endl;
getch();
return;
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌保存函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
void Supermarketmassage::Save()
{
out.open("sort.txt");
for(Supermarket *p=Head->Next;p!=End;p=p->Next)
out<<"商品名称:"<<p->name<<"\t\t"
<<"商品编号:"<<p->Num<<"\t\t"
<<"进货总数:"<<p->Cnum<<"\t\t"
<<"销售数目:"<<p->Mnum<<"\t\t"
<<"剩余库存:"<<p->Enum<<"\t\t"
<<"商品产地:"<<p->Add<<"\t\t"
<<"商品单价:"<<p->Price<<"\t\t"
<<"销售额:"<<p->Sum<<'\n';
out.close();
}
//﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌主函数﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌﹌
int main()
{
int x,i=0;
bool quit=false;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t◎★★★★【 欢迎进入超市商品管理系统 】★★★★◎"<<endl;
for(i=0;i<3;i++)
cout<<"\t\t◎\t\t\t\t\t\t ◎"<<endl;
cout<<"\t\t§§§§§§§§§§§§§§§§§§§§§§§§§§\n"<<endl;;
Supermarketmassage Grade;
cout<<"按任意键开始……";
getch();
while(!quit)
{
system("cls");
Grade.ShowMenu();
cin>>x;
switch(x)
{
case 0:quit=true;break;
case 1:Grade.AddItem();break;
case 2:Grade.Display();break;
case 3:Grade.Sort();break;
case 4:Grade.Find();break;
case 5:Grade.RemoveItem();break;
case 6:Grade.ModifyItem();break;
}
}
return 0;
}
五.测试
1. 程序界面
2. .程序主界面
3.增加
4.显示
5查找
6删除
7修改
8退出
六.结论及改进设想
在为期两周的课程设计中,通过完成本次任务,体会颇多,学到很多东西。利用设计这次超市管理系统的机会使我们熟练的掌握了这学期所学的有关visual c++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,构造函数等等。
在这次课程设计中,我们还懂得了程序开发的一些比较重要的步骤,比如需求分析、总体设计、程序模块设计(含功能需求、程序代码设计与分析、运行结果)等。总之,通过这次课程设计,收获颇丰,相信会为以后的学习和工作带来很大的好处。最重要的还是激发了我对编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我们对编程更加热爱了。
虽然课题已经完成,但还存在一些问题,比如程序不够简便,外观不够美观,以后的程序设计中仍需改进。
物业安保培训方案
为规范保安工作,使保安工作系统化/规范化,最终使保安具备满足工作需要的知识和技能,特制定本教学教材大纲。
一、课程设置及内容全部课程分为专业理论知识和技能训练两大科目。
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
1)保安人员培训应以保安理论知识、消防知识、法律常识教学为主,在教学过程中,应要求学员全面熟知保安理论知识及消防专业知识,在工作中的操作与运用,并基本掌握现场保护及处理知识2)职业道德课程的教学应根据不同的岗位元而予以不同的内容,使保安在各自不同的工作岗位上都能养成具有本职业特点的良好职业道德和行为规范)法律常识教学是理论课的主要内容之一,要求所有保安都应熟知国家有关法律、法规,成为懂法、知法、守法的公民,运用法律这一有力武器与违法犯罪分子作斗争。工作入口门卫守护,定点守卫及区域巡逻为主要内容,在日常管理和发生突发事件时能够运用所学的技能保护公司财产以及自身安全。
2、培训要求
1)保安理论培训
通过培训使保安熟知保安工作性质、地位、任务、及工作职责权限,同时全面掌握保安专业知识以及在具体工作中应注意的事项及一般情况处置的原则和方法。
2)消防知识及消防器材的使用
通过培训使保安熟知掌握消防工作的方针任务和意义,熟知各种防火的措施和消防器材设施的操作及使用方法,做到防患于未燃,保护公司财产和员工生命财产的安全。
3) 法律常识及职业道德教育
通过法律常识及职业道德教育,使保安树立法律意识和良好的职业道德观念,能够运用法律知识正确处理工作中发生的各种问题;增强保安人员爱岗敬业、无私奉献更好的为公司服务的精神。
4) 工作技能培训
其中专业理论知识内容包括:保安理论知识、消防业务知识、职业道德、法律常识、保安礼仪、救护知识。作技能训练内容包括:岗位操作指引、勤务技能、消防技能、军事技能。
二.培训的及要求培训目的
安全生产目标责任书
为了进一步落实安全生产责任制,做到“责、权、利”相结合,根据我公司2015年度安全生产目标的内容,现与财务部签订如下安全生产目标:
一、目标值:
1、全年人身死亡事故为零,重伤事故为零,轻伤人数为零。
2、现金安全保管,不发生盗窃事故。
3、每月足额提取安全生产费用,保障安全生产投入资金的到位。
4、安全培训合格率为100%。
二、本单位安全工作上必须做到以下内容:
1、对本单位的安全生产负直接领导责任,必须模范遵守公司的各项安全管理制度,不发布与公司安全管理制度相抵触的指令,严格履行本人的安全职责,确保安全责任制在本单位全面落实,并全力支持安全工作。
2、保证公司各项安全管理制度和管理办法在本单位内全面实施,并自觉接受公司安全部门的监督和管理。
3、在确保安全的前提下组织生产,始终把安全工作放在首位,当“安全与交货期、质量”发生矛盾时,坚持安全第一的原则。
4、参加生产碰头会时,首先汇报本单位的安全生产情况和安全问题落实情况;在安排本单位生产任务时,必须安排安全工作内容,并写入记录。
5、在公司及政府的安全检查中杜绝各类违章现象。
6、组织本部门积极参加安全检查,做到有检查、有整改,记录全。
7、以身作则,不违章指挥、不违章操作。对发现的各类违章现象负有查禁的责任,同时要予以查处。
8、虚心接受员工提出的问题,杜绝不接受或盲目指挥;
9、发生事故,应立即报告主管领导,按照“四不放过”的原则召开事故分析会,提出整改措施和对责任者的处理意见,并填写事故登记表,严禁隐瞒不报或降低对责任者的处罚标准。
10、必须按规定对单位员工进行培训和新员工上岗教育;
11、严格执行公司安全生产十六项禁令,保证本单位所有人员不违章作业。
三、 安全奖惩:
1、对于全年实现安全目标的按照公司生产现场管理规定和工作说明书进行考核奖励;对于未实现安全目标的按照公司规定进行处罚。
2、每月接受主管领导指派人员对安全生产责任状的落
展开阅读全文