當前位置:首頁 » 編程語言 » 產品銷售統計c語言源代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

產品銷售統計c語言源代碼

發布時間: 2022-11-03 21:07:15

『壹』 c語言商品管理系統源代碼,加註釋

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 300

typedef struct
{
char name[30];
int num;
char shang[10];
float price;
}record;

void DataInput(record *com, int *nptr);
int DataRead(record *com,int *nptr) ;
void DataStorage(record *com, int n); /*信息保存到文件*/
void DataFind( );
void DataDisPlay( );
void DataAdd( );
void DataDel( );
void DataStatistic( );

int main( )
{
record shangpin[SIZE];
int number=20; /*設商品數*/
char fn;
printf("\t~~~~~~商品管理系統~~~~~~");
while(1)
{
printf("\n\t\t1.商品信息錄入\n"); /*顯示主菜單*/
printf("\t\t2.商品信息顯示\n");
printf("\t\t3.商品信息查找\n");
printf("\t\t4.商品信息添加\n");
printf("\t\t5.商品信息刪除\n");
printf("\t\t6.商品信息統計\n");
printf("\t\t0.退出系統");

printf("\n\t~~~~~~~~~~~~~~~~\n");

printf("\t請輸入你的一個選項(數字0-6): ");
fflush(stdin);
scanf("%c",&fn);
puts("\n");

switch(fn) /*切換到不同功能*/
{
case '1':
DataInput(shangpin, &number );
break; /*錄入信息*/
case '2':DataDisPlay();
break; /*信息顯示*/
case '3':
DataFind();
break; /*信息查找*/
case '4':
DataAdd( );
break; /*增加*/
case '5':
DataDel( );
break; /*刪除*/
case '6':
DataStatistic();
break; /*信息統計*/
case '0':
return 0;

default:puts("\t\t沒有這個項!返回主菜單!");
break;
}

printf("\n\t\t完畢!按任意鍵繼續");
getch( );

puts("\n");
}
}

void DataInput(record *com, int *nptr) /*商品信息錄入*/
{
int i = 0;
int n ; /*錄入的總數*/
char YesOrNo; /*判斷是否保存*/
char shangming[30]; /*商名*/
int haoma; /*商品號*/
char shangjia[10]; /*單價*/
float danjia;
printf("\t\t請輸入商品個數:");
scanf("%d",&n);
*nptr = n; /*nptr返回商品個數*/
printf("\t\t現在開始錄入這%d個商品信息:\n\n",n);
while(i<n)
{
printf("請輸入商品的商品名:",i+1);
scanf("%s",&shangming);
printf("請輸入商品的商品號:",i+1);
scanf("%d",&haoma);
printf("請輸入商品的生產商:",i+1);
scanf("%s",&shangjia);
printf("請輸入商品的單價 :",i+1);
scanf("%f",&danjia);
if(danjia>=0&&danjia<=1000) /*有效的單價才錄入*/
{
strcpy(com[i].name,shangming);
com[i].num = haoma;
strcpy(com[i].shang,shangjia);
com[i].price = danjia;
i =i+1;
}
else
printf("輸入的單價是一個無效的值!!!\n\n");
} /*結束while*/

printf("要保存您剛才錄入的數據嗎(Y/N)?"); /*選擇保存*/
fflush(stdin);
scanf("%c",&YesOrNo);
if(YesOrNo=='y'||YesOrNo=='Y')
DataStorage(com,n);
else if(YesOrNo=='n'||YesOrNo=='N')
return;
else
printf("輸入了不正確的選項\n");
return;

} /*結束函數*/

void DataFind( ) /*查找*/
{

void OnNumber(record *com,int n ); /*按商品號排序*/
int key; /*key為要查找的關鍵值*/
int low = 0; /*下限*/
int high ; /*上限*/
int mid ; /*中間值*/
char ans; /*選項*/
record com[SIZE];
int n;

if(DataRead(com,&n)==1) /*從文件中讀取信息*/
{
OnNumber(com,n); /*先按商品號排序*/
high = n;
do
{
printf("\n\n\t\t請輸入你要查找的商品號:");
scanf("%d",&key);

low = 0;high = n;
while (low <=high)
{
mid = (high + low)/2; /*折半查找法*/

if (key == com[mid].num )
{
printf("\n\t\t你要找的是第%d個商品\n",mid + 1);
printf("\t\t結果如下:\n\n");

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
printf("%3d%17s%12d%12s%8.1f\n",mid+1,com[mid].name,com[mid].num,com[mid].shang,
com[mid].price);

break; /*如果找到則退出循環*/
}

if (key > com[mid].num ) low = mid + 1;
else high = mid - 1;
}

if (low > high)
printf("\t\t,沒有找到這個價格!\n");
printf("\n\t\t還要繼續查詢嗎(Y/N)?");
ans = getch( );
}
while (ans =='Y'||ans == 'y'); /*結束do....while*/
}
}

void DataStorage(record *com, int n) /*錄入保存文件*/
{
int i;
FILE *comPtr;
char FileName[20];
printf("請輸入您要保存的文件名:");
scanf("%s",FileName);
printf("正在將商品信息保存到文件,請稍候……\n");
if((comPtr=fopen(FileName,"w"))==NULL)
printf("沒有該文件\n");
else
for(i=0 ; i<n ; i++)
fprintf(comPtr,"\n%17s%12d%12s%8.1f",com[i].name,com[i].num,com[i].shang,com[i].price);
fclose(comPtr);
}

int DataRead(record *com,int *nptr) /*讀取文件*/
{
int i=0;
char datafile[20];
FILE *comPtr;

*nptr = 0;
printf("請輸入文件名:");
scanf("%s",datafile);
if((comPtr = fopen(datafile,"r")) == NULL) /*打開文件*/
{
printf("沒有該文件,請重新輸入!\n");
return 0;
}
else
{
printf("正在讀取商品單價,請稍候……\n");
while (!feof(comPtr))
{
fscanf(comPtr,"%s%d%s%f",&com[i].name,&com[i].num,&com[i].shang,&com[i].price);
i++;
}
*nptr = i;
printf("\n");

fclose(comPtr);

return 1;
}

}

