当前位置:首页 » 课程设计 » c语言程序课程设计商品进销存管理程序设计

c语言程序课程设计商品进销存管理程序设计

发布时间: 2021-02-05 18:17:32

㈠ C语言 期末课程设计 商品销售管理系统

]p
p
[[ki[

㈡ 谁能给我做个C语言程序,课题是产品进销存管理系统

void DisplayList(sqmountlink &L);
void Exitap();
void main();
int menu_operation();
void Visit();
void ErrorMess();

int InitMountList(sqmountlink &L)
{ //初始化一复个空制的顺序表挂接链表L
int i;
L.kindelem=(kindlnode *)malloc(SQMOUNTLINK_INIT_SIZE*sizeof(kindlnode));
if(!L.kindelem) exit(overflow);
L.length=0;
L.listsize=SQMOUNTLINK_INIT_SIZE;
for(i=0;i<L.listsize;i++)
{
(L.kindelem[i]).firstproct=NULL;
}
return ok;
}//InitMountList

这个是部分代码

㈢ c语言课程设计《商品销售管理系统》

你干嘛不想别的啊!发你QQ 来!给你发有关的文件过去!话费就免了,金钱诱惑,大忌啊!

㈣ 求一个C语言课程设计题的源程序代码,题目是:商品进销存管理程序。

#include<stdio.h>
#include <string.h>
#define NULL 0
#define LEN sizeof(struct student)
struct date
{ int year;
int month;
int day;
};
struct xueke
{
int pingshi;
int shiyan;
int kaoshi;
float zchji;
};
struct student
{
int num;
char name[10];
char sex;
struct date birthday;
struct xueke xk[2];
struct student *next; /*指向下一个结构体数据类型*/
};
typedef struct student score; /*用score来代替类型struct student*/
int n,k; /*n.k为全局变量,n表示结点个数,k表示人数*/
score *r=NULL; /*定义一个全局变量指针*/
score *stu;
/***************************************菜单***********/
int caidan(k)
{
int i;
printf("\n\n\n\t\t\t\t考试成绩管理系统\n");
printf("\t\t\t作者:薛文波、魏文清、姚志浩\n");
for(i=1;i<79;i++)
printf("*");
printf("\n");
printf("1.输入学生资料\t\t2.输出学生资料\t\t3.统计学生资料\n");
printf("4.删除学生资料\t\t5.查询学生资料\t\t6.排序学生资料\n");
printf("7.插入学生资料\t\t8.更新学生资料\t\t9.保存学生资料\n");
printf("0.退出!\n");
for(i=1;i<79;i++)
printf("*");
printf("\n");
printf("请输入你所要操作的选项:");
scanf("%d",&k);
printf("\n");
getchar();
return(k);
}
/**************************************************/
save(score *head)
{
score *q=head;
FILE *fp; /*调用fopen()函数打开磁盘文件*/
char wjlj[90];
printf("请输入文件的路经:");
scanf("%s",wjlj);
if((fp=fopen(wjlj,"w"))==NULL) /*为读、写建立一个新的二进制文件 */
{
printf("文件打开失败!\n");
return(0);
}
fprintf(fp,"*****************************************************************************\n");
fprintf(fp,"|学号|姓名|性别|生 日 |");
fprintf(fp,"C(平时.实验.考试.综合)|");
fprintf(fp,"高数(平时.实验.考试.综合)\n");
fprintf(fp,"*****************************************************************************\n");
while(q!=NULL)
{
fprintf(fp,"|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
fprintf(fp,"%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
fprintf(fp,"%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
q=q->next;
}
fclose(fp); /*关闭文件指针fP指向的文件*/
printf("文件已保存\n");
return(0);
}
/*******************************************输入模块*******/
score *creat(void)
{
score *head,*p1,*p2; /*定义一个头指针和两个工作点*/
int i;
head=NULL;
n=0;
p1=(struct student *)malloc(LEN); /*用P1开辟一个新单元*/
printf("1.请输入学生资料(输0退出):\n");
printf("a.请输入学生学号(学号应大于0):");
scanf("%d",&p1->num);
while(p1->num<0)
{
printf("输入错误,请重新输入:"); /* 学号小于零报错*/
scanf("%d",&p1->num);
}
while(p1->num!=0)
{ printf("b.请输入学生的姓名:");
scanf("%s",p1->name);
printf("请输入学生的性别(M&&F):");
scanf(" %c",&p1->sex);
while(p1->sex!='M'&&p1->sex!='F') /*判断输入性别时的字母是否为M或F*/
{
printf("输入错误,请重新输入学生的性别:");
scanf(" %c",&p1->sex);
}
printf("c.请输入学生的生日(年.月.日):");
scanf(" %d.%d.%d",&p1->birthday.year,&p1->birthday.month,&p1->birthday.day);
printf("d.请输入学生的成绩!\n");
printf("1.请输入 C 成绩(平时,实验,考试):");
scanf(" %d,%d,%d",&p1->xk[0].pingshi,&p1->xk[0].shiyan,&p1->xk[0].kaoshi);
p1->xk[0].zchji=p1->xk[0].pingshi*0.1+p1->xk[0].shiyan*0.2+p1->xk[0].kaoshi*0.7;
printf("2.请输入高数成绩(平时,实验,考试):");
scanf(" %d,%d,%d",&p1->xk[1].pingshi,&p1->xk[1].shiyan,&p1->xk[1].kaoshi);
p1->xk[1].zchji=p1->xk[1].pingshi*0.1+p1->xk[1].shiyan*0.2+p1->xk[1].kaoshi*0.7;
n=n+1; /*结点个数加一*/
if(n==1) head=p2=p1; /*若为首结点,则头指针指向本结点*/
else p2->next=p1;
p2=p1; /*若不是首结点 则把本结点链接到尾部*/
p1=(struct student *)malloc(LEN);
printf("********************************\n");
printf("1.请输入学生资料(输0退出):\n");
printf("a.请输入学生的学号(学号应大于0):");
scanf("%d",&p1->num);
while(p1->num<0) /*判断输入的学号是否小于0*/
{
printf("输入错误,输入错误请重新输入学号:");
scanf("%d",&p1->num);
}
}
p2->next=NULL; /* 最后结点不指向任何地址*/
free(p1); /*释放结点占用空间*/
return(head);
}
/*****************************************输出模块********/
void print(score *head)
{

score *q=head;
printf("\n输出%d个学生的资料:\n",n);
printf("*****************************************************************************\n");
printf("|学号|姓名|性别|生 日 |");
printf("C(平时.实验.考试.综合)|");
printf("高数(平时.实验.考试.综合)\n");
printf("*****************************************************************************\n");
if(head==NULL)
{
printf("\n没有这个学生的资料!\n");
return;
}
while(q!=NULL)
{
printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
printf("%5d|%5d|%5d|%.1f \n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
q=q->next; /*q指针依次向下扫描*/
}
printf("\n***************************************************************************\n");
}
/*********************************************统计模块*****/
score *tongji(score *head)
{
score *q=head,*max,*min;
int i,k1[2]={0,0},k2[2]={0,0},k3[2]={0,0}; /*将人数统计值的初始值赋为0*/
float czong=0,gzong=0,caver,gaver;
q=head; /*工作点首先指向头指针*/
max=q;
min=q;
while(q!=NULL)
{
czong+=q->xk[0].zchji; /*P1指向学生总成绩*/
gzong+=q->xk[1].zchji;
for(i=0;i<2;i++)
{
if(q->xk[i].zchji>max->xk[i].zchji)
max=q; /*将最大值的地址赋给P1*/
if(q->xk[i].zchji<min->xk[i].zchji)
min=q;
if(q->xk[i].zchji>=80) k1[i]++; /*k1[i]++为人数的统计*/
else if(q->xk[i].zchji>=60) k2[i]++;
else k3[i]++; /*分段成绩的人数统计*/
}
q=q->next;
}
caver=czong/n; /*计算C的平均成绩*/
gaver=gzong/n; /*计算math平均成绩*/
printf("C 语言成绩的总分为:%.2f C 语言成绩的平均分为:%.2f\n",czong,caver);
printf("C 语言成绩的最高分为:%.2f C 语言成绩的最低分为:%.2f\n",max->xk[0].zchji,min->xk[0].zchji);
printf("C 语言成绩优秀的人数为:%d\n",k1[0]);
printf("C 语言成绩良好的成绩为:%d\n",k2[0]);
printf("C 语言成绩及格的人数为:%d\n",k1[0]+k2[0]);
printf("C 语言成绩不及格的人数为:%d\n",k3[0]);
printf("高数成绩的总分为:%.2f 高数成绩的平均分为:%.2f\n",gzong,gaver);
printf("高数成绩的最高分为:%.2f 高数成绩的最低分为:%.2f\n",max->xk[1].zchji,min->xk[1].zchji);
printf("高数成绩优秀的人数为:%d\n",k1[1]);
printf("高数成绩良好的人数为:%d\n",k2[1]);
printf("高数成绩及格的人数为:%d\n",k1[1]+k2[1]);
printf("高数成绩不及格的人数为:%d\n",k3[1]);
return(head);
}
/*********************************************按学号查询模块*****/
void chaxun2(score *head)
{
score *q=head;
int sss=0;
char name[10];
printf("请输入要查询的学生姓名:");
scanf("%s",name);
while(q!=NULL)
{
if(strcmp(name,q->name)==0) /*通过字符串的比较按姓名查找*/
{
printf("*****************************************************************************\n");
printf("|学号|姓名|性别|生 日 |");
printf("C(平时.实验.考试.综合)|");
printf("高数(平时.实验.考试.综合)\n");
printf("*****************************************************************************\n");
printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
printf("*****************************************************************************\n");
sss=3; /*定义变量不等于初始值则退出循环体*/
}
q=q->next;
}
if(sss==0) printf("没有这个学生的资料!\n\n");

}
/*******************************************按学号查询*******/
void chaxun1(score *head)
{
score *q=head;
int num,sss=0;
printf("请输入要查询的学生学号:");
scanf("%d",&num);
while(q!=NULL)
{
if(num==q->num)
{
printf("*****************************************************************************\n");
printf("|学号|姓名|性别|生 日 |");
printf("C(平时.实验.考试.综合)|");
printf("高数(平时.实验.考试.综合)\n");
printf("*****************************************************************************\n");
printf("|%4d|%4s|%4c|%4d-%2d-%2d|",q->num,q->name,q->sex,q->birthday.year,q->birthday.month,q->birthday.day);
printf("%5d|%5d|%5d|%.1f|",q->xk[0].pingshi,q->xk[0].shiyan,q->xk[0].kaoshi,q->xk[0].zchji);
printf("%5d|%5d|%5d|%.1f\n",q->xk[1].pingshi,q->xk[1].shiyan,q->xk[1].kaoshi,q->xk[1].zchji);
printf("*****************************************************************************\n");
sss=3;
}
q=q->next;
}
if(sss==0) printf("没有这个学生的资料!\n\n");
}

/********************************************查询二级菜单******/
chaxun_cd()
{
int m=0,i;
while(m==0)
{
printf("查询学生的资料\n");
printf("1.按学号查询\n");
printf("2.按姓名查询\n");
printf("请选择你所要操作的选项(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:chaxun1(r);break; /*break表示跳出循环结构结束循环退出包含break语句的那层循环体*/
case 2:chaxun2(r);break;
case 0:m=1;break;
default:printf("错误,重新选择:");break;
}
}
}
/***************************************按学号删除***********/
score *del1(score *head)
{
score *p1,*p2;
int num;
printf("请输入要删除学生的学号:");
scanf("%d",&num);
if(head==NULL)
{
printf("没有这个学生的资料!\n\n");
return(head);
}
p2=p1=head;
while(num!=p1->num&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num==p1->num)
{
if(head==p1)
head=head->next;
else
p2->next=p1->next;
free(p1);
p1=p2;
printf("第%d 学生的资料已删除完毕!\n\n",num);
}
else printf("没有这个学生的资料!\n\n");
return(head);
}
/**************************************************/
score *del2(score *head)
{
score *p1,*p2;
char name[10];
printf("请输入要删除学生的姓名:");
scanf("%s",name);
if(head==NULL)
{
printf("没有这个学生的资料!\n\n");
return(head);
}
p2=p1=head;
while(strcmp(name,p1->name)!=0&&p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(strcmp(name,p1->name)==0)
{
if(head==p1)
head=head->next;
else
p2->next=p1->next;
free(p1);
p1=p2;
printf("名字叫%s的学生的资料已被删除!\n\n",name);
}
else printf("没有这个学生的资料!\n\n");
return(head);
}
/*************************************************/
del_cd()
{
int m=0,i;
while(m==0)
{
printf("删除学生的资料\n");
printf("1.按学号删除\n");
printf("2.按姓名删除\n");
printf("3.查看删除结果\n");
printf("请选择你所要操作的选项(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:r=del1(r);break;
case 2:r=del2(r);break;
case 3:print(r);break;
case 0:m=1;break;
default:printf("错误,重新选择:");break;
}

}
}

/*****************************************按学号排序********/
score *paixu2(score *head)
{
score *p1,*p2,*k,h;
int i;
if(head==NULL)
{
printf("没有任何学生的资料!");
return(head);
}
p1=head;
p2=head->next;
k=p1;
for(i=0;i<n-1;i++)
{
while(p2!=NULL)
{
if(k->num>p2->num)
k=p2;
p2=p2->next;
}
if(k!=p1)
{
h=*k;
*k=*p1;
*p1=h;
h.next=k->next;
k->next=p1->next;
p1->next=h.next;
}
p1=p1->next;
p2=p1->next;
k=p1;
}
printf("排序成功!\n\n");
return(head);
}
/*************************************************/
score *paixu1(score *head)
{
score *p1,*p2,*k,h;
int i;
if(head==NULL)
{
printf("没有任何学生的资料!");
return(head);
}

p1=head;
p2=head->next;
k=p1;
for(i=0;i<n-1;i++)
{

while(p2!=NULL)
{
if(k->xk[0].zchji>p2->xk[0].zchji)
k=p2;
p2=p2->next;
}
if(k!=p1)
{
h=*k;
*k=*p1;
*p1=h;
h.next=k->next;
k->next=p1->next;
p1->next=h.next;
}
p1=p1->next;
p2=p1->next;
k=p1;
}
printf("排序成功!\n\n");
return(head);
}
/*************************************************/
paixu_cd()
{
int m=0,i;
while(m==0)
{
printf("对学生的资料进行排序\n");
printf("1.按C语言成绩排序\n");
printf("2.按学号排序\n");
printf("请选择你所要操作的选项(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:r=paixu1(r);break;
case 2:r=paixu2(r);break;
case 0:m=1;break;
default:printf("错误,重新选择:");break;
}

}
}
/*******************************************按C成绩插入******/
score *charu1(score *head,score *stu)
{
score *p1,*p2;
int i;
p1=head;
r=paixu1(r);
stu=(score*)malloc(LEN); /*开辟一个新单元,用于保存要插入的信息*/
printf("请输入要增加的学生资料:\n");
printf("请输入要增加的学生学号:");
scanf("%d",&stu->num);
while(stu->num<0) /*判断学号是否小于0*/
{
printf("输入错误,输入错误请重新输入学号:");
scanf("%d",&stu->num);
}
printf("b.请输入要增加的学生姓名:");
scanf("%s",stu->name);
printf("请输入要增加的学生性别(F或M):");
scanf(" %c",&stu->sex);
while(stu->sex!='M'&&stu->sex!='F')
{
printf("输入错误,输入错误请重新输入性别:");
scanf(" %c",&stu->sex);
}
printf("c.请输入要增加的学生生日(年.月.日):");
scanf(" %d.%d.%d",&stu->birthday.year,&stu->birthday.month,&stu->birthday.day);
printf("d.请输入要增加的学生成绩!\n");
printf("1.请输入要增加的学生C语言成绩(平时,实验,考试):");
scanf(" %d,%d,%d",&stu->xk[0].pingshi,&stu->xk[0].shiyan,&stu->xk[0].kaoshi);
stu->xk[0].zchji=stu->xk[0].pingshi*0.1+stu->xk[0].shiyan*0.2+stu->xk[0].kaoshi*0.7;
printf("2.请输入要增加的学生高数成绩(平时,实验,考试):");
scanf(" %d,%d,%d",&stu->xk[1].pingshi,&stu->xk[1].shiyan,&stu->xk[1].kaoshi);
stu->xk[1].zchji=stu->xk[1].pingshi*0.1+stu->xk[1].shiyan*0.2+stu->xk[1].kaoshi*0.7;
if(head==NULL) /*判断头指针是否为空*/
{
head=stu;
stu->next=NULL; /*如果为空,直接插入头上*/
n++; /*人数加一*/
return(head);
}
while(p1->xk[0].zchji<stu->xk[0].zchji&&p1->next!=NULL) /*根据C成绩确定要插入的位置*/
{
p2=p1;
p1=p1->next;
}
if(stu->xk[0].zchji<=p1->xk[0].zchji)
{
if(p1==head) /*如果p1指向头指针 */
{
head=stu;
stu->next=p1;
n++;
}
else
{
stu->next=p2->next;
p2->next=stu;
n++;
}
}
else
{
p1->next=stu;
stu->next=NULL;
n++;
}
printf("增加学生资料成功!\n");
return(head);
}

/*********************************************按学号插入****/
score *charu2(score *head,score *stu)
{
score *p1,*p2;
int i=0;
p1=head;
r=paixu2(r); /*调用排序函数*/
stu=(score*)malloc(LEN); /*开辟一个新单元,用于保存要插入的信息*/
printf("请输入要增加的学生资料:\n");
printf("请输入要增加的学生学号:");
scanf("%d",&stu->num);
while(stu->num<0)
{
printf("输入错误,输入错误请重新输入学号:");
scanf("%d",&stu->num);
}
printf("b.请输入要增加的学生姓名:");
scanf("%s",stu->name);
printf("请输入要增加的学生性别(F或M):");
scanf(" %c",&stu->sex);
while(stu->sex!='M'&&stu->sex!='F')
{
printf("输入错误,输入错误请重新输入性别:");
scanf(" %c",&stu->sex);
}
printf("c.请输入要增加的学生生日(年.月.日):");
scanf(" %d.%d.%d",&stu->birthday.year,&stu->birthday.month,&stu->birthday.day);
printf("d.请输入要增加的学生的成绩!\n");
printf("1.请输入要增加的学生C语言成绩(平时,实验,考试):");
scanf(" %d,%d,%d",&stu->xk[0].pingshi,&stu->xk[0].shiyan,&stu->xk[0].kaoshi);
stu->xk[0].zchji=stu->xk[0].pingshi*0.1+stu->xk[0].shiyan*0.2+stu->xk[0].kaoshi*0.7;
printf("2.请输入要增加的学生高数的成绩(平时,实验,考试):");
scanf(" %d,%d,%d",&stu->xk[1].pingshi,&stu->xk[1].shiyan,&stu->xk[1].kaoshi);
stu->xk[1].zchji=stu->xk[1].pingshi*0.1+stu->xk[1].shiyan*0.2+stu->xk[1].kaoshi*0.7;
if(head==NULL) /*判断头指针是否为空*/
{
head=stu;
stu->next=NULL;
n++;
return(head);
}
while(p1->num<stu->num&&p1->next!=NULL) /*根据学号确定要插入的位置*/
{
p2=p1;
p1=p1->next;
}
if(stu->num<=p1->num)
{
if(p1==head)
{
head=stu;
stu->next=p1;
n++;
}
else
{
stu->next=p2->next;
p2->next=stu;
n++;
}
}
else
{
p1->next=stu;
stu->next=NULL;
n++;
}
printf("增加学生资料成功!\n");
printf("\n");
return(head); /*返回头指针*/
}

/*******************************************插入的二级菜单******/
charu_cd()
{
int m=0,i;
while(m==0)
{
printf("增加学生的人数\n");
printf("\n1.按C语言成绩增加\n");
printf("2.按学号增加\n");
printf("请选择你所要操作的选项(按0退出):");
scanf("%d",&i);
switch(i)
{
case 1:r=charu1(r,stu);break;
case 2:r=charu2(r,stu);break;
case 0:m=1;break;
default:printf("错误,重新选择:");break;
}

}
}

㈤ C语言 课程设计 商品库存管理系统

你可以去下载站下载一个免费的软件研究一下

㈥ c语言设计实现一个简单库存管理程序编程

我有一个学生管理系统程序,你可以把学生量改成库存量。回
希望对你能有帮助。答http://..com/question/2202293700663164948.html?oldq=1

㈦ C语言课程设计。商品进销存管理系统。.c文件。

你是要个软件吧

㈧ 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语言程序设计 超市商品信息管理系统

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

㈩ 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结构体与指针,就这个代码思路应该看得明白,真正的实现你自己实现吧
这样对你会更好写。可能会有错误的地方,请谨慎。 */

热点内容
幼师专业怎么样 发布:2021-03-16 21:42:13 浏览:24
音乐小毛驴故事 发布:2021-03-16 21:40:57 浏览:196
昂立中学生教育闸北 发布:2021-03-16 21:40:47 浏览:568
建筑业一建报考条件 发布:2021-03-16 21:39:53 浏览:666
2017年教师资格注册结果 发布:2021-03-16 21:39:49 浏览:642
中国教师资格证查分 发布:2021-03-16 21:39:41 浏览:133
踵什么成语有哪些 发布:2021-03-16 21:38:20 浏览:962
东营幼师专业学校 发布:2021-03-16 21:35:26 浏览:467
机械电子研究生课程 发布:2021-03-16 21:33:36 浏览:875
杭州朝日教育培训中心怎么样 发布:2021-03-16 21:33:28 浏览:238