當前位置:首頁 » 編程語言 » 食堂自動化管理系統C語言程序設計
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

食堂自動化管理系統C語言程序設計

發布時間: 2022-12-26 02:52:38

1. 食堂就餐餐費管理系統C語言編程

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<malloc.h>
typedef struct node1
{

char name[10];
int xuehao;
char nianling[10];
char xingbie[10];
char xueyuan[10];
int chanfei;
node1 *next;
}lnode1,*linklist1;
typedef struct node2
{
char mingcheng[10];
int jiage;
node2 *next;
}lnode2,*linklist2;
void luru(linklist1 h,linklist2 k)
{

int i,j;
i=1;j=1;
lnode1 *a;
lnode2 *b;

while(i!=0)
{

a=(linklist1)malloc(sizeof(lnode1));

printf("請輸入學號:");
scanf("%d",&a->xuehao);
fflush(stdin);
printf("請輸入姓名:");
gets(a->name);
fflush(stdin);
printf("請輸入年齡:");
gets(a->nianling);
fflush(stdin);
printf("請輸入性別:");
gets(a->xingbie);
fflush(stdin);
printf("請輸入學院:");
gets(a->xueyuan);
printf("請輸入已消費的餐費:");
scanf("%d",&a->chanfei);
a->next=h->next;
h->next=a;

printf("是否繼續 1 繼續 0 停止\n");
scanf("%d",&i);

}

while(j!=0)
{
b=(linklist2)malloc(sizeof(lnode2));

printf("請輸入餐名:");
fflush(stdin);
gets(b->mingcheng);
fflush(stdin);
printf("請輸入餐價:");
scanf("%d",&b->jiage);
b->next=k->next;
k->next=b;

printf("是否繼續 1 繼續 0 停止\n");
scanf("%d",&j);

}
}
void put(linklist1 h)
{
linklist1 a;
a=h->next;

while(a!=NULL)
{
printf("%d",a->xuehao);
a=a->next;
}
}

void jiuchan(linklist1 h,linklist2 k)
{ char a[10];int b,d=1,c=1;
printf("你要買什麼:");
scanf("%s",a);
lnode1 *p ;
lnode2 *q;
p=h->next;

q=k->next;

while(q!=NULL&&d==1)
{printf("hao1");
if(strcmp(a,q->mingcheng)!=0)
q=q->next;
else
{
printf("請輸入你的學號:");
scanf("%d",&b);
while(p!=NULL&&c==1)
{
if (p->xuehao!=b)

p=p->next;

else
{
printf("共花費%d元\n",q->jiage);
p->chanfei=p->chanfei+q->jiage;
c=0;

}

}printf("若沒有結果,則你的學號有誤\n");
d=0;

}

}
printf("你輸入的飯菜我們沒有呀\n");
}
void chaxun(linklist1 h)
{
int i,d=1;
printf("請輸入你要查尋得學號:\n");
scanf("%d",&i);
lnode1 *p;
p=h->next;
while(p!=NULL&&d==1)
{printf("hao1");
if (p->xuehao!=i)
{

p=p->next;
}
else
{
printf("hao1");
printf("本月以消費 %d\n",p->chanfei);
d=0;

}
}

printf("若沒有結果,則你的學號有誤\n");

}

void main()
{
int i;
linklist1 h;linklist2 k;
h=(linklist1)malloc(sizeof(lnode1));h->next=NULL;
k=(linklist2)malloc(sizeof(lnode2));k->next=NULL;
for(i=0;i<100;i++)
{

printf("歡迎來到本食堂就餐:\n");
printf("請輸入你的命令:\n");
printf("************1************錄入信息\n");
printf("************2************付費\n");
printf("************3************查詢\n");
scanf("%d",&i);
switch(i)
{
case 1:printf("請輸入學生和食譜信息:\n");
luru( h, k);
put(h);
printf("hao");
break;
case 2:printf("進入就餐系統\n");
jiuchan(h,k);break;
case 3:printf("歡迎進入餐費查詢系統:\n");
chaxun(h);break;

}
}

}