void DataDisPlay()
{
void OnPrice(record *com,int n ); /*按單價*/
void OnNumber(record *com,int n ); /*按商品號*/
int N;
int i;
record com[300];
char YesNo; /*是否按順序顯示*/
char tp;

if(DataRead(com,&N)==1) /*從文件讀取數據*/
{

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0;i<N;i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,com[i].price);

printf("要按順序顯示嗎?(Y/N)?");
fflush(stdin);
scanf("%c",&YesNo);
if(YesNo=='y'||YesNo=='Y')
{
printf("\t請輸入排序方式:\n");
printf("\t(1.按價格排序從低到高;2.按商品號排序從低到高.)");
fflush(stdin);
scanf("%c",&tp);
if(tp=='1')
OnPrice(com,N);
else if(tp =='2')
OnNumber(com,N);
else
printf("\t輸入了不正確項!\n");
}
}
} /*結束顯示成績*/

void OnPrice(record *com,int n ) /*按單價順序*/
{ int i,j;
record temp;
printf("\t\t按單價排序---\n\n");

printf("商品總數為%d:\n",n);

for(j=0 ; j<n-1 ; j++) /*冒泡排序*/
for(i=0 ; i<n-j-1 ; i++)
if(com[i].price>com[i+1].price)
{
temp=com[i];
com[i]=com[i+1];
com[i+1]=temp;
}

printf("\n\t\t按成績排序的結果如下(按分數從低到高):\n\n");

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0 ; i<n ; i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);

}

void OnNumber(record *com,int n ) /*按序號順序*/
{
int i,j;
record temp;

printf("\t\t按商品號排序---\n\n");

printf("商品總數為%d:\n",n);

for(j=0 ; j<n-1 ; j++)
for(i=0 ; i<n-j-1 ; i++)
if(com[i].num>com[i+1].num)
{
temp=com[i];
com[i]=com[i+1];
com[i+1]=temp;
}

printf("\n\t按商品號排序的結果如下(按商品號從小到大):\n\n");

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0 ; i<n ; i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);

}

void DataAdd( ) /*增加*/
{
int i=0,n,m; /*商品名稱*/
char shangming[30];
int haoma; /*生產商*/
char shangjia[10];
float danjia;
char YesOrNo;
record com[SIZE];

printf("\t\t讀取原有數據信息---\n");
if(DataRead(com,&n)==1)
{
printf("\t\t信息讀取完畢!\n\n");

printf("\t\t請輸入要添加的商品總數:");
scanf("%d",&m);

printf("\t\t現在開始錄入這%d個商品信息:\n\n",m);

while(i<m)
{

printf("第%d個商品的商品名:",i+1);
scanf("%s",&shangming);
printf("第%d個商品的商品號:",i+1);
scanf("%d",&haoma);
printf("第%d個商品的生產商:",i+1);
scanf("%s",&shangjia);
printf("第%d個商品的單價:",i+1);
scanf("%f",&danjia);
if(danjia>=0&&danjia<=1000) /*有效的單價才錄入*/
{
strcpy(com[i+n].name,shangming);
com[i+n].num = haoma;
strcpy(com[i+n].shang,shangjia);
com[i+n].price = danjia;
i =i+1;
}
else
printf("輸入的單價是一個無效的值,請重新輸入!\n\n");

}

printf("要保存您剛才錄入的數據嗎(Y/N)?");
fflush(stdin);
scanf("%c",&YesOrNo);
if(YesOrNo=='y'||YesOrNo=='Y')
DataStorage(com,n+m);
else if(YesOrNo=='n'||YesOrNo=='N')
return;
else
printf("輸入了不正確項,返回上一級\n");
return;
}
}

void DataDel( )//刪除
{
void OnNumber(record *com,int n );
record com[SIZE];
int i; /*總記錄數*/
int n; /*要刪除的記錄號*/
int m;

printf("\t\t讀取原有數據信息---\n");
if(DataRead(com,&n)==1)
{
printf("\t\t原始數據如下:\n\n");
OnNumber(com,n );

printf("請輸入你要刪除的記錄的序號");
scanf("%d",&m);
if(m>=1 && m<=n)
{
for(i=m-1;i<n-1;i++)
com [i] = com[i+1];
DataStorage(com,n-1);
}
}
}

void DataStatistic( ) /*統計信息*/
{
int high=0,low=200,ave=0;
int n,i,sum=0;
int g,l;
record com[SIZE];
printf("讀取數據信息---\n");
if(DataRead(com,&n)==1)
{
printf("商品總數為%d\n\n",n);
for(i=0;i<n;i++)
{
if(com[i].price>high)
{
high = com[i].price;
g=i;
}
if(com[i].price<low)
{
low = com[i].price;
l=i;
}
sum += com[i].price;
}
ave=sum/n;
printf("\t\t最高\t最低\t平均\n"); /*計算值*/
printf("商品單價統計:\t%d\t%d\t%d\n\n",high,low,ave);
printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0 ; i<n ; i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);

printf("\t\t 序號\t\t 商品名\t 商品號\t 生產商 單價\n");

printf("單價最高的商品是:%3d%17s%12d%12s%8.1f\n\n",g+1,com[g].name,com[g].num,com[g].shang,com[g].price);
printf("單價最低的商品是:%3d%17s%12d%12s%8.1f\n",l+1,com[l].name,com[l].num,com[l].shang,com[l].price);

} /*結束統計*/
}

『貳』 C語言設計商品管理系統,可以實現商品的錄入,查詢,求源代碼

#include <stdio.h>
#include <conio.h>
#include <string.h>
#define SIZE 300

typedef struct
{
char name[30];
int num;
char shang[10];
float price;
}record;

void DataInput(record *com, int *nptr);
int DataRead(record *com,int *nptr) ;
void DataStorage(record *com, int n); /*信息保存到文件*/
void DataFind( );
void DataDisPlay( );
void DataAdd( );
void DataDel( );
void DataStatistic( );

int main( )
{
record shangpin[SIZE];
int number=20; /*設商品數*/
char fn;
printf("\t~~~~~~商品管理系統~~~~~~");
while(1)
{
printf("\n\t\t1.商品信息錄入\n"); /*顯示主菜單*/
printf("\t\t2.商品信息顯示\n");
printf("\t\t3.商品信息查找\n");
printf("\t\t4.商品信息添加\n");
printf("\t\t5.商品信息刪除\n");
printf("\t\t6.商品信息統計\n");
printf("\t\t0.退出系統");

printf("\n\t~~~~~~~~~~~~~~~~\n");

printf("\t請輸入你的一個選項(數字0-6): ");
fflush(stdin);
scanf("%c",&fn);
puts("\n");

switch(fn) /*切換到不同功能*/
{
case '1':
DataInput(shangpin, &number );
break; /*錄入信息*/
case '2':DataDisPlay();
break; /*信息顯示*/
case '3':
DataFind();
break; /*信息查找*/
case '4':
DataAdd( );
break; /*增加*/
case '5':
DataDel( );
break; /*刪除*/
case '6':
DataStatistic();
break; /*信息統計*/
case '0':
return 0;

default:puts("\t\t沒有這個項!返回主菜單!");
break;
}

printf("\n\t\t完畢!按任意鍵繼續");
getch( );

puts("\n");
}
}

