c语言课程设计题目::简单学生成绩统计软件 实现任务:(1)每个学生记录中包含学号、姓名和C 语言课设成

2024-11-05 08:13:22
推荐回答(3个)
回答1:

发了一份到你邮箱,不知你还需不需要

回答2:

已经发到你的邮箱那个去了!!

回答3:

#include
#include
#include
typedef struct Stdent
{
char name[20];
int score;
struct Stdent *next;
}M;
void show()
{
printf("+++++++++++学生管理系统++++++++++\n");
printf("+ 杨 1.添加学生信息 1 +\n");
printf("+ 昌 2.删除学生信息 0 +\n");
printf("+ 钊 3.修改学生信息 0 +\n");
printf("+ 4.显示所有学生信息 0 +\n");
printf("+ 软 5.查找学生 3 +\n");
printf("+ 嵌 6.总分 班 +\n");
printf("+ 入 7.平均分 +\n");
printf("+ 入 8.未及格名单 +\n");
printf("+ 0:退出系统 +\n");
printf("+++欢迎+++++++++++++++++++使用+++\n");

}
int pass()
{
char ch1[100],ch2[100];
printf("+++++++++++++++++++++\n");
printf("用户名:");
gets(ch1);
printf("密码:");
gets(ch2);
printf("+++++++++++++++++++++\n");
if (strcmp(ch1,"yang")==0&&strcmp(ch2,"123")==0)
{
printf("普通用户模式。\n");
return 1;
}
else if(strcmp(ch1,"yang")==0&&strcmp(ch2,"321")==0)
{
printf("VIP用户模式。\n");
return -1;
}
else
{
return 0;
}

}
M *add(M *fptr)
{
M *ptr=NULL,*nptr=NULL;
if (fptr==NULL)
{

fptr=(M*)malloc(sizeof(M));
fptr->next=NULL;
ptr=fptr;
while(1)
{
if (getch()=='#')
{
break;
}
getchar();
nptr=(M*)malloc(sizeof(M));
nptr->next=NULL;
ptr->next=nptr;
ptr=nptr;
printf("*****************\n");
printf("请输入名字:");
scanf("%s",&ptr->name);
printf("请输入分数:");
scanf("%d",&ptr->score);
printf("***退出请输入#***\n");

}
save(fptr);
}
else
{
ptr=fptr;
while(ptr->next!=NULL)
{
ptr=ptr->next;
}
while(1)
{
if (getch()=='#')
{
break;
}
getchar();
nptr=(M*)malloc(sizeof(M));
nptr->next=NULL;
ptr->next=nptr;
ptr=nptr;
printf("*****************\n");
printf("请输入名字:");
scanf("%s",&ptr->name);
printf("请输入年龄:");
scanf("%d",&ptr->score);
printf("***退出请输入#***\n");
}
save(fptr);
}

return fptr;
}
void print(M *fptr)
{
M *ptr;
ptr=fptr->next;
while(ptr!=NULL)
{
printf("\t名字\t分数\n");
printf("\t%s\t%d\n",ptr->name,ptr->score);
ptr=ptr->next;
}
}
void del(M *fptr)
{
M *ptr,*bptr;
int flag=0;
char name1[20];
if (fptr->next==NULL)
{}
else
{
getchar();
printf("请输入要删除人的姓名:");
gets(name1);
ptr=fptr;
while(ptr!=NULL)
{
bptr=ptr;
ptr=ptr->next;
if (strcmp(ptr->name,name1)==0)
{
bptr->next=ptr->next;
free(ptr);
break;
flag=1;
}

}
save(fptr);
}
}
void All(M *fptr)
{
M *ptr;
int all=0;
ptr=fptr->next;
while(ptr!=NULL)
{
ptr=ptr->next;
all++;
}
printf("目前总人数为:%d\n",all);
}
void cha(M *fptr)
{
M *ptr;
char name2[20];
int flag=0;
getchar();
printf("请输入姓名:");
gets(name2);
ptr=fptr->next;
while(ptr!=NULL)
{
if (strcmp(ptr->name,name2)==0)
{
printf("\t名字\t分数\n");
printf("\t%s\t%d\n",ptr->name,ptr->score);
flag=1;
break;
}
ptr=ptr->next;

}
if (flag==0)
{
printf("没找到该人.\n");
}
}
void xiu(M *fptr)
{
M *ptr;
char name3[20];
int flag=0,n;
if (fptr->next==NULL)
{}
else
{
getchar();
printf("请输入姓名:");
gets(name3);
ptr=fptr->next;
while(ptr!=NULL)
{
if (strcmp(ptr->name,name3)==0)
{
printf("1.修改姓名\n2.修改分数.\n");
printf("请输入选项:");
scanf("%d",&n);
getchar();
switch(n)
{
case 1:printf("请输入修改后的名字:");
gets(ptr->name);
break;
case 2:printf("请输入修改后的分数:");
scanf("%d",&ptr->next);
break;
}
flag=1;
break;
}
ptr=ptr->next;

}
if (flag==0)
{
printf("没找到该人.\n");
}
}

}
int save(M *fptr)
{
FILE *fp;
M *ptr;
fp=fopen("D://S.txt","wt");
ptr=fptr;
while(ptr!=NULL)
{
fwrite (ptr,sizeof (M),1,fp);
ptr=ptr->next;
}
printf("保存成功\n");
fclose(fp);
return 0;
}
M* load()
{

FILE *fp;

M *head=NULL,*pnew=NULL,*pold=NULL;

if ((fp=fopen ("D://S.txt","rt"))==NULL)
{
printf ("读取时,文件打开失败!系统自动创建!\n");
return NULL;
}

head=pnew=(M*)malloc (sizeof (M));

while (!feof (fp))
{
if (fread(pnew,sizeof (M),1,fp)!=1)
break;
pnew->next =(M*)malloc (sizeof (M));
pold=pnew;
pnew=pnew->next;
}
pold->next=NULL;
fclose (fp);
printf ("\n\n读取完毕!\n\n");
return head;

}
M* load2()
{

FILE *fp;

M *head=NULL,*pnew=NULL,*pold=NULL;

if ((fp=fopen ("D://S.txt","rt"))==NULL)
{
printf ("读取时,文件打开失败!系统自动创建!\n");
return NULL;
}

head=pnew=(M*)malloc (sizeof (M));

while (!feof (fp))
{
if (fread(pnew,sizeof (M),1,fp)!=1)
break;
pnew->next =(M*)malloc (sizeof (M));
pold=pnew;
pnew=pnew->next;
}
pold->next=NULL;
fclose (fp);
return head;

}

