1 需求分析

要求的仓库管理系统的功能如下:

查看仓库库存列表功能

查询功能:可以随时查看当前仓库的库存中的某些商品的一系列信息,包括商品名,剩余量

进货功能:(以下两个功能是根据输入自动选择的)

在仓库进货时,如果仓库中没有此商品,则为仓库增添新的商品项目

在仓库进货时,如果仓库中已有此商品,则增加此商品的库存量

出货功能:

在仓库出货时,减少对应商品的库存量

在仓库出货时,如果这是货物是此商品的最后一批货(库存量为0),则删除仓库中此商品项目

退出程序时存储仓库信息

记录仓库管理日志

仓库管理系统的功能如下(分为管理员和普通用户):

管理员可以执行的功能:

退出程序

查看仓库库存列表功能

查询功能:可以随时查看当前仓库的库存中的某些商品的一系列信息,包括商品名,剩余量,售价(管理员还可以查看成本价)

进货功能:(以下两个功能是根据输入自动选择的)

在仓库进货时,如果仓库中没有此商品,则为仓库增添新的商品项目

在仓库进货时,如果仓库中已有此商品,则增加此商品的库存量

出货功能:

在仓库出货时,减少对应商品的库存量

在仓库出货时,如果这是货物是此商品的最后一批货(库存量为0),则删除仓库中此商品项目

更改产品价格功能

管理员可以更改获取管理权限的密码

管理员可以查看所有用户的操作历史记录

普通用户可以执行的功能:

退出程序

查看仓库库存列表

查询功能:可以随时查看当前仓库的库存中的某些商品的一系列信息,包括商品名,剩余量,售价

仓库资料库功能(有一个固有文件txt1,存储管理密码和用户数目;一个固有文件存储仓库信息txt2):

退出程序时存储仓库信息 (每次运行程序时,将txt2中的仓库信息写入程序,同时将txt1里面的密码;程序结束前,把仓库信息保存到txt2里面,同时也保存密码信息进入txt1)

记录仓库管理日志(每个注册的用户都会在注册时产生一个记录其操作历史的文件,文件名就是ID号,由txt1里面的用户总数产生,每次注册 “用户总数”++,产生该文件。)

输入异常处理功能

每次用户输入都会检测用户输入是否正确(一个check()函数)

2 实现思路

2.1 功能结构图

本仓库管理系统主要分为出货、进货、查询、列表库存、修改商品价格、修改管理密码、查看历史记录。七大模块,分别对出货、进货、查询、修改商品价格、修改管理密码、查看历史记录等的操作进行管理。

进货模块中又细分为增加库存和新增商品子功能,当进货时,若此商品在仓库中没有库存,则在仓库库存条目中新增此商品项目,若已有此类商品,则根据进货量增加对应的库存量。

出货模块中又细分为减少库存和删除商品子功能,当出货时,减少对应商品的数目,注意到当库存不足时,出货失败,且若出货成功并且库存为0时,删除仓库目录中此商品项目。

具体的实现方法是:

设计一个链表,通过遍历链表打印商品信息来 实现显示商品库存的函数

通过遍历链表,比较用户输入的name查找商品来 实现查找商品的函数

然后在进货时,通过查找函数判断库存中是否有该商品,从而决定执行新增商品/增加库存

同样在出货时,通过查找函数判断库存中是否有该商品,如果有,再进一步判断商品的数目与用户想要的数目,从而选择delete商品/decrease商品

修改价格时 通过查找函数得到指向该商品的指针,从而更改价格

修改管理密码则是直接更改全局变量Password,最后把改完的结果输入txt1

查看历史记录是根据用户(管理员)输入的ID打开相应的用户文件,把文件内容写到终端

通过以上方法,最终实现了:七个主要功能(对普通用户而言只有两个功能,即1,2功能)、一个简单加密管理系统、生成文件并存储用户操作记录、存档仓库信息。

3 数据设计structGoods

{

stringname;

intcount=0;

doubleprime_costs=0;

doubleselling_price=0;

Goods*next=NULL;

}

name表示名称,count表示数量,prime_cost表示进价,selling_cost表示售价,count表示货物数量。其中,管理员可以访问所有变量,并赋予所有变量初始值,并且可以在之后更改售价。用户只能读取除了进价以外的数据,不能进行写操作。

4 函数设计

4.1 关于交互信息的函数询问用户是不是管理员并审核,如果是manager,返回真且ret全局变量置为1,表示表示manager,不是manager返回真且ret=0,否则输入错误,返回假,要求重新输入

bool is_manager(void);

