用c语言编程小型的订餐管理系统,谁会啊?
答案:3 信息版本:手机版
解决时间 2019-10-06 08:01
已解决
2019-10-05 23:26
用c语言编程小型的订餐管理系统,谁会啊?
最佳答案
2019-10-06 00:37
都是增删改查~~
全部回答
1楼
2019-10-06 02:11
这个我会做,看你的私信。
2楼
2019-10-06 01:44
#include
#include
#include
#include
typedef struct student
{
int num;
char name[8];
int data[3];
struct student* next;
} student,* linklist;
linklist createlist(void);
int listfind(linklist head);
int listadd(linklist head);
int deletelist(linklist head);
int modifylist(linklist head);
int savedata(linklist head);
linklist loaddata();
int listdisplay(linklist head);
int checknum(linklist head,int num);
linklist createlist(void)
{
linklist l;
linklist s,r;
char c;
int flag=1;
l=(student *)malloc(sizeof(student));
l->next=null;
r=l;
printf("请输入你要添加的学生的信息:\n");
while(flag)
{
fflush(stdin);
c=getchar();
if(c!='0')
{
s=(student *)malloc(sizeof(student));
printf("学号:");
scanf("%d",&s->num);
printf("姓名:");
scanf("%s",s->name);
printf("数学分数:");
scanf("%d",&s->data[0]);
printf("语文分数:");
scanf("%d",&s->data[1]);
printf("英语分数:");
scanf("%d",&s->data[2]);
printf("退出请按'0',继续按“回车”\n");
r->next=s;
r=s;
}
else
{
flag=0;
r->next=null;
}
}
return l;
}
int listfind(linklist head)
{
int num;
int flag;
char name[8];
linklist p;
p=head;
if(p==null)
{
printf("链表中没有数据!\n");
return 0;
}
printf("\n1:按学号查询。\n2:按姓名查询。");
scanf("%d",&flag);
switch(flag)
{
case 1:
{
printf("请输入要查找学生的学号:");
scanf("%d",&num);
while(p!=null)
{
if(p->num==num)
{
printf("学号:");
printf("%d\n",p->num);
printf("姓名:");
printf("%s\n",p->name);
printf("数学分数:");
printf("%d\n",p->data[0]);
printf("语文分数:");
printf("%d\n",p->data[1]);
printf("英语分数:");
printf("%d\n",p->data[2]);
return 0;
}
p=p->next;
}
if(p==null)
printf("\n找不到!!!\n");
}
break;
case 2:
{
printf("请输入要查找学生的姓名:");
scanf("%s",&name);
while(p!=null)
{
if(!strcmp(p->name,name))
{
printf("学号:");
printf("%d\n",p->num);
printf("姓名:");
printf("%s\n",p->name);
printf("数学分数:");
printf("%d\n",p->data[0]);
printf("语文分数:");
printf("%d\n",p->data[1]);
printf("英语分数:");
printf("%d\n",p->data[2]);
return 0;
}
p=p->next;
}
if(p==null)
printf("\n找不到!!!\n");
}
}
return 0;
}
int listadd(linklist head)
{
int a=0;
linklist p,s,q=head;
if(head==null)
{
printf("\n表不存在,请先建立再添加!\n");
return 0;
}
p=head;
while(p->next!=null)
{
p=p->next;
}
s=(student*)malloc(sizeof(student));
printf("添加新数据\n");
printf("学号:");
scanf("%d",&s->num);
printf("姓名:");
scanf("%s",s->name);
printf("数学分数:");
scanf("%d",&s->data[0]);
printf("语文分数:");
scanf("%d",&s->data[1]);
printf("英语分数:");
scanf("%d",&s->data[2]);
s->next=null;
return 0;
}
int deletelist(linklist head)
{
int num;
linklist p,q;
p=head;
q=head;
if(p==null)
{
printf("空表,无数据\n");
return 0;
}
printf("请输入要删除学生的学号:");
scanf("%d",&num);
while(p!=null)
{
if(p->num==num)
{
if(p==head)
{
head=head->next;
free(p);
}
else
{
q->next=p->next;
free(p);
}
printf("\n删除成功!!!\n");
getch();
return 0;
}
q=p;
p=p->next;
}
printf("未找到!\n");
return 0;
}
int modifylist(linklist head)
{
int num;
//int score;
linklist p;
p=head;
if(p==null)
{
printf("空表,无数据\n");
return 0;
}
printf("\n请输入要修改学生的学号:");
scanf("%d",&num);
printf(" 学号 姓名 数学成绩 语文成绩 英语成绩 \n");
while(p!=null)
{
if(p->num==num)
{
printf("%12d%12s%8d%9d%9d\n",p->num,p->name,p->data[0],p->data[1],p->data[2]);
printf("请输入新成绩");
printf("数学分数:");
scanf("%d",&p->data[0]);
printf("语文分数:");
scanf("%d",&p->data[1]);
printf("英语分数:");
scanf("%d",&p->data[2]);
printf("修改成功!!!\n");
return 0;
}
p=p->next;
}
if(p==null)
printf("找不到\n");
return 0;
}
int savedata(linklist head)
{
char filename[5];
file * fp;
linklist p;
p=head;
printf("请输入你要保存的文件名:以*.txt格式!");
scanf("%s",filename);
if((fp=fopen(filename,"at"))==null)
{
printf("打开失败!");
return 0;
}
while(p!=null)
{
fwrite(p,sizeof(student),1,fp);
p=p->next;
}
fclose(fp);
printf("保存成功!\n");
return 0;
}
linklist loaddata()
{
char filename[5];
printf("请输入你要打开的文件名:以*.txt格式!");
scanf("%s",filename);
file *fp;
linklist p,q,h=null;
q=p=(student *)malloc(sizeof(student));
if(p==null){
printf("空间申请失败!");
return h;
}
h=p;
if((fp=fopen(filename,"a+"))==null)
{
printf("打开失败!\n");
return h;
}
while(!feof(fp))
{
if(1!=fread(p,sizeof(student),1,fp))
break;
p->next=(student *)malloc(sizeof(student));
if(!p->next)
{
printf("空间申请失败!\n");
return h;
}
q=p;
p=p->next;
}
q->next=null;
fclose(fp);
printf("读取成功!");
return h;
}
int listdisplay(linklist head)
{
int count=0;
int sum=0;
int sum1=0;
int sum2=0;
int mathhscore=0;
int chinesehscore=0;
int englishhscore=0;
linklist p;
if(head==null)
{
printf("表不存在!");
return 0;
}
p=head->next;
if(null==head->next)
{
printf("\n链表为空!\n");
return 0;
}
printf(" 学 号 姓 名 数学成绩 语文成绩 英语成绩 \n");
while(p!=null)
{
printf("%12d%12s%8d%9d%9d\n",p->num,p->name,p->data[0],p->data[1],p->data[2]);
sum=p->data[0]+p->data[1]+p->data[2];
sum2+=sum;
if(p->data[0]>mathhscore)
mathhscore=p->data[0];
if(p->data[1]>chinesehscore)
chinesehscore=p->data[1];
if(p->data[2]>englishhscore)
englishhscore=p->data[2];
if(sum>sum1)
sum1=sum;
count++;
p=p->next;
}
printf("\n人数:%d\n",count);
printf("平均分:%.2f\n",(float)sum2/count);
printf("数学最高分:%d\n",mathhscore);
printf("语文最高分:%d\n",chinesehscore);
printf("英语最高分:%d\n",englishhscore);
printf("总分最高是:%d\n",sum1);
return 0;
}
int checknum(linklist head)
{
int num=0;
printf("请输入学号:");
scanf("%d",&num);
linklist p;
p=head;
while(p!=null)
{
if(p->num==num)
return 0;
p=p->next;
}
if(p==null)
{
return 1;
}
return 1;
}
void quit()
{
system("cls");
printf("\n\n\t\t\tbyebye!\n\n");
getch();
exit(0);
}
void main()
{
int c;
int i=5,j=5,m=0,n=0;
linklist head=null;
for(;;)
{
system("cls");
printf(" 学生成绩管理系统\n");
printf("\n\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(" 8.读取 \n");
printf(" 0.退出 \n");
printf("------------------------------------------------------------------------------\n\n");
printf("请输入你的选择:");
scanf("%d",&c);
switch(c)
{
case 1:
{
m=checknum(head);
while(!m)
{
printf("学号有重复!");
m=checknum(head);
if(!i--)
{
break;
}
}
head=createlist();
break;
}
case 2:
listfind(head);
break;
case 3:
{
n=checknum(head);
while(!n)
{
printf("学号有重复!");
n=checknum(head);
if(!j--)
{
break;
}
}
listadd(head);
break;
}
case 4:
deletelist(head);
break;
case 5:
modifylist(head);
break;
case 6:
listdisplay(head);
break;
case 7:
savedata(head);
break;
case 8:
head=loaddata();
break;
case 0:
quit();
break;
}
getch();
}
}
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