c语言课设仓库管理系统.doc

高级语言程序设计课程设计小型仓库管理系统题 目班 级学生学号学生姓名 同组成员 指导老师 提交时间 成 绩华南农业大学 信息学院一、 需求分析1 系统概述本系统用于小型仓库的信息管理,可实现仓库物品信息的增加、删除、查询、显示功能,以及仓库的入库信息记录、出库信息记录、查询指定物品的信息及出入库记录、显示紧缺物品信息的功能,此外还有密码功能,可保护仓库信息的安全性。2 系统运行环境本系统方便简捷,对系统的软、硬件要求不高,在任何系统环境下都能很好的运行。3 功能需求描述本系统分为两大块,分别为系统管理和出入库管理。其中,系统管理包括增加物品信息、删除物品信息、查询物品信息、显示物品信息、设置仓库密码五个功能;出入库管理包括物品出库、物品入库、库存物品查询、显示紧缺物品四个功能。以下对各功能作一些介绍a. 增加物品信息新增一条物品信息,包括编号、名称、警界库存量。b. 删除物品信息可通过物品编号或名称删除该物品的信息,物品数为0时方可删除。c. 查询物品信息可通过物品编号或名称来查询指定物品的信息,并显示出来d. 显示物品信息该功能可以显示所有库存物品的信息,包括物品编号、名称、警戒库存量、当前库存数。e. 设置仓库密码为保护仓库数据不被随意窜改,本系统要求仓库管理员设置密码,成功后可随意更改。f. 物品入库通过物品编号或名称可实现该指定物品的入库操作,记录下该物品的入库信息,包括物品编号、入库物品数量、物品单价、提供商、采购员五个信息。g. 物品出库通过物品编号或名称可实现该指定物品的出库操作,记录下该物品的出库信息,包括物品编号、出库物品数量、提货原因、提货员四个信息。如果申请的提货数量超过当前库存数时,则操作失败。h. 库存物品查询通过物品编号或名称可查找该指定物品的信息,包括编号、名称、警戒库存量、当前库存数五个信息,以及该物品所有的入库与出库信息。i. 显示紧缺物品可以显示出所有库存数低于警戒库存量的物品信息包括物品编号、名称、警戒库存量、当前库存数五个信息点。二、 总体设计1 总体开发思想a. 系统使用C语言编译,意在复习之前学习的C语言程序设计,并对以后所学之数据结构知识作初步的认识和预习。b. 采用的主要数据结构是链表。本系统采用链表来储存一整个文件中的数据,然后通过插入结点与删除结点的方法来进行数据的更改,最后把链表内容覆盖文件原有的数据,实现数据的更改。c. 数据存贮方式包括链表、文件两种,其中链表主要用于需要更改文件中数据时的数据暂存,实现把局部的数据进行更改的作用。文件主要用来永久性的数据存储,以及数据的提取与写入。2 系统模块结构图 紧缺物品库存查询物品入库物品出库更改密码显示物品增加物品查询物品删除物品说明本仓库管理系统有密码验证成功后登录,进入主菜单。在主菜单中可实现个功能模块选择,功能模块主要有两个,一个是系统管理模块,一个是出入库管理模块。而主功能模块下又有各自的详细功能系统管理模块包含增加、删除、查询、显示物品信息和更改密码的功能;出入库管理模块包含物品出库、入库,库存物品信息查询和紧缺物品信息列表显示的功能。3 模块设计 密码登录主菜单出入库管理菜单系统管理菜单增加物品信息物品出库 指令1 返回 指令1 返回删除物品信息 指令2 返回物品入库 指令2 返回查询物品信息 指令3 返回库存物品信息查询 指令3 返回显示物品信息 指令4 返回显示紧缺物品信息更改密码 指令5 返回 指令4 返回 返回上层返回上层 指令6 返回主菜单 指令5 返回主菜单下面对上面的流程图做详细介绍1 密码登陆模块为保护仓库信息安全,本系统使用密码验证登陆。首次使用本系统需要设置密码,以后凭密码登录。密码为字符型,可以使用数字加字母、标点符号组成。当输入两次一致的初始密码后,进入系统。2 主菜单模块主菜单包括4个功能键1系统管理、2出入库管理、3帮助、4退出。进入主菜单后,根据面板上的数字指令进行操作(详细面板见后)。若输入错误指令如0,a,,等字符,则系统不做任何处理,直到输入正确的指令后,系统根据指令运行。3 系统管理菜单模块在主菜单按指令1后会进入系统管理菜单,她包括6个功能键增加物品、删除物品、查询物品、显示物品、更改密码。同样,若在这时输入错误指令,系统不会做任何处理。输入正确指令后, 进入相应的功能中,按6可以返回主菜单a. 增加物品信息新增一条物品信息,包括编号、名称、警界库存量。若增加的物品信息中,发现仓库内物品的两个信息编号或者名称一样的话,会打印出仓库内相同物品的信息,并报告保存失败。在保存成功或保存失败后,我们都可以按ENTER键进行继续增加的操作,也可以按任意键结束物品的增加。增加的物品信息会以编号为准进行升序排序,使信息有序。注意,在输入信息时如果输入的数据有误,如编号、警戒库存量用字母写入,则会提示数据有误,允许在当前页面重新输入数据。b. 删除物品信息可通过物品编号或名称删除物品的信息,物品数为0时可删除。进入此功能后,我们首先选择删除方式1编号或者2名称,若输入3,则返回系统管理菜单。若按其他键则系统不做任何处理。当选择删除的物品中库存值为0时,系统会提示是否删除。选Y则删除,选N不删除。操作过后会返回系统管理菜单。在输入信息时如果输入的数据有误,如编号用字母写入,则会提示数据有误,允许在当前页面重新输入数据。c. 查询物品信息可通过物品编号或名称来查询指定物品的信息,并显示出来。同样,进入此功能后,我们首先选择查询方式1编号或者2名称,若输入3,则返回系统管理菜单。输出的物品信息包括物品编号、名称、警戒库存量和当前库存量。在输入信息时如果输入的数据有误,如编号用字母写入,则会提示数据有误,允许在当前页面重新输入数据。d. 显示物品信息该功能可以一列表形式显示所有库存物品的信息,包括物品编号、名称、警戒库存量、当前库存数。e. 设置仓库密码进入此功能后,我们需要输入两个相同的新密码,密码格式有数字、字母和标点符号组成,长度在20个字符以内。若输入的两个新密码不一致,则返回系统管理菜单。若密码一致则会打印出新密码,提示提示使用者记住,然后返回。4. 出入库管理菜单模块在主菜单按指令2后会进入系统管理菜单,她包括5个功能键物品出库、物品入库、库存物品查询、显示紧缺物品信息。同样,若在这时输入错误指令,系统不会做任何处理。输入正确指令后,进入相应的功能中。按5可返回主菜单。a. 物品入库若仓库中无物品信息,则返回库存管理菜单。否则通过物品编号或名称进行指定物品的入库操作。其中,按1通过编号入库,按2通过名称入库,按3可返回库存管理菜单,输入其他错误的指令则系统不作处理。开始入库操作后,输入相应的信息,包括物品编号、入库物品数量、物品单价、提供商、采购员,系统会找出相匹配的物品信息进行出库操作。若存在该物品,系统会记录下该物品的入库信息,成功后返回库存管理菜单,否则也会返回。注意,在输入信息时如果输入的数据有误,如编号、入库数、单价用字母写入,则会提示数据有误,允许在当前页面重新输入数据。b. 物品出库若仓库中无物品信息,则返回库存管理菜单。否则通过物品编号或名称进行指定物品的出库操作。其中,按1通过编号出库,按2通过名称出库,按3可返回库存管理菜单,输入其他错误的指令则系统不作处理。开始出入库操作后,输入相应的信息,包括物品编号、出库物品数量、提货原因、提货员四个信息。如果存在该物品并且申请的提货数量在合理范围内时,则操作成功,系统会记录下该物品的出库信息并返回,否则如出库数超过当前库存数,会失败并返回。注意,在输入信息时如果输入的数据有误,如编号、出库数用字母写入,则会提示数据有误,允许在当前页面重新输入新数据。c. 库存物品查询若仓库中无物品信息,则返回库存管理菜单。否则通过物品编号或名称可查找该指定物品的信息。其中,按1通过编号查询,按2通过名称查询,按3可返回库存管理菜单,输入其他错误的指令则系统不作处理。当找到匹配的物品信息时,打印物品信息包括编号、名称、警戒库存量、当前库存数五个信息,以及该物品所有的入库与出库信息。若物品无出库活入库信息,系统也会打印出提示。在输入信息时如果输入的数据有误,如编号用字母写入,则会提示数据有误,允许在重新输入新编号。d. 显示紧缺物品此功能可以显示出所有库存数低于警戒库存量的物品信息,包括物品编号、名称、警戒库存量、当前库存数五个信息点,以列表的形式打印出来,按任意键后返回库存管理菜单。5. 其他模块主菜单上有另外两个功能键帮助、退出。a. 帮助在主菜单上按指令3可显示帮助信息,里面详细介绍本系统的功能、使用方法,以及注意事项。有此可以帮助使用者更好的使用本软件,驾驭本软件。按任意键可以返回主菜单。b. 退出在主菜单上按指令4可以安全的退出系统,并且显示退出页面,图见后。4 界面设计界面的布局(可以采用截图)及使用操作;1. 首先进入的是首次使用系统的初密码设置功能(如图)首次使用本系统需要设置密码,密码为字符型,由数字、字母、标点符号组成。密码不一致,重新输入(直到输入连个一致的密码为止)当输入两次一致的初始密码后,进入系统。2. 接下来是主菜单在这里输入1、2、3、4,可以进入相应的功能中。按3进入帮助系统页面按4退出系统3. 系统管理在主菜单按1请进入系统管理菜单按1为增加物品功能(输入示例数据,可以一条条的增加物品信息)增加完毕后返回按2为删除物品信息功能(已输入示例数据)选择Y,或N,这里选N 按3进入物品查询功能(已输入示例数据)按4进入显示物品功能按5更改密码(若输入的两个新密码不一致则返回系统管理菜单)按6返回主菜单。4. 出入库管理在主菜单按2进入库存管理菜单按2进行物品入库操作(已输入示例数据)数据有误,返回数据无误,成功后返回。按1进行物品出库操作成功按3进入库存查询查询结果按4显示紧缺物品信息以上详细操作可以参照模块设计部分。5 数据结构设计主要定义了一个结构体物品信息结构体。如下面代码struct wupinxinxi物品结构体int bianhao,jingjiekucunliang,kucun;char mingcheng20;struct wupinxinxi *next 定义结构体包含bianhao,mingcheng,jingjiekucunliang,kucun四个成员,建立单向链表结点的类型源代码中,在几个函数中使用到了构体类型指针变量,入增加物品中(代码如下)struct wupinxinxi *headNULL;struct wupinxinxi *p0,*p1,*p2;定义结构体类型指针变量此外所有的函数中都用到了结构体指针,用来进行文件的各种操作,包括创建、清空、追加信息等。三、 详细设计1. 模块功能本系统有两大功能模块,系统管理及出入库管理。a.系统管理可实现仓库物品信息的增加、删除、查询、显示功能和密码更改功能。b.出入库管理包括仓库的入库信息记录、出库信息记录、查询指定物品的信息及出入库记录、显示紧缺物品信息的功能。 c.此外还有帮助、退出功能。帮助功能详细介绍本系统的功能、使用方法,以及注意事项。2. 主要函数主要有三大函数主干函数void zhuhanshu;系统管理函数void xitongguanli和库存管理函数void kucunguanli。其中主函数main调用主干函数;系统管理函数调用子函数有void zengjiawupin增加物品信息函数void shanchuwupin删除物品信息函数void chaxunwupin查询物品信息函数void xianshiwupin显示物品信息函数void genggaimima更改密码函数库存管理函数调用的子函数有 void chuku物品出库函数void ruku物品入库函数void kucunchaxun查询库存信息函数void xianshijinque显示紧缺物品函数此外还有其他函数int tongjiwupin统计物品个数函数int tongjichuku统计出库个数函数int tongjiruku统计入库个数函void tuichu退出画面 void zhucaidan显示主菜单 void bangzhu帮助系统函数 void denglu验证密码函数在这里展现一些函数参数及其含义FILE *fp;定义结构体指针struct wupinxinxi *headNULL;定义头位空struct wupinxinxi *p0,*p1,*p2;定义结构体类型指针变量char xuanze13;创建变量为ENTER键值,用于后面的按键功能int bianhao10,hao0,jing0,cun0,chukushu0,n0,k0,flag0,i;char mingcheng1200,ming200,shang200,yuanyin1000,tihuoyuan200;定义变量(一定长度)3. 主要程序清单a.这是系统主菜单的代码void xitongguanli系统管理函数char xuanze;创建变量,用来储存键值void zengjiawupin;void shanchuwupin;void chaxunwupin;void xianshiwupin;void genggaimima;声明函数xitongguanlicaidan;调用菜单函数xuanzegetch;for;xuanze1xuanze2xuanze3xuanze4xuanze5xuanze6;判断键值是否有效xuanzegetch;switchxuanze选择功能函数case 1zengjiawupin;break;进入增加物品功能case 2shanchuwupin;break; 进入删除物品功能case 3chaxunwupin;break; 进入查询物品功能case 4xianshiwupin;break; 进入显示物品功能case 5genggaimima;break; 更改密码功能case 6zhuhanshu;break; 返回主函数功能b.这是统计物品信息条数函数的代码int tongjiwupin统计物品个数函数FILE *fp;定义结构体指针int bianhao0,kucun0,jingjiekucunliang0,n;char mingcheng200,tigongshang200;定义变量fpwupinxinxi.dat,r;打开文件for n0;feoffp;n计算信息条数fscanffp,d s d d,n;fclosefp;关闭文件return n;返回信息条数c. 这个事很重要的一个库存物品信息查询,输出包括物品信息积极所有的出入库信息void kucunchaxun查询库存信息函数FILE *fp;定义结构体变量int bianhao0,hao0,jing0,cun0,rukushu0,chukushu0,flag0,k0,n0,i,count0;定义变量float danjia0;char mingcheng200,ming200,shang200,caigouyuan200,tigongshang200,yuanyin1000,tihuoyuan200;char xuanze;创建变量,用来储存键值systemcls;iffpwupinxinxi.dat,rNULL判断文件是否存在,若不存在则新建printfnnnnnnnnn 当前仓库无物品信息nn 请按任意键返回库存管理菜单;getch;kucunguanli;ktongjiwupin;统计物品信息条数ifk0若无物品,则返回主函数printfnnnnnnnnn 当前仓库无物品信息nn 请按任意键返回主菜单;getch;zhuhanshu;elsesystemcls;printfnn 请输入查库方式按3可返回库存管理菜单n 1.通过编号入库 2.通过名称入库;xuanzegetch;for;xuanze1xuanze2xuanze3;xuanzegetch;if xuanze1通过物品编号查询printfn 请输入物品编号;scanfd,for;bianhao0;判断数据是否有误编号不能为0或者字符,若有误则重输scanfs,mingcheng;printfn 输入错误,请重新输入;printfn 请输入物品编号;scanfd,if xuanze2通过物品名称查询printfn 请输入物品名称;scanfs,mingcheng;if xuanze3返回库存管理菜单kucunguanli;systemcls;fpwupinxinxi.dat,r;打开文件fori0;ik;i逐条读取物品信息,寻找匹配信息fscanffp,dsdd,ifbianhaohaostrcmpmingcheng,mingprintfnn 物品编号为d,名称为s警戒库存量为d当前库存量为dnn,hao,ming,jing,cun;找到匹配信息打印flag1;标记fclosefp;关闭文件ifflag0若找不到匹配信息则返回库存管理菜单printfnnn 不存在该物品请按任意键返回库存管理菜单;getch;kucunguanli;iffpruku.dat,rNULL判断文件是否存在,若不存在则新建fpruku.dat,w;fclosefp;ktongjiruku;统计入库信息条数ifk0无入库信息printf 此物品尚无入库信息;elsefpruku.dat,r;打开文件fori0;ik;i逐条寻找匹配的入库信息,找到则打印出来fscanffp,dsdfss,ifbianhaohaostrcmpmingcheng,mingprintf 第3d次入库入库数d,单价.2f,提供商s,采购员sn,count,rukushu,danjia,shang,caigouyuan;flag1;标记fclosefp;ifflag0没有匹配的入库信息printf 此物品尚无入库信息;printfn;flag0;初始化变量count0;初始化变量iffpchuku.dat,rNULL判断文件是否存在,若不存在则新建fpchuku.dat,w;fclosefp;ktongjichuku;统计出库信息条数ifk0没有出库信息printf 此物品尚无出库信息;elsefpchuku.dat,r;打开文件fori0;ik;i逐条寻找匹配的出库信息,找到则打印出来fscanffp,dsdss,ifbianhaohaoprintf 第3d次出库出库数d 原因s 提货员sn,count,chukushu,yuanyin,tihuoyuan;flag1;标记fclosefp;ifflag0没有匹配的出库信息printf 此物品尚无出库信息;printfnnn 请按任意键返回库存管理菜单;getch;kucunguanli;返回库存管理菜单由于代码量过多,在此不枚举。请打开我的c文件查看。谢谢四、 总结在这次程序设计的过程中,我的确遇到了不少困难。首先是知识的遗忘、生疏,以及在以前的学习中留下的难点链表和文件在以前的学习中,链表和文件是我最头疼的事情,虽读书过十遍,却还是不能理解透彻,更别提应用自如了。在代码的完成过程中,很多地方需要用到链表和文件,特别是文件。而我的程序思路又是这样的建一个存放文件信息的文件,一个存放物品出库信息的文件,一个存放物品入库信息的文件,还有一个存储密码的文件。这样就有了四个文件。我这样考虑是有原因的,因为系统有一个功能就是要打印物品信息以及所有的出入库信息,这样文件多了虽然代码实现比较麻烦,可是却能更好的存放信息和读取信息。经过近一个月的的奋斗,我终于完成了,虽然有一小部分是参考网上的代码的出来的,但我的知识着实巩固了很多,提高了很多现在想想我当时的“四个文件”想法,觉得有些幼稚。现在我想到一些方案,我们完全可以将四个文件合并成为一个只需要在写入文件时用代码实现加入标记的符号比如说,密码放在文件的第一行,除了密码功能,其他操作都不需要去读第一行的数据,直接从第二行读起。而物品信息在他的数据面前加一个编辑号,如1,那么,一个信息为编号10,名称wupin,警戒库存量5,写进文件时就变成1(标记) 10(编号) wupin(名称) 5(警戒库存量) 0(初始库存为0)其他的出库、入库信息记录也采用相似的方法,那么在读取数据出来时,通过第一个数据(标记)就可知道读取的是物品信息还是出库信息、入库信息了。需要注意的是,每次往文件里边写数据,都要写进一些“垃圾信息”,而读出来时我们要筛选需要的数据。像这样吧几个文件抽在一起,需要写进去的数据有编号,名称,警戒库存量,当前库存值,出库数,提货员,提货原因入库数,采购员,。不知道这要的想法老师认不认同经过这次课程设计,我不再畏惧链表、文件相反,我开始觉得他们很有趣。就像老师当时所说,理解了就会了,很简单的我想,以后学习数据结构时我会跟容易学好,更有激情去学习