void DataInput(record *com, int *nptr) /*商品信息錄入*/
{
int i = 0;
int n ; /*錄入的總數*/
char YesOrNo; /*判斷是否保存*/
char shangming[30]; /*商名*/
int haoma; /*商品號*/
char shangjia[10]; /*單價*/
float danjia;
printf("\t\t請輸入商品個數:");
scanf("%d",&n);
*nptr = n; /*nptr返回商品個數*/
printf("\t\t現在開始錄入這%d個商品信息:\n\n",n);
while(i<n)
{
printf("請輸入商品的商品名:",i+1);
scanf("%s",&shangming);
printf("請輸入商品的商品號:",i+1);
scanf("%d",&haoma);
printf("請輸入商品的生產商:",i+1);
scanf("%s",&shangjia);
printf("請輸入商品的單價 :",i+1);
scanf("%f",&danjia);
if(danjia>=0&&danjia<=1000) /*有效的單價才錄入*/
{
strcpy(com[i].name,shangming);
com[i].num = haoma;
strcpy(com[i].shang,shangjia);
com[i].price = danjia;
i =i+1;
}
else
printf("輸入的單價是一個無效的值!!!\n\n");
} /*結束while*/

printf("要保存您剛才錄入的數據嗎(Y/N)?"); /*選擇保存*/
fflush(stdin);
scanf("%c",&YesOrNo);
if(YesOrNo=='y'||YesOrNo=='Y')
DataStorage(com,n);
else if(YesOrNo=='n'||YesOrNo=='N')
return;
else
printf("輸入了不正確的選項\n");
return;

} /*結束函數*/

void DataFind( ) /*查找*/
{

void OnNumber(record *com,int n ); /*按商品號排序*/
int key; /*key為要查找的關鍵值*/
int low = 0; /*下限*/
int high ; /*上限*/
int mid ; /*中間值*/
char ans; /*選項*/
record com[SIZE];
int n;

if(DataRead(com,&n)==1) /*從文件中讀取信息*/
{
OnNumber(com,n); /*先按商品號排序*/
high = n;
do
{
printf("\n\n\t\t請輸入你要查找的商品號:");
scanf("%d",&key);

low = 0;high = n;
while (low <=high)
{
mid = (high + low)/2; /*折半查找法*/

if (key == com[mid].num )
{
printf("\n\t\t你要找的是第%d個商品\n",mid + 1);
printf("\t\t結果如下:\n\n");

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
printf("%3d%17s%12d%12s%8.1f\n",mid+1,com[mid].name,com[mid].num,com[mid].shang,
com[mid].price);

break; /*如果找到則退出循環*/
}

if (key > com[mid].num ) low = mid + 1;
else high = mid - 1;
}

if (low > high)
printf("\t\t,沒有找到這個價格!\n");
printf("\n\t\t還要繼續查詢嗎(Y/N)?");
ans = getch( );
}
while (ans =='Y'||ans == 'y'); /*結束do....while*/
}
}

void DataStorage(record *com, int n) /*錄入保存文件*/
{
int i;
FILE *comPtr;
char FileName[20];
printf("請輸入您要保存的文件名:");
scanf("%s",FileName);
printf("正在將商品信息保存到文件,請稍候……\n");
if((comPtr=fopen(FileName,"w"))==NULL)
printf("沒有該文件\n");
else
for(i=0 ; i<n ; i++)
fprintf(comPtr,"\n%17s%12d%12s%8.1f",com[i].name,com[i].num,com[i].shang,com[i].price);
fclose(comPtr);
}

int DataRead(record *com,int *nptr) /*讀取文件*/
{
int i=0;
char datafile[20];
FILE *comPtr;

*nptr = 0;
printf("請輸入文件名:");
scanf("%s",datafile);
if((comPtr = fopen(datafile,"r")) == NULL) /*打開文件*/
{
printf("沒有該文件,請重新輸入!\n");
return 0;
}
else
{
printf("正在讀取商品單價,請稍候……\n");
while (!feof(comPtr))
{
fscanf(comPtr,"%s%d%s%f",&com[i].name,&com[i].num,&com[i].shang,&com[i].price);
i++;
}
*nptr = i;
printf("\n");

fclose(comPtr);

return 1;
}

}

void DataDisPlay()
{
void OnPrice(record *com,int n ); /*按單價*/
void OnNumber(record *com,int n ); /*按商品號*/
int N;
int i;
record com[300];
char YesNo; /*是否按順序顯示*/
char tp;

if(DataRead(com,&N)==1) /*從文件讀取數據*/
{

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0;i<N;i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,com[i].price);

printf("要按順序顯示嗎?(Y/N)?");
fflush(stdin);
scanf("%c",&YesNo);
if(YesNo=='y'||YesNo=='Y')
{
printf("\t請輸入排序方式:\n");
printf("\t(1.按價格排序從低到高;2.按商品號排序從低到高.)");
fflush(stdin);
scanf("%c",&tp);
if(tp=='1')
OnPrice(com,N);
else if(tp =='2')
OnNumber(com,N);
else
printf("\t輸入了不正確項!\n");
}
}
} /*結束顯示成績*/

void OnPrice(record *com,int n ) /*按單價順序*/
{ int i,j;
record temp;
printf("\t\t按單價排序---\n\n");

printf("商品總數為%d:\n",n);

for(j=0 ; j<n-1 ; j++) /*冒泡排序*/
for(i=0 ; i<n-j-1 ; i++)
if(com[i].price>com[i+1].price)
{
temp=com[i];
com[i]=com[i+1];
com[i+1]=temp;
}

printf("\n\t\t按成績排序的結果如下(按分數從低到高):\n\n");

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0 ; i<n ; i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);

}

void OnNumber(record *com,int n ) /*按序號順序*/
{
int i,j;
record temp;

printf("\t\t按商品號排序---\n\n");

printf("商品總數為%d:\n",n);

for(j=0 ; j<n-1 ; j++)
for(i=0 ; i<n-j-1 ; i++)
if(com[i].num>com[i+1].num)
{
temp=com[i];
com[i]=com[i+1];
com[i+1]=temp;
}

printf("\n\t按商品號排序的結果如下(按商品號從小到大):\n\n");

printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0 ; i<n ; i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);

}

