c语言学生成绩管理系统Word文件下载.docx

上传人:b****5 文档编号:20441544 上传时间:2023-01-23 格式:DOCX 页数:19 大小:92.70KB
下载 相关 举报
c语言学生成绩管理系统Word文件下载.docx_第1页
第1页 / 共19页
c语言学生成绩管理系统Word文件下载.docx_第2页
第2页 / 共19页
c语言学生成绩管理系统Word文件下载.docx_第3页
第3页 / 共19页
c语言学生成绩管理系统Word文件下载.docx_第4页
第4页 / 共19页
c语言学生成绩管理系统Word文件下载.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c语言学生成绩管理系统Word文件下载.docx

《c语言学生成绩管理系统Word文件下载.docx》由会员分享,可在线阅读,更多相关《c语言学生成绩管理系统Word文件下载.docx(19页珍藏版)》请在冰豆网上搜索。

c语言学生成绩管理系统Word文件下载.docx

经过一周的编程实习,并在后一段的报告总结,我对C语言这门科有新的认识,本人实在是获益不浅!

要想编写一个准确、高效并有使用价值的程序,一定先要对课本知识熟悉,还要掌握必要的上机操作能力,写程序其实很容易而关键在于调试程序。

这次设计,让我重新掌握了C语言,而且还得到了用C语言解决实际问题的宝贵经验。

三、源程序清单

#include〈stdio。

h〉

#include<

conio.h>

#include<

malloc。

h>

#include〈string。

typedefstructSTUDENT

charstudentNumber[10];

/*学生学号*/

charstudentName[20];

/*学生姓名*/

charclassName[20];

/*班级名称*/

charyearName[20];

/*学期名称*/

floatmark1;

/*第1门成绩*/

floatmark2;

/*第2门成绩*/

floatmark3;

/*第3门成绩*/

structSTUDENT*next;

}STUDENT;

STUDENT*headLink;

/*链表表头指针*/

/*以下是函数声明*/

voidReadInfoFormFile(void);

voidDesplayMenu(void);

voidCreateHeadLink(void);

STUDENT*MallocNode(void);

voidGetInformation(STUDENT*t);

voidOutputInformation(void);

voidDesplayInfoBystudentName(void);

voidDesplayOneNode(STUDENT*t);

voidInsertOneNode(STUDENT*t);

voidDeleteNodeBystudentNumber(void);

voidChangeMarkByName(void);

voidChangeMarkByNumber(void);

voidSaveLinkToFile(void);

voidDesplayMarkSegment(void);

voidCompositorByTotalMark(void);

intchoose;

/*用于接受用户的选择*/

/*主函数*/

voidmain()

CreateHeadLink();

ReadInfoFormFile();

DesplayMenu();

/************************************

函数功能:

从文件中读学生信息到链表中

************************************/

voidReadInfoFormFile(void)

{

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);

}

fclose(fp);

/************************************

显示菜单,根据用户的输入

完成相应的功能

************************************/

voidDesplayMenu(void)

STUDENT*p;

printf("

——-———-请选择相应功能—-—-————-—-—\n\n”);

printf(”|1按班级输出学生成绩单|\n”);

|2按姓名查询|\n"

|3增加学生|\n"

|4删除学生|\n"

);

printf(”|5按班级修改学生成绩|\n”);

printf(”|6按学期修改学生成绩|\n"

printf(”|7保存所有学生信息|\n”);

|8显示不及格学生成绩|\n"

printf(”|9按平均成绩排序并输出绩|\n”);

|10退出|\n\n”);

scanf("

%d"

,&choose);

/*取得用户的选择*/

switch(choose)

case1:

OutputInformation();

/*显示所有学生的信息*/

break;

case2:

DesplayInfoBystudentName();

case3:

/*先申请一个新结点*/

GetInformation(p);

/*要求用户输入信息到新结点中*/

/*将新结点加到链表中*/

case4:

DeleteNodeBystudentNumber();