void show2()
{
printf("1.按姓名查找\n2.按分数查找\n");
}

void cha1(M *fptr)
{
M *ptr;
char name2[20];
int flag=0;
getchar();
printf("请输入名字:");
gets(name2);
ptr=fptr->next;
printf("\t名字\t分数\n");
while(ptr!=NULL)
{
if (strcmp(ptr->name,name2)==0)
{

printf("\t%s\t%d\n",ptr->name,ptr->score);
flag=1;
break;
}
ptr=ptr->next;

}
if (flag==0)
{
printf("没找到该人.\n");
}
}

void cha2(M *fptr)
{
M *ptr;
int name2;
int flag=0;
getchar();
printf("请输入分数:");
scanf("%d",&name2);
ptr=fptr->next;
printf("\t名字\t分数\n");
while(ptr!=NULL)
{
if (name2==ptr->score)
{

printf("\t%s\t%d\n",ptr->name,ptr->score);
flag=1;
break;
}
ptr=ptr->next;

}
if (flag==0)
{
printf("没找到该人.\n");
}
}

void show3()
{
printf("1.普通显示\n2.按名字显示\n3.按分数显示\n");
}

void print2(M *fptr)
{
M *ptr;
char ch[20];
ptr=fptr->next;
getchar();
printf("请输入名字:");
gets(ch);
printf("\t名字\t分数\n");
while(ptr!=NULL)
{

if (strcmp(ptr->name,ch)==0)
{
printf("\t%s\t%d\n",ptr->name,ptr->score);
}

ptr=ptr->next;
}
ptr=fptr->next;
while(ptr!=NULL)
{

if (strcmp(ptr->name,ch)!=0)
{
printf("\t%s\t%d\n",ptr->name,ptr->score);
}

ptr=ptr->next;
}
}
void print3(M *fptr)
{
M *ptr,*q;
ptr=fptr->next;
q=ptr;
while (q!=NULL)
{
ptr=q;
while(ptr->next!=NULL)
{

if (ptr->next->score > q->score)
{
int temp=0;
char t[20];
temp=ptr->next->score;
ptr->next->score=q->score;
q->score=temp;
strcpy(t,ptr->next->name);
strcpy(ptr->next->name,q->name);
strcpy(q->name,t);
}
ptr=ptr->next;
}
q=q->next;
}
ptr=fptr->next;
printf("\t名字\t分数\n");
while (ptr!=NULL)
{
printf("\t%s\t%d\n",ptr->name,ptr->score);
ptr=ptr->next;
}

}

