C语言学生成绩查询系统Word格式文档下载.docx
- 文档编号:22412972
- 上传时间:2023-02-04
- 格式:DOCX
- 页数:26
- 大小:380.92KB
C语言学生成绩查询系统Word格式文档下载.docx
《C语言学生成绩查询系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C语言学生成绩查询系统Word格式文档下载.docx(26页珍藏版)》请在冰豆网上搜索。
STUtemp;
voidsort(STUstudents[],intn);
//排序
voidsave(STUstudents[],intn);
//导出
intLocate(STUstudents[],intn);
//查询
/*--------------显示菜单--------------------*/
chardisplaymenu()
chark;
system("
cls"
);
printf("
学生成绩管理\n"
-----------------------------------应用菜单-------------------------------------\n"
1输入学生成绩\n\n"
2输出学生成绩\n\n"
3查询学生成绩\n\n"
4修改学生成绩\n\n"
5查看成绩排序\n\n"
6查看成绩统计\n\n"
7保存数据\n\n"
8读取数据\n\n"
9退出系统\n\n"
请选择你想进行的操作:
"
k=getchar();
returnk;
}
/*****定义输出函数*****/
voidprintheader()/*格式化输出表头*/
\n\n************************学生成绩管理系统****************************\n\n\n"
|学号|姓名|年龄|性别|C语言成绩|计算机成绩|英语成绩|平均成绩|\n"
voidprintdata(STUpp)/*格式化输出表中数据*/
STU*p;
p=&
pp;
|%-5s|%-5s|%-4d|%-4s|%-6.0f|%-6.0f|%-5.0f|%-6.0f|\n"
p->
num,p->
name,p->
age,p->
sex,p->
cyy,p->
computer,p->
english,p->
pj);
/*****添加学生信息*****/
intadd(STUstudents[],int*n)
{
inti=0;
\n"
请输入学生信息\n"
退出请在学生号处输入:
0\n"
请输入学生学号:
\n"
scanf("
%s"
students[i].num);
while(strcmp(students[i].num,"
0"
))//当输入的学号为时结束输入
{
请输入学生姓名:
students[i].name);
****************\n\n\n"
请输入学生年龄:
%d"
&
students[i].age);
请输入学生性别:
\n"
students[i].sex);
请输入C语言成绩:
%f"
students[i].cyy);
请输入计算机成绩:
students[i].computer);
请输入英语成绩:
students[i].english);
students[i].pj=(students[i].cyy+students[i].computer+students[i].english)/3;
学生平均成绩:
%-8.0f\n"
students[i].pj);
i++;
}
*n=i;
save(students,i);
returni;
/*****查询学生信息函数*****/
intLocate(STUstudents[],intn)
intk,m=-1;
charnum[10],name[20];
退出请输入:
请选择以什么方式查询:
1).按学生学号查询2).按学生姓名查询\n"
k);
if(k==1)
请输入你要查询的学生学号:
num);
while(i<
n)
if(strcmp(students[i].num,num)==0)/*若找到学号*/
{
>
学生学号:
%s\n*学生姓名:
%s\n*学生年龄:
%d\n*学生性别:
%s\n>
C语言成绩:
%-8.0f\n>
计算机成绩:
英语成绩:
平均成绩:
%-8.0f\n"
students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
if(i>
=n)
没有所找学生信息\n"
elseif(k==2)
请输入你要查询的学生姓名:
name);
if(strcmp(students[i].name,name)==0)/*若找到姓名*/
{printf("
%s\n学生姓名:
%s\n学生年龄:
%d\n学生性别:
%s\n学生C语言成绩:
%-8.0f\n计算机成绩:
%-8.0f\n英语成绩:
%-8.0f\n平均成绩:
returnm;
/*返回一个根m便于修改学生信息*/
/*****显示函数*****/
voidinput(STUstudents[],intn)
inti;
//清屏
if(n==0)/*表示没有学生信息记录*/
\n没有学生记录!
\n\n"
printheader();
/*输出表格头部*/
i=0;
n)/*逐条输出数组中存储的学生信息*/
printdata(students[i]);
/*****修改子程序*****/
voidModify(STUstudents[],intn)
if(n<
=0)
\n退出请输入:
\n----------notfound!
----------\n"
return;
修改学生信息"
input(students,n);
i=Locate(students,n);
/*查询到该数组元素,并返回下标值*/
if(i!
=-1)/*若i!
=-,表明已经找到该数组元素*/
请输入新的学生信息:
学号:
"
姓名:
年龄:
性别:
C语言:
英语:
计算机:
students[i].pj=(students[i].cyy+students[i].english+students[i].computer)/3;
%-9.0f\n"
save(students,n);
\n-------------修改成功!
-------------\n"
else
notfound!
/*****学生成绩排序子程序*****/
voidsort(STUstudents[],intn)
inti,j,a,b,c,d,e,f,k;
floatp;
成绩排序方式选择:
1.按C语言2.按英语3.按平均\n"
if(k==1)/*用选择法对C语言排序*/
for(i=0;
i<
n;
i++)
for(j=0;
j<
n-1;
j++)
if(students[i].english<
students[j+1].english)
temp=students[i];
students[i]=students[j+1];
students[j+1]=temp;
elseif(k==2)/*英语用冒泡法*/
for(a=0;
a<
a++)
c=a;
for(b=a+1;
b<
b++)
if(students[b].cyy>
students[c].cyy)
c=b;
if(c!
=a)
temp=students[a];
students[a]=students[c];
students[c]=temp;
if(k==3)/*平均成绩用插入法*/
for(d=1;
d<
d++)
p=students[d].pj;
for(e=0;
e<
d;
e++)
if(students[e].pj<
p)
if(e==d)
continue;
for(f=d;
f>
e;
f--)
students[f]=students[f-1];
students[e]=temp;
/*显示排序后的所有记录*/
\n排序完成!
/*****统计学生分数在各等级的人数子程序*****/
voidTongji(STUstudents[],intn)
intcount6085=0,count85=0,count60=0;
i=0;
while(i<
if(students[i].pj>
85){count85++;
i=i+1;
continue;
}/*平均成绩=>
85*/
=60&
&
students[i].pj<
=85){count6085++;
}/*60<
平均成绩<
if(students[i].pj<
60){count60++;
}/*平均成绩<
60*/
printf("
\n************统计结果************\n\n"
平均成绩高于分的人数:
%d\n"
count85);
平均成绩在分和分之间的人数:
count6085);
平均成绩低于分的人数:
count60);
\n\n**********统计结束**********"
getchar();
/*****导出或保存数据*****/
voidsave(STUstudents[],intn)
FILE*fp;
fp=fopen("
students"
"
wb+"
/*以读写方式打开创建一个二进制文件*/
if(fp==NULL)/*打开文件失败*/
\n*******打开文件错误!
*******\n"
i<
i++)
if(fwrite(&
students[i],sizeof(STU),1,fp)==1)/*每次写一条记录或一个结构数组元素至文件*/
0)
\n\n*共导出%d个学生信息*\n"
i);
**没有信息导出*\n"
fclose(fp);
/*关闭此文件*/
/*****导入数据*****/
voidRead(STUstudents[],int*n)
rb"
/*以只读方式打开一个已有的二进制文件*/
\n********打开文件错误!
********\n"
exit(0);
N;
if(fread(&
students[i],sizeof(STU),1,fp)==1)/*每次读一条记录或一个结构数组元素至文件*/
\n\n************共导入:
%d个学生信息************\n"
{system("
************没有信息导入!
************\n"
/*****主函数*****/
voidmain()
STUstudents[N];
intn;
chars1[3],s2[3]={"
1"
};
inti,k;
******************************************************\n"
^<
欢迎使用本软件>
^\n\n"
版本:
修改版>
^\n\n\n"
姓名>
:
邢曾智<
班级>
09511002<
学号>
0951100201^\n"
^^\n"
3;
\n请输入密码:
gets(s1);
if(strcmp(s1,s2)==0)
\n>
密码错误,请重新输入"
2)
\n您已连续次输错,系统将退出!
while
(1)
k=displaymenu();
switch(k)
case'
1'
:
add(students,&
n);
2'
Read(students,&
input(students,n);
break;
3'
Locate(students,n);
4'
Modify(students,n);
;
5'
sort(students,n);
6'
Tongji(students,n);
7'
save(students,n);
8'
9'
\n**********谢谢您的使用**********\n"
exit(0);
default:
\n\n输入错误,输入必须是~9之间的一个数字!
请重新输入\n"
3、运行结果(截图):
第一步:
输入本软件的使用密码。
第二步:
登陆后的画面
第三步:
输入学生成绩的画面
第四步:
输出学生成绩
这个是随便输入后保存的有关数据
第五步:
查询成绩
第六步:
修改原来的信息
第七步:
成绩排序
按英语排序
第八步:
成绩统计
第九步:
保存数据
第十步:
导出数据
4、遇到困难:
在进行此次实训的过程中我遇到了许多的问题,比如没有定义函数名就进行函数的编译,以至于等到运行时找了很久都没有找到错误,还有就是定义指针数组名的时候不清楚如何在结构体中添加指针数组以及如何在特定的地方添加函数。
不懂如何用在被调用函数中直接改变多个被调函数值,以及如何用函数把变量传送到到指定的地址等等。
实训心得:
历时2星期的《C语言程序实训》已经结束了,在这2星期编程的过程中感触颇多,实训编程的同时暴露出了许多我自身存在的问题,同时也对自身有了很大的提高。
首先,对我以前做题做事非常马虎的毛病有了很大的改进,通过在这2星期编程的过程中的锻炼,我现在做题比以前仔细多了,会小心翼翼地去看
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 学生 成绩 查询 系统