仓库管理系统
项目目的
为了加深对面向对象程序设计中基础理论和基础知识的理解,促进理论和实践的结合。通过这个项目,让自己能够熟练运用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++开发的项目,经过这次这个项目使我对面向对象的编程思维有了很大的提升,对封装,继承,多态更加的熟悉。