當前位置:編程學習大全網 - 編程語言 - 誰會C語言編程啊150—200行 急用啊 !!!最好是自己寫的!!

誰會C語言編程啊150—200行 急用啊 !!!最好是自己寫的!!

//自己寫的,雖然不好,誠心可貴,哈哈

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

#define N 20

int j,p;

int count=0;//全局變量

void view();//瀏覽函數

void add();//添加函數

void change();//更改函數

void find();//查找函數

void del();//刪除函數

void save();//保存函數

void read();//讀取函數

void goon();//繼續操作函數

void tc();//退出

struct ck

{

int bh; //定義倉庫編號

char name[20]; //定義倉庫名稱

int kc; //定義倉庫庫存量

int price; //定義貨品單價

}ckmas[N];

void main()

{

char opt;

printf("要讀取以前的記錄嗎?(y/n)\n");

scanf(" %c",&opt);

if(opt == 'y' || opt == 'Y')

read();

int p; //定義操作

printf("\tΨ*******************************************************Ψ\n");

printf("\tΨΨ1.瀏覽貨品信息 2.添加貨品 3.更改貨品信息ΨΨ*\n");

printf("\tΨΨ4.查找貨品信息 5.刪除貨品信息 6.退出 ΨΨ*\n");

printf("\tΨ*******************************************************Ψ\n");

printf("\t\t\t!!!歡迎進入倉庫管理系統!!!\n\n");

printf("\n");

printf("請輸入您想選擇的操作1-6:");

scanf("%d",&p); //輸入選擇的操作

switch(p) //條件語句

{

case 1:view();break;

case 2:add();break;

case 3:change();break;

case 4:find();break;

case 5:del();break;

case 6:tc();

}

};

/*-----------------------------瀏覽貨品信息------------------------*/

void view()

{

int i;

printf("編號\t名稱\t庫存\t單價\n");

for(i=0;i<count;i++)

printf("%d\t%s\t%d\t%d\n",ckmas[i].bh,ckmas[i].name,ckmas[i].kc,ckmas[i].price);

goon();//提醒用戶是否繼續操作

}

/*-----------------------------添加貨品信息------------------------*/

void add()

{

int i,addnum;

printf("\t\t妳想增加多少條記錄?\n");//問用戶添加幾條記錄

scanf("%d",&addnum);

printf("編號 名稱 庫存 單價\n");

for(i=count;i<count+addnum;i++)

scanf("%d %s %d %d",&ckmas[i].bh,ckmas[i].name,&ckmas[i].kc,&ckmas[i].price);//錄入添加的貨品信息

printf("\t\t妳添加了%d條記錄,總***有%d條記錄\n",addnum,count+addnum);

count=count+addnum;//儲存記錄條數

save();//儲存數據

goon();//提醒用戶是否繼續操作

}

/*----------------------------更改貨品信息------------------------*/

void change ()

{

int num,i,count1;

printf("\t\t請您輸入您要更改貨品信息的編號:\n");

scanf("\t\t%d",&num);

for(i=0;i<count;i++)//查找出更改貨品的信息

if(num==ckmas[i].bh)

{ printf("\t\t您要更改的貨品信息如下:\n");

printf("編號 名稱 庫存 單價\n");

printf("%d\t%s\t%d\t%d\n",ckmas[i].bh,ckmas[i].name,ckmas[i].kc,ckmas[i].price);

i++;

break;

}

count1=(i++)-1;//記錄要更改的是第幾個記錄

printf("\n");

printf("\t\t請重新輸入信息:\n");

printf("編號 名稱 庫存 單價\n");

scanf("%d%s%d%d",&ckmas[i].bh,ckmas[i].name,&ckmas[i].kc,&ckmas[i].price);//錄入添加的貨品信息

save();//儲存數據

goon();//提醒用戶是否繼續操作

}

/*----------------------------查找貨品信息------------------------*/

void find()

