c語言程序課程設計商品進銷存管理程序設計
㈠ 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語言課程設計,商品庫存管理系統怎麼做啊
首先要創建資料庫啊,也就是一個txt文件,要讓裡面有內容啊。其次是你的增加刪除商品種類,修改指定商品的數目之類的,具體看老師的要求。
常式(基本框架,具體的操作需進一步開發):
#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結構體與指針,就這個代碼思路應該看得明白,真正的實現你自己實現吧
這樣對你會更好寫。可能會有錯誤的地方,請謹慎。 */