【CCpp程序设计2017】简单进销存

题目:简单进销存

功能要求:

  1. 实现如下的菜单(按数字选择菜单功能): 1. 显示存货列表 2. 入库 3. 出库 4. 退出程序
  2. 实现菜单对应功能(需记录货物的型号、数量等信息);
  3. 程序启动时从文件中读取当前库存数据,退出时保存库存数据;
#include<stdio.h>
#include<string.h>
#include<conio.h>
#include<windows.h>

typedef struct GOOD{
	char *name;
	int num;
}GOOD;

typedef struct Node{
	GOOD good;
	struct Node *pre,*next;
}Node;

Node *head,*tail;

void NewNode();

int main(){
	char name_of_good[101];
	int num_of_good;
	printf("///////////////\n");
	printf("??ê?è??àó|êy×?£?2¢°′????3μ?üà′??è??ú??òaμ?1|?ü£?\n");
	printf("1.??ê?′???áD±í\n");
	printf("2.è??a\n");
	printf("3.3??a\n");
	printf("4.í?3?3ìDò\n");
	printf("//////////////\n");
	int op;
	FILE *fp=fopen("WAREHOUSE.txt","r");
	while(fscanf(fp,"%s%d",name_of_good,&num_of_good)!=EOF){
		NewNode();
		int len=strlen(name_of_good);
		(*tail).good.name=(char*)malloc(sizeof(char)*(len+1));
		strcpy((*tail).good.name,name_of_good);
		(*tail).good.num=num_of_good;
	}
	fclose(fp);
	while(1){
		scanf("%d",&op);
		if(op==1){
			for(Node* p=head;p!=NULL;p=(*p).next){
				printf("%s %d\n",(*p).good.name,(*p).good.num);
			}
		}
		else if(op==2){
			printf("è??a,??ê?è?:??????3? ????êyá?\n");
			scanf("%s%d",name_of_good,&num_of_good);
			int isFind=0;
			for(Node* p=head;p!=NULL;p=(*p).next){
				if(strcmp((*p).good.name,name_of_good)==0){
					(*p).good.num+=num_of_good;
					isFind=1;
					break;
				}
			}
			if(!isFind){
				NewNode();
				int len=strlen(name_of_good);
				(*tail).good.name=(char*)malloc(sizeof(char)*(len+1));
				strcpy((*tail).good.name,name_of_good);
				(*tail).good.num=num_of_good;
			}
		}
		else if(op==3){
			printf("3??a,??ê?è?:??????3? ????êyá?\n");
			scanf("%s%d",name_of_good,&num_of_good);
			for(Node* p=head;p!=NULL;p=(*p).next){
				if(strcmp((*p).good.name,name_of_good)==0){
					(*p).good.num-=num_of_good;
					if(!(*p).good.num){
						if((*p).pre!=NULL){
							(*((*p).pre)).next=(*p).next;
						}
						if((*p).next!=NULL){
							(*((*p).next)).pre=(*p).pre;
						}
						if(p==head){
							head=(*p).next;
						}
						if(p==tail){
							tail=(*p).pre;
						}
						free(p);
					}
					break;
				}
			}
		}
		else{
			break;
		}
	}
	fp=fopen("WAREHOUSE.txt","w");
	for(Node* p=head;p!=NULL;p=(*p).next){
		fprintf(fp,"%s %d\n",(*p).good.name,(*p).good.num);
	}
	fclose(fp);
	return 0;
}

void NewNode(){
	Node* Pretail=tail;
	if(tail==NULL){
		head=tail=(Node*)malloc(sizeof(Node));
	}
	else{
		(*tail).next=(Node*)malloc(sizeof(Node));
		tail=(*tail).next;
	}
	if(Pretail!=NULL){
		(*Pretail).next=tail;
	}
	(*tail).pre=Pretail;
	(*tail).next=NULL;
}
时间: 2024-10-18 03:47:21

【CCpp程序设计2017】简单进销存的相关文章

【.NET实战教程】北风网基于ASP.NET多层架构下的企业级进销存软件全程培训

.Net进销存系统详细课程大纲(开发工具采用VS2008+sqlsever2005) [小编提醒:现在学习的话,可以使用vs2012+sql 2008 学习的是思路,教学环境不一定要一模一样]1.项目概况及项目开发流程: 课程目标: ·了解项目相关各类情况,对项目开发及本项目有个总体认识  主要内容:   ·介绍客户及本项目基本情况,使学员对本项目情况有个总体了解 ·概述一般的进销存系统通用的功能及用途,使学员对进销存系统有个总体概念 ·介绍项目开发与管理流程.项目组成员分工等公司实际开发与管理

转: 进销存流程

