失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > 基于linux的银行管理 课内资源 - 基于Linux的仓库管理系统

基于linux的银行管理 课内资源 - 基于Linux的仓库管理系统

时间:2024-08-21 04:40:21

相关推荐

基于linux的银行管理 课内资源 - 基于Linux的仓库管理系统

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的仓库管理系统》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。