打印该仓库系统的功能:int print_function();

根据用户所选数字确定对应的用户想要的功能,如果用户选择退出程序,返回0;否则正常执行,返回1。int choose_function();

4.2 基本函数声明

进货,对应进货模块,表示当前进货一批数量为count的name商品。

voidadd_goods(stringname,intcount,doubleprime_costs,doubleselling_price);

它有两个子函数:

更新库存信息,对应增加库存子功能,对name商品新增count数量

voidincrease_count(stringname,intcount);

更新库存列表,对应新增商品子功能,新增name商品且初始数量为count

voidadd_to_list(stringname,intcount,doubleprime_costs,doubleselling_price);

出货,对应出货模块,表示当前出货一批数量为count的name商品,如果该货物 不存在,返回0,否则,返回1,表示成功取出。

intdelete_goods(stringname,intcount);

它有两个子函数:

更新库存信息,对应减少库存子功能,对name商品减少count数量

booldecrease_count(stringname,intcount);

更新库存列表,对应删除商品子功能,删除商品列表中name商品,

booldelete_from_list(stringname);

显示当前库存列表,包括商品名及其库存量,成本价,售价;普通成员不可以看到成本价

voidshow_goods();

查看仓库中的name商品的一系列参数,普通成员不可以看到成本价,函数返回的是指向查找得到的商品的指针;如果仓库没有这个商品,返回一个默认构造的goods变量(这个变量的count是0,以此判断该商品不存在)

Goods*find_goods(stringname);

4.3 新增功能函数

新增的功能,总共有管理者函数和用户函数两部分:

4.3.1 管理者函数

首先应该包括所有的basicfunction里面的函数:

add_goods, increase_count, add_to _list;

delete_goods, decrease_count, delete_from_list;

show_goods, find_goods

修改仓库访问密码:

voidchange_password(stringpassword);

修改售价,根据商品名称进行修改。(如果存在这个商品,返回1表示修改成功,否则返回0表示修改)

intchange_price(stringname,doubleprice);

管理员查看所有用户操作(包括普通用户和管理员)如果存在该用户id,返回1表示访问成功,否则返回0表示访问失败。

intopen_file(stringid);

用户函数包括:

voidshow_goods();

Goods*find_goods(stringname);

4.4 存档所有信息函数,包括密码信息,仓库信息,用户操作信息等等

每次运行程序将之前保存的仓库信息,密码信息,用户数目写入程序

voidwrite_back(void);

这个函数用来保存关闭程序时仓库的存储情况,以免退出程序后数据丢失

而对应的文件“txt2”,就是专门用来保存仓库信息的

voidPlace_on_file(void);

这个函数可以向存储用户信息的文件写入时间信息,从而记录用户进行某一个操作的时间,返回操作具体时间

stringget_time(void);

// 本来应该有一个专门根据用户的选择,向文件输出,记录用户操作的函数

// 但是用户每个不同的操作,有不同的输入,而每个操作用户只输出一次,所以不适合把‘写向屏幕’和‘写向文件’的操作分成两个函数

// 如果非要这么做,要么(1)要么需要传递很多变量,多分很多情况,要么(2)需要定义很多全局变量,

// 所以干脆统一写在choose_function()里面了

//总之,,水平有限,,,,,,时间精力有限,,,,,,

4.5 异常处理函数voidcheck(intnum);// 用于检测用户输入是否正确

5 总结本来还想实现每个用户都有一个密码(包括管理员,普通用户,但是管理员还有管理权限密码,即管理员有两个密码),另外有一个管理员才知道的管理权限密码,并且一旦管理员注册过后,系统会知道这个ID的用户是管理员,不要再输入管理权限密码就可以进行管理员操作

还有,自己的代码重复度很高,查找算法也不好

6 程序测试

