学生成绩管理系统2Word文档下载推荐.docx
- 文档编号:7769629
- 上传时间:2023-05-09
- 格式:DOCX
- 页数:22
- 大小:121.67KB
学生成绩管理系统2Word文档下载推荐.docx
《学生成绩管理系统2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《学生成绩管理系统2Word文档下载推荐.docx(22页珍藏版)》请在冰点文库上搜索。
课程设计说明书的格式和内容参见提供的模板。
四、指导教师和学生签字
指导教师:
________学生签名:
________
五、说明书成绩
六、教师评语
目录
一、需求分析1
二、程序流程图2
三、核心技术的实现说明及相应程序段5
四、个人总结20
五、参考文献20
六、源程序21
一、需求分析
通过对题目的分析,这个课程设计主要分为三个部分。
1录入学生信息。
(定义学生结构体,定义结构体变量之后输入学生的相关信息并且保存到文件中)
2删除学生信息(读取学生信息并且判断学生学号与要删除的学生学号是否相同,然后删除学生信息)
3能够计算平均分并显示名次(计算学生平均分并排序显示名次)。
二、流程图
1主函数
2录入学生信息
2删除学生信息
3.计算平均分显示名次
是
否
写入你
三、核心技术的实现说明及相应程序段
include<
stdlib.h>
/*字节流*/
#include<
string.h>
/*字符串*/
stdio.h>
/*输入输出*/
#defineN20
/*定义学生结构体*/
structstudent
{
charnum[20];
/*编号*/
charname[10];
/*姓名*/
floatenglish;
/*英语成绩*/
floatcomputer;
/*计算机成绩*/
floatmath;
/*数学成绩*/
floatzong;
总分
};
intn;
1、录入考生信息,包括考生姓名、学号、计算机、数学、英语成绩,以便执行后续过程
voidadd()/*添加学生信息*/
/*定义文件指针*/
FILE*fp;
inti,j;
/*定义学生结构体变量*/
structstudentstu;
/*建立文件*/
if((fp=fopen("
e:
\\student.txt"
"
w+"
))!
=NULL)
{
printf("
请输入要添加的学生数量,按回车键确认:
"
);
scanf("
%d"
&
n);
for(i=1;
i<
=n;
i++)
\n请输入第%d个学生的学号、姓名,用空格分开,并按回车键确认:
\n"
i);
%s%s"
stu.num,stu.name);
printf("
\n请输入第%d个学生的英语、计算机,数学三科成绩,用空格分开,并按回车键确认:
%f%f%f%f"
stu.english,&
puter,&
stu.math);
stu.zong=stu.math+puter+stu.english;
/*向文件中输入信息*/
fprintf(fp,"
%s\t%s\t%f\t%f\t%f\t%f\t%f\n"
stu.num,stu.name,stu.math,puter,stu.english,stu.zong);
}
/*关闭文件*/
fclose(fp);
}
2、删除学生信息,根据学号对学生信息进行删除,输入学生学号,在文件中读取所有学生信息并且将学生信息写入到结构体中,输入学生。
判断学号是否相同,当相同时记录位置并且将以后的学生信息前移。
voiddel()
inti=0,k,num;
floattemp;
charnumber[20],pp[20];
/*定义学生结构体数组*/
structstudentstu[50];
\n请输入删除学生的学号:
%s"
number);
fp=fopen("
r+"
/*判断文件是否结束*/
while(!
feof(fp)){fscanf(fp,"
stu[i].num,stu[i].name,&
stu[i].math,&
stu[i].computer,&
stu[i].english,&
stu[i].zong);
/*学号是否相同断*/
if(strcmp(stu[i].num,number)==0)
k=i;
i++;
num=i;
num=num-1;
for(i=k;
num;
/*学号前移*/
strcpy(pp,stu[i].num);
strcpy(stu[i].num,stu[i+1].num);
strcpy(stu[i+1].name,pp);
strcpy(pp,stu[i].name);
strcpy(stu[i].name,stu[i+1].name);
temp=stu[i].english;
stu[i].english=stu[i+1].english;
stu[i+1].english=temp;
temp=stu[i].math;
stu[i].math=stu[i+1].math;
stu[i+1].math=temp;
temp=stu[i].computer;
stu[i].yuwen=stu[i+1].computer;
stu[i+1].computer=temp;
;
temp=stu[i].zong;
stu[i].zong=stu[i+1].zong;
stu[i+1].zong=temp;
/*重新建立文件*/
for(i=0;
i++){fprintf(fp,"
stu[i].num,stu[i].name,stu[i].math,stu[i].computer,stu[i].english,stu[i].zong);
stu[i].num,stu[i].name,stu[i].math,stu[i].computer,stu[i].english,stu[i].zong);
3计算平均分并显示名次
voidsort()
{FILE*fp;
structstudentstu[N],temp;
inti,j,n;
reads(stu,&
n-1;
for(j=0;
j<
n-1-i;
j++)
{if(stu[j].english+stu[j].computer+stu[j].math<
stu[j+1].english+stu[j+1].computer+stu[j+1].math)
{strcpy(temp.num,stu[j].num);
strcpy(temp.name,stu[j].name);
temp.english=stu[j].english;
puter=stu[j].computer;
temp.math=stu[j].math;
strcpy(stu[j].num,stu[j+1].num);
strcpy(stu[j].name,stu[j+1].name);
stu[j].english=stu[j+1].english;
stu[j].computer=stu[j+1].computer;
stu[j].math=stu[j+1].math;
strcpy(stu[j+1].num,temp.num);
strcpy(stu[j+1].name,temp.name);
stu[j+1].english=temp.english;
stu[j+1].computer=puter;
stu[j+1].math=temp.math;
if((fp=fopen("
c:
wb"
))==NULL)
{printf("
打开文件失败!
return;
putw(n,fp);
j=1;
n;
{fwrite(&
stu[i],sizeof(structstudent),1,fp);
if(stu[i].english+stu[i].computer+stu[i].math==stu[i+1].english+stu[i+1].computer+stu[i+1].math)
\n%3d%5s%5s%8.2f%8.2f%8.2f%9.2f\n"
j,stu[i].num,stu[i].name,stu[i].english,stu[i].computer,stu[i].math,(stu[i].english+stu[i].computer+stu[i].math)/3);
else
j++,stu[i].num,stu[i].name,stu[i].english,stu[i].computer,stu[i].math,(stu[i].english+stu[i].computer+stu[i].math)/3);
getch();
}
主函数其功能是调用各个功能函数
voidmain()
intn;
while
(1)
{
menu();
\n请输入您要选择的操作序号,按回车键确认:
switch(n)
{case1:
add();
break;
case2:
del();
case3:
sort();
case4:
exit(0);
default:
输入错误,请输入列表中存在的序号!
\n"
}_
四、个人总结
通过一个这几天的努力,使我学到了基本的C语言知识。
加深了对数据组织的认识。
熟练掌握了结构体的综合运用。
我对C语言程序设计的思路和方法有了更深入的了解和清醒的认识,加深了我对C语言中算法,数据类型,运算符与表达式,程序结构设计,循环控制,函数,指针,结构体,文件等方面的应用能力,使我基本掌握了设计程序的思路,能够独立编写并调试一些简单的程序。
通过这次课程设计不仅使我学习到了有关C语言知识,还使我懂得了有关数据结构,这次课为我今后在计算机方面的学习奠定了坚实的基础。
五、参考文献
1谭浩强.C程序设计.北京:
清华大学出版社,2005
2刘成等.C语言程序设计实验指导与习题集.北京:
中国铁道出版社,2006
六、源程序
conio.h>
{charnum[20];
voidmenu();
voidreads();
voidadd();
voiddel();
voidsort();
voidexit();
voidmenu()
{printf("
*************************banjichangjiguanlixitong************************"
\n1添加学生数据"
\n2删除学生数据"
\n3三科平均分排序"
\n4退出"
voidreads(structstudentstu[N],int*n)
inti=0;
rb"
{printf("
wenjiandakaishibai!
*n=getw(fp);
*n;
fread(&
voidadd()
{FILE*fp;
intn,i,j;
rb+"
{j=getw(fp);
rewind(fp);
请输入要添加的学生数量,按回车键确认n:
putw(j+n,fp);
fseek(fp,0L,2);
\n请输入第%d个学生的英语、计算机和数学三门成绩,用空格分开,并按回车键确认:
%f%f%f"
fwrite(&
stu,sizeof(structstudent),1,fp);
voiddel()
{structstudentstu[N];
charnumber[20];
\n请输入要删除信息的学生学号,按回车键确认:
getchar();
if(strcmp(number,stu[i].num)==0)break;
if(i>
=n)
没有找到该学生信息!
{for(j=i+1;
strcpy(stu[j-1].num,stu[j].num);
strcpy(stu[j-1].name,stu[j].name);
stu[j-1].english=stu[j].english;
stu[j-1].computer=stu[j].computer;
stu[j-1].math=stu[j].math;
文件打开失败!
{putw(n-1,fp);
删除成功!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 学生 成绩管理系统