沒問題 我就不注釋了 花了30分鍾啊

2. 用C語言為學校食堂做一個點菜系統,當用戶選擇自己喜歡的菜,所消費的錢就能顯示出來。 菜譜封面如下:

#include <stdio.h>
void main()
{
int a[4],i,j,m;
char t;
printf(」********************************* \n1.紅燒肉5.0元2.炸雞翅3.0元\n3.炒芹菜2.0元4.五香蛋1.0元\n5.退出\n********************************\n\n」);
printf(「請輸入您點的菜\n」);
for(i=0;i<=3;i++)
{ scanf(「%d」,&a[i]);j=i;
if(i<=2)
{ printf(「是否繼續點菜\n回復Y OR N\n」);
scanf(「%c」,&t);
if(t==Y)
continue;
else if(t==N){j=i;break;}
else {printf(「error,自動結算\n」);j=i;break;}}
}
for(i=0,m=0;i<=j;i++)
m=m+a[i];
printf(「總金額%d\n」,m);
}
//手機編寫,錯誤難免,問題不大,多多包含

3. C語言程序設計

這個也不是很全,但是大體功能有了,你改進一下嘛,我運行過的可以!
希望對你有所幫助!

#include <stdio.h>
#include <stdlib.h>
#define SIZE 10 /*定義常量SIZE便於以後的修改*/
struct student /*定義一個結構體數組存放學生的信息*/
{
int number; /*學號*/
char name[20];/*名字*/
float score[3];/*分數*/
float average;/*平均分*/
}stu[SIZE];

void menu();/*調用菜單函數*/
void write();/*讀入信息*/
void save();/*保存stud.dat文件函數*/
void open();/*檢查是否正確保存*/
void inturn (struct student c[]);/*用於對學生的信息按平均分排序的函數*/
void save2();/*將排序後的信息存入studsort.dat文件中*/
void read();/*讀取studsort.dat文件文件中第2 4 6 8 10個學生的信息*/

void main()
{

int choice;/*用戶選擇變數*/

printf("*******************************************************************************\n");
printf("* *\n");
printf("* Hwadee &學生成績文件管理& Hwadee *\n");
printf("* *\n");
printf("*******************************************************************************\n\n\n");
printf("******************************●●歡迎使用●●*********************************");

system("pause");

while (1)
{
menu();/*調用菜單函數形成操作界面*/

printf("請選擇:\t");
scanf("%d", &choice);

if ( choice == 0 )
{
system("cls");
printf("\n\n\t\t\t\t謝謝使用!!!\n\n\t\t\t\t\t\t\t\t指導老師: 梁凱\n\n\t\t\t\t\t\t\t\t 學生:萬超\n");
break;
}

switch(choice) /*多重選擇實現功能不同的功能*/
{

case 1:

write();
break;

case 2:

system("cls");
save();
break;

case 3:

system("pause");
system("cls");
open();
break;

case 4:

system("cls");
printf("排序前的學生信息:\n");
open();
inturn(stu);
save2();
break;

case 5:

system("cls");
read();
break;

default:

printf("\n無此項功能!\n請重新輸入\n");

}

}

}

void menu()
{
printf("\n1*****輸入學生信息\t\t2*****將信息存入文件stud.dat中\n");
printf("3*****檢查文件數據\t\t4*****將學生信息排序並存入文件studsort.dat中\n");
printf("5*****讀取文件studsort.dat中的第 2 4 6 8 10個學生的信息\n");
printf("0*****退出系統\n\n\n");
}
/**********************************************************************\
函數名稱:
write
功能描述:
完成將學生信息寫入
函數參數:
i stu
返回值:

模塊歷史:
\*********************************************************************/
void write()
{
int i;/*計數變數*/
stu[i].average = 0;/*初始化結構體成員 average*/

printf("請你輸入學生的信息\n");
printf("學號\t姓名\t語文\t數學\t英語\t\n");
for (i=0; i<SIZE;i++)
{
scanf("%d\t",&stu[i].number);

if (stu[i].number == 0)/*不需輸入信息時輸入0即可*/
break;

scanf("%s\t%f\t%f\t%f",&stu[i].name, &stu[i].score[0], &stu[i].score[1], &stu[i].score[2]);

stu[i].average = (stu[i].score[0]+stu[i].score[1]+stu[i].score[2])/3;/*計算平均成績*/

}
}

