用C语言设计管理学生的成绩Word格式文档下载.docx

上传人:b****5 文档编号:17508360 上传时间:2022-12-06 格式:DOCX 页数:18 大小:160.68KB
下载 相关 举报
用C语言设计管理学生的成绩Word格式文档下载.docx_第1页
第1页 / 共18页
用C语言设计管理学生的成绩Word格式文档下载.docx_第2页
第2页 / 共18页
用C语言设计管理学生的成绩Word格式文档下载.docx_第3页
第3页 / 共18页
用C语言设计管理学生的成绩Word格式文档下载.docx_第4页
第4页 / 共18页
用C语言设计管理学生的成绩Word格式文档下载.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

用C语言设计管理学生的成绩Word格式文档下载.docx

《用C语言设计管理学生的成绩Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《用C语言设计管理学生的成绩Word格式文档下载.docx(18页珍藏版)》请在冰豆网上搜索。

用C语言设计管理学生的成绩Word格式文档下载.docx

清屏

FILE*fp;

studentxs;

/*定义一个结构体变量来装从文件中读出来的数据*/

fwrite(&

xs,sizeof(stu),1,fp);

//将成绩信息写入文件

fclose(fp);

关闭文件

feof(fp)若到文件末尾。

函数值为“真”(非0)

fread()从指定中读取数据项

getch();

/*让屏幕停留同时按任意键返回*/

if语句判断给定的条件是否满足

switch多分支选择语句

for循环语句

四、主要模块的算法描述

五、结束语

通过这次实训,我们分小组做题目,再次全面熟悉、掌握C语言基本知识,熟悉编制和调试程序的技巧,掌握分析结果的若干有效方法,进一步提高上机动手能力,培养使用计算机解决实际问题的能力,规范编程思想,培养逻辑思维能力,为以后在专业课程中应用计算机系统解决计算、分析、实验和设计等学习环节打下较扎实的基础。

附录:

程序代码:

#include<

stdio.h>

stdlib.h>

conio.h>

string.h>

#defineN20

structstudent

{

charname[10];

intnum;

floatc;

floatmath;

floatenglish;

floataver;

floatsum;

}stu;

//菜单

voidmenu()/*便于操作员使用*/

{/*清屏*/

system("

printf("

*学生平时成绩管理*\n"

printf("

*=======================*\n"

*1.成绩录入*\n"

*2.查询*\n"

*3.修改*\n"

*4.插入*\n"

*5.显示*\n"

*6.统计*\n"

*7.删除*\n"

*0.退出*\n"

);

*=======================*\n"

*请选择相应的功能:

*\n"

}

//成绩录入

voidinput()

{

FILE*fp;

if((fp=fopen("

student.dat"

"

ab"

))==NULL)

{printf("

can'

topenfile!

\n"

exit(0);

\n成绩录入"

\n****************************************************"

\n当输入姓名为ps结束录入\n"

while

(1)/*中间加油break,可使循环中断*/

{printf("

\n请输入您的姓名:

"

scanf("

%s"

xs.name);

if(strcmp(xs.name,"

ps"

)==0)break;

/*判断姓名是否为ps,用字符串判断*/

\n请输入学号:

%d"

&

xs.num);

\n请输入c语言的成绩:

%f"

xs.c);

printf("

\n请输入高数的成绩:

xs.math);

\n请输入英语的成绩:

xs.english);

xs.aver=0;

/*给平均分变量赋初值*/

xs.aver=(xs.c+xs.math+xs.english)/3;

xs.sum=0;

xs.sum=xs.c+xs.math+xs.english;

fwrite(&

}

fclose(fp);

voidxingming()

\n输入要查学生的姓名:

"

scanf("

name);

rb"

))==NULL)

while(!

feof(fp))

{

fread(&

if(strcmp(xs.name,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/

\n学生的信息如下:

\n%10s%6s%6s%6s%6s%6s%6s\n"

姓名"

学号"

C语言"

高数"

英语"

平均成绩"

总分"

\n%10%6d%6.2f%6.2f%6.2f%6.2f%6.2f\n"

xs.name,xs.num,xs.c,xs.math,xs.english,xs.aver,xs.sum);

break;

if(feof(fp))

\n查找失败!

!

/*学生不存在*/

voidxuehao()

\n输入要查学生的学号:

num);

if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/

\n学生的信息如下:

\n%10s%6d%6.2f%6.2f%6.2f%6.2f%6.2f\n"

if(feof(fp))printf("

\n查找失败!

//查询

voidsearch()

charch1;

请输入按何种方式查询:

\n1-姓名,2-学号:

ch1=getchar();

/*用字符接收*/

switch(ch1)/*判断*/

case'

1'

:

xingming();

break;

2'

xuehao();

\n按任意键返回主菜单"

getch();

//修改:

输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;

voidmodi()

\n输入要修改的学生的姓名:

rb+"

if(strcmp(xs.name,name)==0)/*判断输入要修改的姓名是否存在*/

{

修改前学生的信息如下:

\n请输入该生的C语言成绩:

\n高数成绩:

\n英语成绩:

if(!

\n修改后的学生的信息如下:

fseek(fp,sizeof(stu),1);

/*负号表示后退,1表示文件当前位置*/

/*再写入,同时把要修改的那个覆盖掉*/

else

\n学生不存在,修改失败!

\n按任意键返回主菜单"

//插入:

输入学生的平时的各项成绩,插入到指定位置;

当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。

voidinsert()

inti=0,j,k,lenth;

students,xs[N];

\n请输入插入的学生的姓名:

s.name);

\n学生的学号:

s.num);

\n学生的C成绩:

s.c);

s.math);

s.english);

s.aver=(s.c+s.math+s.english)/3;

s.sum=s.c+s.math+s.english;

\n插入位置:

k);