进销存流程,简单的说是:采购流程管理.销售流程管理.库存流程管理·. 中文名 进销存流程 流程一 采购流程管理 流程二 销售流程管理 流程三 库存流程管理 进销存软件 金蝶.用友等 主    体 企业 销售流程:编辑 接到订单后,首先跟办公室领导回报,确认接单,联系生产部门,安排生产,您这说的供应部是您产品原料的供应,如果是这样那应该在生产之前联系,待生产完毕,货入库,跟库房沟通具体数量,再就是客户打款.安排发货了. 库存流程:编辑 1.汇总当月入库情况. 2.汇总当月出库情况. 3.按出入库单

某企业进销存管理系统

队长:朱立荣 队员:李春晓.李筱乐.于志芳.黄培菲 1.编写项目计划书 1.1引言 1.1编写目的 为了保证项目开发人员按时保质地完成预定目标,更好地了解项目实际情况,按照合理的顺序开展工作,现以书面的形式将项目开发生命周期中的项目任务范围.项目团队组织结构.团队成员的工作责任.团队内外沟通协作方式.开发进度.检查项目工作等内容描述出来,作为项目相关人员之间的共识和约定以及项目生命周期内的所有项目活动的行动基础. 1.2背景 企业进销存管理系统是由×××有限公司委托我公司开发的管理系统,主要功能

开源进销存PSI - 为什么又要用Java重写一个版本?

看这篇文章之前,最好先看看这个: http://my.oschina.net/u/134395/blog/382447 1.PSI 目前是用PHP写的,但是我决定还要再弄个Java版本! 2.原因之一: Just for fun !  (向 Linus Torvalds 致敬!) 3.如果只是简单地把PHP代码翻译成Java代码,那么这个 fun就不够爽,所以呢:Java版有其独特的规划. 概要地讲,PSI Java版的目标是:集团版的进销存系统. PHP版本的PSI,目前还只能给单店使用,遇到

【小竹韶IT】 第三回 小微企业进销存财务管理利器

(本内容仅代表作者独家观点,与任何组织和个人无关.) 国内的小微企业有很多.甚至还有很多连小微企业还算不上的企业,他们都需要记账啊.有了商品的交易,进销存和财务的管理是绕不过去的. 现在有很多类似于挖财这样的个人理财的APP应用,看似不错,手机就能使用,很方便.但用过的人会知道,这类软件的定位是为你家庭理财的.也就是说,大差不差能能够达到的,但是说要一分一厘很精准,这个是有点难度的.为什么,很简单.这里缺少了详细的明确的明细科目.这样的话,只要一笔一笔的记录,总额是不会少的.但是每个分项就会变得

进销存 库存

进销存 库存 在信息化的今天并不陌生! 进货-->验收 -->进销存-->库存 盘点-->损益-->进销存-->库存 配送-->出库-->进销存-->库存 调拨-->转移-->进销存-->库存 不同的管理角色,不同的角色动作,牵动的都是整个的进销存(库存). 在管理型程序设计过程中.进销存主处理逻辑,应该独为一体.只要涉及到与库存增减有关的操作,同一调公共经销处处理逻辑来处理. 这样既保证了逻辑的一致,也能保证最终库存结果的准确.

企业如何选择专业的进销存软件?

随着我国进销存软件行业的迅速发展,市场上涌现出了众多进销存管理软件,这就导致广大企业的管理者在选择进销存软件的时候,面临了不少难题:进销存软件怎么选择呢?什么是最专业的进销存软件?把这些弄明白了,找准货真价实的进销存软件就不成问题. 首先我们要了解进销存软件的针对性.按我们平常的理解就是专门给管理企业进销存工作的软件.的确如此,进销存管理工作就是进销存软件的针对性工作,很多企业的管理者在选择的时候,由于受到推销者的诱导,以至于在选择软件的时候忽略了重点,比如,本来是想好好管理进销存呢,却选择了一

手机进销存系统

花了将近两个月的时间学习了一个企业级进销存项目,已经结束了两周多,现在终于有时间来对这个项目的学习做个总结了! 一.首先介绍下这个项目 (注:本人目前大三,专业为信息管理,与编程沾边不多.而我对编程很感兴趣,从大一下期开始主要通过看书和视频自学学习java编程!). 项目名称:手机进销存系统(Mobile SCM) 主要开发技术:Struts2+Spring+ibatis+jQuery 数据库:MySql5.1(Navicat客户端管理工具) 服务器:tomcat7.0 建模工具:ER/Stud

如何在进销存软件中实现来电弹屏

日常生活中我们在使用进销存之类的管理软件时,越来越多的用户希望能在使用软件的同时如果有客户来电,可以在电脑上显示出来电客户的信息资料,这样可以更加方便对客户的业务管理.那么如何实现这一功能呢?本文就来讲述一下在进销存中实现来电弹屏的功能. 来电通来电弹屏软件支持对接第三方管理软件,比如对接了进销存管理软件,当某个客户来电时,不仅会显示该客户的来电信息,还会显示到该客户最近的业务记录,从而更方便的了解客户信息,提高业务效率. 由于各个公司发展规模的扩大,相应的业务流量也越来越多,作为公司职员每天要