c语言课设报告仓库管理系统,c语言课设仓库管理系统.doc相关推荐

  1. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序

    C语言课程设计报告模拟时钟转动程序 课程设计报告题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 导 教 师 ...

  2. c语言课设报告时钟vc环境,C语言课程设计报告模拟时钟转动程序.doc

    C语言课程设计报告模拟时钟转动程序 PAGE 课程设计报告 题 目 课 程 名 称 结构化程序设计课程设计 院 部 名 称 专 业 班 级 学 生 姓 名 王蕾 学 号 课程设计地点 课程设计学时 指 ...

  3. c语言个人账册报告的课题来源,C语言个人账簿管理系统报告

    C语言个人账簿管理系统报告 程序设计课程设计报告 ( 2012-- 2013年度第2学期) 个人账簿管理系统的设计 专业 软件工程 学生姓名 班级 软件121 学号 指导教师 完成日期 2013.7. ...

  4. c语言实训报告心得100字,c语言实训报告心得.doc

    c语言实训报告心得 cad课程设计心得体会CAD课程设计心得 CAD课程设计心得 经过一周的课程设计我们在老师的指导下,顺利的完成了cad课程设计.在过去CAD的学习过程中,我们学习了很多制图方面的知 ...

  5. 对c语言的认知报告怎么写,对C语言指针的认识的认知实习报告.doc

    对C语言指针的认识的认知实习报告 认知实习报告 题目:对C语言指针的认识 学生姓名: 学号: 班级: 所属学院: 指导教师: 2013年7月 对C语言指针的认识 学生姓名: 学号: 班级: 指导教师: ...

  6. c语言五子棋实验报告免费下载,五子棋C语言程序

    # include # include # include # define SPA 0 # define MAN 1 # define COM 2 /* 空位置设为0 ,玩家下的位置设为1 ,电脑下 ...

  7. 语言程序推箱子课设报告_学完C语言,可以去哪些应用领域工作?

    C语言是目前世界上流行.使用非常广泛的高级程序设计语言. 在TIOBE已公布2020年8月的编程语言排行榜.C语言依然保持排行第一! 前20名排行如下: C语言对操作系统和系统使用程序以及需要对硬件进 ...

  8. c语言课设报告函数的比较,c语言课程设计设计报告函数的调用关系图及主要算法.doc...

    程序一:简单数学问题 一.程序功能简介: 实现多个简单数学问题的求解. 二.题目分析 完成与菜单项对应的功能设计 void FindNum( ); /*用穷举法找到被咬掉的数字*/ void Find ...

  9. 替换单词c语言程序,C语言课程设计报告【设计简单单词替程序替换指定单词】.doc...

    PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目: 院(系): 理学院 专 业: 信息与计算科学 班 级:学 号: 2011041401025 姓 名: ...

  10. Go 语言 2019 调查报告发布(内含 Go 语言图谱下载)

    <关注公众号,回复 Go 即可下载清晰知识图谱> 对 Go 语言感兴趣但又不知从何学起的同学,可以参考一下 Go 语言系列文章: 为什么你要选择 Go? Go 面向失败编程 带着服务器编程 ...

