仓库管理系统

仓库管理系统

项目目的

为了加深对面向对象程序设计中基础理论和基础知识的理解,促进理论和实践的结合。通过这个项目,让自己能够熟练运用C++进行面向对象编程,建立对象模型,降低软件的复杂度,改善软件的重用性和维护性,提高软件的生产效率,全面掌握面向对象编程技术。

项目背景

本项目主要实现对商品信息进行管理,分为四类人员,超级管理员,入库人员,出库人员,普通人员,其中超级管理员负责管理人员,其他人员负责对商品管理,不同人对商品具有不同的管理权限。

功能描述

本系统中,主要有四类人员:超级管理员、入库人员、出库人员和普通用户。
1)其中,每个人员都有唯一的编号与其对应。每添加一个人员编号顺序加1.
2)管理员对成员有添加、查找、修改、删除、显示成员信息等功能性操作。
3) 入库人员需要将商品的基本信息给录入到系统中,并生成对应为二维码和唯一的快递单号,将商品入库保存。
4)出库人员需要通过扫描二维码找到对应的商品,将商品提取出来(也就是将商品的状态信息改为出库)。
5)普通用户只能通过快递单号查找商品是否在仓库中。
6)生成文件来保存商品信息,以及成员信息。
7)利用容器来存储、读写以及管理。

项目实施

这个项目我是在LINUX操作系统下,用c++开发出来的,我写了一个人的类和人管理类,一个商品类和一个商品管理类,然后写了管理类,管理员的管理类,普通人员的管理类,入库人员的管理类,出库人员的管理类,其中管理员只需要对人管理类进行操作,对于不同职位的人增删改查;其他的人员是对商品管理类的操作。
普通人员添加商品并随机产生一个快递单号,将商品的信息写入到文件中,这个随机数我是一系统时间为种子,然后对十万取余,然后加上那个系统时间。
入库人员需要从普通人员写的文件中读取商品信息,输入快递单号选择需要入库的商品,并把文件中的这个商品给删除,入库时读取系统时间添加到商品的属性中,作为这个商品的入库时间,并产生一个二维码(这个二维码名字我是以这个商品的快递单号为名字的),写入到一个容器中,退出时写入到另外一个文件中。
出库人员需要输入需要出库商品的二维码名字,然后扫码出库。

人的类和人的管理类

per类中是人的一些基本信息,包括姓名,id,登录密码,部门。manage_per类中是对人的管理类,包括对人增删改查,显示。读写出人的数据等等。

#ifndef __PER_H__
#define __PER_H__

#include "head.h"//包含了基本的头文件和一些宏

class per 
{
    int id; 
    string name;
    string passwd;
    int department; 
public: 
    per(int a = 0,string b = "\0",string c = "\0",int d = PTRY);
    
    void insert(void);
    void id_init(void);
    int get_id(void);
    string get_name(void);
    string get_passwd(void);
    int get_department(void);
    void show(void);
    void modify(void);
    void sel_depart(void);
};


class manage_per
{
     vector<per> p;
     vector<per>::iterator itp;
public:

    void add_per(void);
    void find_id(void);
    void find_name(void);
    void find_department(void);
    void del_per_id(void);
    void del_per_name(void);
    void del_per_department(void);
    void modify(void);
    void modify(int id);
    void display(void);
    void display(int id);
    void show_pers(void);
    void per_write();
    void per_read();
    bool login_judge(int dep,int &id,string &name);

};

 
#endif 
商品类和商品管理类

trade类中是商品的基本信息,包括商品名,单号,购买人姓名,收件人姓名,收货地址,入库时间,出库时间和一个状态标志;manage_trade中是对商品的操作,增加,删除,修改,查找。还有从文件中读写出商品数据。

#ifndef __TRADE_H__
#define __TRADE_H__
#include "head.h"
 
class trade
{
    string name;
    int ord_num;
    string buy_id;
    string rcv_id;
    string addr;
    string rktime;
    string cktime;
    int flag;

  public:
    trade(string a = "\0",int b = 0,string c = "\0",string d = "\0",string e = "\0",string f = "00:00:00",string g = "00:00:00",int h = WRK);

    void show(void);
    string Time(void);
    void mod(void);
    string get_name(void);
    int get_ord_num(void);
    string get_buy_id(void);
    string get_rcv_id(void);
    string get_addr(void);
    string get_rktime(void);
    string get_cktime(void);
    int get_flag(void);
    void change_state(void);
    void append_cktime(void);
    int Rand(void);

    void write_trade(string id);
    void write(void);
};

class manage_trade
{
    vector<trade> v;
    vector<trade>::iterator it;

  public:
    string Time(void);
    void add_store(void);
    void find_trade(void);
    void find_trade(int ord);
    void del_trade(void);
    void show(void);
    void mod(void);
    void show_trades(void);
    void file_trade(string buyid);
    void display_self_ord(string buyid);
    void show_wrkmess(void);
    bool rk_trade(int ord);

    void write_rk(void);
    void read_rk(void);
};

#endif

超级管理员只对人员进行管理,其他人员对商品具有不同的管理权限,为了体现C++中的封装思想,每一个用户都写了一个类,来对商品管理类中的函数进行不同的调用。

#ifndef __MANAGE_H__
#define __MANAGE_H__
#pragma once

#include "head.h"
#include "trade.h"
#include "per.h"

class com
{
  protected:
    manage_per mp;
    manage_trade mt;

  public:
    com();

};


class Admin:public com
{

  public:
    Admin();
    void login();
    void add_person();
    void del_person();
    void modify_person();
    void find_people();
    void show_people();
    void write(void);
};

class everyman:public com
{

  public:
    everyman();
    bool login(int &id,string &name);
    void add_trade(string &name);
    void view_ord(string &name);
    void view_trade_in();
    void modify_mes(int ID);
    void show_mes(int ID);
    void write(void);

};

class Rkman:public com
{

  public:
    Rkman();
    bool login(int &id,string &name);
    void in_store();
    void modify_mes(int ID);
    void show_mes(int ID);
    void write(void);

};

class Ckman:public com
{
public:
    Ckman();
    bool login(int &id,string &name);
    void out_store();
    void modify_mes(int ID);
    void show_mes(int ID);
    void write(void);
};
#endif

菜单类

实现菜单之间的跳转

class Menu
{
    int sel;  
    int sel_max;
    int sel_min;
    string menu;
    Admin  Ad; 
    everyman ord;
    Rkman Rk; 
    Ckman Ck; 

  public:
    Menu(int  a = 0,int b = 1,int c = 0,string d = "\0");
    void get_char(void);
    void menu_run(void);
    void menug_run(void);
    void menup_run(int ID,string Name);
    void menur_run(int ID,string Name);
    void menuc_run(int ID,string Name);
    
    void menu_choose(void);
    void menug_choose(void);
    void menup_choose(int ID,string Name);
    void menur_choose(int ID,string Name);
    void menuc_choose(int ID,string Name);


};

结果展示

主登录界面
在这里插入图片描述
管理员界面
在这里插入图片描述
添加人员
在这里插入图片描述
删除人员
在这里插入图片描述在这里插入图片描述
修改人员
在这里插入图片描述
查找人员
在这里插入图片描述
在这里插入图片描述
显示所有人员
在这里插入图片描述
普通人员界面
在这里插入图片描述
入库人员界面
在这里插入图片描述
出库人员界面
在这里插入图片描述

总结

这是我第一次采用面向对象的编成语言c++开发的项目,经过这次这个项目使我对面向对象的编程思维有了很大的提升,对封装,继承,多态更加的熟悉。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值