C语言程序设计学生成绩管理系统源码.docx
- 文档编号:655604
- 上传时间:2022-10-11
- 格式:DOCX
- 页数:17
- 大小:17.37KB
C语言程序设计学生成绩管理系统源码.docx
《C语言程序设计学生成绩管理系统源码.docx》由会员分享,可在线阅读,更多相关《C语言程序设计学生成绩管理系统源码.docx(17页珍藏版)》请在冰豆网上搜索。
C语言程序设计学生成绩管理系统源码
#include
#include
#include
#include
structSTUDENT
{
charstudentNumber[10];/*学生学号*/
charstudentName[20];/*学生姓名*/
charclassName[20];/*班级名称*/
floatmark1;/*第1门成绩*/
floatmark2;/*第2门成绩*/
floatmark3;/*第3门成绩*/
structSTUDENT*next;
};
structSTUDENT*headLink;/*链表表头指针*/
/*以下是函数声明*/
voidReadInfoForm);/*读入信息形成文件*/
voidDisplayMenu(void);
voidCreateHeadLink(void);
structSTUDENT*MallocNode(void);
voidGetInformation(structSTUDENT*t);
voidOutputInformation(void);
voidDisplayInfoBystudentName(void);
voidDisplayInfoBystudentNumber(void);
voidDisplayOneNode(structSTUDENT*t);
voidInsertOneNode(structSTUDENT*t);
voidDeleteNodeBystudentNumber(void);
voidChangeMarkByName(void);
voidChangeMarkByNumber(void);
voidSaveLinkTo);
voidDisplayMarkSegment(void);/*显示各分数段的学生成绩*/
voidCompositorByTotalMark(void);/*按总成绩排序*/
intchoose;/*用于接受用户的选择*/
/*主函数*/
intmain()
{
CreateHeadLink();
ReadInfoFormFile();
DisplayMenu();
return0;
}
/************************************
函数功能:
从文件中读学生信息到链表中
************************************/
voidReadInfoForm)
{
FILE*fp;
STUDENT*p;
fp=fopen("student.txt","r");
if(!
fp)
{
printf("文件不存在\n");
return;
}
p=MallocNode();
while(fscanf(fp,"%s%s%s%f%f%f",p->studentNumber,p->studentName,p->className,&(p->mark1),&(p->mark2),&(p->mark3))>0)
{
InsertOneNode(p);
p=MallocNode();
}
fclose(fp);
}
/************************************
函数功能:
显示菜单,根据用户的输入
完成相应的功能
************************************/
voidDisplayMenu(void)
{
STUDENT*p;
printf("-------请选择相应功能------------\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("|9显示优秀和不及格学生成绩|\n");
printf("|10排序结果并输出绩|\n");
printf("|11退出|\n\n");
scanf("%d",&choose);/*取得用户的选择*/
switch(choose)
{
case1:
OutputInformation();/*显示所有学生的信息*/
break;
case2:
DisplayInfoBystudentName();
break;
case3:
DisplayInfoBystudentNumber();/*根据用户输入的学号显示该学生的信息*/
break;
case4:
p=MallocNode();/*先申请一个新结点*/
GetInformation(p);/*要求用户输入信息到新结点中*/
InsertOneNode(p);/*将新结点加到链表中*/
break;
case5:
DeleteNodeBystudentNumber();/*根据用户输入的学号删除该学生*/
break;
case6:
ChangeMarkByName();/*根据用户输入的姓名修改学生成绩*/
break;
case7:
ChangeMarkByNumber();/*根据用户输入的学号修改学生成绩*/
break;
case8:
SaveLinkToFile();/*保存数据*/
break;
case9:
DisplayMarkSegment();/*显示各分数段的学生成绩*/
break;
case10:
CompositorByTotalMark();
break;
case11:
SaveLinkToFile();/*保存数据后再退出*/
free(headLink);
exit
(1);
break;
default:
break;
}
DisplayMenu();/*递归调用*/
}
/************************************
函数功能:
建立链表表头
************************************/
voidCreateHeadLink(void)
{
structSTUDENT*p;
p=(structSTUDENT*)malloc(sizeof(structSTUDENT));
headLink=p;
p->next=NULL;
}
/************************************
函数功能:
申请一个新结点,并将其初始化
************************************/
STUDENT*MallocNode(void)
{
STUDENT*p;
inti;
p=(structSTUDENT*)malloc(sizeof(structSTUDENT));
if(p==NULL)
returnNULL;
for(i=0;i<10;i++)
p->studentNumber[i]='\0';
for(i=0;i<20;i++)
p->studentName[i]='\0';
for(i=0;i<20;i++)
p->className[i]='\0';
p->mark1=0.0;
p->mark2=0.0;
p->mark3=0.0;
p->next=NULL;
returnp;
}
/************************************
函数功能:
取得用户输入的学生信息
************************************/
voidGetInformation(structSTUDENT*t)
{
printf("请输入学生学号:
\n");
scanf("%s",t->studentNumber);
printf("请输入学生姓名:
\n");
scanf("%s",t->studentName);
printf("请输入该生所在班级:
\n");
scanf("%s",t->className);
printf("请输入第1门成绩:
\n");
scanf("%f",&(t->mark1));
printf("请输入第2门成绩:
\n");
scanf("%f",&(t->mark2));
printf("请输入第3门成绩:
\n");
scanf("%f",&(t->mark3));
}
/************************************
函数功能:
在链表的结尾处增加一个结点
************************************/
voidInsertOneNode(structSTUDENT*t)
{
structSTUDENT*p;
p=headLink;
while(p->next)
{
p=p->next;
}
p->next=t;
}
/************************************
函数功能:
根据用户输入的学生姓名显示该学生的信息
************************************/
voidDisplayInfoBystudentName(void)
{
structSTUDENT*p;
charstudentName[20];
charflag=0;
p=headLink->next;
printf("请输入学生姓名:
\n");
scanf("%s",studentName);
while(p)
{
if(strcmp(p->studentName,studentName)==0)
{
printf("学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n");
DisplayOneNode(p);
flag=1;
break;
}
p=p->next;
}
if(!
flag)
printf("对不起,不存在姓名为%s的学生\n",studentName);
}
/************************************
函数功能:
根据用户输入的学号显示该学生的信息
************************************/
voidDisplayInfoBystudentNumber(void)
{
structSTUDENT*p;
charstudentNumber[10];
charflag=0;
p=headLink->next;
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 学生 成绩管理系统 源码
![提示](https://static.bdocx.com/images/bang_tan.gif)