/**********************************************************************\
函數名稱:
save
功能描述:
將寫入的信息讀入文件中
函數參數:
FILE *fp i
返回值:

模塊歷史:

\*********************************************************************/
void save()
{
FILE *fp;/*定義文件指針用於向文件讀入數據*/
int i;
if ((fp=fopen("stud.dat","wb")) == NULL)
{
printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i],sizeof(struct student),1,fp) != 1)
printf("file write error\n");
fclose(fp);
printf("\n信息保存成功!恭喜!!\n\n");
}
/**********************************************************************\
函數名稱:
open
功能描述:
用於檢查讀入文件的數據是否正確
函數參數:
FILE *cp i
返回值:

模塊歷史:
\*********************************************************************/

void open()
{
int i;
FILE *cp;
cp = fopen ("stud.dat","rb");
printf("保存在stud.dat文件中的信息:\n\n");
printf("學號\t姓名\t數學\t語文\t英語\t平均分\n\n");
for (i=0;i<SIZE;i++)
{
fread(&stu[i],sizeof(struct student),1,cp);
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}
fclose (cp);
}
/**********************************************************************\
函數名稱:
inturn
功能描述:
用於對結構體數組中的元素排序
函數參數:
into i,j,k
struct student temp
返回值:

模塊歷史:
\*********************************************************************/