//i=0;

can'

xs[i],sizeof(stu),1,fp);

/*把数据读入到结构体数组中*/

if(feof(fp))break;

i++;

lenth=i;

if(k<

lenth&

&

k>

=0)/*k的位置要位于数组范围之内*/

{//插入

for(j=lenth-1;

j>

=k;

j--)

xs[j+1]=xs[j];

/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/

/*循环是只循环这一句的*/

xs[k]=s;

/*将输入的学生信息加入这个k位置*/

lenth++;

/*长度+1*/

//写回

wb"

不能建立文件!

for(i=0;

i<

lenth;

i++)

else/*不再数组范围之内*/

不能建立文件!

}

s,sizeof(stu),1,fp);

//显示

voidprint()

students;

学生成绩表"

\n*****************************************************"

\n%10s%s%6s%6s%6s%6s%6s\n"

学号"

平均成绩"

//从文件中读取成绩信息

//判断是否文件尾

\n%10s%6d%6.2f%6.2f%6.2f%6.2f%6.2f\n"

s.name,s.num,s.c,s.math,s.english,s.aver,s.sum);

//统计

voidtongji()

inti=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u;

students[N],*p1[N],*p2[N],*p3[N],*p4[N];

/*用指针数组*/

))==NULL){printf("

cant'

s[i++],sizeof(stu),1,fp);

/*读入数据*/

t=i;

i=0;

for(u=0;

u<

t;

u++)/*以下每个指针数组用于指向各分数段的学生信息*/

if(s[i].aver<

60){p1[j++]=&

s[i++];

continue;

}/*每个学生信息只能位于一个分数段*/

if(s[i].aver>

=60&

s[i].aver<

80){p2[k++]=&

=80&

90){p3[l++]=&

=90){p4[m++]=&

}

学生成绩单"

************************************************"

\n不及格的人有:

姓名学号平均分\n"

for(n=0;

n<

j-1;

n++)

\n%10s%6d%6.2f\n"

p1[n]->

name,p1[n]->

num,p1[n]->

aver);

\n60-79分的人有:

姓名学号平均分\n"

for(p=0;

p<

k;

p++)

\n%10%6d%6.2f\n"

p2[p]->

name,p2[p]->

num,p2[p]->

\n80-89分的人有:

for(q=0;

q<

l;

q++)

p3[q]->

name,p3[q]->

num,p3[q]->

\n90以上的人有:

for(r=0;

r<

m;

r++)

p4[r]->

name,p4[r]->

num,p4[r]->

//删除:

输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息

voiddele()

studentxs[N];

inti=0,len,k=-1/*k<

0是为后面if判断用的*/;

\n输入要删除的学生姓名:

if(strcmp(xs[i].name,name)==0)k=i;

//以下是删除后重新写文件

len=i;

/*结构体数组上限*/

if(k>

=0)/*k>

0说明找到删除学生位置*/

wb+"

can'

len;

if(i==k)continue;

/*从这个位置开始写入*/

else{printf("

\n删除失败!

}/*失败后重新返回菜单*/

\n按任意键返回主菜单"

print();

//菜单选择

voidmain()

charch;

while

(1)

menu();

//显示菜单

ch=getch();

//选择菜单

if(ch=='

0'

)break;

switch(ch)//判断功能项

input();

search();

3'

modi();

4'

insert();

5'

print();

6'

tongji();

7'

dele();

\n谢谢使用!

 

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

当前位置:首页 > 高中教育 > 高中教育

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

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