精华内容
下载资源
问答
  • c语言仓库货物信息管理系统

    千次阅读 2016-12-06 20:40:51
    初次做课程设计,对链表,文件掌握不好,希望大神传授一下啊

    #include<stdio.h>
    #include<stdlib.h> //头文件
    #include<string.h>

    typedef struct information//定义结构体
    {

    int number;
    char name[100];
    float price;
    int count;
    struct information *next; 
    }inf;
    inf *head;
    inf *found() //创建信息
    {
    int n;
    inf *p=NULL,*pre=NULL; //定义指针变量
    pre=head=(inf *)malloc(sizeof(inf)); //申请内存
    while(1)
    {
    p=(inf*)malloc(sizeof (inf));
    printf("输入货物的编号、名称、价格、数量:\n");
    printf("编号:");
    scanf("%d",&p->number);
    printf("名称:");
    scanf("%s",&p->name);
    printf("价格:");
    scanf("%f",&p->price);
    printf("数量:");
    scanf("%d",&p->count);
    printf("\n");
    pre->next=p;
    pre=p;
    printf("============================================\n");
    printf("是否退出创建货物信息 退出:输1 继续: 输2\n");
    scanf("%d",&n);
    if(n==1)
    {
    pre->next=NULL;
    p=NULL;
    return head;
    }
    printf("\n");
    if(n>2)
    {
    printf("输入错误!\n");
    system("pause");
    }
    }
    pre->next=NULL;
    free(p);
    p=NULL;
    return head;
    }

    void baocun(inf *head) //保存信息
    {
    int h=0;
    inf *p=NULL;
    FILE *fp;
    p=head->next;
    if(p==NULL)
    {
    printf("头结点创建失败!");
    }
    else
    {
    p=head->next;
    if((fp=fopen("货物信息.txt","w"))==NULL) //打开‘货物信息.txt’文件
    {
    printf("不能打开这个文件\n");
    exit(0);
    }
    fprintf(fp,"编号:%d\t名称:%s\t价格:%f\t数量:%d\n",p->number,p->name,p->price,p->count);//读取信息
    while(p!=NULL)
    {
    fprintf(fp,"编号:%d\t",p->number);
    fprintf(fp,"名称:%s\t",p->name); //输出信息
    fprintf(fp,"价格:%f\t",p->price);
    fprintf(fp,"数量:%d\n",p->count);
    p=p->next;
    h++; //记录信息数
    }
    printf("保存成功一共%d个货物!\n",h);
    fclose(fp);
    }
    }

    void find(inf *head) //查询信息
    {
    inf *p=NULL;
    int d,n;
    int number1;
    char name1[100];
    printf("\t\t 请选择方式查找 \n");
    printf("\t\t 1.通过编号查找 2.通过名称查找\n"); //查询方式
    p=head->next;
    if(p==NULL)
    {
    printf("没有货物信息,请先保存货物信息!\n");
    }
    printf("===========================\n");
    printf("请输入要选择的内容 1 或 2 \n");
    scanf("%d",&n);
    switch(n)
    {
    case 1:
    printf("请输入要查找的货物的编号:\n");
    scanf("%d",&number1);
    while(p!=NULL)
    {
    if(number1==p->number)
    {
    printf("货物的编号、名称、价格、数量是:\n");
    printf("编号=%d\n",p->number);
    printf("名称=%s\n",p->name);
    printf("价格=%f\n",p->price);
    printf("数量=%d\n",p->count);
    break;
    }
    printf("\n");
    p=p->next;
    }
    printf("对编号的查找成功!\n");
    break;
    case 2:
    printf("请输入要查找的货物名称:\n");
    scanf("%s",&name1);
    while(p!=NULL)
    {
    if(strcmp(p->name,name1)==0)
    {
    printf("货物的编号、名称、价格、数量是:\n");
    printf("编号=%d\n",p->number);
    printf("名称=%s\n",p->name);
    printf("价格=%f\n",p->price);
    printf("数量=%d\n",p->count);
    break;
    }
    printf("\n");
    p=p->next;
    }
    printf("对名称的查找成功!\n");
    break;
    default:printf("查找有错误!\n");
    }
    }
    void tianjia (inf *head) //添加信息
    {
    inf *p=NULL,*p1=NULL;
    p=head;
    while(p->next!=NULL)
    {
    p=p->next;
    }
    p1=(inf*)malloc(sizeof(inf));
    printf("请输入你所想添加的信息:\n");
    printf("编号:");
    scanf("%d",&p1->number);
    printf("名称:");
    scanf("%s",&p1->name);
    printf("价格:");
    scanf("%f",&p1->price);
    printf("数量:");
    scanf("%d",&p1->count);
    p->next=p1;
    p1->next=NULL;
    baocun(head);
    }

    void xiugai(inf *head) //修改信息
    {
    inf *p=NULL;
    int b;
    int number2;
    char name2[100];
    float price2;
    int count2;
    p=head->next;
    if(p==NULL)
    {
    printf("没有货物信息,请先保存货物信息!\n");
    }
    printf("\t\t 请输入要修改的内容\n");
    printf("\t\t 1.修改编号 2.修改名称\n");
    printf("\t\t 3.修改价格 4.修改数量\n");
    printf("请选择 \n");
    scanf("%d",&b);
    switch(b)
    {
    case 1 :
    printf("请输入被修改的货物编号:\n");
    scanf("%d",&number2);
    while(p!=NULL)
    {
    if(number2==p->number)
    {
    printf("请输入新的编号:\n");
    scanf("%d",&p->number);
    break;
    }
    p=p->next;
    }
    printf("对编号的修改成功!\n");
    break;
    case 2 :
    printf("请输入被修改的名称:\n");
    scanf("%s",&name2);
    while(p!=NULL)
    {
    if(strcmp(p->name,name2)==0)
    {
    printf("请输入新的名称:\n");
    scanf("%s",&p->name);
    break;
    }
    p=p->next;
    }
    printf("对名称的修改成功!\n");
    break;
    case 3 :
    printf("请输入被修改的价格:\n");
    scanf("%f",&price2);
    while(p!=NULL)
    {
    if(price2==p->price)
    {
    printf("请输入新的价格:\n");
    scanf("%f",&p->price);
    break;
    }
    p=p->next;
    }
    printf("对价格的修改成功!\n");
    break;
    case 4 :
    printf("请输入被修改的数量:\n");
    scanf("%d",&count2);
    while(p!=NULL)
    {
    if(count2==p->count)
    {
    printf("请输入新的数量:\n");
    scanf("%d",&p->count);
    break;
    }
    p=p->next;
    }
    printf("对数量的修改成功!\n");
    break;
    default:printf("修改内容有错误!\n");
    }
    printf("\n");
    }
    void shanchu(inf *head) //删除信息
    {
    int k;
    inf *p=NULL,*pr=NULL;
    char name4[100];
    int number4;
    p=pr=head->next;
    printf("\t\t 1.按编号删除 2.按名称删除\n");
    printf("请选择 :\n");
    scanf("%d",&k);
    switch(k)
    {
    case 1:
    {
    printf("请输入要删除的货物的编号:\n");
    scanf("%d",&number4);
    break;
    }
    case 2:
    {
    printf("请输入要删除的货物的名称:\n");
    scanf("%s",&name4);
    break;
    }
    }
    while(p!=NULL)
    {
    if(number4==p->number)
    {
    pr->next=p->next;
    free(p);
    p=NULL;
    break;
    }
    if(strcmp(p->name,name4)==0)//比较
    {
    pr->next=p->next;
    free(p);
    p=NULL;
    break;
    }

    pr=p;
    p=p->next;
    }
    printf("删除成功!\n");
    }

    void output(inf *head) //显示信息
    {
    inf *p=NULL;
    p=head->next;
    while(p!=NULL)
    {
    printf("__________________________________________\n");
    printf("|编号\t|名称\t|价格\t\t|数量\t |\n");
    printf("|========================================|\n");
    printf("|%d\t|%s\t|%f\t|%d\t |\n",p->number, p->name,p->price,p->count);
    printf("|_______|_______|_______________|________|\n");
    p=p->next;
    }
    }

    void menu1()//页面
    {
    system("color 3E");
    printf("\t\t****************************************\n");
    printf("\t\t\t欢迎进入货物信息管理系统\n");
    printf("\t\t****************************************\n");
    printf("\n");
    printf("\t\t按enter键继续!\n");
    }

    void menu2()//目录
    {
    system("color 3E");
    printf("\t\t|----------------------------------------------------|\n");
    printf("\t\t|______________________基本信息______________________|\n");
    printf("\t\t| 1.创建货物信息 | 2.保存货物信息 |\n");
    printf("\t\t| 3.查找货物信息 | 4.修改货物信息 |\n");
    printf("\t\t| 5.删除货物信息 | 6.输出货物信息 |\n");
    printf("\t\t| 7.退出系统 | 8.添加货物信息 |\n");
    printf("\t\t|_________________________|__________________________|");
    printf("\n\t\t\t请输入你的选项(1---8):\n");
    }

    inf *read()
    {
    FILE *fp;
    inf *head,*q,*p;
    if((fp=fopen("货物信息.txt","r")) == NULL) //打开文件
    {
    printf("不能打开文件!\n");
    }

    head=(inf *)malloc(sizeof(inf)); //申请空间
    head->next=NULL;
    p=(inf *)malloc(sizeof(inf));
    int m=0;
    while(fread(p,sizeof(inf),1,fp)==1) //读取文件信息
    {
    m=m+1;
    p->next=NULL;
    printf("编号:%d\t名称:%s\t价格%f\t数量:%d\t\n",p->number, p->name,p->price,p->count);
    getchar();
    if(m==1)
    {
    head->next=p;
    }
    else
    {
    q->next=p;
    }
    q=p;
    p=(inf *)malloc(sizeof(inf));
    }
    fclose(fp);
    return head;
    }

    int main()
    {
    FILE *fp;
    int n,m;
    menu1();
    getchar();
    if((fp=fopen("货物信息.txt","r"))!=NULL)
    {
    head=read();
    }
    else
    {
    printf("文件中没有保存货物信息!\n");
    }
    while(1)
    {
    system("cls");
    menu2();
    scanf("%d",&n);
    switch(n)
    {
    case 1 :
    head=found();break;
    case 2 :
    baocun(head);break;
    case 3 :
    find(head);break;
    case 4 :
    xiugai(head);output(head);break;
    case 5 :
    shanchu(head);break;
    case 6 :
    output(head);break;
    case 7:break;
    case 8:tianjia(head);break;
    default:
    printf("选择功能错误!\n");
    }
    printf("\n");
    printf("************************************************************\n");
    printf("是否继续对该货物信息的操作,如果继续操作 输:1 退出输: 2 \n");
    printf("-—————————————————————————————-\n");
    scanf("%d",&m);
    getchar();
    if(m==2)
    {
    break;
    }
    }
    return 0;
    }



    1、 主界面的显示

         1

     

     

     2

     

     

     

    2、 创建信息的执行

          

     

     

    3、 保存信息的执行

    保存:

     

    输出:

     

    4、 查找函数的执行

    1.按编号:

     

     

    2.按名称:

     

     

    5、 修改函数的执行

    1.修改编号

     

     

    2.修改名称

     

    3.修改价格

     

    4.修改数量

     

    保存

     

     

    显示

     

     

     

    6、 删除信息的执行

    1.编号删除

     

     

    显示

     

    2、按名称删除

     

    显示

     

    保存

     

    7、添加函数的执行

     

    显示

     

    8、输出函数的执行

     

    9、退出

     



    展开全文
  • 仓库管理系统

    万次阅读 多人点赞 2019-07-26 20:24:10
    入库、库位调拨、库存调拨等功能,综合批次管理,物料对应、库存盘点、质检管理和即时库存管理等功能综合运用的管理系统,有效控制和跟踪仓库业务的物流和成本管理的全过程,实现完善的企业仓储信息管理。...

    一、仓库管理概述

    仓库管理系统(WMS)通过出库,入库、库位调拨、库存调拨等功能,综合批次管理,物料对应、库存盘点、质检管理和即时库存管理等功能综合运用的管理系统,有效控制和跟踪仓库业务的物流和成本管理的全过程,实现完善的企业仓储信息管理。
    从业务上讲,仓库管理系统主要是出库,入库以及仓库内部管理,而WMS系统作为进销存体系的重要一环,需要与采购系统,财务系统,订单调度中心,库存中心等系统发生信息交互。
    在这里插入图片描述

    二,仓库管理模块设计

    1 出库

    当发货单推送至仓库,就进入仓库的任务处理队列中,经历调度,打单,拣货 ,复核,包装,交接发货等过程,最后交给物流公司。
    a,调度:锁定拣货库位,生成拣货波次,(拣货波次的原则是选择几个锁定库位相邻,不超出拣货车存放量的仓库订单合并,可按照预设规则自动生成,也可人工筛选)
    b,打单:将波次对应的物流单和发货单打印出来
    c,拣货:关联拣货车,按波次拣货
    d,复核:对拣货完成的订单进行核对,保证发货单、实物商品、物流单的统一。
    e,包装:复核后对订单进行打包,称重,体积录入。
    f,交接发货:打包后,根据物流单对应的快递公司,推至相应的交接区,扫描物流单号完成交接并发货。
    在这里插入图片描述

    在这里插入图片描述

    2 入库

    商品入库主要是根据采购单,退/换货入库单,调拨入库单等,入库单推送至仓库时,经历到货确认,验货打码,商品上架等环节最终完成入库。
    到货确认:当仓库收到入库单时,相应的货物不会立马到仓库,而是会先进行到货确认,同时生成相应的验货任务,打印相应的入库验货单
    验货打码:到货确认之后进入验货打码环节,验货员根据验货单上的任务验货,并反馈给系统合格和不良品的到货数量,(不良品退给供应商),到货数量小应到数量时,将剩余未到货任务再次返回到到货确认,等待下次到货,退货单将合格品和不合格品都录入到系统中,不良品会上架至不良品库区
    验货完成后,通过系统打印相应数量的商品条码,由仓库人员进行贴码。
    商品上架:不仅包括商品入库上架,还包括补货上架,移库上架,返库上架等情形,上架后更新库位库存信息
    在这里插入图片描述
    在这里插入图片描述

    3 仓库内部管理

    盘点:定期或临时对库存商品的实际数量进行清查,清点,对仓库现有商品的实际数量与保管账上记录的数量相核对,以便准确的掌握库存数量
    在这里插入图片描述
    a,根据业务需求选择相应的库位和商品创建盘点任务,盘点员根据盘点任务进行盘点
    b,盘点后录入盘点数据
    c,当盘点单中所有任务完成后,判断是否有盘盈或者盘亏。
    d,无盘盈或盘亏,盘点结束,如果有,提交给主管审核,审核不通过,对库存不一致的库位商品重新生成盘点单,进行复盘;审核通过,提交给财务审核
    e,财务审核通过后,生成盘盈,盘亏单,去更新仓库库存。

    在这里插入图片描述

    库位库区管理

    仓库的库区主要分为分拣区,储存区,不良品存储区,发货暂存区,收货暂存区几块,需要给每个库区进行编码,在仓库中使用条形码对货品信息,批次,库位进行管理,提高各个环节的作业效率和信息化程度。

    统计查询

    统计查询模块主要是关于仓库的流水、库存、工作量等方面的统计并提供库存预警功能。包括出库明细,入库明细、库存变动明细、总库存查询、库位库存查询等。

    展开全文
  • 为了管理好商店库存信息,提升店铺管理工作效率,结合实际工作需要,设计和开发本系统,主要用于商店商品信息维护出入库等。包含商品库存信息查看、商品信息修改,新增商品信息,删除信息等功能。 二、功能清单 1...

    一、概述

    为了管理好商店库存信息,提升店铺管理工作效率,结合实际工作需要,设计和开发本系统,主要用于商店商品信息维护出入库等。包含商品库存信息查看、商品信息修改,新增商品信息,删除信息等功能。

    二、功能清单

    1、查询如图

    查询界面,请从数据库查询学生信息表数据并显示在控件上,通过底部功能菜单执行相应功能,添加、修改按钮点击后课弹出相应窗体执行相应操作,点击刷新按钮课刷新当前数据,删除按钮点击后可删除选中行数据并刷新

    2、添加,如图

    填写姓名和班级后,点击添加按钮后可添加数据

    3、修改,如图

    通过点击查询界面中“修改按钮”,可在修改界面修改当前选中行数据

    三、数据库

    注意:数据库名称为“班级_姓名”,如“1705_小白”。

    表名称:tGoods

    字段

    字段名

    数据类型

    描述

    约束

    goodsID

    int

    商品编号

    主键自增长

    name

    varchar(20)

    商品名称

    typeName

    varchar(20)

    类别名称

    stock

    Int

    库存

    评分规则(共100分)

    标题

    分值

    合理注释

    10分

    命名规范

    10分

    查询

    20分

    修改

    10分

    删除

    10分

    添加

    10分

    数据库创建

    10分

    数据库连接

    10分

    整体效果

    10分

    实现代码:

    数据库 链接: https://pan-yz.chaoxing.com/external/m/file/483246110958415872

    Java文件 链接: https://pan-yz.chaoxing.com/external/m/file/483246085097291776

    数据库:

    -- ----------------------------
    -- Table structure for tgoods
    -- ----------------------------
    DROP TABLE IF EXISTS `tgoods`;
    CREATE TABLE `tgoods` (
      `goodsID` int(11) NOT NULL AUTO_INCREMENT,
      `name` varchar(20) DEFAULT NULL,
      `typeName` varchar(20) DEFAULT NULL,
      `stock` int(11) DEFAULT NULL,
      PRIMARY KEY (`goodsID`)
    ) ENGINE=InnoDB AUTO_INCREMENT=11 DEFAULT CHARSET=utf8;
    
    -- ----------------------------
    -- Records of tgoods
    -- ----------------------------
    INSERT INTO `tgoods` VALUES ('9', '统一冰红茶', '饮料', '24');
    INSERT INTO `tgoods` VALUES ('10', '娃哈哈营养快线', '饮料', '23');

    com.test.db >>> DbConnection

    package com.test.db;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    import com.mysql.jdbc.Statement;
    
    public class DbConnection {
    	//驱动类的类名
    	private static final String DRIVERNAME="com.mysql.jdbc.Driver";
    	//连接数据的URL路径
    	private static final String URL="jdbc:mysql://localhost:3306/1902_杨明金";
    	//数据库登录账号
    	private static final String USER="root";
    	//数据库登录密码
    	private static final String PASSWORD="root123";
    	//加载驱动
    	static{
    		try {
    			Class.forName(DRIVERNAME);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    	}
        //获取数据库连接
    	public static Connection getConnection() {
    	          try {
    		return DriverManager.getConnection(URL,USER,PASSWORD);
    	           } catch (SQLException e) {	
    		e.printStackTrace();
    	           }
    			return null;
    	}
    	//查询
    	public static ResultSet query(String sql) {
    		System.out.println(sql);
    		//获取连接
    		Connection connection=getConnection();
    		PreparedStatement psd;
    		try {
    			psd = connection.prepareStatement(sql);
    			return psd.executeQuery();
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		return null;
    	}
    	//增、删、改、查
    		public static int updataInfo(String sql) {
    			System.out.println(sql);
    			//获取连接
    			Connection connection=getConnection();
    			try {
    				PreparedStatement psd=connection.prepareStatement(sql);
    				return psd.executeUpdate();
    			} catch (SQLException e) {
    				e.printStackTrace();
    			}
    			return 0;
    		}
    	//关闭连接
    	public  static  void colse(ResultSet rs,Statement stmt,Connection  conn) throws Exception{
    	          try { if (rs != null){ rs.close(); }
                             	 if (stmt != null) { stmt.cancel(); }
    		 if (conn != null) { conn.close(); }
    	   } catch (Exception e) {
    		   e.printStackTrace(); throw new Exception();
    	   }
    	}
    }	

    com.test.entity >>> Goods

    package com.test.entity;
    
    public class Goods {
    	private int goodsID;//商品ID
    	private String name;//商品名称
    	private String typeName;//商品类别
    	private int stock;//库存
    
    	public Goods(int goodsID, String name, String typeName, int stock) {
    		super();
    		this.goodsID = goodsID;
    		this.name = name;
    		this.typeName = typeName;
    		this.stock = stock;
    	}
    
    	public Goods() {
    		super();
    	}
    
    	public int getGoodsID() {
    		return goodsID;
    	}
    
    	public void setGoodsID(int goodsID) {
    		this.goodsID = goodsID;
    	}
    
    	public String getName() {
    		return name;
    	}
    
    	public void setName(String name) {
    		this.name = name;
    	}
    
    	public String getTypeName() {
    		return typeName;
    	}
    
    	public void setTypeName(String typeName) {
    		this.typeName = typeName;
    	}
    
    	public int getStock() {
    		return stock;
    	}
    
    	public void setStock(int stock) {
    		this.stock = stock;
    	}
    	
    }
    

    com.test.controller >>> Updata

    package com.test.controller;
    
    import com.test.db.DbConnection;
    
    public class Updata {
    	//添加数据
    	public static int addData(String sql) {
    		
    		return DbConnection.updataInfo(sql);
    	}
    }
    

    com.test.controller >>> Select

    package com.test.controller;
    
    import java.sql.ResultSet;
    import java.sql.SQLException;
    import java.util.ArrayList;
    
    import com.test.db.DbConnection;
    import com.test.entity.Goods;
    
    public class Select {
    	public static Object[][] getGoods() {
    		String sql = "SELECT * FROM tgoods";
    		
    		ResultSet resultSet = DbConnection.query(sql);
    		ArrayList<Goods> list=new ArrayList<Goods>();
    		try {
    			while (resultSet.next()) {
    				Goods goods=new Goods();
    				goods.setGoodsID(resultSet.getInt(1));
    				goods.setName(resultSet.getString(2));
    				goods.setTypeName(resultSet.getString(3));
    				goods.setStock(resultSet.getInt(4));
    				list.add(goods);
    			}
    		} catch (SQLException e) {
    			e.printStackTrace();
    		}
    		Object[][] objects=new Object[list.size()][4];
    		for(int i=0;i<list.size();i++) {
    			objects[i][0]=list.get(i).getGoodsID();
    			objects[i][1]=list.get(i).getName();
    			objects[i][2]=list.get(i).getTypeName();
    			objects[i][3]=list.get(i).getStock();
    		}
    		return objects;
    	}
    	
    }
    

    com.test.View >>> IndexGUI

    package com.test.view;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JOptionPane;
    import javax.swing.JScrollPane;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    
    import com.test.controller.Select;
    import com.test.controller.Updata;
    import com.test.entity.Goods;
    
    public class IndexGUI extends JFrame {
    	
    	Object[] columnNames = {"商品编号","名称","类别名称","库存"};
    	Object[][] data = Select.getGoods();
    	DefaultTableModel df = new DefaultTableModel(data, columnNames);
    	
    	public IndexGUI() {
    		super("商品信息管理");
    		this.setBounds(0, 0, 780, 500);
    		this.setLocationRelativeTo(null);//让窗口在屏幕中间显示
    		this.setResizable(false);//让窗口大小不可改变
    		this.setLayout(null);
    		
    		JTable jTable=new JTable(df);
    		JScrollPane jp = new JScrollPane(jTable);
    		jp.setBounds(0, 10, 780, 350);
    		this.add(jp);
    		
    		JButton tj = new JButton("添加");
    		tj.setBounds(50, 400, 100, 30);
    		tj.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				IncreaseGUL i = new IncreaseGUL();
    				i.setVisible(true);
    			}
    		});
    		
    		JButton sc = new JButton("删除");
    		sc.setBounds(180, 400, 100, 30);
    		sc.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				if (jTable.getSelectedColumn()<0) {
    					JOptionPane.showMessageDialog(null, "请选中要删除的数据!");
    				} else {
    					int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
    					String sql="delete from tgoods where goodsid="+goodsID;
    					Updata updata = new Updata();
    					int result = updata.addData(sql);
    					if (result>0) {
    						JOptionPane.showMessageDialog(null, "删除成功!");
    						JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
    					} else {
    						JOptionPane.showMessageDialog(null, "删除失败!");
    					}
    				}
    			}
    		});
    		
    		JButton xg = new JButton("修改");
    		xg.setBounds(310, 400, 100, 30);
    		xg.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				if (jTable.getSelectedColumn()<0) {
    					JOptionPane.showMessageDialog(null, "请选择要修改的数据!");
    				} else {
    					int goodsID = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 0).toString());
    					String name = jTable.getValueAt(jTable.getSelectedRow(), 1).toString();
    					String typeName = jTable.getValueAt(jTable.getSelectedRow(), 2).toString();
    					int stock = Integer.parseInt(jTable.getValueAt(jTable.getSelectedRow(), 3).toString());
    					Goods goods = new Goods(goodsID,name,typeName,stock);
    					ModifyGUI modifyGUI = new ModifyGUI(goods);
    					modifyGUI.setVisible(true);
    				}
    				
    			}
    		});
    		
    		JButton sx = new JButton("刷新");
    		sx.setBounds(440, 400, 100, 30);
    		sx.addActionListener(new ActionListener() {
    			@Override
    			public void actionPerformed(ActionEvent e) {
    				Object[][] data = Select.getGoods();
    				df.setDataVector(data, columnNames);
    			}
    		});
    		
    		this.add(tj);
    		this.add(sc);
    		this.add(xg);
    		this.add(sx);
    	}
    	
    }
    

    com.test.View >>> IncreaseGUL

    package com.test.view;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    
    import com.test.controller.Updata;
    
    public class IncreaseGUL extends JFrame implements ActionListener {
    	JTextField name = new JTextField();
    	JTextField type = new JTextField();
    	JTextField num = new JTextField();
    	public IncreaseGUL() {
    		super.setTitle("添加商品");
    		this.setBounds(0, 0, 780, 250);
    		this.setLocationRelativeTo(null);
    		this.setResizable(false);
    		this.setLayout(null);
    		
    		JLabel nameT = new JLabel("名称");
    		nameT.setBounds(50, 30, 40, 25);
    		name.setBounds(100, 30, 145, 30);
    		
    		JLabel typeT = new JLabel("类别");
    		typeT.setBounds(280, 30, 40, 25);
    		type.setBounds(335, 30, 145, 30);
    		
    		JLabel numT = new JLabel("数量");
    		numT.setBounds(515, 30, 40, 25);
    		num.setBounds(575, 30, 145, 30);
    		
    		JButton tj = new JButton("添加");
    		tj.setBounds(100, 115, 100, 30);
    		tj.addActionListener(this);
    		
    		this.add(nameT);
    		this.add(name);
    		this.add(typeT);
    		this.add(type);
    		this.add(numT);
    		this.add(num);
    		this.add(tj);
    	}
    
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		String sql = null;
    		String addName = name.getText();
    		String addType = type.getText();
    		String addNum = num.getText();
    		if (addName.equals("")||addType.equals("")||addNum.equals("")) {
    			JOptionPane.showMessageDialog(null, "请完整输入要添加的数据");
    		} else {
    			sql="INSERT INTO tgoods VALUES("+"null,'"+addName+"','"+addType+"','"+addNum+"')";
    			int result = Updata.addData(sql);
    			if (result>0) {
    				JOptionPane.showMessageDialog(null, "添加成功!");
                    JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
    				dispose();
    				IndexGUI i = new IndexGUI();
    			} else {
    				JOptionPane.showMessageDialog(null, "添加失败!");
    			}
    		}
    	}
    }
    

    com.test.View >>> ModifyGUI

    package com.test.view;
    
    import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;
    import javax.swing.JButton;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JOptionPane;
    import javax.swing.JTextField;
    import com.test.controller.Updata;
    import com.test.entity.Goods;
    
    public class ModifyGUI extends JFrame implements ActionListener {
    	
    	JTextField name = new JTextField();
    	JTextField type = new JTextField();
    	JTextField num = new JTextField();
    	int id;
    	public ModifyGUI(Goods goods) {
    		super.setTitle("修改商品");
    		this.setBounds(0, 0, 780, 250);
    		this.setLocationRelativeTo(null);
    		this.setLayout(null);
    		
    		JLabel nameT = new JLabel("名称");
    		nameT.setBounds(50, 30, 40, 25);
    		name.setBounds(100, 30, 145, 30);
    		
    		JLabel typeT = new JLabel("类别");
    		typeT.setBounds(280, 30, 40, 25);
    		type.setBounds(335, 30, 145, 30);
    		
    		JLabel numT = new JLabel("库存");
    		numT.setBounds(515, 30, 40, 25);
    		num.setBounds(575, 30, 145, 30);
    		
    		JButton xg = new JButton("修改");
    		xg.setBounds(100, 115, 100, 30);
    		xg.addActionListener(this);
    		
    		this.add(nameT);
    		this.add(name);
    		this.add(typeT);
    		this.add(type);
    		this.add(numT);
    		this.add(num);
    		this.add(xg);
    		
    		name.setText(goods.getName());
    		type.setText(goods.getTypeName());
    		num.setText(Integer.toString(goods.getStock()));
    		id = goods.getGoodsID();
    	}
    	
    	@Override
    	public void actionPerformed(ActionEvent e) {
    		String sql = null;
    		String addName = name.getText();
    		String addType = type.getText();
    		int addNum = Integer.parseInt(num.getText());
    		if (addName.equals("")||addType.equals("")||addNum==0) {
    			JOptionPane.showMessageDialog(null, "请完整输入要修改的数据");
    		}else {
    			Updata up=new Updata();
    			
    			sql="UPDATE tgoods SET "+"name='"+addName+"',typeName='"+addType+"',stock='"+addNum+"'where goodsid="+id;
    			int result = Updata.addData(sql);
    			Updata.addData(sql);
    			if (result>0) {
    				JOptionPane.showMessageDialog(null, "修改成功!");
                    JOptionPane.showMessageDialog(null, "记得刷新一下哦!");
    				dispose();
    				IndexGUI i = new IndexGUI();
    				i.setVisible(true);
    			} else {
    				JOptionPane.showMessageDialog(null, "修改失败!");
    			}
    		}
    	}
    }
    

    com.test.Test >>> Test

    package com.test.Test;
    
    import com.test.view.IndexGUI;
    
    public class Test {
    	public static void main(String[] args) {
    		IndexGUI i = new IndexGUI();
    		i.setVisible(true);
    	}
    }
    

    展开全文
  • C语言课程设计——仓库物资管理系统

    千次阅读 多人点赞 2019-10-17 23:01:16
    仓库物资管理系统前言系统功能设计代码运行截图总结 前言 此系统为博主大一上学期C语言课程设计的大作业,由于当时初步接触C语言,现在来看程序写的太烂了,简直不忍直视……但是还是想通过博客的形式记录下来,也...

    前言

    此系统为博主大一上学期C语言课程设计的大作业,由于当时初步接触C语言,现在来看程序写的太烂了,简直不忍直视……但是还是想通过博客的形式记录下来,也可以给刚接触学习C语言的人一些参考吧!

    系统功能设计

    • 仓库初始化
    • 查询库存
      *按电器名查询
      *按品牌名查询
      *按送货人查询
      *按提货人查询
      *按电器名称由大到小顺序输出所有库存
      *按库存数量由高到低输出所有库存
    • 物资存入
    • 物资取出
    • 统计物资
      *入库电器总价值
      *出库电器总利润
      *统计某月每种电器的出库数目
      *统计某月每种品牌的电器的出库数目

    代码

    #include<stdio.h>
    #include<stdlib.h>
    #include<string.h>
    //------------------------------------------------------结构体区域
    typedef struct
    {
    	char name[20];             //电器名称
    	char brandName[20];	       //品牌名称
    	int num;                   //库存数量
    	int unitPrice;             //单价
    	int year;
    	int month;
    	int day;
    	char manName[20];
    }stock;	                                 //库存
    stock s[10000],t[10000],x[10000],y[10000],in[10000],out[10000],no[10000],no1[10000],no2[10000];                //全局变量
    //-------------------------------------------------------函数声明区域
    void menu(void);//主菜单函数
    void write(void);//创建仓库函数
    void find(void);//查询库存函数
    void findPart(void);//部分查询函数
    void findOne(void);    //按电器名查询
    void findTwo(void);    //按品牌名查询
    void findThree(void);  //按提货人查询
    void findFour(void);   //按送货人查询
    void findFive(void);   //按电器名称大小顺序输出所有库存
    void findSix(void);    //按库存数量由高到低输出所有库存
    void deposit(void);//存入仓库函数
    void takeout(void);//取出仓库函数
    void tongji(void);//统计函数
    void tongji1(void);//第一种统计函数
    void tongji2(void);//第二种统计函数
    void tongji3(void);//第三种统计函数
    void tongji4(void);//第四种统计函数
    int readFile(void);//读取库存记录文件中所有结构体的数目
    int readFile1(void);//读取入库记录文件中所有结构体的数目
    int readFile2(void);//读取出库记录文件中所有结构体的数目
    void end(void);//结束退出函数
    //-------------------------------------------------------主函数
    int main()
    {
    	menu();
    	return 0;
    }
    void menu(void)
    {
    	int n,l=0;
    	printf("============================================================\n");
    	printf("                                                            \n");
    	printf(" -----*****欢 迎 使 用 仓 库 物 资 管 理 系 统 ! *****----- \n");
    	printf("                                                            \n");
    	printf("============================================================\n");
    	printf("                                                            \n");
    	printf(" 您可以进行以下操作:                                       \n");
    	printf("                                                            \n");
    	printf("         1.    仓库初始化                                   \n");
    	printf("                                                            \n");
    	printf("         2.    查询库存                                     \n");
    	printf("                                                            \n");
    	printf("         3.    物资存入                                     \n");
    	printf("                                                            \n");
    	printf("         4.    物资取出                                     \n");
    	printf("                                                            \n");
    	printf("         5.    统计物资                                     \n");
    	printf("                                                            \n");
    	printf("         0.    退出系统                                     \n");
    	printf("                                                            \n");
    	printf("                                                            \n");
    	printf("============================================================\n");
    	printf("现在请选择您要进行的操作:(请输入操作前的数字)");
    	while(scanf("%d",&n)!=EOF)
        {
            switch(n)
    		{
    			case 1:system("CLS");write();break;
    			case 2:system("CLS");find();break;
    			case 3:system("CLS");deposit();break;
    			case 4:system("CLS");takeout();break;
    			case 5:system("CLS");tongji();break;
    			case 0:system("CLS");end();exit(0);
    			default :printf("没有此选项!\n  请重新输入!\n");
            }
        }
    
    
    
    
    
    
    
    }
    void write(void)        //right
    {
    	FILE *fp;
    	int i,n;
    	fp=fopen("库存记录.dat","wb");
    	rewind(fp);
    	printf("============================================================\n");
    	printf("请输入仓库中电器信息的组数!\n        ps:相同电器但是不同品牌电器算多种!\n");
    	scanf("%d",&n);
    	for(i=0;i<n;i++)
    	{
    		printf("开始写入第%d组\n",i+1);
    		printf("请输入电器名称:");
    		scanf("%s",s[i].name);
    		printf("请输入电器品牌名称:");
    		scanf("%s",s[i].brandName);
    		printf("请输入电器数量:");
    		scanf("%d",&s[i].num);
    		printf("请输入电器单价:");
    		scanf("%d",&s[i].unitPrice);
    		printf("请输入存货时间: <年月日之间用空格隔开>例:2016 12 01\n");
    		scanf("%d%d%d",&s[i].year,&s[i].month,&s[i].day);
    		printf("请输入存货人:");
    		scanf("%s",s[i].manName);
    	}
    	fwrite(s,sizeof(stock),n,fp);
    	fclose(fp);
    	printf("当前库存记录:(请仔细核对)\n");
    	for(i=0;i<n;i++)
        {
          printf("%s\n%s\n%d\n%d\n%d.%d.%d\n%s\n",s[i].name,s[i].brandName,s[i].num,s[i].unitPrice,s[i].year,s[i].month,s[i].day,s[i].manName);
        }
    
    	printf("电器信息写入完成!\n  请按回车键返回主界面!\n");
    	getchar();getchar();
    	system("CLS");
    	menu();
    }
    void findOne(void)
    {
    	char name[10],ch='y';
    	int i,k,n,bn;
    	bn=readFile();
    	do
    	{
    		system("CLS");
    		printf("============================================================\n");
    		printf("请输入要查询的电器名称:\n");
    		getchar();
    		gets(name);
    		k=-1;
    		for(i=0;i<bn;i++)
    		{
    			if(strcmp(t[i].name,name)==0)
    			{
    				printf("该电器信息如下:\n");
    				k=i;
    				printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%s\n",t[k].name,t[k].brandName,t[k].num,t[k].unitPrice,t[k].year,t[k].month,t[k].day,t[k].manName);
    			}
    		}
    		if(k==-1)
    		{
    			printf("抱歉,本仓库中无此电器!\n");
    		}
    		printf("\n是否继续查询?<y/n>\n");
    		ch=getchar();
    	}while(ch=='y'||ch=='Y');
    	printf("将返回上一级菜单!\n  请按回车键确认!\n");
    	getchar();getchar();
    	system("CLS");
    	findPart();
    }
    void findTwo(void)
    {
    	char brandName[10],ch='y';
    	int i,k,n,bn;
    	bn=readFile();
    	do
    	{
    		system("CLS");
    		printf("============================================================\n");
    		printf("请输入要查询的品牌名称:\n");
    		getchar();
    		gets(brandName);
    		k=-1;
    		for(i=0;i<bn;i++)
    		{
    			if(strcmp(t[i].brandName,brandName)==0)
    			{
    				printf("该电器信息如下:\n");
    				k=i;
    				printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%s\n",t[k].name,t[k].brandName,t[k].num,t[k].unitPrice,t[k].year,t[k].month,t[k].day,t[k].manName);
    			}
    		}
    		if(k==-1)
    		{
    			printf("抱歉,本仓库中无此电器!\n");
    
    		}
    		printf("\n是否继续查询?<y/n>\n");
    		ch=getchar();
    	}while(ch=='y'||ch=='Y');
    	printf("将返回上一级菜单!\n  请按回车键确认!\n");
    	getchar();getchar();
    	system("CLS");
    	findPart();
    }
    void findThree(void)           // 按送货人查询  入库
    {
    	char manName[10],ch='y';
    	int i,k,n,bn1;
    	bn1=readFile1();
    	FILE *fp1;
    	fp1=fopen("入库记录.dat","rb+");
    	if(fp1==NULL)
    	{
    		printf("该仓库中未添加任何电器!\n");
    		exit(0);
    	}
    	fread(&y,sizeof(stock),bn1,fp1);
    	fclose(fp1);
    	do
    	{
    		system("CLS");
    		printf("============================================================\n");
    		printf("请输入要查询的存货人:\n");
    		getchar();
    		gets(manName);
    		k=-1;
    		for(i=0;i<bn1;i++)
    		{
    			if(strcmp(y[i].manName,manName)==0)
    			{
    				printf("该电器信息如下:\n");
    				k=i;
    				printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%s\n",y[k].name,y[k].brandName,y[k].num,y[k].unitPrice,y[k].year,y[k].month,y[k].day,y[k].manName);
    			}
    		}
    		if(k==-1)
    		{
    			printf("抱歉,本仓库中无此存货人存入的电器!\n");
    
    		}
    		printf("\n是否继续查询?<y/n>\n");
    		ch=getchar();
    	}while(ch=='y'||ch=='Y');
    	printf("将返回上一级菜单!\n  请按回车键确认!\n");
    	getchar();getchar();
    	system("CLS");
    	findPart();
    }
    void findFour(void)          //按提货人查询   出库
    {
    	char manName[10],ch='y';
    	int i,k,n,bn2;
    	bn2=readFile2();
    	FILE *fp2;
    	fp2=fopen("出库记录.dat","rb+");
    	if(fp2==NULL)
    	{
    		printf("该仓库中未提出任何电器!\n");
    		exit(0);
    	}
    	fread(&x,sizeof(stock),bn2,fp2);
    	fclose(fp2);
    	do
    	{
    		system("CLS");
    		printf("============================================================\n");
    		printf("请输入要查询的提货人:\n");
    		getchar();
    		gets(manName);
    		k=-1;
    		for(i=0;i<bn2;i++)
    		{
    			if(strcmp(x[i].manName,manName)==0)
    			{
    				printf("该电器信息如下:\n");
    				k=i;
    				printf("电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,出库时间:%d.%d.%d,提货人:%s\n",x[k].name,x[k].brandName,x[k].num,x[k].unitPrice,x[k].year,x[k].month,x[k].day,x[k].manName);
    			}
    		}
    		if(k==-1)
    		{
    			printf("抱歉,本仓库中无此提货人提出的电器!\n");
    
    		}
    		printf("\n是否继续查询?<y/n>\n");
    		ch=getchar();
    	}while(ch=='y'||ch=='Y');
    	printf("将返回上一级菜单!\n  请按回车键确认!\n");
    	getchar();getchar();
    	system("CLS");
    	findPart();
    
    
    }
    void findFive(void)       //电器名称大小顺序输出所有库存
    {
    	int bn;
    	bn=readFile();
    	printf("============================================================\n");
    	FILE *fp;
    	fp=fopen("库存记录.dat","rb+");
    	if(fp==NULL)
    	{
    		printf("该仓库中无库存!\n");
    		exit(0);
    	}
    	fread(&s,sizeof(stock),bn,fp);
    	int i,j;
    	for(i=0;i<bn-1;i++)
    		for(j=0;j<bn-1-i;j++)
    		{
    			if(s[j].name<s[j+1].name)
    			{
    				t[1]=s[j+1];
    				s[j+1]=s[j];
    				s[j]=t[1];
    			}
    		}
    	for(i=0;i<bn;i++)
    		printf("%d.  电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%s\n",i+1,s[i].name,s[i].brandName,s[i].num,s[i].unitPrice,s[i].year,s[i].month,s[i].day,s[i].manName);
    	printf("\n输出完成!请按回车键返回上一级!\n");
    	getchar();getchar();
    	system("CLS");
    	findPart();
    }
    void findSix(void)        //按库存数量由高到低输出所有库存
    {
    	int bn;
    	bn=readFile();
    	printf("============================================================\n");
    	FILE *fp;
    	fp=fopen("库存记录.dat","rb+");
    	if(fp==NULL)
    	{
    		printf("该仓库中无库存!\n");
    		exit(0);
    	}
    	fread(&s,sizeof(stock),bn,fp);
    	int i,j;
    	for(i=0;i<bn-1;i++)
    		for(j=0;j<bn-1-i;j++)
    		{
    			if(s[j].num<s[j+1].num)
    			{
    				t[1]=s[j+1];
    				s[j+1]=s[j];
    				s[j]=t[1];
    			}
    		}
    	for(i=0;i<bn;i++)
    		printf("%d.  电器名称:%s,电器品牌:%s,库存数量:%d,电器单价:%d,入库时间:%d.%d.%d,存货人:%s\n",i+1,s[i].name,s[i].brandName,s[i].num,s[i].unitPrice,s[i].year,s[i].month,s[i].day,s[i].manName);
    	printf("\n输出完成!请按回车键返回上一级!\n");
    	getchar();getchar();
    	system("CLS");
    	findPart();
    }
    void findPart(void)
    {
    	int n;
    	printf("============================================================\n");
    	printf("1. 按电器名查询\n");
    	printf("2. 按品牌名查询\n");
    	printf("3. 按送货人查询\n");
    	printf("4. 按提货人查询\n");
    	printf("5. 按电器名称由大到小顺序输出所有库存\n");
    	printf("6. 按库存数量由高到低输出所有库存\n");
    	printf("0. 返回主菜单\n");
    	while(scanf("%d",&n)!=EOF)
    	switch(n)
    	{
    		case 1:system("CLS");findOne();break;
    		case 2:system("CLS");findTwo();break;
    		case 3:system("CLS");findThree();break;
    		case 4:system("CLS");findFour();break;
    		case 5:system("CLS");findFive();break;
    		case 6:system("CLS");findSix();break;
    		case 0:system("CLS");menu();break;
    		default :printf("没有此选项!\n  请重新输入!\n");
    	}
    }
    void find(void)
    {
    	int i,bn;
    	FILE *fp;
    	fp=fopen("库存记录.dat","rb+");
    	if(fp==NULL)
    	{
    		printf("该仓库中无库存!\n");
    		exit(0);
    	}
    	rewind(fp);
    	bn=readFile();
    	fread(&t,sizeof(stock),bn,fp);
    	getchar();
    	findPart();
    	fclose(fp);
    }
    void deposit(void)   //入库
    {
    	printf("============================================================\n");
    	int bn,bn1;
    	stock jia;
    	FILE *fp1,*fp;
    	int i=0,j,n=0;
    	char ch='y';
    
    	printf("请输入要加入仓库的电器信息:\n");
    	do
    	{
    		fp1=fopen("入库记录.dat","ab+");
    		if(fp1==NULL)
    		{
    			printf("该仓库中未添加任何电器!\n");
    			exit(0);
    		}
    		fp=fopen("库存记录.dat","ab+");
    		bn=readFile();
    		bn1=readFile1();
    		printf("请输入电器名称:");
    		scanf("%s",jia.name);
    		printf("请输入电器品牌:");
    		scanf("%s",jia.brandName);
    		printf("请输入电器数量:");
    		scanf("%d",&jia.num);
    		printf("请输入电器单价:");
    		scanf("%d",&jia.unitPrice);
    		printf("请输入送货时间: <ps: 年月日之间用空格隔开>  例:2016 12 01\n");
    		scanf("%d%d%d",&jia.year,&jia.month,&jia.day);
    		printf("请输入送货人:");
    		scanf("%s",jia.manName);
    		fwrite(&jia,sizeof(stock),1,fp1);
    		fwrite(&jia,sizeof(stock),1,fp);
    		fclose(fp1);fclose(fp);
    		printf("是否继续输入?<y/n>\n");
    		getchar();
    		ch=getchar();
    	}while(ch=='y'||ch=='Y');
    	printf("将返回上一级菜单!\n  请按回车键确认!\n");
    	getchar();
    
    	system("CLS");
    	menu();
    }
    void takeout(void)     //出库
    {
    	stock jian;
    	printf("==============================================================\n");
    	int bn,bn2,i,j;
    	char ch='y';
    	FILE *fp,*fp2;
    	bn=readFile();
    	bn2=readFile2();
    
    	printf("请输入要提出仓库的电器信息:\n");
    	do
    	{
    		fp=fopen("库存记录.dat","rb+");
    		if(fp==NULL)
    		{
    			printf("无法打开此文件!\n");
    			exit(0);
    		}
    		for(i=0;i<bn;i++)
    		{
    			fread(&s[i],sizeof(stock),1,fp);
    		}
    		fclose(fp);
    		fp2=fopen("出库记录.dat","wb+");
    		if(fp2==NULL)
    		{
    			printf("无法打开此文件!\n");
    			exit(0);
    		}
    		printf("请输入电器名称:");
    		scanf("%s",jian.name);
    		printf("请输入电器品牌:");
    		scanf("%s",jian.brandName);
    		printf("请输入电器数量:");
    		scanf("%d",&jian.num);
    		printf("请输入电器单价:");
    		scanf("%d",&jian.unitPrice);
    		printf("请输入提货时间: <ps: 年月日之间用空格隔开>  例:2016 12 01\n");
    		scanf("%d%d%d",&jian.year,&jian.month,&jian.day);
    		printf("请输入提货人:");
    		scanf("%s",jian.manName);
    		getchar();
    		fwrite(&jian,sizeof(stock),1,fp2);
    		fclose(fp2);
    		for(i=0;i<bn;i++)
    		{
    			if((strcmp(jian.name,s[i].name)==0)&&(strcmp(jian.brandName,s[i].brandName)==0))
    			{
    				if(jian.num<=s[i].num)
    				{
    					s[i].num=s[i].num-jian.num;
    				}
    				else
    				{
    					printf("库存不足!无法提出!\n");
    					printf("请按回车键返回!");
    					getchar();
    					system("CLS");
    					menu();
    				}
    			}
    		}
    		fopen("库存记录.dat","wb+");
    		for(i=0;i<bn;i++)
    		{
    			fwrite(&s[i],sizeof(stock),1,fp);
    		}
    		fclose(fp);
    
    		printf("\n出库完成! 是否继续输入?<y/n>\n");
    		getchar();
    		ch=getchar();
    	}while(ch=='y'||ch=='Y');
    	printf("将返回上一级菜单!\n  请按回车键确认!\n");
    	getchar();
    
    	system("CLS");
    	menu();
    
    }
    void tongji(void)
    {
    	int n;
    	system("CLS");
    	printf("==============================================================\n");
    	printf("1. 入库电器总价值\n");
    	printf("2. 出库电器总利润\n");
    	printf("3.统计该月每种电器的出库数目\n");
    	printf("4.统计该月每种品牌的电器的出库数目\n");
    	printf("0. 返回主菜单\n");
    	printf("请选择要进行的操作:(0到4)\n");
    	scanf("%d",&n);
    	getchar();
    	while(n!=0&&n!=1&&n!=2&&n!=3&&n!=4)
    	{
    
    		printf("没有此选项!\n  请重新输入!\n");
    		scanf("%d",&n);
            getchar();
       }
       switch(n)
    		{
    			case 1:tongji3();break;//第三种统计函数
    			case 2:tongji4();break;//第四种统计函数
    			case 3:tongji1();break;//第一种统计函数
    			case 4:tongji2();break;//第二种统计函数
    			case 0:system("CLS");menu();break;
    		}
    }
    void tongji2(void)//第二种统计函数
    {
         FILE *fp;
        int bn1,i,year,month,k=0;
        bn1=readFile1();
        system("CLS");
        printf("==============================================================\n");
    	fp=fopen("出库记录.dat","rb+");
    	if(fp==NULL)
    	{
    		printf("无法打开此文件!\n");
    		exit(0);
    	}
    	for(i=0;i<bn1;i++)
    	{
    		fread(&s,sizeof(stock),bn1,fp);
    	}
        printf("请输入一个日期(年 月 如 2017 01):\n");
    	scanf("%d%d",&year,&month);
    
            for(i=0;i<bn1;i++)
           {
               if((s[i].year==year)&&(s[i].month==month))
               {
                   printf("电器名称:%s\n品牌名称:%s\n出库数目:%d\n",s[i].name,s[i].brandName,s[i].num);
                   k+=1;
               }
           }
               if(k==0)
                printf("库存记录中不存在此种电器!\n");
    
    
        fclose(fp);
        printf("统计完成,请按回车键返回!\n");
    	getchar();
    	getchar();
    	system("CLS");
    	tongji();
    
    }
    void tongji1(void)//第一种统计函数
    {
        FILE *fp;
        int bn1,i,year,month,k=0;
        bn1=readFile1();
        system("CLS");
        printf("==============================================================\n");
    	fp=fopen("出库记录.dat","rb+");
    	if(fp==NULL)
    	{
    		printf("无法打开此文件!\n");
    		exit(0);
    	}
    	for(i=0;i<bn1;i++)
    	{
    		fread(&s,sizeof(stock),bn1,fp);
    	}
        printf("请输入一个日期(年 月 如 2017 01 ):\n");
    	scanf("%d%d",&year,&month);
    
           for(i=0;i<bn1;i++)
           {
               if((s[i].year==year)&&(s[i].month==month))
               {
                   printf("电器名称:%s\n出库数目:%d\n",s[i].name,s[i].num);
                   k+=1;
               }
           }
               if(k==0)
                printf("库存记录中不存在此种电器!\n");
    
    
    
        fclose(fp);
        printf("统计完成,请按回车键返回!\n");
    	getchar();
    	getchar();
    	system("CLS");
    	tongji();
    
    
    }
    void tongji3(void)//第三种统计函数
    {
    	FILE *fp;
    	int bn1,i;
    	long long int total=0;
    	bn1=readFile1();
    	system("CLS");
    	printf("==============================================================\n");
    	fp=fopen("入库记录.dat","rb+");
    	if(fp==NULL)
    	{
    		printf("无法打开此文件!\n");
    		exit(0);
    	}
    	for(i=0;i<bn1;i++)
    	{
    		fread(&s[i],sizeof(stock),1,fp);
    	}
    	fclose(fp);
    	for(i=0;i<bn1;i++)
    	{
    		total+=(s[i].num*s[i].unitPrice);
    	}
    	printf("商品总价值为%d\n",total);
    	printf("统计完成,请按回车键返回!\n");
    	getchar();
    	system("CLS");
    	tongji();
    }
    void tongji4(void)//第四种统计函数
    {
    
    	FILE *fp1,*fp2;
    	int bn,bn2,i;
    	long long int money=0;
    	bn=readFile();
    	bn2=readFile2();
    	system("CLS");
    	printf("==============================================================\n");
    	fp1=fopen("库存记录.dat","rb+");
    
    	if(fp1==NULL)
    	{
    		printf("无法打开此文件!\n");
    		exit(0);
    	}
    	for(i=0;i<bn;i++)
    	{
    		fread(&s[i],sizeof(stock),1,fp1);
    	}
    	fclose(fp1);
    	fp2=fopen("出库记录.dat","rb+");
    	if(fp2==NULL)
    	{
    		printf("无法打开此文件!\n");
    		exit(0);
    	}
    	for(i=0;i<bn2;i++)
    	{
    		fread(&t[i],sizeof(stock),1,fp2);
    	}
    	fclose(fp2);
    
    	for(i=0;i<bn2;i++)
    	{
    		money+=((t[i].unitPrice-s[i].unitPrice)*t[i].num);
    	}
    	printf("总利润为%d\n",money);
    	printf("统计完成,请按回车键返回!\n");
    	getchar();
    	system("CLS");
    	tongji();
    }
    void end(void)
    {
    	printf("==============================================================\n");
    	printf("                                                              \n");
    	printf("                                                              \n");
    	printf("                                                              \n");
    	printf("            感 谢 使 用 本 系 统 !                           \n");
    	printf("                                                              \n");
    	printf("             再 见 !                                         \n");
    	printf("                                                              \n");
    	printf("                                                              \n");
    	printf("                                                              \n");
    	printf("                                                              \n");
    	printf("==============================================================\n");
    }
    int readFile(void)//库存记录文件中结构体的个数
    {
    	FILE *fb;
    	int bn=0;
    	fb=fopen("库存记录.dat","rb+");
    	if(fb==NULL)
    	{
    		return bn;
    	}
    	while(!feof(fb))
    	{
    		if(fread(&no[bn],sizeof(stock),1,fb))
    			bn++;
    	}
    	fclose(fb);
    	return bn;
    }
    int readFile1(void)//入库记录文件中结构体的个数
    {
    	FILE *fb;
    	int bn1=0;
    	fb=fopen("入库记录.dat","rb+");
    	if(fb==NULL)
    	{
    		return bn1;
    	}
    	while(!feof(fb))
    	{
    		if(fread(&no1[bn1],sizeof(stock),1,fb))
    			bn1++;
    	}
    	fclose(fb);
    	return bn1;
    }
    int readFile2(void)//出库记录文件中结构体的个数
    {
    	FILE *fb;
    	int bn2=0;
    	fb=fopen("出库记录.dat","rb+");
    	if(fb==NULL)
    	{
    		return bn2;
    	}
    	while(!feof(fb))
    	{
    		if(fread(&no2[bn2],sizeof(stock),1,fb))
    			bn2++;
    	}
    	fclose(fb);
    	return bn2;
    }
    
    

    运行截图

    主菜单

    总结

    两年前写的程序了,大体运行了一下,存在一点小bug,还有一些设计不合理的地方以及没有解决非法输入的问题……

    展开全文
  • 基于Web的仓库管理系统设计与实现

    万次阅读 多人点赞 2019-07-02 20:27:48
    摘 要 仓库物品的管理是与我们的日常生活息息相关的一个重大问题。随着我国经济飞速的发展,改革开放的不断深入,企业要想在...在此篇文章中严格按照软件工程思想,设计并实现了一个仓库信息管理系统。介绍了系统从...
  • 基于 java springboot+layui仓库管理系统设计和实现

    万次阅读 多人点赞 2021-03-26 17:48:27
    java springboot+layui仓库管理系统(数据库+源码)实现了仓库后台信息管理、客户、供应商、商品管理、商品进货、退货管理以及一些系统管理设置
  • 大家好,今天给大家演示一下由Java swing实现的一款简单的仓库商品管理系统,数据库采用的是mysql,本系统实现了两个角色层面的功能,管理员可以管理用户、仓库、商品信息等。普通用户登录后可以查看商品、仓库信息...
  • (一)进货信息 (二)出库信息 (三)综合查询 说明:以下都是个人的想法若是有异议欢迎发邮件提议 747932852@qq.com 正文 一、 软件的运行配置 本软件适用于局域网内多用户操作。  存储是以MYSQL为存储
  • C语言-超市仓库管理系统设计与实现 第一个博客~ 超市仓库管理系统设计与实现 问题描述:实现一个小型仓库管理系统,完成商品的入库,出库,查询等功能。 物品信息说明:物品代码,物品名称,物品总量,商品价格...
  • java 仓库管理系统源码

    万次阅读 多人点赞 2020-02-03 21:57:13
    系统操作权限管理。系统提供基本的登入登出功能,同时系统包含两个角色:系统超级管理员和普通管理员,超级管理员具有最高... 基础数据信息管理。对包括:货物信息、供应商信息、客户信息、仓库信息在内的基础数据信...
  • 仓库管理系统设计

    千次阅读 多人点赞 2011-01-29 16:26:00
    网上购物已成潮流,在这种情况下,物流仓储等行业的发展也在以一种惊人的速度发展,要想保证仓库出入货物与账目的一致性,必须出现一种专门的、特定意义、特殊功用的管理系统出现,即仓库管理系统,在网上调查的过程...
  • 仓库管理系统(附设计要求)

    千次阅读 2013-01-20 16:01:52
    使用链表实现一个仓库管理系统仓库商品的属性包括(商品编号,商品名称,商品数量),借助计算机来完成如下功能: (1)入库:可以录入商品信息,包括:商品编号,商品名称,商品数量,商品价格; (2)出库:可以...
  • WMS仓库管理系统---(1)总体设计

    万次阅读 多人点赞 2015-01-14 11:46:59
    WMS仓库管理系统主要包括供应商管理,品牌管理,分类管理,采购管理,采购入库,采购上架,订单打印,订单拣货,订单打包,订单发货, 商品盘点,商品报损,返厂,商品调拨,基础信息,报表查询等模块
  • 随着计算机的发展,生活中仅仅依靠人工管理商场里面大量的的商品会浪费大部分的人力物力,还会造成较高的人工失误,所以有必要开发一个商场库存管理系统来很大程度上减少失误和不必要的浪费。实现信息数字化管理,...
  • 基于WEB的仓库管理系统主要用于实现仓库的出入库管理,基本功能包括:入库模块、出库模块、商品查看模块、用户注册模块、个人信息管理模块等。本系统结构如下: 入库模块:入库新商品,或者是入库已有商品。 出库...
  • 数据结构/C++课程设计 仓库管理系统 一个管理仓库内货物的信息仓库管理程序。 仓库中货物信息的组成部分为:货物编号、货物名称、货物单价、货物数量等。 一、功能模块结构图: 二、项目介绍 1.文件与结构体与类...
  • 题目要求设计与实现包括人事管理、财务管理、原材料采购与库存管理、产品销售管理等功能的中小微企业信息管理系统,支持各类人员相关信息的增、删、改、查。 管理员具有用户建立、权限分配、基础信息维护等功能权限...
  • WMS仓库管理系统---(6)商品管理模块

    千次阅读 2015-02-03 18:48:32
    商品是所有系统中的核心,电子商务网站,ERP系统都是围绕着商品展开的,商品是一切信息的基础,这一节我们看下商品管理模块有哪些功能以及和商品有关的属性。 商品的主要功能包括添加,修改,查询,和商品关联的属性...
  • PHP+MySQL仓库管理系统设计与实现是一个集合了中小型超市所有特点的一个管理系统, 它使用当下最流行的PHP语言来进行开发,实现了管理员登录,员工登录,超市内物资基本信息管理,进货信息管理,销售信息管理,...
  • 基于servlet的仓库管理系统

    千次阅读 2019-09-01 18:53:14
    仓库管理系统是一个基于Servlet的管理系统,主要包括登录管理,进退货管理,领退料管理,仓库管理,商品调拨和操作记录查询等模块,通过管理系统,可以实现管理员和用户不同的权限,便捷的对仓库中的货物进行增删改...
  • 本系统——仓库管理系统是根据超市的特点集进、销、存于一体,结合现今流行的网络技术,应用PHP与MySQL数据库想结合的方式,为超市量身定做的销售管理软件。在设计过程中最大限度满足用户的要求,因此,该系统具有较...
  • WMS仓库管理系统---(5)商品属性模块

    千次阅读 2015-01-29 19:09:30
    我们平常浏览电子商务购物的时候,会发现商品有不同的属性,比如衣服有颜色,尺码,手机有材质,型号,颜色等属性,这些都是商品的基本属性,...商品的属性可以与商品的类别挂钩,这一节我们看下属性模块的设计与开发。
  • C语言课程设计仓库管理系统

    千次阅读 2020-03-14 18:33:59
    puts("\t\t 欢迎来到仓库货物管理系统 "); puts("\t\t***********************菜单**********************\n"); puts("\t\t* 1.货物入库 *\n"); puts("\t\t* 2.显示货物信息 *\n"); puts("\t\t* 3.查询货物信息 *\n...
  • 智沃邦条码出入库管理系统,将普通的商品进行重新编码,并自动生成的一维码或者二维码,通过扫描器进行扫描操作,实现商品的出入库业务。本系统由西安智沃邦信息科技有限公司开发。 一、系统简介: 1、本系统可以...
  • 在此篇文章中严格按照软件工程思想,设计并实现了一个仓库信息管理系统。介绍了系统从需求分析,逻辑设计,总体设计,详细设计以及系统测试、实施各阶段的主要内容和成果,包括系统结构图、业务流程图数据流

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,059
精华内容 6,023
关键字:

仓库商品信息管理系统设计