void DataAdd( ) /*增加*/
{
int i=0,n,m; /*商品名稱*/
char shangming[30];
int haoma; /*生產商*/
char shangjia[10];
float danjia;
char YesOrNo;
record com[SIZE];

printf("\t\t讀取原有數據信息---\n");
if(DataRead(com,&n)==1)
{
printf("\t\t信息讀取完畢!\n\n");

printf("\t\t請輸入要添加的商品總數:");
scanf("%d",&m);

printf("\t\t現在開始錄入這%d個商品信息:\n\n",m);

while(i<m)
{

printf("第%d個商品的商品名:",i+1);
scanf("%s",&shangming);
printf("第%d個商品的商品號:",i+1);
scanf("%d",&haoma);
printf("第%d個商品的生產商:",i+1);
scanf("%s",&shangjia);
printf("第%d個商品的單價:",i+1);
scanf("%f",&danjia);
if(danjia>=0&&danjia<=1000) /*有效的單價才錄入*/
{
strcpy(com[i+n].name,shangming);
com[i+n].num = haoma;
strcpy(com[i+n].shang,shangjia);
com[i+n].price = danjia;
i =i+1;
}
else
printf("輸入的單價是一個無效的值,請重新輸入!\n\n");

}

printf("要保存您剛才錄入的數據嗎(Y/N)?");
fflush(stdin);
scanf("%c",&YesOrNo);
if(YesOrNo=='y'||YesOrNo=='Y')
DataStorage(com,n+m);
else if(YesOrNo=='n'||YesOrNo=='N')
return;
else
printf("輸入了不正確項,返回上一級\n");
return;
}
}

void DataDel( )//刪除
{
void OnNumber(record *com,int n );
record com[SIZE];
int i; /*總記錄數*/
int n; /*要刪除的記錄號*/
int m;

printf("\t\t讀取原有數據信息---\n");
if(DataRead(com,&n)==1)
{
printf("\t\t原始數據如下:\n\n");
OnNumber(com,n );

printf("請輸入你要刪除的記錄的序號");
scanf("%d",&m);
if(m>=1 && m<=n)
{
for(i=m-1;i<n-1;i++)
com [i] = com[i+1];
DataStorage(com,n-1);
}
}
}

void DataStatistic( ) /*統計信息*/
{
int high=0,low=200,ave=0;
int n,i,sum=0;
int g,l;
record com[SIZE];
printf("讀取數據信息---\n");
if(DataRead(com,&n)==1)
{
printf("商品總數為%d\n\n",n);
for(i=0;i<n;i++)
{
if(com[i].price>high)
{
high = com[i].price;
g=i;
}
if(com[i].price<low)
{
low = com[i].price;
l=i;
}
sum += com[i].price;
}
ave=sum/n;
printf("\t\t最高\t最低\t平均\n"); /*計算值*/
printf("商品單價統計:\t%d\t%d\t%d\n\n",high,low,ave);
printf("序號\t\t商品名\t 商品號\t生產商\t單價\n");
for(i=0 ; i<n ; i++)
printf("%3d%17s%12d%12s%8.1f\n",i+1,com[i].name,com[i].num,com[i].shang,
com[i].price);

printf("\t\t 序號\t\t 商品名\t 商品號\t 生產商 單價\n");

printf("單價最高的商品是:%3d%17s%12d%12s%8.1f\n\n",g+1,com[g].name,com[g].num,com[g].shang,com[g].price);
printf("單價最低的商品是:%3d%17s%12d%12s%8.1f\n",l+1,com[l].name,com[l].num,com[l].shang,com[l].price);

} /*結束統計*/
}

『叄』 求一個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語言做個小型商品銷售管理系統

我這里有一個!
具體的,稍微改一下就可以了!

#include "stdio.h" /*I/O函數*/
#include "stdlib.h" /*其它說明*/
#include "string.h" /*字元串函數*/
#include "conio.h" /*屏幕操作函數*/
#include "mem.h" /*內存操作函數*/
#include "ctype.h" /*字元操作函數*/
#include "alloc.h" /*動態地址分配函數*/
struct score
{
int mingci;
char xuehao[8];
char mingzi[20];
float score[6];
}data,info[1000];
int i,j,k=0;
char temp[20],ch;
FILE *fp,*fp1;

void shuru()
{
if((fp=fopen("s_score.txt","ab+"))==NULL)
{
printf("cannot open this file.\n");
getch();exit(0);
}
for(i=0;i<=1000;i++)
{
printf("\nPlease shuru xuehao:");
gets(data.xuehao);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please shuru wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please shur huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];
fwrite(&data,sizeof(data),1,fp);
printf("another?y/n");
ch=getch();
if(ch=='n'||ch=='N')
break;
} fclose(fp);
}
void xianshi()
{
float s;int n;
if((fp=fopen("s_score.txt","rb+"))==NULL)
{
printf("Cannot reading this file.\n");
exit(0);
}
for(i=0;i<=1000;i++)
{
if((fread(&info[i],sizeof(info[i]),1,fp))!=1)
break;
}
printf("\nxuehao mingzi yuwen shuxue yingyu wuli huauxue zhongfen\n");
for(j=0,k=1;j<i;j++,k++)
{
info[j].mingci=k;
printf("%6s %8s %3.1f %3.1f %3.1f %3.1f %3.1f %3.1f\n",info[j].xuehao,info[j].mingzi,info[j].score[0],info[j].score[1],info[j].score[2],info[j].score[3],info[j].score[4],
info[j].score[5]);
}
getch();
fclose(fp);
}

void xiugai()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("Cannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xiugai xuehao:");
scanf("%d",&i); getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{
printf("xuehao:%s\nmingzi:%s\n",data.xuehao,data.mingzi);
printf("Please shuru mingzi:");
gets(data.mingzi);
printf("Please shuru yuwen score:");
gets(temp);data.score[0]=atof(temp);
printf("Please shuru shuxue score:");
gets(temp);data.score[1]=atof(temp);
printf("Please input yingyu score:");
gets(temp);data.score[2]=atof(temp);
printf("Please input wuli score:");
gets(temp);data.score[3]=atof(temp);
printf("Please input huaxue score:");
gets(temp);data.score[4]=atof(temp);
data.score[5]=data.score[0]+data.score[1]+data.score[2]+data.score[3]+data.score[4];

} fwrite(&data,sizeof(data),1,fp1);
}
fseek(fp,0L,0);
fseek(fp1,0L,0);
while((fread(&data,sizeof(data),1,fp1))==1)
{
fwrite(&data,sizeof(data),1,fp);
}