void inturn(struct student m[])
{
int i,j,k;/*計數變數*/
struct student temp;/*中間變數 類型為結構體*/
for(i=0; i<SIZE-1; i++) /*運用冒泡排序對結構體數組進行排序*/

for (j=i+1; j<SIZE; j++)
{

if( m[i].average < m[j].average )
{
temp = m[i];
m[i] = m[j];
m[j] = temp;
}
}
printf("\n排序後的學生信息:\n\n");
printf(" 學號\t姓名\t數學\t語文\t英語\t平均分\n");
for (i=0; i<SIZE; i++)
{
printf("第%d名 %d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n\n\n",i+1, stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}/*輸出排序後的學生信息*/

}
/**********************************************************************\
函數名稱:
save2
功能描述:
將排序後的學生信息讀入到另外的文件中
函數參數:
FILE *mp
i
返回值:

模塊歷史:
\*********************************************************************/

void save2()
{
FILE *mp;
int i;
if ((mp=fopen("studsort.dat","wb"))==NULL)
{
printf("cannot open file\n");
return;
}
for (i=0;i<SIZE;i++)
if (fwrite(&stu[i], sizeof(struct student), 1, mp) != 1)
printf("file write error\n");
fclose(mp);/*讀取完畢關閉文件*/
}
/**********************************************************************\
函數名稱:
read
功能描述:
讀出另外文件中的信息
函數參數:
FILE *tp
i
返回值:

模塊歷史:
\*********************************************************************/

void read()
{
int i=1;
FILE *tp;
tp = fopen ("studsort.dat", "rb" );
printf("studsort.dat文件中偶數號碼學生的信息如下:\n\n");
printf("學號\t姓名\t數學\t語文\t英語\t平均分\n\n");
for (i = 1;i<SIZE;i += 2)
{
fseek(tp,i*sizeof(struct student),0);/*fseek函數可以根據用戶所需對文件開頭的偏移量來讀取文件的數據。

k*sizeof(struct student)是指將位置指針移到當前位置k個位元組處*/
fread(&stu[i],sizeof(struct student),1,tp);
/*注意:必須使用fseek函數定位後才能根據自己所需讀出數據,但是只用fseek函數不用fread,

只是把數據列印到屏幕上而並沒有從文件中讀取。這是一個常見性問題*/
printf("%d\t%s\t%.1f\t%.1f\t%.1f\t%.1f\n", stu[i].number, stu[i].name, stu[i].score[0], stu[i].score[1], stu[i].score[2], stu[i].average );
}
fclose (tp);/*讀取完畢關閉文件*/
}

4. 用C語言程序編寫一個超市商品管理系統設計

有償幫你寫

5. C語言課程設計之公司員工信息管理系統怎麼做

1、員工信息管理系統是事業單位科學、全面、高效進行人事管理的系統,參考大量中國人力資源管理理論,根植於國內管理的實際情況,實用而科學。內容包括機構的建立和維護,人員信息的錄入和輸出,工資的調整和發放以及各類報表的繪制和輸出等功能。在操作上集輸入、維護、查詢、統計、列印、輸出等處理為一體,簡便靈活,自動化功能強大。


2、常式:

#include<stdio.h>
#include<windows.h>
#include<time.h>
#include<string.h>
#defineN100
structemployee
{
intnum;
charname[10];
charsex;
intage;
charxueli[30];
intwage;
charaddr[30];
longinttel;
}em[100];/*定義一個結構體*/
voidmenu();
voidinput();
voidsave(int);
voiddisplay();
voiddel();
voidadd();
voidsearch();
voidsearch_num();
voidsearch_xueli();
voidsearch_tel();
voidmodify();/*定義各函數*/
voidmenu()/*菜單函數*/
{
printf("☆☆☆計算機科學與技術學系☆☆☆ ");
printf(" ");
printf("∮08802班關麗霞∮ ");
printf(" ");
printf("******************職工信息管理**************** ");
printf("1.錄入職工信息");
printf("2.瀏覽職工信息 ");
printf("3.查詢職工信息");
printf("4.刪除職工信息 ");
printf("5.添加職工信息");
printf("6.修改職工信息 ");
printf("7.退出 ");
printf("********************謝謝使用****************** ");
printf(" ");
printf(" ");

}
voidmain()
{
menu();/*調用菜單函數*/
intn,flag;
chara;
do
{
printf("請選擇你需要操作的步驟(1--7): ");
scanf("%d",&n);
if(n>=1&&n<=7)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}
while(flag==0);
while(flag==1)
{
switch(n)
{
case1:printf("◆◆◆輸入職工信息◆◆◆ ");printf(" ");input();break;
case2:printf("◆◆◆瀏覽職工信息◆◆◆ ");printf(" ");display();break;
case3:printf("◆◆◆按職工號查詢職工信息◆◆◆ ");printf(" ");search();break;
case4:printf("◆◆◆刪除職工信息◆◆◆ ");printf(" ");del();break;
case5:printf("◆◆◆添加職工信息◆◆◆ ");printf(" ");add();break;
case6:printf("◆◆◆修改職工信息◆◆◆ ");printf(" ");modify();break;
case7:exit(0);break;
default:break;
}
getchar();
printf(" ");
printf("是否繼續進行(yorn): ");
scanf("%c",&a);
if(a=='y')
{
flag=1;
system("cls");/*清屏*/
menu();/*調用菜單函數*/
printf("請再次選擇你需要操作的步驟(1--6): ");
scanf("%d",&n);
printf(" ");
}

else
exit(0);
}

}
voidinput()/*錄入函數*/
{
inti,m;
printf("請輸入需要創建信息的職工人數(1--100): ");
scanf("%d",&m);
for(i=0;i<m;i++)
{
printf("職工號:");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d",em[i].num);
printf(" ");
printf("請輸入姓名:");
scanf("%s",em[i].name);
getchar();
printf("請輸入性別(f--女m--男):");
scanf("%c",&em[i].sex);
printf("請輸入年齡:");
scanf("%d",&em[i].age);
printf("請輸入學歷:");
scanf("%s",em[i].xueli);
printf("請輸入工資:");
scanf("%d",&em[i].wage);
printf("請輸入住址:");
scanf("%s",em[i].addr);
printf("請輸入電話:");
scanf("%d",&em[i].tel);
printf(" ");

}
printf(" 創建完畢! ");
save(m);
}
voidsave(intm)/*保存文件函數*/
{
inti;
FILE*fp;
if((fp=fopen("employee_list","wb"))==NULL)/*創建文件並判斷是否能打開*/
{
printf("cannotopenfile ");
exit(0);
}
for(i=0;i<m;i++)/*將內存中職工的信息輸出到磁碟文件中去*/
if(fwrite(&em[i],sizeof(structemployee),1,fp)!=1)
printf("filewriteerror ");
fclose(fp);
}
intload()/*導入函數*/
{
FILE*fp;
inti=0;
if((fp=fopen("employee_list","rb"))==NULL)
{
printf("cannotopenfile ");
exit(0);
}
else
{
do
{
fread(&em[i],sizeof(structemployee),1,fp);
i++;
}
while(feof(fp)==0);
}
fclose(fp);
return(i-1);
}
voiddisplay()/*瀏覽函數*/
{
inti;
intm=load();
printf(" 職工號 姓名 性別 年齡 學歷 工資 住址 電話 ");
for(i=0;i<m;i++)/*m為輸入部分的職工人數*/
printf(" %d %s %c %d %s %d %s %ld ",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
}
voiddel()/*刪除函數*/
{

intm=load();
inti,j,n,t,flag;
charname[20];
printf(" 原來的職工信息: ");
display();/*調用瀏覽函數*/
printf(" ");
printf("請輸入要刪除的職工的姓名: ");
scanf("%s",name);
for(flag=1,i=0;flag&&i<m;i++)
{
if(strcmp(em[i].name,name)==0)
{
printf(" 已找到此人,原始記錄為: ");
printf(" 職工號 姓名 性別 年齡 學歷 工資 住址 電話 ");
printf(" %d %s %c %d %s %d %s %ld ",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
printf(" 確實要刪除此人信息請按1,不刪除請按0 ");
scanf("%d",&n);
if(n==1)/*如果刪除,則其他的信息都往上移一行*/
{
for(j=i;j<m-1;j++)
{
strcpy(em[j].name,em[j+1].name);
em[j].num=em[j+1].num;
em[j].sex=em[j+1].sex;
em[j].age=em[j+1].age;
strcpy(em[j].xueli,em[j+1].xueli);
em[j].wage=em[j+1].wage;
strcpy(em[j].addr,em[j+1].addr);
em[j].tel=em[j+1].tel;
}
flag=0;
}
}
}
if(!flag)
m=m-1;
else
printf(" 對不起,查無此人! ");
printf(" 瀏覽刪除後的所有職工信息: ");
save(m);/*調用保存函數*/
display();/*調用瀏覽函數*/
printf(" 繼續刪除請按1,不再刪除請按0 ");
scanf("%d",&t);
switch(t)
{
case1:del();break;
case0:break;
default:break;
}
}
voidadd()/*添加函數*/
{
FILE*fp;
intn;
intcount=0;
inti;
intm=load();
printf(" 原來的職工信息: ");
display();/*調用瀏覽函數*/
printf(" ");
fp=fopen("emploee_list","a");
printf("請輸入想增加的職工數: ");
scanf("%d",&n);
for(i=m;i<(m+n);i++)
{
printf(" 請輸入新增加職工的信息: ");
printf("請輸入職工號:");
srand((int)time(0));
em[i].num=rand()%10000+20000000;
if(em[i].num!=em[i-1].num)
printf("%8d",em[i].num);
printf(" ");
printf("請輸入姓名:");
scanf("%s",em[i].name);
getchar();
printf("請輸入性別(f--女m--男):");
scanf("%c",&em[i].sex);
printf("請輸入年齡:");
scanf("%d",&em[i].age);
printf("請輸入學歷:");
scanf("%s",em[i].xueli);
printf("請輸入工資:");
scanf("%d",&em[i].wage);
printf("請輸入住址:");
scanf("%s",em[i].addr);
printf("請輸入電話:");
scanf("%d",&em[i].tel);
printf(" ");
count=count+1;
printf("已增加的人數: ");
printf("%d ",count);
}
printf(" 添加完畢! ");
m=m+count;
printf(" 瀏覽增加後的所有職工信息: ");
printf(" ");
save(m);
display();
fclose(fp);
}
voidsearch()/*查詢函數*/
{
intt,flag;
do
{
printf(" 按職工號查詢請按1;按學歷查詢請按2;按電話號碼查詢請按3,進入主函數按4 ");
scanf("%d",&t);
if(t>=1&&t<=4)
{
flag=1;
break;
}
else
{
flag=0;
printf("您輸入有誤,請重新選擇!");
}
}
while(flag==0);
while(flag==1)
{
switch(t)
{
case1:printf("按職工號查詢 ");search_num();break;
case2:printf("按學歷查詢 ");search_xueli();break;
case3:printf("按電話號碼查詢 ");search_tel();break;
case4:main();break;
default:break;
}

}
}
voidsearch_num()
{
intnum;
inti,t;
intm=load();
printf("請輸入要查找的職工號(20001111---20009999): ");
scanf("%d",&num);
for(i=0;i<m;i++)
if(num==em[i].num)
{
printf(" 已找到此人,其記錄為: ");
printf(" 職工號 姓名 性別 年齡 學歷 工資 住址 電話 ");
printf(" %d %s %c %d %s %d %s %ld ",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
break;
}
if(i==m)
printf(" 對不起,查無此人 ");
printf(" ");
printf("返回查詢函數請按1,繼續查詢職工號請按2 ");
scanf("%d",&t);
switch(t)
{
case1:search();break;
case2:break;
default:break;
}
}
voidsearch_xueli()
{
charxueli[30];
inti,t;
intm=load();
printf("請輸入要查找的學歷: ");
scanf("%s",xueli);
for(i=0;i<m;i++)
if(strcmp(em[i].xueli,xueli)==0)
{
printf(" 已找到,其記錄為: ");
printf(" 職工號 姓名 性別 年齡 學歷 工資 住址 電話 ");
printf(" %d %s %c %d %s %d %s %ld ",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);

}
if(i==m)
printf(" 對不起,查無此人 ");
printf(" ");
printf("返回查詢函數請按1,繼續查詢學歷請按2 ");
scanf("%d",&t);
switch(t)
{
case1:search();break;
case2:break;
default:break;
}

}
voidsearch_tel()
{
longinttel;
inti,t;
intm=load();
printf("請輸入要查找的電話號碼: ");
scanf("%ld",&tel);
for(i=0;i<m;i++)
if(tel==em[i].tel)
{
printf(" 已找到此人,其記錄為: ");
printf(" 職工號 姓名 性別 年齡 學歷 工資 住址 電話 ");
printf(" %d %s %c %d %s %d %s %ld ",em[i].num,em[i].name,em[i].sex,em[i].age,em[i].xueli,em[i].wage,em[i].addr,em[i].tel);
break;
}
if(i==m)
printf(" 對不起,查無此人 ");
printf(" ");
printf("返回查詢函數請按1,繼續查詢電話號碼請按2 ");
scanf("%d",&t);
switch(t)
{
case1:search();break;
case2:break;
default:break;
}

}

6. 200分求救!C語言飯卡管理系統代碼!

花半小時簡單的寫了一下,你看看行不行.
最開始運行程序的時候,要先建立文件,就是要選菜單1.
#include <stdio.h>
struct Card
{
int ID; //卡號
char name[20];
double value; //金額
int flag; //掛失信息
}
card[1000]; //假設最多1000張
int counts; //當前已有飯卡數量
FILE * fp;

int menu()
{
int choose;
printf("|-------------------------------|\n");
printf("| 請輸入選項編號(0--7) |\n");
printf("|-------------------------------|\n");
printf("| 0——退出 |\n");
printf("| 1——建立飯卡文件 |\n");
printf("| 2——買飯 |\n");
printf("| 3——續錢 |\n");
printf("| 4——添加新飯卡 |\n");
printf("| 5——注銷舊飯卡 |\n");
printf("| 6——設置與解除掛失 |\n");
printf("| 7——顯示全部飯卡信息 |\n");
printf("|-------------------------------|\n");
scanf("%d",&choose);
return choose;
}

void write_file()
{
int i;
FILE * f;
f=fopen("card.dat","w");
for(i=0;i<counts;i++)
fprintf(f,"%d %s %lf %d\n",card[i].ID,card[i].name,card[i].value,card[i].flag);
fclose(f);
}

void create_file() //如果已經存在了card.dat那麼就打開該文件
{
int i=0;
fp=fopen("card.dat","r");
if(fp!=NULL) //如果已經存在
{
printf("文件已經存在!\n");
while(fscanf(fp,"%d%s%lf%d",&card[i].ID,card[i].name,&card[i].value,&card[i].flag)!=EOF)
i++;
counts=i;
fclose(fp);
return ;
}
fp=fopen("card.dat","w");
printf("輸入卡號,姓名,金額,掛失信息(0/1)(卡號-1表示輸入結束!):\n");
while(scanf("%d%s%lf%d",&card[i].ID,card[i].name,&card[i].value,&card[i].flag),card[i].ID!=-1)
i++;
counts=i;
fclose(fp);
write_file();
}

void buy1(int card_id,double cost)
{
int i;
for(i=0;i<counts;i++)
{
if(card[i].ID==card_id)
{
if(card[i].flag==1)
{
printf("本卡已掛失!\n");
return ;
}
if(card[i].value<5)
{
printf("金額不足!\n");
return ;
}
printf("%lf\n",card[i].value);
card[i].value-=cost;
printf("%lf\n",card[i].value);
}
}
printf("非法卡!\n");
}

void buy()
{
int id;
double v;
printf("輸入卡號和消費金額:\n");
scanf("%d%lf",&id,&v);
buy1(id,v);
}

void add_value()
{
int id,i;
double v;
printf("輸入卡號和續錢金額:\n");
scanf("%d%lf",&id,&v);
for(i=0;i<counts;i++)
{
if(card[i].ID==id)
{
printf("%lf\n",card[i].value);
card[i].value+=v;
printf("%lf\n",card[i].value);
printf("ok!\n");
return ;
}
}
printf("error!\n");
}

void add_card()
{
int i=counts;
printf("輸入卡號,姓名,金額,掛失信息(0/1)(卡號-1表示輸入結束!):\n");
while(scanf("%d%s%lf%d",&card[i].ID,card[i].name,&card[i].value,&card[i].flag),card[i].ID!=-1)
i++;
counts=i;
}

void del_card()
{
int id;
int i,j;
printf("輸入要注銷的卡號:\n");
scanf("%d",&id);
for(i=0;i<counts;i++)
{
if(card[i].ID==id)
{
for(j=i;j<counts-1;j++)
card[j]=card[j+1];
printf("注銷成功!\n");
return ;
}
}
}

void set_flag()
{
int id,i,f;
printf("輸入卡號和掛失信息(1:掛失,0:解除掛失)\n");
scanf("%d%d",&id,&f);
for(i=0;i<counts;i++)
{
if(card[i].ID==id)
{
card[i].flag=f;
printf("設置完成 !\n");
break;
}
}
}

void output()
{
int i;
printf("%6s%11s%10s%6s\n","卡號","姓名","金額","掛失");
for(i=0;i<counts;i++)
printf("%6d%11s%10.3lf%2d\n",card[i].ID,card[i].name,card[i].value,card[i].flag);
}

void main()
{
int m;
while(m=menu(),m)
{
switch(m)
{
case 1:
create_file();
break;
case 2:
buy();
break;
case 3:
add_value();
break;
case 4:
add_card();
break;
case 5:
del_card();
break;
case 6:
set_flag();
break;
case 7:
output();
break;
default:
printf("輸入有誤,重新輸入!\n");
}
}
write_file(); //退出系統的時候,把數據保存到文件
}

7. 數據結構課程設計 學生就餐問題(C語言版)

呵,就是構造數據,寫些功能函數,主要是隊列,先進先出,再是就餐的函數,等待,執行就餐,時間安排,進入,離開,插隊,退隊等特殊情況