{

int i,a,num;

char b[20];

printf("1.按編號查找\t\t2.按名稱查找\n");

scanf("%d",&a);

if(a==1)

{

printf("\t\t請您輸入您要查找的貨品編號:\n");

scanf("\t\t%d",&num);

for(i=0;i<count;i++)//查找出更改貨品的信息

if(num==ckmas[i].bh)

{ printf("\t\t您要更改的貨品信息如下:\n");

printf("編號 名稱 庫存 單價\n");

printf("%d\t%s\t%d\t%d\n",ckmas[i].bh,ckmas[i].name,ckmas[i].kc,ckmas[i].price);

i++;

break;

}

}

else

{

printf("請輸入您想查找的貨品名稱:");

scanf("%s",b);

for(i=0;i<count;i++)

if(strcmp(b,ckmas[i].name)==0)

{

printf("編號 名稱 庫存 單價\n");

printf("%d\t%s\t%d\t%d\n",ckmas[i].bh,ckmas[i].name,ckmas[i].kc,ckmas[i].price);

break;

}

else if(strcmp(b,ckmas[i].name)!=0)

printf("對不起,查無此記錄!!!");

}

save();//儲存數據

goon();//提醒用戶是否繼續操作

}

/*--------------------------------刪除貨品信息結構體-----------------------*/

void del()

{

int i,j,delnum;

int count2=count;//將原先的記錄數保存下來,以便後面做比較以判斷是否做了刪除

char ch1,ch2;

do{

printf("\t\t請輸入妳想刪除的貨品編號:\n");

scanf("\t\t%d",&delnum);

for(i=0;i<count;i++)//查找

if(ckmas[i].bh==delnum)

{

for(j=i;j<count;j++)

ckmas[j]=ckmas[j+1];//將後面的元素覆蓋前面的元素,並且

count--; // 數組長度減壹

break;

}

if(count==count2)//當沒有刪除時,現在的記錄數與原先的記錄數相等,count是自減後的記錄數,count2是原來的記錄數

{

printf("\t\t對不起!您的操作不成功!\n");

}

printf("\t\t還要繼續刪除嗎?(Y/N)\n");

scanf(" \t\t%c",&ch1);

}while(ch1=='Y'||ch1=='y');

if(count!=count2)//自減後的記錄數與原來的記錄數不等,說明刪除成功,保存數據

{ printf("\t\t是否要保存所做的刪除操作?(Y/N)\n");

scanf(" \t\t%c",&ch2);

if(ch2=='y'||ch2=='Y')

save();

}

goon();//提醒用戶是否繼續操作

}

/*------------------------------------保存信息操作-------------------------------------*/

void save()

{

FILE *fp;//定義壹個文件指針

fp=fopen("ck.txt","w");//以覆蓋寫的方式打開"ck.txt"文件,並把指針指向它

if(fp==NULL)//如果指針返回壹個空值

printf("文件保存失敗!\n");//打印壹條錯誤提示

else//否則

{

for(int i=0;i<count;i++)//循環

fwrite(&ckmas[i],sizeof(ck),1,fp);//向"ck.txt"寫入信息,每次壹條

printf("文件保存成功!\n");//給出執行成功提示信息

}

fclose(fp);//關閉文件

}

/*----------------------------------讀取文件操作-------------------------------------*/

void read()

{

FILE *fp;//定義壹個文件指針

fp=fopen("ck.txt","r");//以只讀的方式打開"ck.txt"文件,並把指針指向它

if(fp==NULL)//如果指針返回壹個空值

printf("文件讀取失敗!\n");//打印壹條錯誤提示

else//否則

{

count=0;//將信息條數設置為0,下面的讀取工作將會覆蓋原先記錄

for(int i=0;;i++,count++)//循環

if(fread(&ckmas[count],sizeof(ck),1,fp)==NULL)//從"ck.txt"中讀取信息,每次壹條,如果fread()函數返回空值

break;//則退出循環

printf("文件讀取成功!\n");//給出執行成功提示信息

}

fclose(fp);//關閉文件

}

/*----------------------------------控制主循環操作-----------------------------------*/

void goon()//判斷是否繼續操作函數

{

char a;

printf("是否繼續操作(Y or N):");

scanf(" %c",&a);

if(a=='Y'||a=='y')

main();

else if(a=='N'||a=='n')

tc();

}

void tc()

{

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

printf("\t\t\t!!!!謝謝您使用本系統!!!!\n");

printf("\t\t\t!!!!歡迎下次繼續使用!!!!\n");

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

exit(0);

}

  • 上一篇:嵌入式軟件工程師是青春飯嗎?壹般能幹到多少歲?
  • 下一篇:鎂合金零件的機械加工與安全是什麽#數控機床
  • copyright 2024編程學習大全網