fclose(fp);
fclose(fp1);
}
void chazhao()
{
if((fp=fopen("s_score.txt","rb"))==NULL)
{
printf("\nCannot open this file.\n");
exit(0);
}
printf("\nPLease shuru xuehao chakan:");
scanf("%d",&i);
while(fread(&data,sizeof(data),1,fp)==1)
{
j=atoi(data.xuehao);
if(i==j)
{
printf("xuehao:%s mingzi:%s\nyuwen:%f\n shuxue:%f\n yingyu:%f\n wuli:%f\n huaxue:%f\n ",data.xuehao,data.mingzi,data.score[0],data.score[1],data.score[2],data.score[3],data.score[4],data.score[5]);
}getch();
}
}
void shanchu()
{
if((fp=fopen("s_score.txt","rb+"))==NULL||(fp1=fopen("temp.txt","wb+"))==NULL)
{
printf("\nopen score.txt was failed!");
getch();
exit(0);
}
printf("\nPlease input ID which you want to del:");
scanf("%d",&i);getchar();
while((fread(&data,sizeof(data),1,fp))==1)
{
j=atoi(data.xuehao);
if(j==i)
{

printf("Anykey will delet it.\n");
getch();
continue;
}
fwrite(&data,sizeof(data),1,fp1);
}
fclose(fp);
fclose(fp1);
remove("s_score.txt");
rename("temp.txt","s_score.txt");
printf("Data delet was succesful!\n");
printf("Anykey will return to main.");
getch();
}
main()
{
while(1)
{
clrscr(); /*清屏幕*/
gotoxy(1,1); /*移動游標*/
textcolor(YELLOW); /*設置文本顯示顏色為黃色*/
textbackground(BLUE); /*設置背景顏色為藍色*/
window(1,1,99,99); /* 製作顯示菜單的窗口,大小根據菜單條數設計*/
clrscr();
printf("*************welcome to use student manage******************\n");
printf("*************************menu********************************\n");
printf("* ========================================================= * \n");
printf("* 1>shuru 2>xiugai * \n");
printf("* 3>shanchu 4>chazhao * \n");
printf("* 5>xianshi 6>exit * \n");
printf("* * \n");
printf("* --------------------------------------------------------- * \n");
printf(" Please input which you want(1-6):");
ch=getch();
switch(ch)
{
case '1':shuru();break;
case '2':xiugai(); break;
case '3':shanchu(); break;
case '4':chazhao(); break;
case '5':xianshi(); break;
case '6':exit(0);
default: continue;
}
}
}

『伍』 用C語言來編寫:商品銷售統計程序

#include<iostream>
#include<cstring>
#include<fstream>
#include<stdlib.h>//system("cls")//清屏
#include<conio.h>//getche()
using namespace std;
//全局變數
int i=0;//已錄入商品總個數
char ch;//cin>>ch
int n;//case(n)
char code[10];
char name[10];
char unit[10];
int amount;
float unitprice;
float total=0;//總價
ofstream f1("./test.txt");
ofstream f2("./sell.txt");//構建輸出流,沒有文件就建立

class Goods
{
private:
char code[10];//代碼
char name[10];//名稱
char unit[10];//單位
int amount;//總數
float unitprice;//單價
public:
Goods();
Goods(char co[10],char na[10],char un[10],int am,float unpr);//構造函數
void f_write();// 錄入
void f_change();//改變
void f_delete();//刪除
void display();//顯示全部商品信息
void s_buy();//買入
};
//構造函數
Goods::Goods(){}
Goods::Goods(char co[10],char na[10],char un[10],int am,float unpr)
{
strcpy(code,co);
strcpy(name,na);
strcpy(unit,un);
amount=am;
unitprice=unpr;
}
Goods *g[50];
//商品信息錄入
void Goods::f_write()
{
cout<<"請輸入第"<<i+1<<"件商品代碼:"<<endl;
cin>>code;
cout<<"請輸入第"<<i+1<<"件商品名稱:"<<endl;
cin>>name;
cout<<"請輸入第"<<i+1<<"件商品計量單位:"<<endl;
cin>>unit;
cout<<"請輸入第"<<i+1<<"件商品總數:"<<endl;
cin>>amount;
cout<<"請輸入第"<<i+1<<"件商品單價:"<<endl;
cin>>unitprice;
g[i]=new Goods(code,name,unit,amount,unitprice);
i++;
cout<<"信息錄入成功!(繼續錄入按y,返回上一層按n)"<<endl;
cin>>ch;
if(ch=='y')
{
f_write();
}
}
//改變商品信息
void Goods::f_change()
{
cout<<"請輸入要改變的商品代碼:";
cin>>code;
for(int h=0;h<i;h++)
{
if(0 == strcmp(g[h]->code,code))
{
cout<<"商品信息如下:"<<endl;
cout<<"代碼 名稱 單價 總數 單位"<<endl;
cout<<g[h]->code<<"\t"<<g[h]->name<<"\t"<<g[h]->unitprice
<<"\t"<<g[h]->amount<<"\t"<<g[h]->unit<<endl;
char newco,newna,newun;
int newam;
float newunpr;
cout<<"你想要修改:1、代碼;2、名稱;3、單價;4、總數;5、單位。"<<endl;
cin>>n;
switch(n)
{
case 1:
cout<<"請輸入修改後的商品代碼:";
cin>>newco;
g[h]->code[10]=newco;
cout<<"修改成功!"<<endl;
break;
case 2:
cout<<"請輸入修改後的商品名稱:";
cin>>newna;
g[h]->name[10]=newna;
cout<<"修改成功!"<<endl;
break;
case 3:
cout<<"請輸入商品單價:";
cin>>newunpr;
g[h]->unitprice=newunpr;
cout<<"修改成功!"<<endl;
break;
case 4:
cout<<"請輸入修改後的商品總數:";
cin>>newam;
g[h]->amount=newam;
cout<<"修改成功!"<<endl;
break;
case 5:
cout<<"請輸入修改後的商品單位:";
cin>>newun;
g[h]->unit[10]=newun;
cout<<"修改成功!"<<endl;
break;
}
break;
}//if
}//for循環
cout<<"是否繼續修改?(y/n)"<<endl;
cin>>ch;
if(ch=='y')
{
f_change();
}
}
//刪除信息
void Goods::f_delete()
{
cout<<"請輸入要刪除的商品代碼:";
cin>>code;
for(int h=0;h<i;h++)
{
if(0 == strcmp(g[h]->code,code))
{
for(int k=h;k<i;k++)
{
g[k]=g[k+1];
i--;
}
}
}
cout<<"刪除成功!"<<endl;
cout<<"是否繼續刪除?(y/n)"<<endl;
cin>>ch;
if(ch=='y')
{
f_delete();
}
}
//列印信息
void Goods::display()
{
system("cls");
cout<<" "<<endl;
cout<<"-----------全部商品信息如下-------------------"<<endl;
cout<<" "<<endl;
cout<<"代碼 名稱 單價 總數 單位"<<endl;
f1<<" "<<endl;
f1<<"---------------全部商品信息如下--------------"<<endl;
f1<<" "<<endl;
f1<<"代碼 名稱 單價 總數 單位"<<endl;
if(i==0)
{
cout<<"系統未曾錄入任何商品信息,或記錄被刪除!";
}
for(int k=0;k<i;k++)
{
cout<<g[k]->code<<"\t"<<g[k]->name<<"\t"<<g[k]->unitprice
<<"\t"<<g[k]->amount<<"\t"<<g[k]->unit<<endl;
f1<<g[k]->code<<"\t"<<g[k]->name<<"\t"<<g[k]->unitprice
<<"\t"<<g[k]->amount<<"\t"<<g[k]->unit<<endl;
}
cout<<endl;
}
//買入
void Goods::s_buy()
{
float price=0;//單個商品價格
cout<<"請輸入想要買的商品代碼:";
cin>>code;
for(int h=0;h<i;h++)
{
if(0 == strcmp(g[h]->code,code))
{
cout<<"請輸入想要購買的商品數量:";
cin>>amount;//當前要購買的數量
price=amount*g[h]->unitprice;
g[h]->amount=g[h]->amount-amount;
cout<<endl;
cout<<"代碼 名稱 單價 數量 小計"<<endl;
cout<<g[h]->code<<"\t"<<g[h]->name<<"\t"<<g[h]->unitprice
<<"\t"<<g[h]->amount<<g[h]->unit<<"\t"<<price<<endl;
f2<<"代碼 名稱 單價 數量 小計"<<endl;
f2<<g[h]->code<<"\t"<<g[h]->name<<"\t"<<g[h]->unitprice
<<"\t"<<g[h]->amount<<g[h]->unit<<"\t"<<price<<endl;
total=total+price;
break;
}
}
cout<<"按1繼續購買,按2結束。"<<endl;
cin>>n;
if(n==2)
{
cout<<endl;
cout<<"購買結束,總計:"<<total<<"元!"<<endl;
}
else
{
s_buy();
}
}

