当前位置:首页 » 编程语言 » 食堂自动化管理系统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语言版)

呵,就是构造数据,写些功能函数,主要是队列,先进先出,再是就餐的函数,等待,执行就餐,时间安排,进入,离开,插队,退队等特殊情况