/*根据用户输入的学号删除该学生*/

case5:

ChangeMarkByName();

/*根据用户输入的姓名修改学生成绩*/

case6:

ChangeMarkByNumber();

/*根据用户输入的学号修改学生成绩*/

case7:

SaveLinkToFile();

/*保存数据*/

break;

case8:

DesplayMarkSegment();

/*显示不及格的学生成绩*/

case9:

CompositorByTotalMark();

/*按平均成绩排序*/

case10:

SaveLinkToFile();

/*保存数据后再退出*/

free(headLink);

exit

(1);

default:

/*递归调用*/

/************************************

函数功能:

建立链表表头

************************************/

voidCreateHeadLink(void)

STUDENT*p;

p=(STUDENT*)malloc(sizeof(STUDENT));

headLink=p;

p-〉next=NULL;

/************************************

申请一个新结点,并将其初始化

************************************/

STUDENT*MallocNode(void)

inti;

p=(STUDENT*)malloc(sizeof(STUDENT));

if(p==NULL)

returnNULL;

for(i=0;

i〈10;

i++)

p->

studentNumber[i]='

\0’;

i<

20;

p—〉studentName[i]=’\0’;

i〈20;

p-〉className[i]='

\0'

;

p—>

mark1=0。

0;

p-〉mark2=0.0;

p—〉mark3=0。

next=NULL;

returnp;

/************************************

取得用户输入的学生信息

************************************/

voidGetInformation(STUDENT*t)

请输入学生学号:

\n"

%s”,t->

studentNumber);

printf(”请输入学生姓名:

\n”);

%s”,t->

studentName);

printf(”请输入该生所在班级:

scanf(”%s”,t—〉className);

请输入第1门成绩:

%f”,&(t—〉mark1));

printf(”请输入第2门成绩:

%f”,&(t-〉mark2));

printf(”请输入第3门成绩:

%f”,&

(t-〉mark3));

/************************************

在链表的结尾处增加一个结点

************************************/

voidInsertOneNode(STUDENT*t)

p=headLink;

while(p—〉next)

p=p—〉next;

next=t;

/************************************

根据用户输入的学生姓名显示该学生的信息

************************************/

voidDesplayInfoBystudentName(void)

charstudentName[20];

charflag=0;

p=headLink—>

next;

请输入学生姓名:

scanf(”%s"

,studentName);

while(p)

if(strcmp(p—〉studentName,studentName)==0)

printf(”学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n”);

DesplayOneNode(p);

flag=1;

p=p-〉next;

if(!

flag)

对不起,不存在姓名为%s的学生\n”,studentName);

/************************************

输出一个结点的信息

************************************/

voidDesplayOneNode(STUDENT*t)

%s\t"

,t->

printf(”%s\t”,t-〉studentName);

printf(”%s\t”,t—〉className);

printf(”%。

2f\t"

t->

mark1);

printf(”%.2f\t”,t—>

mark2);

%.2f\t"

t—〉mark3);

%。

2f\t”,t->

mark1+t-〉mark2+t—〉mark3);

%.2f\t\n"

(t->

mark1+t-〉mark2+t—〉mark3)/3);

/************************************

根据用户输入的学号删除该学生

************************************/

voidDeleteNodeBystudentNumber(void)

charstudentNumber[10];

STUDENT*p,*q;

charflag=0;

请输入要删除的学生学号:

"

,studentNumber);

q=headLink—>

next;

while(q)

if(strcmp(q->

studentNumber,studentNumber)==0)

p-〉next=q-〉next;

free(q);

flag=1;

break;

p=p->

q=q—〉next;

if(!

printf(”不存在该学号的学生\n”);

成功删除\n"

/************************************

显示所有学生的信息

************************************/

voidOutputInformation(void)

p=headLink-〉next;

现在没有学生信息,请先输入学生信息\n\n”);

printf(”学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n"

DesplayOneNode(p);

p=p—〉next;

/************************************

根据输入的班级修改成绩

************************************/

voidChangeMarkByName(void)

inta;

charstudentName[20];

floatmark1,mark2,mark3;

p=headLink—〉next;

printf(”请输入学生班级:

scanf(”%d"

,&

a);

请输入学生姓名:

%s”,studentName);

if(strcmp(p—>

studentName,studentName)==0)

printf(”请输入新的第1门成绩:

%f”,&mark1);

printf(”请输入新的第2门成绩:

scanf(”%f”,&

请输入新的第3门成绩:

%f"

,&mark3);

p-〉mark1=mark1;

p-〉mark2=mark2;

mark3=mark3;

flag=1;

修改成功\n"

p=p-〉next;

printf(”对不起,不存在班级为%s的学生\n"

studentName);

/************************************

根据输入的学期修改成绩

************************************/

voidChangeMarkByNumber(void)

intb;

charstudentNumber[20];

printf(”请输入学生所在学期:

\n”);

scanf(”%d"

&b);

printf(”请输入学生学号:

if(strcmp(p->

printf(”请输入新的第1门成绩:

scanf(”%f”,&

mark1);

printf(”请输入新的第2门成绩:

scanf(”%f"

,&mark2);

printf(”请输入新的第3门成绩:

%f"

p—〉mark1=mark1;

p—〉mark2=mark2;

p-〉mark3=mark3;

printf(”修改成功\n”);

p=p->

printf(”对不起,不存在学期为%s的学生\n”,studentNumber);

/************************************

保存链表数据到文件中

************************************/

voidSaveLinkToFile(void)

STUDENT*p;

printf(”现在没有学生信息,请先输入学生信息\n\n"

return;

fp=fopen(”student.txt"

”w+”);

fprintf(fp,"

%s%s%s%f%f%f\n"

p—>

studentNumber,p—〉studentName,p—>

className,p—〉mark1,p-〉mark2,p-〉mark3);

p=p—>

fclose(fp);

/************************************

不及格学生成绩

************************************/

voidDesplayMarkSegment(void)

intcount=0;

printf(”60分以下(不及格)的学生成绩如下:

学号\t姓名\t班级\t成绩1\t成绩1\t成绩3\t总成绩\t平均成绩\n\n”);

if((6>

((int)(p-〉mark1/10)))||(6>

((int)(p-〉mark2/10)))||(6〉((int)(p->

mark3/10))))/*只要有一科不及格就认为该生不及格*/

count++;

不及格的学生一共有%d人\n”,count);

/************************************

按平均成绩排序

************************************/

voidCompositorByTotalMark(void)

STUDENTexchange,*r,*p,*q;

r=headLink-〉next;

if(r==NULL)

printf(”现在还没学生信息,请先输入学生信息\n”);

while(r)/*两层while循环实现排序*/

p=r;

q=r-〉next;

if((q->

mark1+q—〉mark2+q->

mark3)>

mark1+p-〉mark2+p->

mark3))

strcpy(exchange。

studentNumber,q-〉studentNumber);

/*先复制q结点信息到exchange*/

studentName,q-〉studentName);

strcpy(exchange.className,q->

className);

exchange.mark1=q—〉mark1;

exchange。

mark2=q-〉mark2;

mark3=q->

mark3;

strcpy(q—>

studentNumber,p—>

studentNumber);

/*再复制p结点信息到q*/

strcpy(q->

studentName,p—〉studentName);

strcpy(q—〉className,p-〉className);

q—〉mark1=p—〉mark1;

q-〉mark2=p-〉mark3;

q->

mark3=p->

strcpy(p->

studentNumber,exchange。

/*最后复制exchange结点信息到p*/

strcpy(p—>

studentName,exchange.studentName);

strcpy(p—〉className,exchange.className);

mark1=exchange。

mark1;

mark2=exchange。

mark2;

p-〉mark3=exchange。

q=q—〉next;

r=r—〉next;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 自然景观

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1