基于linux的银行管理,课内资源 - 基于Linux的仓库管理系统相关推荐

  1. c++语言仓库管理系统,课内资源 - 利用C++实现仓库管理系统

    一.需求分析 仓库管理系统的功能如下: 先读入仓库中已存在的商品的编号.名字.数量 在仓库进货时,读入含进货信息的文件,改变商品的种类以及数量 在仓库出货时,读入含出货信息的文件,减少对应商品的库存量 ...

  2. 基于linux的qt五子棋小游戏下载,课内资源 - 基于Qt的图形化界面网络在线对战五子棋游戏...

    一 需求分析 本软件是一款跨平台的网络实时五子棋对战软件,实现建立主机和连接主机.实时对战.判断输赢和危险提示等功能.支持Windows . Linux和OSX平台. 程序主要功能如下: 建立服务器 ...

  3. 基于linux下QT象棋,课内资源 - 基于QT实现的网络象棋游戏

    1.功能说明 1.1 初始界面 初始界面中包含一个菜单栏,菜单栏中有一个建立连接选项,可以用来与其他程序建立连接. 1.2 建立连接 单击建立连接后,会弹出一个对话框以配置连接的相关信息,包括创建服务 ...

  4. mysql -ss -e_课内资源 - 基于ssm框架和mysql的网上选课系统

    一.需求分析 1.1 业务需求 随着社会的发展,学生的人数和课程种类急速增加,传统的选课管理模式已经无法满足当前的实际需求,为此我们开发了学生选课管理系统.本人结合学生选课管理的实际需要,完成了对学生 ...

  5. java洗衣店管理课程设计报告_课内资源 - 基于Java的洗衣店管理系统

    摘 要 随着科技的快速发展,人们的需求也是越来越多,为了方便对信息的管理我们小组就设计了一个洗衣店订单的管理系统. 洗衣店管理系统是典型的的信息管理系统,创建了六个类,分别是:Test类:Person ...

  6. java基本语法借阅_课内资源 - 基于Java和MySql实现的光盘借阅管理系统

    一.需求设计以下几个类:光盘类:用户类:借阅记录类,包括下列模块: 新建.修改.删除光盘信息 新建.修改.删除用户信息 光盘借阅/归还信息记录 查询光盘名称,用户的借阅历史 要求:基于JFrame窗体 ...

  7. python+diango写酒店管理系统_课内资源 - 基于Python的Django框架实现的中式快餐厅管理信息系统网站...

    1 初步调研 随着餐饮业的连锁和国外餐饮巨头的进入,餐饮业的竞争将越来越激烈:要想在竞争中处于不败之地,必须在管理.服务等方面提高服务管理意识.面对当前餐饮业普遍的产业化程度低,管理手段.管理技术落后 ...

  8. python电梯题_课内资源 - 基于PyQt5实现的python电梯调度程序

    1. 使用说明 1.1 项目简介 电梯作为人们出行的重要工具之一,在人们日常生活中扮演着重要的角色.而电梯的调度算法是决定电梯运行效率的关键,一个高效的调度算法对电梯能否有效地运行起到重要的作用.因此 ...

  9. jsp mysql在线考试系统源码_课内资源 - 基于JSP和MYSQL数据库实现的在线考试系统...

    1 系统概述 1.1 功能模块 教学部需要考试系统,该考试系统需要完成如下功能: 考试系统只针对于Java课程,题目全部为单项选择,共10题 学生注册.登录 后台管理员功能:题库管理.录入试卷.修改试 ...

最新文章

  1. python_day2基本数据类型
  2. input框的内容变化监听
  3. 5. [mmc subsystem] mmc core(第五章)——card相关模块(mmc type card)
  4. Jenkins中连接Git仓库时提示:无法连接仓库:Error performing git command: git ls-remote -h
  5. 信息安全风险评估实施
  6. AMD将于年内推出高端Polaris图形处理器
  7. javascript range 转为 html,javascript Range对象跨浏览器常用操作
  8. C#设计模式之一单例模式(Singleton Pattern)【创建型】
  9. 互联网全球化趋势下,印度极得美自我革新
  10. 史上最全的点线面距离公式与推导过程(图文介绍)
  11. PHP微信公众号文章爬虫
  12. EasyExcel报错空指针异常
  13. 从零搭建hyperf docker镜像
  14. book mac pro怎么重装系统_macbook pro怎么重装mac系统?
  15. Linux学习-文件IOA1——用结构体和文件操作函数实现文件的拷贝
  16. RAM,ROM,FLASH
  17. 水平耀斑_搜索引擎提交的内容:引发耀斑
  18. 波士顿房价_团结波士顿2015年主题演讲
  19. 2020--管理类联考--网课推荐
  20. 当面试官问你“你期望的薪酬是多少”时,实际上是在问什么?

热门文章

  1. eshop项目:在jsp网页上传文件
  2. iOS面向切面编程-AOP
  3. configuration is still incorrect. do you want edit it again?
  4. 大师教你不用钱也能买大楼!!
  5. thymelaf使用
  6. 第二章 控制方程离散化之低阶格式(一)
  7. spring mvc maven ajax异步长连接 startAsync报错not suport
  8. EBS JVM 内存优化攻略
  9. php uc_client,uc_client/client.php 功能介绍
  10. 是真烧机油还是正常磨损