最新文章

  1. (剑指Offer)面试题61:按之字形顺序打印二叉树
  2. VC++设置软件断点和“XXX已停止工作“对话框
  3. 电脑硬件知识学习_DIY电脑多年,这些硬件冷知识你们知道吗?
  4. XE Delphi 判断字符为中文的方法
  5. Ubuntu Server安全Webserver搭建流程
  6. 使用FFMPEG SDK解码流数据获得YUV数据及其大小
  7. oc传参数给js_【一句话攻略】彻底理解JS中的回调(Callback)函数
  8. html在线填空题,HTML测试题-(含答案).pdf
  9. android阴影edittext,android – 将阴影效果添加到EditText字段
  10. 小红帽系统进入oracle,11G RAC 安装在红帽6上,grid跑root.sh报错
  11. 【UVM芯片漫游指南_000】总目录(下)——UVM目录
  12. Excel 2010实战技巧精粹
  13. js laypage mysql_layUI独立组件layer-laydate-laypage项目实践用法
  14. win95光盘版安装方法
  15. 台式计算机风扇一直响,台式电脑风扇声音大怎么办(笔记本风扇一直嗡嗡响)...
  16. docker使用国内加速器的正确姿势
  17. 如何用C语言将华氏温度转化为摄氏温度
  18. ios备忘录下载安卓版_如何下载和平精英国际服?
  19. 太原市山大附中2021年高考成绩查询,太原高中排名及分数线,2021太原市高中排名榜最新...
  20. 信创产业现状、分析与预测

热门文章

  1. MySQL修改最大连接数限制
  2. 5G来临,射频芯片与基带技术演进和产业链。
  3. python微信推送消息_python 微信推送模板消息
  4. webpack开发环境和生产环境的配置区别
  5. springboot改文件头_SpringBoot中实现文件上传下载的三种解决方案(推荐)
  6. 数据库sql去除重复数据
  7. 轻松进入加密了的QQ空间的新方法 请大家小心自己的空间哦
  8. 2007 Microsoft Office 套件 Service Pack 2 (SP2)
  9. 仿照淘宝首页做的一个高度伪对齐demo
  10. Java异步执行方法