C语言学生成绩管理系统Word文档下载推荐.docx

上传人:b****2 文档编号:5232629 上传时间:2023-05-04 格式:DOCX 页数:47 大小:309.98KB
下载 相关 举报
C语言学生成绩管理系统Word文档下载推荐.docx_第1页
第1页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第2页
第2页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第3页
第3页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第4页
第4页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第5页
第5页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第6页
第6页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第7页
第7页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第8页
第8页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第9页
第9页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第10页
第10页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第11页
第11页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第12页
第12页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第13页
第13页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第14页
第14页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第15页
第15页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第16页
第16页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第17页
第17页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第18页
第18页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第19页
第19页 / 共47页
C语言学生成绩管理系统Word文档下载推荐.docx_第20页
第20页 / 共47页
亲,该文档总共47页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言学生成绩管理系统Word文档下载推荐.docx

《C语言学生成绩管理系统Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩管理系统Word文档下载推荐.docx(47页珍藏版)》请在冰点文库上搜索。

C语言学生成绩管理系统Word文档下载推荐.docx

注:

此图为概图、程序较多无法一一展示

第三章功能模块的具体设计

3.1定义结构体

本程序需要定义多个结构体,用于存放学生的相关信息。

structstudent//定义结构体

{

intnumber;

charname[10];

floatscore;

floatyuwen;

floatyingyu;

floatshuxue;

floatsum;

floatave;

structstudent*next;

};

typedefstructstudentscore;

intn,k;

3.2main()主函数

主函数功能比较简单,用while循环语句和switch多重选择语句来显示主界面和调用函数。

在主函数的前面要写必须的头文件,预定义语句以及全局变量的结构体。

3.3add()函数

利用while循环结构和else/if语句来实现增加信息的功能。

先定义5个指针*p0,*p1,*p2,*p3,*max,开始运行,当学生学号小于0时返回add函数,重新开始,而当输入0时返回菜单函数。

当输入学号符合要求时,函数向下运行,令p3=head,用else/if语句判断输入的学号是否重复,如果是则重新输入,如果不是,函数继续向下运行。

接下来利用指针来储存依次输入的语文、英语、数学成绩。

而用while结构来保证输入的成绩在0~100之间,如果不是则重新输入。

3.4del()删除函数

在C语言中无法做到删除和移动数据,所以删除记录要先将所有记录从文件中读出,删除后再将记录写回文件中。

每读出一条记录,按其在文件中的顺序做好指针链接关系,然后查处要删除的学生信息,将其在链表中删除,最后再将变动的记录重新写回文件中。

用指针,while循环和else/if结构来实现查找出要删除的学生。

3.5insert()插入函数

在插入函数中利用指针,和else/if语句来实现输入的数据按照插入相

应的位置,流程图如下所示:

图3-5插入函数流程图

3.6load()读取函数

利用指针、链表打开已经储存的信息,主要的流程图如下所示:

图3-6load()函数流程图

3.7save()保存函数

函数比较简单,主要利用指针来把信息保存在文件中,流程图如下所示:

图3-7save()函数流程图

3.8taxis()排序函数

先用if判断是否存在信息,如果没有则返回,如果已经存在则继续运行函数。

利用while循环语句和switch多重选择语句来实现是按照哪一种方式排名,

在用for,if语句来实现排名。

3.9mesu()菜单函数

用do/while循环语句和switch多重选择语句调用各个功能函数,流程图如下所示:

图3-9mesu()函数流程图

3.10search()查询函数

首先输入学号,当没有记录是显示“没有任何学生”,返回函数重新开始。

如过输入学号合格,则对已经存在的记录进行查找,最后打印信息。

函数流程图如下所示:

图3-10search()函数流程图

3.11statistics()统计数据函数

用while循环语句和switch多重选择语句输出记录中的个人总分和平均分、单科平均分、总分最高分、总分最低分,函数流程图如下所示:

图3-11statistics()函数流程图

第四章系统调试

菜单界面运行如下:

图4-1菜单界面

输入函数界面运行如下:

图4-2输入函数界面

查询信息模块运行如下:

图4-3查询信息界面

删除模块运行界面如下:

图4-4删除模块界面

插入模块运行界面如下:

图4-5插入模块界面

显示信息模块运行界面如下:

图4-6显示信息模块界面

统计学生信息模块运行如下:

图4-7统计学生信息模块界面

信息读取模块运行界面如下:

图4-8信息读取模块界面

信息保存模块界面运行如下:

图4-9信息保存模块界面

排序模块运行界面如下:

图4-10排序模块界面

第五章总结与个人体会

(1)该学生成绩管理系统基本可以运行,但是有不少地方仍是设计得不够科学,有些在任务书上的要求没有能十分好的把它运行出来。

(2)、通过本次对C语言的深入学习,让我对C语言有了更多的了解并撑握更多的知识,成功地运用各类函数、循环变量、结构化的程序设计,以及结构体、指针的使用。

(3)、但在学习中发现,编程确实不是很好做的,并非是你想要就能完成的,它需要的是认真、仔细地对待每一个程序块,特别是在对指针的使用时更加困难,那些指针指来指去,一不小心就会看错,编译不出来。

(4)、由于学生的我只是大一,知识水平不够,没能够完完全全地把程序做出来,而且程序中有许多不足之处不能够正确地将它改正,但总体上是可以运行的。

(5)经过这次课程设计,我发现自己不少的不足之处,我将会在以后的学习中把它们改正过来,努力学到更多的知识。

第六章致谢

首先要感谢学校给了我这么一个学习的机会,还提供给我们机房使用,体现了学校对学生实际操作能力的重视;

其次要感谢老师平时学习过程中对我的关照,在课程设计过程中对我们的教诲与教导,在那么炎热的天气里为我们作指导;

同时也要感谢同学们在学习中各种支持与关注。

第七章参考文献

[1]谭浩强编著.C程序设计第三版.北京:

清华大学出版社,2005

[2]林瑞仲等编著.C语言实例解析精粹.北京:

人民邮电出版社,2005

[3]王旭等编著.C语言实用界面技术.陕西:

西北工业大学出版社,1996

[4]邱仲潘等编著.VisualC++6从入门到精通.北京:

电子工业出版社,2005

第八章程序源代码

#include<

malloc.h>

#include<

conio.h>

stdio.h>

stdlib.h>

#defineNULL0

#defineLENsizeof(structstudent)

string.h>

{intnumber;

score*creat(void)//创建链表

score*head;

score*p1,*p2,*p3,*max;

floatsum=0,ave=0;

inti,j;

floatfen;

chart[10];

n=0;

p1=p2=p3=(score*)malloc(LEN);

head=p3;

printf("

请输入学生信息,输0退出!

\n"

);

repeat1:

请输入学生学号:

"

scanf("

%d"

&

p1->

number);

while(p1->

number<

0)

{getchar();

输入错误,请重新输入学生学号:

}

if(p1->

number==0)

gotoend;

else

{

p3=head;

if(n>

{for(i=0;

i<

n;

i++)

{if(p1->

number!

=p3->

number)

p3=p3->

next;

{printf("

学号重复,请重输!

gotorepeat1;

}

}

请输入学生姓名:

%s"

name);

请输入语文成绩(0~100):

%f"

yuwen);

yuwen<

0||p1->

yuwen>

100)

输入错误,请重新输入语文成绩"

}

请输入英语成绩(0~100):

yingyu);

yingyu<

yingyu>

输入错误,请重新输入英语成绩"

请输入数学成绩(0~100):

shuxue);

shuxue<

shuxue>

输入错误,请重新输入数学成绩"

sum=p1->

yuwen+p1->

yingyu+p1->

shuxue;

ave=sum/3;

head=NULL;

=0)

{

n=n+1;

if(n==1)

head=p1;

else

p2->

next=p1;

p2=p1;

p1=(score*)malloc(LEN);

repeat2:

printf("

输入错误,请重新输入学生学号:

gotorepeat2;

end:

p1=head;

p3=p1;

for(i=1;

for(j=i+1;

j<

=n;

j++)

max=p1;

p1=p1->

if(max->

number>

k=max->

number;

max->

number=p1->

p1->

number=k;

strcpy(t,max->

strcpy(max->

name,p1->

strcpy(p1->

name,t);

fen=max->

yuwen;

yuwen=p1->

yuwen=fen;

yingyu;

yingyu=p1->

yingyu=fen;

shuxue=p1->

shuxue=fen;

max=head;

p1=head;

p2->

next=NULL;

共存在%d个学生信息!

n);

return(head);

voidprint(structstudent*head)//输出函数

{structstudent*p1;

floatsum,ave;

\nNow,These%drecordsare:

if(head!

=NULL)

------------------------------------------------------\n"

|学号\t|姓名\t|语文\t|英语\t|数学\t|总分\t|平均分\t|\n"

-------------------------------------------------------\n"

do

{sum=p1->

printf("

|%d\t|%s\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|%.1f\t|\n"

p1->

number,p1->

yuwen,p1->

yingyu,p1->

shuxue,sum,ave);

p1=p1->

}while(p1!

=NULL);

score*del(score*head)//删除函数

score*p1,*p2;

输入要删除的学生的学号(输入0则退出):

getchar();

while(number!

if(head==NULL)

\n没有任何学生信息!

=p1->

number&

&

next!

p1=p1->

if(number==p1->

number)

if(p1==head)

head=p1->

next=p1->

删除:

%d\n"

number);

n=n-1;

%d不存在此学生!

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

#ifdefDEBUG

已经退出了!

#endif

现在的学生数为:

%d个!

structstudent*insert(structstudent*head,structstudent*stud)//插入函数

{structstudent*p0,*p1,*p2;

p0=stud;

if(head==NULL)//头指针为空

{head=p0;

p0->

{while((p0->

number)&

(p1->

=NULL))

{p2=p1;

if(p0->

{if(head==p1)head=p0;

elsep2->

next=p0;

p0->

{p1->

}}

}

score*load(score*head)//读取文件信息

{score*p1,*p2;

floatsum,ave;

intm=0;

charfilepn[10];

FILE*fp;

请输入文件路径及文件名:

filepn);

if((fp=fopen(filepn,"

r+"

))==NULL)

不能打开文件!

return0;

fscanf(fp,"

----------------------------------------------------------\n"

------------------------------------------------------------\n"

m=m+1;

if(m==1)

%d%s%f%f%f%f%f"

name,&

yuwen,&

yingyu,&

do

if(n==1)head=p1;

elsep2->

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

}while(!

feof(fp));

}printf("

---------------------------------------------------------\n"

fclose(fp);

return(head);

score*add(score*head,score*stu)//增加信息

score*p0,*p1,*p2,*p3,*max;

p3=stu=(score*)malloc(LEN);

\n输入要增加的学生的资料!

repeat4:

请输入学生学号(学号应大于0):

stu->

while(stu->

if(stu->

gotoend2;

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

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2