int Allscore(M *fptr)
{
M *ptr;
int temp=0;
ptr=fptr->next;
while(ptr!=NULL)
{
temp+=ptr->score;
ptr=ptr->next;
}
return temp;
}

double Av(M *fptr)
{
M *ptr;
int temp=0,i=0;
ptr=fptr->next;
while(ptr!=NULL)
{
temp+=ptr->score;
ptr=ptr->next;
++i;
}
return temp/i;

}

void fals(M *fptr)
{
M *ptr;
ptr=fptr->next;
while(ptr!=NULL)
{
printf("\t名字\t分数\n");
if (ptr->score < 60)
{
printf("\t%s\t%d\n",ptr->name,ptr->score);
}
else
{
printf("没有找到不及格学生\n");
}
ptr=ptr->next;
}
}

main()
{
int n,pa,n2,n3,zong;
double av;
M *fptr=NULL;
FILE fp;
pa=pass();

if(pa==-1)
{
fptr=load();
show();
if(fptr!=NULL)
{All(fptr);}
while(1)
{
printf("请输入选项:");
scanf("%d",&n);
switch(n)
{
case 1:fptr=add(fptr);
All(fptr);
break;
case 2:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");
}
del(fptr);
All(fptr);
break;
case 3:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");
}
xiu(fptr);
break;
case 4:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
show3();
printf("请输入选项:");
scanf("%d",&n3);
switch(n3)
{
case 1:print(fptr);
break;
case 2:print2(fptr);
break;
case 3:print3(fptr);
fptr=load2();
break;
}
break;
case 5:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
show2();
printf("请输入选项:");
scanf("%d",&n2);
switch(n2)
{
case 1:cha1(fptr);
break;
case 2:cha2(fptr);
break;
}
break;
case 6:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
zong=Allscore(fptr);
printf("总分:%d\n",zong);
break;
case 7:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
av=Av(fptr);
printf("平均分:%lf\n",av);
break;
case 8:
if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");
}
fals(fptr);
break;
case 0:exit(0);
break;
default:printf("没有这个选项!!!!!\n");
}
}

}
else if (pa==1)
{
fptr=load();
show();
if(fptr!=NULL)
{All(fptr);}
while(1)
{
printf("请输入选项:");
scanf("%d",&n);
switch(n)
{
case 1:printf("抱歉您没有权限。\n");
break;
case 2:printf("抱歉您没有权限。\n");
break;
case 3:printf("抱歉您没有权限。\n");
break;
case 4:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
show3();
printf("请输入选项:");
scanf("%d",&n3);
switch(n3)
{
case 1:print(fptr);
break;
case 2:print2(fptr);
break;
case 3:print3(fptr);
break;
}
break;
case 5:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
show2();
printf("请输入选项:");
scanf("%d",&n2);
switch(n2)
{
case 1:cha1(fptr);
break;
case 2:cha2(fptr);
break;
}
break;
case 6:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
zong=Allscore(fptr);
printf("总分:%d\n",zong);
break;
case 7:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");

}
av=Av(fptr);
printf("平均分:%lf\n",av);
break;
case 8:if (fptr->next==NULL)
{
printf("出错了未添加人员……\n");
}
fals(fptr);
break;
case 0:exit(0);
break;
default:printf("没有这个选项!!!!!\n");
}
}
}
else
{
printf("密码输入错误.\n");
exit(0);
}
}

你参考下吧……这用链表做的……功能基本都有了……