当前位置:首页 » 编程语言 » c语言商品库存管理

c语言商品库存管理

发布时间: 2023-01-14 14:09:40

‘壹’ 数据结构:产品进销存管理系统的源代码(c语言或c++的)

&(p->salesquantity),&(p->salestime).year),&((p->salestime).month),&((p->salestime).day)); p->nextproct=q->nextproct;
q->nextproct=p;
q=p
}
}
return ok;
}//ProctInsert
void ProQuantity_add(sqmountlink&L,char pkindname 1[],char pname 1[],int n)
{//添加顺序表挂接链表的某产品的总量,且需添加的产品总量为n
int i,k;
plinklist p;
for(i=0;i<L.length;i++)
{
if(strcmp(L.kindelem[i]).pkindname,pkindname 1)!=0)
continue;
else
break;
}
if(i<L.length)
{
for(p=L.kindelem[i].firstproct;p!=NULL;p=p->nextproct)
{
k=strcnp(p->pname.pname);
if(k==0)
{
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);
}
}
}
}//ProQuantity_add
void Visit(sqmountlink&L,char pkindname3[],char pname3[])
{//在顺序表挂接链表L中,查询属于某产品类的某产品的各项信息
int i,k;
plinklist p;
for(i=0;i<L.length;i++)
{
if(strcmp((L.kindelem[i]),pkindname.pkindname3)!=0)
continue
else
break;
}
if(i<L.length)
{
for(p=L.kindelem[i].firstprodicy;p!=NULL;p=p->nextprocy)
{
k=strcmp(p->pname.pname3);
if(k==0)
break;
}
if(k!=0)
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).year,(p->salestime).month,(p->salestime).day);
}
}
}//Visit
void DisplayList(sqmountlink&L)
{//显示各产品所属产品类,产品名称、产品总量,进货日期,销出数量,销售时间
int i;
plinklist p;
printf("产品类 产品 进货日期 销出数量 销售时间\n")
for(i=0;i<L.length;i++)
{
if(!(L.kindelem[i],firstproct))
printf("%s\n",(L.kindelem[i]).pkindname);
for(p=L.kindelem[i].firstproct;p;p=p->nextproct)
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->salesquantity,(p->salestime).year,(p->salestime).month,(p->salestime).day);
}
}//DisplayList
void DestoryMountList(sqmountlink&L)
{//销毁已存在的顺序表挂接链表L
int i;
kindlnode *p;
for(i=L.length;i>=0;
{
p=&(L.kindelem[i]);
if(*p).firstproct==NULL)
free(p);
else
{
while((*p).firstproct;q->nextproct;q=q->nextproct);
free(q);
}
free(q);
}
}
}//DestroyMountList
void menu_operation()
{//操作菜单
printf("----输入所要执行操作:-------\n")
printf("----产品类的添加:1------\n");
printf("----产品的添加:2-----\n");
printf("----产品数量的添加:3-----\n");
printf("----查询每种产品所属产品类,产品总量,进货日期,销出数量,销售时间:4-----------\n")
printf("----释放L所占内存空间,退出程序:0-----\n");
}//menu_operation
/*--------------主程序-------------*/
void main(void)
{
int order,
int i,n;
char a[30];
char b[30];
sqmountlink L;
InitMountList(L);
printf("-----创建初始的产品类、产品顺序表挂接链表L-----\n");
CreatMuntList(L);
DisplayList(L);
printf("-----初始的产品类、产品顺序表挂接链表L创建完成-----\n");
menu_operation();
loop:
printf("输入命令:");
scanf("%d",&order);
switch(order)
{
case 1:
printf("需添加产品类的个数:");
scanf("%d",&i);
kindinsert(L,i);
printf("输出修改后的产品库存管理表:\n");
DisplayList(L);
goto loop;
case 2:
printf("需添加产品所属产品类的名称:")
scanf("%s",&a);
printf("需向此产品类添加产品的个数:");
scanf("%d",&i);
ProctInsert(L,a,i);
printf("输出修改后的产品库存管理表:\n");
DisplayList(L);
goto loop;
case 3:
printf("输入需添加数量的产品所属产品类的名称:");
scanf("%s",&a);
printf("输入需添加数量的产品的名称:");
scanf("%d",&n);
ProQuantity_add(L,a,b,n);
printf("输出修改后的产品库存管理表:\n");
DisplayList(L);
goto loop ;
case 4:
printf("输入待查询产品所属产品类的名称:");
scanf("%s",&b);
printf("输入待查询产品的名称:");
scanf(%s",&b);
Visit(L<a,b);
goto loop;
case ():
DestroyMountList(L);
exit(0);
}
}

‘贰’ C语言课程设计,商品库存管理系统怎么做啊

  1. 首先要创建数据库啊,也就是一个txt文件,要让里面有内容啊。其次是你的增加删除商品种类,修改指定商品的数目之类的,具体看老师的要求。

  2. 例程(基本框架,具体的操作需进一步开发):

    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<memory.h>
    intcount=0;
    structcommodity
    {
    intid;/*商品编号*/
    intnumber;/*库存数量*/
    intprice;/*单价*/
    charname[20];/*商品名称*/
    charindate[9];/*入库时间*/
    chardeadline[9];/*有效日期*/
    }a[100];
    voidpage_title(char*menu_item)
    {
    printf("【商品库存管理系统】 ",menu_item);
    }
    voidreturn_confirm(void)
    {
    printf(" 按任意键返回…… ");
    getch();
    }
    voidinsert(void)/*1插入*/
    {
    }
    intsearch(void)/*2商品信息的查询*/
    {
    }
    voiddel(void)/*3删除*/
    {
    }
    voidsort()/*4排序*/
    {
    }
    intmodify(void)/*5修改*/
    {
    }
    intmain(void)
    {menu:page_title("操作选单");
    printf(" 1信息查询 2全部商品 ");
    printf(" 3商品增加 4商品删除 ");
    printf(" 5信息修改 0退出程序 ");
    switch(getch())
    {
    case'1':search();break;
    case'2':sort();break;
    case'3':insert();break;
    case'4':del();break;
    case'5':modify();break;
    case'0':exit(0);
    }
    gotomenu;
    return0;
    }

‘叁’ c语言 商品管理系统

#include"stdio.h"
#include <conio.h>
#include <stdlib.h>
//#include"FILE.h"
typedef struct shangpin
{
char name[20];
int biaohao;
int shuliang;
double jiage;
}Node;
typedef struct list
{
Node data;
struct list *next;
}List ,*Slist;
void charu(Slist &s,Node x);

int caidan()
{
int i;
while(1)
{
system("cls");
printf("\n\t\t\t 商店销售管理系统\n\n");
printf("\t\t **********************************************\n\n");
printf("\t\t 1--添加商品 2--出售商品\n\n");
printf("\t\t 3--删除商品 4--显示商品\n\n");
printf("\t\t 5--查找商品 0--退出系统\n\n");
printf("\t\t **********************************************\n\n");
printf("请选择(0-5): ");
scanf("%d",&i);
if(i<6&&i>=0)break;
}
return i;
}

void chushihua(Slist &s)
{
Slist head=new List;
head->next=NULL;
s=head;
}
void tianjia(Slist &s)
{
Node x;
Slist r,p,q;
int i=0;
r=new List;
r->next=NULL;
q=p=s->next;
while(q)
{
i++;
q=q->next;
}
printf("请输入商品名称、数量以及价格: ");
scanf("%s%d%lf",x.name,&x.shuliang,&x.jiage);
x.biaohao=i+1;
r->data=x;
s->next=r;
r->next=p;
}
void chu(Slist &s)
{
FILE *cp;//定义文件指针
int i=0;
Node x;

if((cp=fopen("shangpin.txt","a+"))==NULL)//打开文件
{printf("文件打开失败!");return ;}
fseek(cp,0L,SEEK_SET);//将文件指针移动到文件开头
while(!feof(cp))
{
fscanf(cp,"%s%d%lf",x.name,&x.shuliang,&x.jiage);//读取文件的内容
x.biaohao=++i;
charu(s,x);//把读到的数据插入到链表上
}
fclose(cp);//关闭文件
}
void charu(Slist &s,Node x)
{
Slist r,p=s->next;
r=new List;
r->next=NULL;
r->data=x;
s->next=r;
r->next=p;
}
void xieru(Slist s)
{
FILE *cp;//同上
Slist p=s->next;
if((cp=fopen("shangpin.txt","w+"))==NULL)
{printf("文件打开失败!");return ;}//同上
while(p)
{
fprintf(cp,"%s %d %.2lf ",p->data.name,p->data.shuliang,p->data.jiage);//写入文件中,并且以空格隔开
p=p->next;
}
fclose(cp);//关闭文件
}
Slist chazhao(Slist s,int m)
{
Slist p=s->next;
if(p==0)return 0;
if(p->next==0)return p;
if(p->data.biaohao==m)return p;
while(p->next)
{
if(p->next->data.biaohao==m)return p;
p=p->next;
}
return 0;
}
void xianshi(Slist s)
{
Slist p;
p=s->next;
printf("%10s%20s%10s%10s\n","商品编号","商品名称","商品数量","商品价格");
while(p)
{
printf("%10d%20s%10d%10.2f\n",p->data.biaohao,p->data.name,p->data.shuliang,p->data.jiage);
p=p->next;
}

}
void shanchu(Slist &s)
{

}
void chushou(Slist &s)
{

}
void main()
{
int num;
Slist s;
chushihua(s);
chu(s);
num=caidan();
while(1)
{

switch(num)
{
case 0:exit(0);break;
case 1:tianjia(s);break;
case 2:chushou(s);break;
case 3:shanchu(s);break;
case 4:xianshi(s);break;
case 5:chazhao(s,1);break;
}
printf("按任意键继续!");
getch();
num=caidan();
}
xieru(s);
}

//有些函数我在没写啊,你自己写写吧,文件的读取和写入,还有链表的创建我都给你写好了,也就是上面的1,4我都写好了,
//包括了文件,剩下的2,3,5,你自己试试,并且我也给你写了一个查找函数,你看看能用不!

‘肆’ c语言设计商品信息管理系统

如果你不是为了学习用途,直接用蓝点产品管理系统好了,这些需求基本直接就实现了的。

‘伍’ 用C语言程序编写一个超市商品管理系统设计

有偿帮你写

‘陆’ c语言程序设计 用链表编写商品库存管理。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct node{
char no[20];//存放编号
char name[40];//存放名称
int reserve;//库存
struct node *next;
}NODE;

typedef struct link{
NODE *front;//头指针
NODE *rear;//尾指针
}LINK;

NODE *create_node(void){
NODE *node = (NODE *)malloc(sizeof(NODE));
printf("请输入货物编号:");
gets(node->no);
printf("请输入货物名称:");
gets(node->name);
printf("请输入货物名称:");
char ch;
while( (ch= getchar()) != '\n');//rewind(stdin);
scanf("%d",&node->reserve);
node->next = NULL;
return node;
}

void init_link(LINK *link){
link->rear = NULL;
link->front = NULL;
}

int link_empty(LINK *link){
return link->front == NULL ? 1: 0;
}

int node_num(LINK *link){
int num = 0;
if( link_empty(link)){
return num;
}
num = 1;
NODE *node = link->front;
while(node != link->rear){
node = node->next;
++num;
}
return num;
}

/*NODE *node_find(LINK *link,const int n){
int num = node_num(link);
if(num < n){
printf("公有节点%d个,无法找到第%d个节点\n",num,n);

}
else{

}
}
*/
void node_push(LINK *link){
NODE *node = create_node();
if(link->front == NULL){
link->front = node;
link->rear = node;
node->next = NULL;
}
else{
link->rear->next = node;
link->rear = node;
node->next = NULL;
}
}

void node_insert(LINK *link,const int n){
int num = 0,i = 1;
NODE *node = link->front;
NODE *new_node = NULL;
if ( link_empty(link) ){
printf("链表为空,将建立链表!\n");
node_push(link);
}
else{
if( n <= 1){
printf("在链表头插入数据\n");
new_node = create_node();
new_node->next = link->front;
link->front = new_node;
}
else if( n>= num = node_num(link) ){
printf("节点数少于%d,将在末尾插入节点.\n",n);
node_push(link);
}
else{
printf("在第n个节点后插入数据\n");
if(num >= n){
while( i != n){
node = node->next;
++i;
}
new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
}
}

void find_node_insert(LIKNK *link,const char *name){
NODE *node = link->front;
if( link_empty(link) )
node_push(link);
else {
while(strcmp(node->name,name) != 0){
if(node != link->rear)
node = node->next;
else break;

}
if(node != NULL){

NODE *new_node = create_node();
new_node-next = node->next;
node->next = new_node;
}
else {
printf("没有找到相关货物,将在头节点插入数据\n");
intsert(link,0);
}
}

/*由于我不知到你对货物统计具体实现的要求,关于货物数量统计就你自己写了,应该比较简单。*/
/* 代码没有具体运行过,如果你学过C结构体与指针,就这个代码思路应该看得明白,真正的实现你自己实现吧
这样对你会更好写。可能会有错误的地方,请谨慎。 */

‘柒’ 商品库存管理系统的c语言源代码

#include <stdio.h>
#include <stdlib.h>
#include <conio.h>

struct BOOK
{
int id,usr[10],total,store,days[10];
char name[31],author[21];
}books[100];
/*上面是结构体的定义,用于存放书籍及借书的信息。*/

void page_title(char *menu_item)
{
clrscr();
printf(">>> 图 书 管 理 系 统 <<<\n\n- %s -\n\n",menu_item);
}
/*上面是打印页眉的函数,同时通过参数menu_item,可以显示当前的状态。*/

void return_confirm(void)
{
printf("\n按任意键返回……\n");
getch();
}
/*上面是返回前请求确认的函数,以便在返回前观察结果*/

int search_book(void)
{
int n,i;
printf("请输入图书序号:");
scanf("%d",&i);
for(n=0;n<100;n++)
{
if(books[n].id==i)
{
printf("书名:%s\n",books[n].name);
printf("作者:%s\n",books[n].author);
printf("存数:%d of ",books[n].store);
printf("%d\n",books[n].total);
return n;
}
}
printf("\n输入错误或无效图书序号.\n");
return -1;
}
/*上面的函数是在数组中找到图书号匹配的记录,显示其信息并返
回数组下标,如果找不到相应记录则提示错误并返回-1。*/

void book_out(void)
{
int n,s,l,d;
page_title("借阅图书");
if((n=search_book())!=-1&&books[n].store>0)
{
printf("请输入借书证序号:");
scanf("%d",&s);
printf("请输入可借天数:");
scanf("%d",&d);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==0)
{
books[n].usr[l]=s;
books[n].days[l]=d;
break;
}
}
books[n].store--;
}
if(n!=-1&&books[n].store==0) printf("此书已经全部借出.\n");
return_confirm();
}
/*上面是借书的函数,首先调用找书函数*/

void book_in(void)
{
int n,s,l;
page_title("归还图书");
if((n=search_book())!=-1&&books[n].store<books[n].total)
{
printf("借阅者图书证列表:\n");
for(l=0;l<10;l++)
if (books[n].usr[l]!=0)
printf("[%d] - %d天\n",books[n].usr[l],books[n].days[l]);
printf("请输入借书证序号:");
scanf("%d",&s);
for(l=0;l<10;l++)
{
if(books[n].usr[l]==s)
{
books[n].usr[l]=0;
books[n].days[l]=0;
break;
}
}
books[n].store++;
}
if(n!=-1&&books[n].store==books[n].total)
printf("全部入藏.\n");
return_confirm();
}

void book_add(void)
{
int n;
page_title("注册新书");
for(n=0;n<100;n++)
if(books[n].id==0) break;
printf("序号:");
scanf("%d",&books[n].id);

‘捌’ C语言写一个仓库管理系统

#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>#define max 32int ifempty=0;//标志,判断链表是无否为空typedef struct dnode /* 定义双向链表结构体 */ {int number; /* 货物编号 */char name[max]; /* 货物名称 */ int counter; /* 货物数量 */struct dnode *prior, *next;/* 定义两指针,分别指向其前驱和后继 */}dlnode; dlnode *create(dlnode *L);dlnode *input(dlnode *L);dlnode *output(dlnode *L);dlnode * outnum(dlnode *L);dlnode * outname(dlnode *L);dlnode *current(dlnode *L);void search(dlnode *L);void print(dlnode *L);void searchnum(dlnode *L);void searchname(dlnode *L);void display(dlnode *L) ;void main(){int x;dlnode *L;if(!(L=(dlnode *)malloc(sizeof(dlnode)))) //分配空间{printf("\n");exit(1);}create(L);///调用函数,创建头节点while(1){////////////////////////主菜单///////////////////////////printf(" ============================\n");printf(" 1. 货物出库和入库\n");printf(" 2. 查找货物表\n"); printf(" 3. 显示仓库货物表\n");printf(" 4. 输出到文件\n");printf(" 0. 退出\n");printf(" =============================\n");printf(" 选择0--3:");scanf("%d",&x);switch(x){case 2:search(L);break;//调用查找函数case 1:current(L);break;//调用入库出库函数case 3:display(L);break;//调用显示输出函数case 4:print(L);break;//调用打印函数case 0:printf("\n bye!see you!\n");getchar();getchar();exit(0);//退出程序default:printf("\n Enter erreor!please input 0--4!"); getchar();getchar();}}}dlnode *create(dlnode *L)//创建链表头节点{printf(" 欢迎使用我的仓库管理系统");getchar(); ifempty=0;///////初始化头节点的值////////L->next=NULL;L->prior=NULL;L->number=L->counter=0;strcpy(L->name," "); return L;}void search(dlnode *L) ///查找的主要菜单{int y;if(ifempty==0){printf("没有输入货物!\n");getchar();getchar();return;}else{while(1){printf("=====================\n");printf("1.按编号查询\n");printf("2.按货物名称查询\n");printf("0.返回上一层\n");printf("====================\n");printf("选择0--2:");scanf("%d",&y);switch(y){case 1:searchnum(L);break;//调用按编号查找的函数case 2:searchname(L);break;//调用按名称查找的函数case 0:return;//返回default:printf("enter error!Please input 0--2!\n\n");getchar();getchar();printf("\n\n");}}}}void searchnum(dlnode *L)///按编号查找的函数{int num,flag=0;//flag为是否找到的标志dlnode *head=L;if(ifempty==0){printf("没有货物被输入\n");getchar();getchar();return;}printf("输入你要查找的货物编号:\n");scanf("%d",&num);while((L=L->next)!=head){if(L->number==num){ flag=1;//flag为1时表示找到printf("找到指定编号货物 \n"); printf("\n编号:%d\n",L->number);printf("名称:%s\n",L->name) ;printf("数量:%d\n\n",L->counter); } }if(flag==0)//flag为0时表示没有找到printf("没有找到指定编号货物,请查看是否还有货物。\n");getchar();getchar();}void searchname(dlnode *L)//按名称查找的函数{int flag=0;//flag为是否找到的标志char na[32];dlnode *head=L;if(ifempty==0){printf("没有货物被输入\n");getchar();getchar();return;}printf("输入你要查找的货物名称\n");scanf("%s",&na);while((L=L->next)!=head){if(strcmp(L->name,na)==0){ flag=1;//flag为1时表示找到printf("找到指定名称货物 \n"); printf("\n编号:%d\n",L->number);printf("名称:%s\n",L->name) ;printf("数量:%d\n\n",L->counter); } }if(flag==0)//flag为0时表示没有找到printf("没有找到指定编号货物,请查看是否还有货物。\n\n");getchar();getchar();}dlnode *current(dlnode *L)//货物出库入库函数{int y;while(1){printf("========================\n");printf(" 1.货物入库\n");printf(" 2.货物出库\n");printf(" 0.返回上一层\n");printf("========================\n");printf(" 选择0--2:");scanf("%d",&y);switch(y){case 1:input(L);break;//调用入库函数case 2:output(L);break;//调用出库函数case 0:return(L);//返回上一层default:printf("enter error!Please input 0--2!");getchar();getchar();printf("\n\n");}}}dlnode *input(dlnode *L)//定义入库函数{dlnode *in,*head;head=in=(dlnode *)malloc(sizeof(dlnode));//分配空间head=L;printf("\n请输入货物数据:\n");printf("编号:");scanf("%d",&in->number);printf("名称:");scanf("%s",&in->name);printf("数量:");scanf("%d",&in->counter);if(L->next==NULL) //如果只有头节点,{ //把刚输入的in节点L->next=in; //跟在头节点后面L->prior=in; //in->next=L; //in->prior=L; //ifempty++; //ifempty加1}else{//如果当前L的下一个节点不是头节点while((L=L->next)!=head){//如果输入的数大于L->number,则插到L的前面if(L->number<in->number){in->next=L;in->prior=L->prior; L->prior->next=in;L->prior=in;ifempty++; //ifempty加1return(head);} }//输入的编号比其它编号都小,则插到最后个节点,并首尾相连head->prior->next=in;in->prior=head->prior;head->prior=in;in->next=head;ifempty++; //ifempty加1} return head;}dlnode *output(dlnode *L)//出库的函数{int y;dlnode *head=L;if(ifempty==0)//检测是否有货物输入{printf("没有货物输入系统\n");getchar();getchar();return(head);} while(1){printf("=============\n");printf("1.按编号出库\n");printf("2.按名称出库\n");printf("0.返回上一层\n");printf("==============\n");printf("选择0--2:");scanf("%d",&y);switch(y){case 1:outnum(L);break;//调用按编号出库函数case 2:outname(L);break;//调用按名称出库函数case 0:return(L);default:printf("enter error!Please input 0--2!");getchar();getchar();printf("\n\n");}}} dlnode *outnum(dlnode *L)//按编号出库函数{ int num;dlnode *head=L;printf("请输入出库货物的编号:");scanf("%d",&num);while((L=L->next)!=head){//如果找到就删除节点if(L->number==num){L->prior->next=L->next;L->next->prior=L->prior;ifempty--; //ifempty减1 printf("编号为%d的货物成功出库",num); getchar();getchar();return head; } }printf("没有此编号的货物,请查看是否还有货物。\n\n");getchar();getchar();return (head);}dlnode *outname(dlnode *L)//按名称出库函数{char na[32];dlnode *head=L;printf("请输入出库货物的名称:");scanf("%s",&na);while((L=L->next)!=head){//如果找到就删除节点if(strcmp(L->name,na)==0){L->prior->next=L->next;L->next->prior=L->prior;ifempty--; //ifempty减1 printf("名称为%s的货物成功出库",na);getchar();getchar();return (head);}}printf("没有此名称的货物,请查看是否还有货物。\n\n");getchar();getchar();return(head);} void display(dlnode *L)//显示货物清单{dlnode *head=L;if(ifempty==0){printf("没有货物可显示\n");getchar();getchar();return;}L=L->next;do{ printf("\n编号:%d\n",L->number);printf("名称:%s\n",L->name) ;printf("数量:%d\n\n",L->counter);}while((L=L->next)!=head);getchar();getchar(); }void print(dlnode *L){dlnode *head=L;L=L->next;char filename[max];FILE *out;if(ifempty==0){printf("没有货物可输出\n");getchar();getchar();return;}printf("请输入文件名称:");scanf("%s",filename);if((out=fopen(filename,"w"))==NULL){printf("打开文件失败!\n");getchar();getchar();return;}do{ fprintf(out,"编号:%d\n名称:%s\n数量:%d\n\n",L->number,L->name,L->counter);}while((L=L->next)!=head);printf("输出成功\n");getchar();getchar();fclose(out);}

‘玖’ 用c语言写使用单链表建立一个简易商品库存表的程序

按照你题意,代码如下:(你提问题没有用编程模板,我这里代码只能直接贴,原格式都没了,你只能自己排版了 。)

(初始化数据的那段输入,只为演示,不要可以删除!)。

#include <stdio.h>

#include <malloc.h>

#include <string.h>

#include <conio.h>

#include <windows.h>

typedef struct stock

{

int id;

char name[10];

int stNum;

struct stock *next;

}STK;

void addByName(STK **stkHead,STK **stkTail,STK *stkNew,char *name);//向指定名称商品后添加节点,不存在添加在表头

void meError(void *p);//内存申请失败

int add2Tail(STK **stkHead,STK **stkTail,STK *stkNew);//向链表尾部添加新节点, 成功返回1,失败返回0

int add2Head(STK **stkHead,STK **stkTail,STK *stkNew);//向链表头部添加新节点, 成功返回1,失败返回0

STK *newSTK();//创建新节点,新建节点

STK *initSTK();//初始化链表

void printSTK(STK *stkHead);

void tjAll(STK *stkHead);//统计总库存数量

int main()

{

int i;

char name[10];

STK *stkHead=initSTK(),*stkTail=NULL;

//----------为了测试,我在下面这段初始了3个节点,不需要可以删除

i=3;

printf("请输入3个节点作为初始测试数据(不需要可以删除该段代码): ");

while(i--)

if(!add2Tail(&stkHead,&stkTail,newSTK()))

printf("添加节点失败,请重新输入! "),i++;

while(1)

{

system("cls");

printf("1、显示当前所有商品信息 ");

printf("2、统计商品总库存 ");

printf("3、向指定商品名后添加商品(名称不存在,将插入表头) ");

scanf("%d",&i);

switch(i)

{

case 1:system("cls");printSTK(stkHead);break;

case 2:system("cls");tjAll(stkHead);break;

case 3:system("cls");printf("请输入要插入位置商品的名称:"),scanf("%s",name);addByName(&stkHead,&stkTail,newSTK(),name);break;

}

printf("................按任意键继续! ");

getch();

}

return 0;

}

STK *initSTK()//初始化链表

{

STK *stkHead=(STK *)malloc(sizeof(STK));

meError(stkHead);

stkHead->next=NULL;

return stkHead;

}

void addByName(STK **stkHead,STK **stkTail,STK *stkNew,char *name)//向指定名称商品后添加节点,不存在添加在表头

{

int flag=0;

STK *stkh=*stkHead;

while(stkh->next)

{

if(strcmp(stkh->next->name,name)==0)

{

stkNew->next=stkh->next->next;

stkh->next->next=stkNew;

flag=1;

break;

}

stkh=stkh->next;

}

if(flag)

printf("新的商品已成功添加到商品%s后面! ",name);

else

{

add2Head(stkHead,stkTail,stkNew);

printf("%s不存在!新的商品已添加到表头! ",name);

}

}

void printSTK(STK *stkHead)

{

printf("当前库存情况: ");

while(stkHead->next)

{

printf("商品编号:%04d,商品名称:%9s,商品库存:%d ",stkHead->next->id,stkHead->next->name,stkHead->next->stNum);

stkHead=stkHead->next;

}

}

void tjAll(STK *stkHead)//统计总库存数量

{

int cnt=0,sum=0;

while(stkHead->next)

{

cnt++;

sum+=stkHead->next->stNum;

stkHead=stkHead->next;

}

printf("当前库存共%d种商品,总计库存数量%d ",cnt,sum);

}

STK *newSTK()//创建新节点,新建节点

{

static int stockID=1;//商品ID唯一,每次使用,自增

STK *stkNew=(STK *)malloc(sizeof(STK));

meError(stkNew);

stkNew->next=NULL;

stkNew->id=stockID++;

printf("请输入商品名称:");

scanf("%s",stkNew->name);

printf("请输入商品库存:");

scanf("%d",&stkNew->stNum);

return stkNew;

}

int add2Tail(STK **stkHead,STK **stkTail,STK *stkNew)//向链表尾部添加新节点, 成功返回1,失败返回0

{

if(!(*stkHead))

return 0;

if(!((*stkHead)->next))

add2Head(stkHead,stkTail,stkNew);

else

(*stkTail)->next=stkNew;

*stkTail=stkNew;

return 1;

}

int add2Head(STK **stkHead,STK **stkTail,STK *stkNew)//向链表头部添加新节点, 成功返回1,失败返回0

{

if(!(*stkHead))

return 0;

if(!((*stkHead)->next))

(*stkTail)=stkNew;

stkNew->next=(*stkHead)->next;

(*stkHead)->next=stkNew;

return 1;

}

void meError(void *p)//内存申请失败

{

if(p==NULL)

{

printf(" 异常:内存申请失败!回车结束程序! ");

while(getch()!=' ');

exit(0);

}

}

‘拾’ c语言商品管理系统

假设某超市经营各种商品,每种商品包括以下信息:商品编号、商品名称、商品品牌、库存数量、售价、已售数量。系统的主要功能包括:1. 创建商品信息文件:根据提示输入若干商品的信息,并将信息保存至一个文件中。2. 商品进货管理:每次购入新商品,需按要求输入商品所含各项信息并存入商品信息文件中。如果已经存在该商品(以商品编号为准),则修改相应的库存数量信息,否则生成新的商品信息记录。3. 商品销售管理:每次有商品销售出去,则按要求输入商品编号和商品名称信息,并修改相应的商品信息文件。注意:商品销售时要检查库存数量的合法性(即销售出去的数量必须小于库存数量)。4. 按不同条件进行查询操作,输出满足条件的商品信息。(1) 输入商品名称,在商品信息文件中查找相应的商品信息并输出。(2) 输入商品品牌,在商品信息文件中查找该品牌的所有信息并输出。5. 按不同条件对商品信息进行统计工作。(1) 输入商品名称,在商品信息文件中统计该商品的销售总额。(2) 设置一个库存数量警戒值,输出库存数量小于该警戒值的所有库存商品的信息。(3) 输入商品品牌,在商品信息文件中统计其不同商品名称的库存量,并输出库存量最高的那个商品的信息。
满意请采纳。

热点内容
邮政登陆密码是什么意思 发布:2025-07-15 01:53:23 浏览:229
算法与程序设计vb 发布:2025-07-15 01:50:39 浏览:719
什么是测试脚本 发布:2025-07-15 01:44:58 浏览:514
商汤科技存储负责人 发布:2025-07-15 01:24:21 浏览:252
文件夹如何批量替换文件名 发布:2025-07-15 01:19:15 浏览:68
ftp上传网页 发布:2025-07-15 01:13:09 浏览:182
音乐文件夹图标 发布:2025-07-15 01:03:41 浏览:495
安卓机怎么反向充电 发布:2025-07-15 01:03:40 浏览:501
电脑使用华为云服务器 发布:2025-07-15 00:48:10 浏览:534
中考应该如何排解压力 发布:2025-07-15 00:17:54 浏览:363