本文目錄一覽:
用C語言怎麼統計商品被售出數量啊?分析分析?
定義全局變量count,沒售出一件商品count++;最後就能統計出數量了。
用C語言來編寫:商品銷售統計程序
#includeiostream
#includecstring
#includefstream
#includestdlib.h//system(“cls”)//清屏
#includeconio.h//getche()
using namespace std;
//全局變量
int i=0;//已錄入商品總個數
char ch;//cinch
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;
cincode;
cout”請輸入第”i+1″件商品名稱:”endl;
cinname;
cout”請輸入第”i+1″件商品計量單位:”endl;
cinunit;
cout”請輸入第”i+1″件商品總數:”endl;
cinamount;
cout”請輸入第”i+1″件商品單價:”endl;
cinunitprice;
g[i]=new Goods(code,name,unit,amount,unitprice);
i++;
cout”信息錄入成功!(繼續錄入按y,返回上一層按n)”endl;
cinch;
if(ch==’y’)
{
f_write();
}
}
//改變商品信息
void Goods::f_change()
{
cout”請輸入要改變的商品代碼:”;
cincode;
for(int h=0;hi;h++)
{
if(0 == strcmp(g[h]-code,code))
{
cout”商品信息如下:”endl;
cout”代碼 名稱 單價 總數 單位”endl;
coutg[h]-code”\t”g[h]-name”\t”g[h]-unitprice
“\t”g[h]-amount”\t”g[h]-unitendl;
char newco,newna,newun;
int newam;
float newunpr;
cout”你想要修改:1、代碼;2、名稱;3、單價;4、總數;5、單位。”endl;
cinn;
switch(n)
{
case 1:
cout”請輸入修改後的商品代碼:”;
cinnewco;
g[h]-code[10]=newco;
cout”修改成功!”endl;
break;
case 2:
cout”請輸入修改後的商品名稱:”;
cinnewna;
g[h]-name[10]=newna;
cout”修改成功!”endl;
break;
case 3:
cout”請輸入商品單價:”;
cinnewunpr;
g[h]-unitprice=newunpr;
cout”修改成功!”endl;
break;
case 4:
cout”請輸入修改後的商品總數:”;
cinnewam;
g[h]-amount=newam;
cout”修改成功!”endl;
break;
case 5:
cout”請輸入修改後的商品單位:”;
cinnewun;
g[h]-unit[10]=newun;
cout”修改成功!”endl;
break;
}
break;
}//if
}//for循環
cout”是否繼續修改?(y/n)”endl;
cinch;
if(ch==’y’)
{
f_change();
}
}
//刪除信息
void Goods::f_delete()
{
cout”請輸入要刪除的商品代碼:”;
cincode;
for(int h=0;hi;h++)
{
if(0 == strcmp(g[h]-code,code))
{
for(int k=h;ki;k++)
{
g[k]=g[k+1];
i–;
}
}
}
cout”刪除成功!”endl;
cout”是否繼續刪除?(y/n)”endl;
cinch;
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;ki;k++)
{
coutg[k]-code”\t”g[k]-name”\t”g[k]-unitprice
“\t”g[k]-amount”\t”g[k]-unitendl;
f1g[k]-code”\t”g[k]-name”\t”g[k]-unitprice
“\t”g[k]-amount”\t”g[k]-unitendl;
}
coutendl;
}
//買入
void Goods::s_buy()
{
float price=0;//單個商品價格
cout”請輸入想要買的商品代碼:”;
cincode;
for(int h=0;hi;h++)
{
if(0 == strcmp(g[h]-code,code))
{
cout”請輸入想要購買的商品數量:”;
cinamount;//當前要購買的數量
price=amount*g[h]-unitprice;
g[h]-amount=g[h]-amount-amount;
coutendl;
cout”代碼 名稱 單價 數量 小計”endl;
coutg[h]-code”\t”g[h]-name”\t”g[h]-unitprice
“\t”g[h]-amountg[h]-unit”\t”priceendl;
f2″代碼 名稱 單價 數量 小計”endl;
f2g[h]-code”\t”g[h]-name”\t”g[h]-unitprice
“\t”g[h]-amountg[h]-unit”\t”priceendl;
total=total+price;
break;
}
}
cout”按1繼續購買,按2結束。”endl;
cinn;
if(n==2)
{
coutendl;
cout”購買結束,總計:”total”元!”endl;
}
else
{
s_buy();
}
}
//類外函數
//第一部分操作顯示
void f_screen()
{
system(“cls”);
Goods g;
cout”按相應鍵操作:”endl;
cout”0.錄入信息 1.更改信息 2.刪除信息 3.返回上一層”endl;
cinn;
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();
coutendl;
g.s_buy();
}
//初始屏幕顯示
void screen()
{
system(“cls”);
cout” “endl;
cout”—————–商品銷售統計系統—————“endl;
cout” “endl;
f2″ “endl;
f2″—————-商品銷售統計系統————–“endl;
f2″ “endl;
cout”更改商品信息請按1,進行銷售統計請按-1。”endl;
cinch;
if(ch==’1′)
{
f_screen();
if(n==3)
screen();
}
else if(ch==’-1′)
{
s_screen();
}
else
{
cout”輸入錯誤,系統重新啟動!”;
screen();
}
}
int main()
{
screen();
return 0;
}
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(in)
{
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=0danjia=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 ; in ; 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;iN;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 ; jn-1 ; j++) /*冒泡排序*/
for(i=0 ; in-j-1 ; i++)
if(com[i].pricecom[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 ; in ; 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 ; jn-1 ; j++)
for(i=0 ; in-j-1 ; i++)
if(com[i].numcom[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 ; in ; 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(im)
{
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=0danjia=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;in-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;in;i++)
{
if(com[i].pricehigh)
{
high = com[i].price;
g=i;
}
if(com[i].pricelow)
{
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 ; in ; 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(in)
{
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=0danjia=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 ; in ; 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;iN;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 ; jn-1 ; j++) /*冒泡排序*/
for(i=0 ; in-j-1 ; i++)
if(com[i].pricecom[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 ; in ; 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 ; jn-1 ; j++)
for(i=0 ; in-j-1 ; i++)
if(com[i].numcom[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 ; in ; 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(im)
{
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=0danjia=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;in-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;in;i++)
{
if(com[i].pricehigh)
{
high = com[i].price;
g=i;
}
if(com[i].pricelow)
{
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 ; in ; 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);
} /*結束統計*/
}
原創文章,作者:AYIS,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/142491.html