//類外函數
//第一部分操作顯示
void f_screen()
{
system("cls");
Goods g;
cout<<"按相應鍵操作:"<<endl;
cout<<"0.錄入信息 1.更改信息 2.刪除信息 3.返回上一層"<<endl;
cin>>n;
switch(n)
{
case 0:
g.f_write();
if(ch=='n'||ch=='N')
f_screen();
break;
case 1:
g.f_change();
if(ch=='n'||ch=='N')
f_screen();
break;
case 2:
g.f_delete();
if(ch=='n'||ch=='N')
f_screen();
break;
}
}
//第二部分操作顯示
void s_screen()
{
Goods g;
g.display();
cout<<endl;
g.s_buy();
}
//初始屏幕顯示
void screen()
{
system("cls");
cout<<" "<<endl;
cout<<"-----------------商品銷售統計系統---------------"<<endl;
cout<<" "<<endl;
f2<<" "<<endl;
f2<<"----------------商品銷售統計系統--------------"<<endl;
f2<<" "<<endl;
cout<<"更改商品信息請按1,進行銷售統計請按-1。"<<endl;
cin>>ch;
if(ch=='1')
{
f_screen();
if(n==3)
screen();
}
else if(ch=='-1')
{
s_screen();
}
else
{
cout<<"輸入錯誤,系統重新啟動!";
screen();
}
}
int main()
{
screen();
return 0;
}

『陸』 急求商品進銷存管理(商品銷售管理)C語言程序~大俠幫幫忙~謝謝!

用象過河進銷存軟體,你要的功能都有

『柒』 c語言糧油進銷存系統源代碼

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

//日期結構體
typedef struct
{
int year;
int month;
int day;
}DATE;
//商品結構體
//定義鏈表
typedef struct Node
{
long num;
char name[20];
char kind[20];
DATE pro_date;
int save_day;
int shuliang;
float jinjia;
float shoujia;
DATE sale_date;
struct Node *next;
}Node,*LinkList;
//申請函數
void apply()
{
int i,flag=1;
FILE *fp;
char name[20],key[20];
flushall();
printf("用戶名(不能為空):");
scanf("%s",name);
flushall();
printf("密碼(不能為空):");
for(i=0;i<=20;i++)
{
key[i]=getch();
if(key[i]==13)
{
key[i]='\0';
break;
}
printf("*");
}
fp=fopen("key.txt","w");
if(fp==NULL)
{
printf("the file can not open!");
flag=0;
exit(1);
}
fprintf(fp,"%s %s",name,key);
fclose(fp);
if(flag==1)
printf("\n申請成功,請登錄!\n");
else
printf("\n申請失敗,請重新申請!\n");
}
//登錄函數
int load()
{
FILE *fp;
int i;
char name[20],key[20];
char name1[20],key1[20];
fp=fopen("key.txt","r");
fscanf(fp,"%s %s",name,key);
fclose(fp);
printf("用戶名(不能為空):");
scanf("%s",name1);
flushall();
printf("密碼(不能為空):");
for(i=0;i<=20;i++)
{
key1[i]=getch();
if(key1[i]==13)
{
key1[i]='\0';
break;
}
printf("*");
}
printf("\n");
if(strcmp(name1,name)==0&&strcmp(key1,key)==0)
{ printf("登陸成功!\n\n");return 1; }
else
{ printf("用戶名或密碼錯誤;請重新登錄!"); return 0;}

}
//密碼保護系統
void key()
{
int choice,c;
do
{ printf("\n****************************申請登錄系統********************************\n\n");
printf(" 1: 新用戶注冊; \n\n");
printf(" 2: 新用戶登錄; \n\n");
printf("請選擇:");
scanf("%d",&choice);
switch(choice)
{
case 1: apply(); break;
case 2: c=load();break;
}
}while(c!=1);
}
LinkList goods_input()
{

LinkList L;
Node *p1,*p2;
int i=1;
void file_write(Node *p);
int flag=1;
L=p2=(Node*)malloc(sizeof(Node));//為頭節點分配存儲空間
while(flag)
{
p1=(Node*)malloc(sizeof(Node));
printf("請輸入第%d種商品的信息(商品號為0時,結束商品輸入):\n\n",i++);
flushall();
printf("商品號:");
scanf("%ld",&p1->num);
if(p1->num!=0)
{
flushall();
printf("名稱:");
scanf("%s",&p1->name);
flushall();
printf("類別:");
scanf("%s",&p1->kind);
flushall();
printf("生產日期(年月日用空格隔開):");
scanf("%d%d%d",&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day);
flushall();
printf("保質期:");
scanf("%d",&p1->save_day);
flushall();
printf("商品數量:");
scanf("%d",&p1->shuliang);
flushall();
printf("進價:");
scanf("%f",&p1->jinjia);
flushall();
printf("售價:");
scanf("%f",&p1->shoujia);
flushall();
printf("銷售日期(年月日用空格隔開):");
scanf("%d%d%d",&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);
p2->next=p1;
p2=p1;
}
else
{
flag=0;
break;
}
}
p2->next=NULL;
file_write(L);
free(p1);
return(L);
}
//將商品信息寫入文件
void file_write(Node *p)
{

FILE *fp;
char filename[50];int c;
printf("是否保存?(保存按1;不保存按0):");
scanf("%d",&c);
if(c==1)
{ flushall();
printf("\n為了將你操作的信息保存下來,請輸入要寫入的文件的路經或文件:");
gets(filename);
fp=fopen(filename,"w");
if(fp==NULL)
{
printf("\n this file can not be open!");
exit(1);
}
p=p->next;
while(p!=NULL)
{
fprintf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d\n",p->num,p->name,p->kind,p->pro_date.year,p->pro_date.month,p->pro_date.day,p->save_day,p->shuliang,p->jinjia,p->shoujia,p->sale_date.year,p->sale_date.month,p->sale_date.day);
p=p->next;
}
fclose(fp);
printf("文件保存成功!");
}

}
//將文件中的信息讀出的函數
LinkList file_read()
{
FILE *fp;
LinkList L;
Node *p1,*p2;
char filename[50];
int i,k=0,t=-2;
flushall();
printf("請輸入要讀取的文件的路徑或文件名:");
gets(filename);
flushall();
printf("請輸入商品的種類數:");
scanf("%d",&i);
fp=fopen(filename,"r");
L=p2=(Node*)malloc(sizeof(Node));//為頭節點分配存儲空間
while(t!=EOF&&k<i)
{
p1=(Node*)malloc(sizeof(Node));
t=fscanf(fp,"%ld %s %s %d %d %d %d %d %f %f %d %d %d",&p1->num,p1->name,p1->kind,&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day,&p1->save_day,&p1->shuliang,&p1->jinjia,&p1->shoujia,&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);
p2->next=p1;
p2=p1;
k++;
}
p2->next=NULL;
fclose(fp);
return L;
}
//查找商品信息
void goods_find()
{
long snum;
int flag=0,t;
Node *p0,*p1;
p1=p0=file_read();
while(1)
{
flag=0;
printf("請輸入你要查找的商品信息的商品號:");
scanf("%ld",&snum);
while( p0->next!=NULL)
{
p0=p0->next;
if(p0->num==snum)
{
flag=1;
break;
}
}
if(flag==1)
{ printf("該商品的信息如下:\n\n");
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
}
else
printf("此商品號不存在,查找失敗!\n");
p0=p1;
printf("結束查找按0,繼續查找按1:");
scanf("%d",&t);
if(t==0)
break;
}
}
//修改商品信息
void goods_change()
{
Node *p1,*p0,*p2;
int c,flag=0,t;
long snum;
p2=p0=file_read();
while(1)
{
flag=0;
p1=p0->next;
if(p1==NULL) flag=0;
printf("請輸入你要修改的商品信息的商品號:");
scanf("%ld",&snum);
while(p1!=NULL)
{
if(p1->num==snum)
{
flag=1;
break;
}
p1=p1->next;
}
if(flag==1)
{ printf(" 1:商品號;\n");
printf(" 2:商品名稱;\n");
printf(" 3:商品類別;\n");
printf(" 4:商品生產日期;\n");
printf(" 5:商品保質期;\n");
printf(" 6:商品數量\n");
printf(" 7:商品進價\n");
printf(" 8:商品售價\n");
printf(" 9:商品銷售日期\n");
printf(" 請選擇修改的內容(0~9):");
scanf("%d",&c);
while(1)
{
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==8||c==9)break;
else
{
printf("\n輸入有誤,請重新輸入!\n清選擇(0~9):");
scanf("%d",&c);
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==8||c==9) break;
}
}
switch(c)
{
case 1:
{
printf("\n輸入修改後的商品號:");
scanf("%ld",&p1->num);break;
}
case 2:
{
printf("輸入修改後的商品名:");
scanf("%s",&p1->name);break;
}
case 3:
{
printf("輸入修改後的商品類別:");
scanf("%s",&p1->kind);break;
}
case 4:
{
printf("輸入修改後的商品生產日期(年月日之間用空格隔開):");
scanf("%d%d%d",&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day);break;
}
case 5:
{
printf("輸入修改後的商品保質期:");
scanf("%d",&p1->save_day);break;
}
case 6:
{
printf("輸入修改後的商品數量:");
scanf("%d",&p1->shuliang);break;
}
case 7:
{
printf("輸入修改後的商品進價:");
scanf("%f",&p1->jinjia);break;
}
case 8:
{
printf("輸入修改後的商品售價:");
scanf("%f",&p1->shoujia);break;
}
case 9:
{
printf("輸入修改後的商品銷售日期(年月日之間用空格隔開):");
scanf("%d%d%d",&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);break;
}
}
printf("修改後的商品信息如下:\n\n");
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p1->num,p1->name,p1->kind,p1->pro_date.year,p1->pro_date.month,p1->pro_date.day,p1->save_day,p1->shuliang,p1->jinjia,p1->shoujia,p1->sale_date.year,p1->sale_date.month,p1->sale_date.day);
}
else
printf("此商品號不存在,修改失敗!\n");
p0=p2;
printf("結束修改按0,繼續修改按1:");
scanf("%d",&t);
if(t==0)
break;
}
file_write(p0);
}
//插入商品
void goods_insert()
{
Node *p0,*p1,*p2,*p3;
int k,i,flag,t;
p0=file_read();
while(1)
{
p3=p2=p0;
k=0;
printf("請輸入插入位置i的值(i的值小於商品的種類數):");
scanf("%d",&i);
while(p2!=NULL&&k<i-1)
{
p2=p2->next;
k=k+1;
}
if(k!=i-1) flag=0;
p1=(Node*)malloc(sizeof(Node));
printf("請輸入要插入的商品號 名稱 類別 生產日期 保質期 數量 進價 售價 銷售日期:\n");
scanf("%ld%s%s%d%d%d%d%d%f%f%d%d%d",&p1->num,p1->name,p1->kind,&p1->pro_date.year,&p1->pro_date.month,&p1->pro_date.day,&p1->save_day,&p1->shuliang,&p1->jinjia,&p1->shoujia,&p1->sale_date.year,&p1->sale_date.month,&p1->sale_date.day);
p1->next=p2->next;
p2->next=p1;
flag=1;
if(flag==1)
printf("插入位置合理!\n");
else
printf("插入位置不合理!\n");
printf("結束插入按0,繼續插入按1:");
scanf("%d",&t);
if(t==0)
break;
}
p0=p0->next;
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}
file_write(p3);
}
//刪除商品信息
void goods_delete()
{
long num;
Node *p,*p0,*p1,*p2;
int flag=0,t;
p0=file_read();
while(1)
{
flag=0;
p1=p2=p0;
p=p1->next;
if(p==NULL) flag=0;
printf("請輸入你要刪除的商品的商品號:");
scanf("%ld",&num);
while(p!=NULL)
{
if(p->num==num)
{
p1->next=p->next;
free(p);
flag=1;
break;
}
p1=p;
p=p->next;
flag=0;
}
if(flag==1)
printf("你已正確刪除!\n");
else
printf("你輸入的商品號不存在!\n");
printf("結束刪除按0,繼續刪除按1:");
scanf("%d",&t);
if(t==0)
break;
}
p0=p0->next;
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}

file_write(p2);
}
//商品信息排序
void goods_rank()
{
Node *p,*q,*k,*L,t;
Node *p0;
int flag=0;
L=file_read();
p=L->next;
while(p->next)
{
k=p;
q=p->next;
while(q)
{
if((k->shuliang)>(q->shuliang))
k=q;
q=q->next;
}
if(p!=k)
{
t=*p;
*p=*k;
*k=t;
t.next=p->next;
p->next=k->next;
k->next=t.next;
flag=1;
}
p=p->next;
}
if(flag=1)
printf("按商品數量從小到大排序成功!\n");
else
printf("按商品數量從小到大排序失敗!\n");
p0=L;
p0=p0->next;
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}

file_write(L);
}
//商品信息統計
void goods_tongji()
{
Node *p0,*p1;
int liang_sum=0;
float lirun_sum=0;
p0=p1=file_read();
p0=p0->next;
printf(" 商品信息統計表 \n\n");
printf("商品號\t名稱\t類別\t生產日期\t保質期\t數量\t進價\t售價\t銷售日期\n");
while(p0!=NULL)
{
printf("--------------------------------------------------------------------------------\n");
printf("%ld\t%s\t%s\t%02d-%02d-%02d\t%d\t%d\t%0.2f\t%0.2f\t%02d-%02d-%02d",p0->num,p0->name,p0->kind,p0->pro_date.year,p0->pro_date.month,p0->pro_date.day,p0->save_day,p0->shuliang,p0->jinjia,p0->shoujia,p0->sale_date.year,p0->sale_date.month,p0->sale_date.day);
p0=p0->next;
}
printf("\n");
p1=p1->next;
while(p1!=NULL)
{
liang_sum+=p1->shuliang;
// printf("商品數量:%d\n",p1->shuliang);
lirun_sum+=((p1->shoujia)-(p1->jinjia))*(p1->shuliang);
p1=p1->next;
}
printf("迄今,商店裡還有%d件商品;\n總利潤為%0.2f元;\n",liang_sum,lirun_sum);
if(liang_sum<=200)
printf("注意:商店裡的商品偏少,請適當進貨!\n");
else if(liang_sum>1100)
printf("注意:商店裡積壓的貨物太多,請及時清倉!\n");
else
printf("\n商品總件數大於200件,小於1100件,無需進貨,清倉!\n");
}
main()
{
int c;
key();
do
{
printf("請按任意鍵返回主菜單!");
getch();
system("cls");
printf("\n****************************歡迎進入商場店面管理系統****************************\n\n");
printf(" 1,錄入商品信息;\n");
printf(" 2,查找商品信息;\n");
printf(" 3,修改商品信息;\n");
printf(" 4,插入商品信息;\n");
printf(" 5,刪除商品信息;\n");
printf(" 6,商品信息排序;\n");
printf(" 7,統計商品信息;\n");
printf(" 0,退出系統;\n");
printf(" 請選擇(0~7):");
scanf("%d",&c);
while(1)
{
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0)break;
else
{
printf("\n輸入有誤,請重新輸入!\n清選擇(0~7):");
scanf("%d",&c);
if(c==1||c==2||c==3||c==4||c==5||c==6||c==7||c==0) break;
}
}
switch(c)
{
case 1:goods_input();break;
case 2:goods_find();break;
case 3:goods_change();break;
case 4:goods_insert();break;
case 5:goods_delete();break;
case 6:goods_rank();break;
case 7:goods_tongji();break;
case 0 :break;
}
}while(c!=0);
}

『捌』 數據結構:產品進銷存管理系統的源代碼(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語言編程:商家商品銷售量統計

按照題目要求編寫的商品銷量表的C語言程序如下

#include<stdio.h>

int main(){

int i,sum=0,a[8];

printf("----------商家商品銷售量統計---------- ");

printf("請輸入商品6個月的銷售量:");

for(i=0;i<6;i++){

scanf("%d",&a[i]);

sum=sum+a[i];

}

a[6]=sum;

a[7]=sum/6;

printf(" 商 品 銷 量 表 ");

printf("__________________________________________________________________________ ");

printf(" 1月份 2月份 3月份 4月份 5月份 6月份 總銷量 平均銷量 ");

for(i=0;i<8;i++){

printf(" %d |",a[i]);

}

printf(" ");

printf("__________________________________________________________________________ ");

return 0;

}