学生成绩管理系统C语言Word文件下载.docx
- 文档编号:20030615
- 上传时间:2023-01-16
- 格式:DOCX
- 页数:35
- 大小:830.73KB
学生成绩管理系统C语言Word文件下载.docx
《学生成绩管理系统C语言Word文件下载.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统C语言Word文件下载.docx(35页珍藏版)》请在冰豆网上搜索。
/*出生月*/
intBirthDay;
/*出生日*/
floatscore[4];
/*成绩*/
floatsum;
/*总分*/
floataverage;
/*平均分*/
structSt1*next;
}StudentNode;
(四)菜单的样板模式为:
1.Enterlist输入记录
2.Deletearecordfromlist从表中删除记录
3.Printlist显示链表中所有记录
4.Searchrecordonname按照姓名查找记录
5.Savethefile将链表中记录保存到文件中
6.Loadthefile从文件中读入记录
7.Computethescore计算所有学生的总分和平均分
8.Querybyclass按班级查询显示学生总分
9.Quit退出
(五)当前时间获取C代码
以下代码可以获取系统当前时间,用于判断年龄是否合理。
#include"
time.h"
voidmain()
{structtm*ptm;
longts;
inty,m,d,h,n,s;
ts=time(NULL);
ptm=localtime(&
ts);
y=ptm->
tm_year+1900;
/*年*/
m=ptm->
tm_mon+1;
/*月*/
d=ptm->
tm_mday;
/*日*/
h=ptm->
tm_hour;
/*时*/
n=ptm->
tm_min;
/*分*/
s=ptm->
tm_sec;
/*秒*/
}
三,系统构成
1.系统模块结构图
2.各模块的功能
1.学生基本信息的录入
选择菜单栏中的“1”项进入学生基本信息录入模块。
在该模块中可以多以录入例如学号,班级,分数等学生的基本信息,并且,可以对于输入的信息作出有效性的判断。
2.学生基本信息的显示
选择菜单栏的“3”项进入学生基本信息显示模块,在该模块中可以对于已经录入的信息进行显示。
3.学生基本信息的插入与删除
选择菜单栏的“1”项进入学生基本信息的插入模块,在此模块中可以对学生的信息进行插入。
选择菜单栏的“3”项进入学生基本信息删除模块,在此模块中可以对于学生的以输入学号的方式进行删除。
4.文件的保存和读取
选择菜单栏的“5”项进入文件的保存模块,在此模块中,可以吧录入的信息保存到文件中去。
选择菜单栏的“6”项进入文件的读取模块。
在此模块中,通过输入文件名的方式对于保存到文件中的学生信息进行读取。
5.学生基本信息的查询模块
选择菜单栏的第“4”项进入按姓名查找的模块,在此模块中,可以按照姓名查找此学生的相关信息。
选择菜单栏的第“8”项进入按班级查询显示学生总分的模块。
此模块中,学生可以通过输入班级号来查找自己的总分成绩
6.学生基本信息的统计模块
选择菜单栏的第”7“项进入计算所有学生总分,平均分模块。
选择菜单栏的第”9“项进入校成绩单模块。
在此模块中,学生可以查询到每科的总分,平均分以及各科在各段的分布情况等,也可以查到按照平均分自己在输入的数据中的排名。
3.数据结构设计以及用法说明
1.需处理的学生基本信息包括:
学号、学生姓名、出生年、月、日,各科成绩。
这些信息采用结构体数据类型表示更为方便,因为学生信息数量的不确定性,所以信息应采用链表进行存储,这更符合实际应用
所以采用的数据结构如下
typedefstructSt1
{
charIDNumber[16];
/*学号*/
charFamilyName[16];
charGivenName[16];
intsex;
/*性别(0代表“女”,1代表“男”)*/
intBirthYear;
/*出生年*/
intBirthMonth;
/*出生月*/
intBirthDay;
/*出生日*/
floatscore[4];
/*成绩*/
floatsum;
/*总分*/
floataverage;
/*平均分*/
structSt1*next;
};
StudentNode
(Struct是声明结构体类型时所必须使用的关键字,不能省略。
)该结构体包括IDNumber,Family,…sum,average等不同类型的数据项引用结构体变量名中成员的一般方式为:
结构体变量名.成员名
2.本程序用链表方法来处理对象。
对象之间连接起来的程序为:
p1=p1->
next.数据交换的代码为:
p2=p1->
next;
P1->
next=p2->
P2->
next=p1;
P1=p2;
3.同时此程序仍沿用很多车辆违章系统的框架,在程序中仍然使用了switch,for,if,do-while等结构。
已达到想要的目的。
4.为了实现学生系统的很多功能,此系统应用了函数的知识,在整个系统中存在很多函数嵌套的现象。
正是由于函数的存在,方便了我们很到位的完成了我们的系统。
4.程序结构(流程图)
四.心得体会
忙忙碌碌中,一周的实验课就这样接近了尾声。
用一句话评价这一周就是即累并快乐着。
本周,我们进行了计算机程序编程课程的设计。
老师上课时留了2个任务。
需要我们用一周的时间来完成。
第一个任务是做车辆违章系统。
这个系统做起来还算简单。
但,虽然简单,却也充分暴露了我c语言方面的瘸腿。
这么简单的任务,我用了周一周二2天才算编完,而且,基本上每晚我都得到1点到2点左右才能睡觉。
虽然,有点儿辛苦,但,我发现,我这2天的进步很快。
通过这2天熬夜的编程,为我第2个任务的顺利进行打下了坚实的基础。
2天的时间,我回忆起很多已经遗忘的知识,而且,学习如链表等的平时不怎么常用的新知识。
通过这2天的努力,我已经适应了程序语言,可以编一些稍大点儿的程序。
第二个任务是学生成绩管理系统。
学生成绩管理系统这个实验很复杂,需要把程序按功能分成各个模块,每个模块的功能是特定的,有的是输入记录数据,有的是对成绩排序。
在输入数据还要注意数据是否合法,长度是否符合规定等等。
在这次程序中,用链表会快捷一些,通过存储的地址找到数据,会提高运行速度。
同时还要注意各个模块之间的联系,数据的调用。
完成这个程序光是靠自己硬编硬想是一定不能完成的。
编这个程序,我查阅了很多的书籍,也看了很多相关的资料,同样,也参照了一些以前学长们完成的程序。
在这种自学的条件下我收获了很多的快乐。
虽然,很辛苦,但,有了坚实的地基,才能筑起坚固的大楼。
虽然,这其中我还是遇到了很多很多的的困难,但,完成后的幸福感是我坚持下去的理由。
终于,在周四晚2点,我完成了我的第2个任务。
感觉很满足,很有成就。
为期一周的实验结束啦,这一周我学到了很多知识,不仅是在编程方面,在自己学习方面,在锻炼自己意志品质方面,我自己都有很大的提升。
我相信这次的实验设计将是我人生中一笔宝贵的财富,是我老年时回忆的很美好很美好的回忆。
同样地,感谢老师一周以来悉心的教诲与陪伴。
五.实验结果
1.菜单栏
2.输入页
2.删除页
3.显示页
4.查询页
5.保存页
6.读取页
7.查询页
8.校成绩单页
9.退出页
五.程序清单
#include<
stdio.h>
malloc.h>
string.h>
time.h>
typedefstructST1
charIDNumber[10];
charClass[4];
/*班级*/
charFamilyname[6];
/*姓*/
charGivenName[6];
charsex[3];
/*性别(0代表"
女"
,1代表"
男"
)*/
charBirthYear[6];
/*出生年*/
charBirthMonth[4];
charBirthDay[4];
/*出生日*/
structST1*next;
}StudentNode;
StudentNode*headLink;
voidLoad();
voidMenu();
voidHeadLink();
StudentNode*Malloc();
voidGetInformation(StudentNode*t);
voidOutputInformation();
voidDesplayOneNode(StudentNode*t);
voidInsert(StudentNode*t);
voidDelete();
voidFamily();
voidSave();
voidwy();
voidgs();
voidcyy();
voidmz();
voidClass();
voidmz90();
voidmz80();
voidmz70();
voidmz60();
voidmzfail();
voidgs90();
voidgs80();
voidgs70();
voidgs60();
voidgsfail();
voidwy90();
voidwy80();
voidwy70();
voidwy60();
voidwyfail();
voidcyy90();
voidcyy80();
voidcyy70();
voidcyy60();
voidcyyfail();
voidone();
voidcompute();
intchoose;
{HeadLink();
Menu();
}
voidMenu()
{StudentNode*p;
printf("
\n"
);
---欢迎您使用学生成绩管理系统---\n\n"
--1--enterlist输入记录\n"
--2--deletearecard从表中删除记录\n"
--3--printlist显示链表中所有记录\n"
--4--searchrecordonname按照姓名查找记录\n"
--5--Savethefile将链表中记录保存到文件中\n"
--6--Loadthefile从文件中读记录\n"
--7--Computethescore计算所有学生的总分和均分\n"
--8--Querybyclass按班级查询显示学生总分\n"
--9--Schoolreport校成绩单\n"
--10--quit退出\n\n"
scanf("
%d"
&
choose);
请输入您的选择"
switch(choose)
{case1:
p=Malloc();
GetInformation(p);
Insert(p);
break;
case2:
Delete();
case3:
OutputInformation();
case4:
Family();
case5:
Save();
case6:
Load();
case7:
compute();
case8:
Class();
case9:
one();
wy();
gs();
cyy();
mz();
mz90();
mz80();
mz70();
mz60();
mzfail();
gs90();
gs80();
gs70();
gs60();
gsfail();
wy90();
wy80();
wy70();
wy60();
wyfail();
cyy90();
cyy80();
cyy70();
cyy60();
cyyfail();
case10:
free(headLink);
return;
default:
}
voidHeadLink()
StudentNode*p;
p=(StudentNode*)malloc(sizeof(StudentNode));
headLink=p;
p->
next=NULL;
StudentNode*Malloc()
inti;
if(p==NULL)
returnNULL;
for(i=0;
i<
10;
i++)
IDNumber[i]='
\0'
;
6;
Familyname[i]='
GivenName[i]='
3;
sex[i]='
BirthYear[i]='
4;
BirthMonth[i]='
BirthDay[i]='
score[0]=0.0;
p->
score[1]=0.0;
score[2]=0.0;
score[3]=0.0;
sum=0.0;
average=0.0;
returnp;
voidGetInformation(StudentNode*t)
structtm*ptm;
inty,m,d;
y=ptm->
m=ptm->
d=ptm->
请输入学号:
scanf("
%s"
t->
IDNumber);
请输入班级:
Class);
请输入姓:
Familyname);
请输入名:
GivenName);
请输入性别:
sex);
请输入出生年:
BirthYear);
请输入出生月:
BirthMonth);
请输入出生日:
BirthDay);
请输入外语成绩:
%f"
(t->
score[0]));
请输入高数成绩:
score[1]));
请输入C语言成绩:
score[2]));
请输入马哲成绩:
score[3]));
voidInsert(StudentNode*t)
p=headLink;
while(p->
next)
{p=p->
next=t;
voidLoad()
{FILE*fp;
StudentNode*p;
fp=fopen("
StudentNode.txt"
"
r"
if(!
fp)
{printf("
文件不存在\n"
return;
}charfileo[10];
printf("
nameofStudentNode'
txt:
scanf("
fileo);
p=Malloc();
while(fscanf(fp,"
%s%s%s%s%s%s%s%f%f%f%f%f%f"
p->
IDNumber,p->
Familyname,p->
GivenName,p->
sex,p->
BirthYear,p->
BirthMonth,p->
BirthDay,&
(p->
score[0]),&
score[1]),&
score[2]),&
score[3]),p->
sum,p->
average)>
0);
{Insert(p);
}
fclose(fp);
voidSave()
{
FILE*fp;
charfilee[10];
filee);
p=headLink->
if(p==NULL)
无文件,请先输入学生信息\n\n"
w+"
while(p)
{fprintf(fp,"
%s%s%s%s%s%s%s%f%f%f%f%f%f\n"
BirthDay,p->
score[0],p->
score[1],p->
score[2],p->
score[3],p->
average);
p=p->
voidFamily()
charfn[6];
charflag=0;
p=headLink->
fn);
while(p)
{if(strcmp(p->
Familyname,fn)==0)
{DesplayOneNode(p);
flag=1;
p=p->
if(!
flag)
对不起,不存在姓为%s的学生\n"
voidDesplayOneNode(StudentNode*t)
{printf("
%s\t"
%.0f\t"
score[0]);
score[1]);
score[2]);
score[3]);
t->
sum=t->
score[0]+t->
score[1]+t->
score[2]+t->
score[3];
sum);
average=(t->
sum)/4;
%.0f\t\n"
voidDelete()
{chargo[8];
StudentNode*p,*q;
charhave=0;
请输入要删除的学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统 语言
![提示](https://static.bdocx.com/images/bang_tan.gif)