物资管理系统 C语言课程设计

2019-08-31 09:43

物资管理系统程序设计

本程序在VC++ 6.0上运行无误!!!

一、题目要求:

主程序中,应提供文字交互菜单界面。要求包含以下几个功能模块:

(1).信息输入模块input():建立物资管理数据总文件,完成对物资原库存信息的录入,并将其存放在指定的文件(product.txt)。

(2).信息查找模块search():采用如下方式进行查找,若找到,则输出该物资的相关信息;否则,输出提示信息,如“NO FOUND!!!”。

1).按产品信息查询;

2).按进货信息查询并统计(统计某年某月进的某种产品数量,产品种类); 3).按产品名称和规模查询并统计;

(3).新物资入库模块:在原文件插入新物资信息。

(4).领料模块:查找所领取物资信息,若满足领料的要求,请登记领取物资名称,领料的日期,所领数量(领料后对库存修改)。

(5).打印功能模块:

1).打印领料单;

2).打印物资库存清单。

二、需求分析

(1)、库存和领料信息以文本文件的方式存放在两个文件里,提供相应的输入输出操作。 (2)、提供库存几种方式的查找。 (3)、提供库存的建立、插入。 (4)、能查找满足领货要求的信息,并修改库存、领货文本文件。

三、总体设计

根据要求可以将系统设计为七大模块。

物 资 管 理 系 统 输入 查找 插入 领料 打印 退出 四、详细设计

1、主函数

主函数只调用主菜单函数。

2、主菜单函数

[程序]

//********主函数********

void menu() { int n,w=0; printf(\ printf(\ printf(\ 显示各个模块的入口供用户选择 printf(\ scanf(\ do { 输入n if(n>6||n<1) { Y printf(\ }

scanf(\ 判断n是否属于1-6 } else w=1;

}while(w!=1); Y switch(n)

{ 根据n的值调用各个功能模块函数 case 1:input();break; 输入

case 2:search_menu();break; 查找菜单 流程图 case 3:insert();break; 插入 case 4:lend();break; 领货

case 5:print_menu();break; 打印菜单 case 6:exit(0); 退出 }

3、输入模块

[数据结构]

所输入的数据在磁盘上以文本文件的形式保存,名字为product.txt! 在程序中以链表的形式储存!结构体如下: struct date /*日期结构体*/ {

int year; int month; int day; };

struct product /*库存货物结构体*/ {

char p_name[20]; /*货物名称*/ long int p_num; /*物资编号 char size[4]; /*物资规格*/ struct date in_date; /*进货日期*/ long int max_s; /*最大库存量*/ long int min_s; /*最小库存量*/ long int real_s; /*实际库存量*/ struct product *next;/*节点指针*/ };

/*输入函数*/

[分析]:以只写的方式打开文件"product.txt",在do—while循环中输入各种货物的信息。以输入flag植的方式判断是否结束循环。结束循环后调用主菜单函数!

[程序代码] 流程图

void input()

{ 定义文件指针fp、库存结构体p及标记循环flag void menu(); int flag; struct product p;

FILE *fp; 打开文件 if((fp=fopen(\ 打开库存文件 printf(\ 输入货物信息,写入文件 do Y

{ 继续输入 printf(\ printf(\ N 关闭文件 scanf(\

&p.p_num ,p.size,&p.in_date.year,&p.in_date.month,&p.in_date.day,&p.max_s,&p.min_s,&p.real_s);

fprintf(fp,\

y,p.max_s,p.min_s,p.real_s); 写入库存文件 printf(\

判断是否继续输入

scanf(\ }while(flag==1); fclose(fp); }

menu(); 回主菜单

4.插入模块

[需求分析]

该模块的功能是仓库管理员追加新的货物信息,从键盘逐条输入,并逐条写入指定文本文件。文件打开方式为“a+”。

[流程图]

以a+方式打开文件

按指定格式输入一条记录

写入文件 回到主菜单 [程序代码]

/*插入*/ void insert() {

void menu(); struct product p; FILE *fp; if((fp=fopen(\ printf(\ printf(\ printf(\ scanf(\date.day,&p.max_s,&p.min_s,&p.real_s);

fprintf(fp,\e.day,p.max_s,p.min_s,p.real_s);

menu(); }

5、查询模块

[需求分析]

在本模块,提供三种方式查询,分别是按名称查询,按日期查询,按规格查询!首先在菜单函数中提供三种查询方式的入口。

首先在菜单函数中调用建立库存链表函数,将文件中的信息存入链表,以方便查询!在各个查询函数中,利用链表查询,并统计满足要求的记录条数!

5-1 查找菜单

在查找菜单中,提供几种查找方式的入口。 [流程图]

建立库存链表

提示并输入选择

N

满足条件

Y

进入各查询函数

/*货物库存列表建立*/ struct product* build_list() { int i;

struct product *head,*p,*p1,*p2; FILE *fp;

if((head=(struct product*)malloc(sizeof(struct product)))==NULL) printf(\p=head; p1=head;

if((fp=fopen(\ 只读方式打开文件 { printf(\}

for(i=0;!feof(fp);i++) 读取数据并存入链表 {

fscanf(fp,\h,&p->in_date.day,&p->max_s,&p->min_s,&p->real_s);

p->next=NULL; p1->next=p; p1=p; p2=(struct product*)malloc(sizeof(struct product)); p=p2; } }

fclose(fp); 关闭文件

return(head); 返回头节点指针

[程序代码]

void search_menu() 查找菜单 { void menu(); int n,w; struct product *head; head=build_list(); printf(\ printf(\ printf(\ printf(\ scanf(\ 输入选择 do { if(n>4||n<1) { printf(\ scanf(\


物资管理系统 C语言课程设计.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:悬挑脚手架方案wz

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: