数据结构课程设计产品进销存管理系统

如题所述

第1个回答  2011-12-14
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#include <fstream>
using namespace std;

//结构体
struct commodity
{
int num;//商品号
char kind[10];//产品的种类
char name[10];//产品的名称
int count;//产品的总量
char date[15];//进货日期
int sale;//销出数量
char saledate[15];//销售时间
} cod[50],codtemp[50],dod[50];//产品名称cod,产品种类dod

//定义函数
void inputnum();
void inputkind();
void inputname();
void sort();
int count(int n);
void binarysearch();

int choice;

int main(int argc, char *argv[])
{
cout<<"\t\t\t欢迎进入产品进销存管理系统"<<endl;
do{
cout<<"\t1.产品入库"<<endl;
cout<<"\t2.查找产品"<<endl;
cout<<"\t3.退出系统"<<endl;

cin>>choice;
switch(choice) {
case 1:cout<<"\t1.产品类的添加"<<endl;
cout<<"\t2.产品的添加"<<endl;
cout<<"\t3.数量的添加"<<endl;
cin>>choice;
switch(choice){
case 1:inputkind();break;
case 2:inputname();break;
case 3:inputnum();break;
default:cout<<"错误!";break;
}break;

case 2:binarysearch();break;
case 3:exit(0); break;
default:cout<<"错误!"<<endl;
break;
}
} while(1);
system("PAUSE");
return 0;
}

//计算文件中结构体个数
int count(int n)
{
FILE *fp;
int i;
if((fp=fopen("产品","r"))==NULL)
{
cout<<"打不开文件!"<<endl;
exit(0);
}
for(i=0;fread(&cod[i],sizeof(struct commodity),1,fp);i++) //读文件
{
}
return i;
}

//产品种类的添加
void inputkind()
{
FILE *fp1,*fp2;
int i,size,size1,j;
if((fp1=fopen("产品种类","a"))==NULL)
{ //追加
cout<<"打不开文件!"<<endl;
exit(0);
}
cout<<"请输入新入库产品种类的个数:";
cin>>size;
for(i=0;i<size;i++)
{//在产品种类文件中添加
cout<<"请输入第"<<i+1<<"个产品种类的资料"<<endl;

cout<<"产品的种类:";
cin>>dod[i].kind;
cout<<"请输入该产品种类中产品的个数:";
cin>>size1;
if((fp2=fopen("产品","a"))==NULL)
{ //追加
cout<<"打不开文件!"<<endl;
exit(0);
}
for(j=0;j<size1;j++)
{//在产品文件中添加
cout<<"请再次输入种类:";
cin>>cod[j].kind;

cout<<"请输入产品号:";
cin>>cod[j].num;

cout<<"产品的名称:";
cin>>cod[j].name;

cout<<"产品的数量:";
cin>>cod[j].count;

cout<<"产品的进货日期:";
cin>>cod[j].date;

cout<<"销出数量:";
cin>>cod[j].sale;

cout<<"销售时间:";
cin>>cod[j].saledate;
}
fwrite(&cod[i],sizeof(struct commodity),1,fp2);
}
fwrite(&dod[i],10,1,fp1); //把数据写入文件

fclose(fp1);
fclose(fp2);//关闭
}

//产品的添加
void inputname()
{
FILE *fp;
int i,size;
if((fp=fopen("产品","a"))==NULL)
{ //追加
cout<<"打不开文件!"<<endl;
exit(0);
}
cout<<"请输入新入库产品的个数:";
cin>>size;
for(i=0;i<size;i++) {
{
cout<<"请输入第"<<i+1<<"个产品的资料"<<endl;

cout<<"所属产品的种类:";
cin>>cod[i].kind; //

cout<<"请输入产品号:";
cin>>cod[i].num;

cout<<"产品的名称:";
cin>>cod[i].name;

cout<<"产品的数量:";
cin>>cod[i].count;

cout<<"产品的进货日期:";
cin>>cod[i].date;

cout<<"销出数量:";
cin>>cod[i].sale;

cout<<"销售时间:";
cin>>cod[i].saledate;

}
fwrite(&cod[i],sizeof(struct commodity),1,fp); //把数据写入文件
}
fclose(fp); //关闭
}

//数量的添加
void inputnum()
{
FILE *fp;
int i,size,j;
int k=count(1);
char str[10];//记录增加数量的产品名称
sort();
if((fp=fopen("产品","rb"))==NULL)
{ //追加
cout<<"打不开文件!"<<endl;
exit(0);
}

cout<<"请输入增加数量的产品名称:";
cin>>str;
cout<<"请输入数量:";
cin>>size;
for(i=0;fread(&cod[i],sizeof(struct commodity),1,fp);i++)
{
if(strcmp(str,cod[i].name)==0)
{

cod[i].count=cod[i].count+size;

{ //重写
fp=fopen("产品","wb");
for(j=0;j<k;j++)
fwrite(&cod[j],sizeof(struct commodity),1,fp);
fclose(fp);
}
break;
}

}

fclose(fp); //关闭
cout<<"添加成功!"<<endl;
}

//商品排序
void sort() //排序函数
{
int i,j,n,last,w;
int templist[30];
struct commodity temp;
FILE *fp;
if((fp=fopen("产品","rb"))==NULL)
{
cout<<"打不开文件!"<<endl;
exit(0);
}
int k=count(1);

for(i=0;i<k;i++)
{
fread(&cod[i],sizeof(struct commodity),1,fp);
templist[i]=cod[i].num;

}
i--;
while(i>0) //冒泡排序
{
last=0;
for(n=0;n<i;n++)
{
if(templist[n+1]<templist[n])
{
w=templist[n];templist[n]=templist[n+1];templist[n+1]=w;
last=n;
}
}
i=last;
}

for(i=0;i<k;i++)
for(j=0;j<k;j++)
{
fseek(fp,j*sizeof(struct commodity),0);
fread(&cod[j],sizeof(struct commodity),1,fp);
if(templist[i]==cod[j].num) //比较数组中i的值是否与结构体中商品号相等
codtemp[i]=cod[j]; //将文件中存储的结构体数据暂存在临时结构体中

}

fclose(fp);

{ //重写
FILE *fp;
fp=fopen("产品","wb");
for(i=0;i<k;i++)
fwrite(&codtemp[i],sizeof(struct commodity),1,fp);
fclose(fp);
}
}

// 查找商品
void binarysearch()
{
int low=0,high,k,mid=0,m,seek;
char str[10];
k=count(1);
high=k-1;
sort(); //调用
cout<<"请选择查找方式:"<<endl;
cout<<"1.产品号查找"<<endl;
cout<<"2.产品名查找"<<endl;
cin>>seek;
switch(seek)
{ case 1:
{
cout<<"请输入产品号:";
cin>>m;
while(low<=high) //折半查找
{
mid=(low+high)/2;
if(m==cod[mid].num)
{
FILE *fp;
if((fp=fopen("commodity","r"))==NULL)
{
cout<<"打不开文件."<<endl;
exit(0);
}
fseek(fp,mid*sizeof(struct commodity),0);
fread(&cod[mid],sizeof(struct commodity),1,fp);
fclose(fp);
//
cout<<"所属产品类:";
cout<<cod[mid].kind<<endl;
cout<<"产品号:";
cout<<cod[mid].num<<endl;
cout<<"产品名称:";
cout<<cod[mid].name<<endl;
cout<<"产品总量:"<<cod[mid].count<<endl;
cout<<"进货日期:"<<cod[mid].date<<endl;
cout<<"销出数量:"<<cod[mid].sale<<endl;
cout<<"销售日期:"<<cod[mid].saledate<<endl;

break;
}
else if(m<cod[mid].num)
high=mid-1;
else low=mid+1;
}

if(low!=high)
cout<<"不存在该商品!"<<endl;

break;
}
case 2:
{ FILE *fp;
fp=fopen("产品","r");
cout<<"请输入产品名:"<<endl;
cin>>str;
for(int i=0;fread(&cod[i],sizeof(struct commodity),1,fp);i++)
{
if(strcmp(str,cod[i].name)==0) //是否匹配
{
cout<<"所属产品类:";
cout<<cod[i].kind<<endl;
cout<<"产品号:";
cout<<cod[i].num<<endl;
cout<<"产品名称:";
cout<<cod[i].name<<endl;
cout<<"产品总量:"<<cod[i].count<<endl;
cout<<"进货日期:"<<cod[i].date<<endl;
cout<<"销出数量:"<<cod[i].sale<<endl;
cout<<"销售日期:"<<cod[i].saledate<<endl;
break;
}
}

fclose(fp);
break;
}

default :
cout<<"系统关闭!"<<endl;
break;
}
}

参考资料:百度文库

本回答被网友采纳

数据结构:产品进销存管理系统的源代码
p->totalquantity=p->totalquantity+n;printf("查看添加后产品的各项输出:%s %d%d,%d %d %d,%d,%d\\n",p-pname,p->totalquantity,(p->goodsdate).year,(p->goodsdate).month,(p->goods).day,p->salequanlity,(p->salestime).year,(p->salestime).month,(p->salestime).day);} } ...

数据结构:产品进销存管理系统的源代码(c语言或c++的)
printf("此产品不存在:\\n")else { printf("输出带查询产品的各项信息:\\n");printf("%s %s %d %d,%d,%d %d %d,%d,%d\\n",(L.kindelem[i]).pkindname,p->pname,p->totalquantity,(p->goodsdate).year,(p->goodsdate).month,(p->goodsdate).day,p->salequantity,(p->salestime)...

数据结构课程设计产品进销存管理系统
if(templist[i]==cod[j].num) \/\/比较数组中i的值是否与结构体中商品号相等 codtemp[i]=cod[j]; \/\/将文件中存储的结构体数据暂存在临时结构体中 } fclose(fp); { \/\/重写 FILE *fp; fp=fopen("产品","wb"); for(i=0;i<k;i++) fwrite(&codtemp[i],sizeof(struct commodity),1,fp); fc...

开发企业进销存管理系统时 有哪些步骤
2、对软件系统进行概要设计,即系统设计。概要设计需要对软件系统的设计进行考虑,包括系统的基本处理流程、系统的组织结构、模块划分、功能分配、接口设计、运行设计、数据结构设计和出错处理设计等,为软件的详细设计提供基础。3、详细设计。在概要设计的基础上,开发者需要进行软件系统的详细设计。在详细设计...

程序设计: 药店进销存管理系统
才子进销存,软件功能完善,操作简单。楼下可以去试下 >> 进销存:采购,库存,销售、POS零售;>> 分支机构管理(仅多分支机构版包括该功能);>> 库存管理:采购入库,销售出库,货品的调拨,库存盘点;>> 往来单位管理:客户资料,供应商资料、单位类型、地区资料;>> 应收应付管理:销售收款,采购...

sheet1为产品目录,sheet2为某一产品对应的产品进销存记录,求能在sheet1...
你的数据结构应该是这样的:商品信息表,其中要记录名称,生产日期,过期日期;批次 商品销售表,其中要记录销售了什么商品,这个商品的批次 库存表:库里都还有什么东西,都是哪些批次,有了批次即有了过期日期信息,与当前系统日期一对比,就知道是否过期了....

用vb做一个进销存软件,除了vb和Access,还要用到别的软件吗、
真正的进销存软件要到行业中熟悉业务流程的,行业不同,进销存的处理会有差别,一般的话,进货管理->库存管理->销售管理,另外还要根据公司企业的特点进行定制,鼓励你去些公司实习下

大学生电子商务学什么?
本课程在介绍网络金融有关概念、结构和功能的基础上,系统地阐述了电子支付、网络银行、网络证券、在线保险和网络金融创新等内容,论述了网络金融相关的技术基础,并对网络金融的安全机制和风险管理进行了分析和阐述。 14.电子商务系统设计(64学时) 本课程在讲了电子商务系统设计的基本概念、基本技术、基本原理的前提下,...

关于学习编程的问题。
学习些数据结构,算法吧,计算机的核心课程。不过说实话LZ能自己开发出一套系统,你的功底真的是很强了

Java 的应用程序开发过程
第一步 建立对象模型 比如你选择(1)商品进销存管理系统 那么先抽象出所有的对象 ①商品代码管理 ②供应商管理 ③客户管理 ④进货 ⑤出库 ⑥查询与报表 可以抽象出 1、商品 2、供应商 3、客户 4、仓库单 5、系统管理员 基本上这5个也就够了,毕竟只是toy程序 然后分配属性 商品 商品ID 商品名 ...

相似回答