c语言大作业学生系统.docx
- 文档编号:5194700
- 上传时间:2022-12-13
- 格式:DOCX
- 页数:19
- 大小:221.62KB
c语言大作业学生系统.docx
《c语言大作业学生系统.docx》由会员分享,可在线阅读,更多相关《c语言大作业学生系统.docx(19页珍藏版)》请在冰豆网上搜索。
c语言大作业学生系统
c语言大作业--学生系统
部门:
xxx
时间:
xxx
制作人:
xxx
整理范文,仅供参考,可下载自行修改
#include"stdafx.h"
#include
#include
#include
#include
#defineN100
structstudent
{
charname[10]。
intnum。
charsex[10]。
floatmath。
floatyingyu。
floatzhengzhi。
floatywen。
floataver。
floatsum。
}stu。
voidmenu(>
{
system("cls">。
printf("*欢迎使用学生成绩管理系统*\n">。
b5E2RGbCAP
printf("*=======================*\n">。
p1EanqFDPw
printf("*请选择相应的功能:
*\n">。
DXDiTa9E3d
printf("*1.成绩录入*\n">。
RTCrpUDGiT
printf("*2.查询成绩*\n">。
5PCzVD7HxA
printf("*3.修改成绩*\n">。
jLBHrnAILg
printf("*4.插入成绩*\n">。
xHAQX74J0X
printf("*5.报表输出*\n">。
LDAYtRyKfE
printf("*6.删除操作*\n">。
Zzz6ZB2Ltk
printf("*0.退出系统*\n">。
dvzfvkwMI1
printf("*=======================*\n">。
rqyn14ZNXI
printf("\n\n\n\n\n\n\n\n\n****\n">。
EmxvxOtOco
}
//成绩录入
voidinput(>
{
system("cls">。
FILE*fp。
studentxs。
/*定义一个结构体变量来装从文件中读出来的数据*/
intc=1。
if((fp=fopen("student.dat","ab">>==NULL>
{
printf("can'topenfile!
\n">。
exit(0>。
}
printf("\n成绩录入">。
printf("\n****************************************************">。
SixE2yXPq5
while(c++>/*中间加油break,可使循环中断*/
{printf("\n请输入您的姓名(姓名为end结束>:
">。
scanf("%s",xs.name>。
if(strcmp(xs.name,"end">==0>break。
/*判断姓名是否为end,用字符串判断*/6ewMyirQFL
printf("\n请输入学号:
">。
scanf("%d",&xs.num>。
printf("\n性别:
">。
scanf("%s",&xs.sex>。
printf("\n请输入数学的成绩:
">。
scanf("%f",&xs.math>。
printf("\n请输入英语的成绩:
">。
scanf("%f",&xs.yingyu>。
printf("\n请输入政治的成绩:
">。
scanf("%f",&xs.zhengzhi>。
printf("\n请输入语文的成绩:
">。
scanf("%f",&xs.ywen>。
xs.aver=0。
/*给平均分变量赋初值*/
xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen>/4。
xs.sum=0。
xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen。
fwrite(&xs,sizeof(stu>,1,fp>。
//将成绩信息写入文件
system("cls">。
}
fclose(fp>。
}
voidxingming(>
{
FILE*fp。
studentxs。
charname[10]。
printf("\n输入要查学生的姓名:
">。
scanf("%s",name>。
if((fp=fopen("student.dat","rb">>==NULL>
{printf("can'topenfile!
\n">。
exit(0>。
}
while(!
feof(fp>>
{
fread(&xs,sizeof(stu>,1,fp>。
if(strcmp(xs.name,name>==0>/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/kavU42VRUs
{
printf("\n学生的信息如下:
\n">。
printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩">。
y6v3ALoS89
printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum>。
M2ub6vSTnP
break。
}
}
if(feof(fp>>
printf("\n查找失败!
!
!
">。
/*学生不存在*/
fclose(fp>。
}
voidxuehao(>
{
FILE*fp。
studentxs。
intnum。
printf("\n输入要查学生的学号:
">。
scanf("%d",&num>。
if((fp=fopen("student.dat","rb">>==NULL>
{printf("can'topenfile!
\n">。
exit(0>。
}
while(!
feof(fp>>
{
fread(&xs,sizeof(stu>,1,fp>。
if(xs.num==num>/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/
{
printf("\n学生的信息如下:
\n">。
printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩">。
0YujCfmUCw
printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum>。
eUts8ZQVRd
break。
}
}
if(feof(fp>>printf("\n查找失败!
!
!
">。
fclose(fp>。
}
//查询
voidsearch(>
{
charch1。
system("cls">。
printf("请输入按何种方式查询:
\n">。
printf("\n1-姓名,2-学号:
">。
ch1=getchar(>。
/*用字符接收*/
switch(ch1>/*判断*/
{
case'1':
xingming(>。
break。
case'2':
xuehao(>。
break。
}
printf("\n按任意键返回主菜单">。
getch(>。
/*让屏幕停留同时按任意键返回*/
}
//修改:
输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;
voidmodi(>
{
studentxs。
FILE*fp。
charname[10]。
system("cls">。
printf("\n输入要修改的学生的姓名:
">。
scanf("%s",name>。
sQsAEJkW5T
if((fp=fopen("student.dat","rb+">>==NULL>
{printf("can'topenfile!
\n">。
exit(0>。
}
while(!
feof(fp>>
{
fread(&xs,sizeof(stu>,1,fp>。
if(strcmp(xs.name,name>==0>/*判断输入要修改的姓名是否存在*/
{
printf("修改前学生的信息如下:
\n">。
printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩">。
GMsIasNXkA
printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum>。
TIrRGchYzg
printf("\n请输入该生的数学成绩:
">。
scanf("%f",&xs.math>。
7EqZcWLZNX
printf("\n英语成绩:
">。
scanf("%f",&xs.yingyu>。
printf("\n政治成绩:
">。
scanf("%f",&xs.zhengzhi>。
printf("\n语文成绩:
">。
scanf("%f",&xs.ywen>。
xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen>/4。
lzq7IGf02E
xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen。
break。
}
}
if(!
feof(fp>>
{
printf("\n修改后的学生的信息如下:
\n">。
printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩">。
zvpgeqJ1hk
printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f\n",xs.name,xs.num,xs.sex,xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum>。
NrpoJac3v1
fseek(fp,sizeof(stu>,1>。
/*负号表示后退,1表示文件当前位置*/
fwrite(&xs,sizeof(stu>,1,fp>。
/*再写入,同时把要修改的那个覆盖掉*/
}
else
printf("\n学生不存在,修改失败!
!
">。
fclose(fp>。
printf("\n按任意键返回主菜单">。
getch(>。
}
//插入:
输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。
1nowfTG4KI
voidinsert(>
{
inti=0,j,k,lenth。
FILE*fp。
students,xs[N]。
system("cls">。
printf("\n请输入插入的学生的姓名:
">。
scanf("%s",&s.name>。
fjnFLDa5Zo
printf("\n学生的学号:
">。
scanf("%d",&s.num>。
printf("\n学生的性别:
">。
scanf("%s",&s.sex>。
printf("\n数学成绩:
">。
scanf("%f",&s.math>。
printf("\n英语成绩:
">。
scanf("%f",&s.yingyu>。
printf("\n政治成绩:
">。
scanf("%f",&s.zhengzhi>。
tfnNhnE6e5
printf("\n语文成绩:
">。
scanf("%f",&s.ywen>。
s.aver=(s.math+s.yingyu+s.zhengzhi+s.ywen>/4。
s.sum=s.math+s.yingyu+s.zhengzhi+s.ywen。
printf("\n插入位置:
">。
scanf("%d",&k>。
//i=0。
if((fp=fopen("student.dat","rb">>==NULL>
{
printf("can'topenfile!
\n">。
exit(0>。
}
while(!
feof(fp>>
{
fread(&xs[i],sizeof(stu>,1,fp>。
/*把数据读入到结构体数组中*/
if(feof(fp>>break。
i++。
}
fclose(fp>。
lenth=i。
if(k
{//插入
for(j=lenth-1。
j>=k。
j-->
xs[j+1]=xs[j]。
/*一开始j是最大的,往后移一个这样移动避免数据被覆盖*/
/*循环是只循环这一句的*/
xs[k]=s。
/*将输入的学生信息加入这个k位置*/
lenth++。
/*长度+1*/
//写回
if((fp=fopen("student.dat","wb">>==NULL>
{
printf("不能建立文件!
!
\n">。
exit(0>。
}
for(i=0。
i i++> fwrite(&xs[i],sizeof(stu>,1,fp>。 } else/*不再数组范围之内*/ { if((fp=fopen("student.dat","ab">>==NULL> { printf("不能建立文件! ! \n">。 exit(0>。 } fwrite(&s,sizeof(stu>,1,fp>。 } printf("\n按任意键返回主菜单">。 fclose(fp>。 } //显示 voidprint(> { FILE*fp。 students。 system("cls">。 if((fp=fopen("student.dat","rb">>==NULL> { printf("can'topenfile! \n">。 exit(0>。 } printf("学生成绩表">。 HbmVN777sL printf("\n*****************************************************">。 V7l4jRB8Hs printf("\n%10s%10s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩">。 83lcPA59W9 while(! feof(fp>> { fread(&s,sizeof(stu>,1,fp>。 //从文件中读取成绩信息 if(feof(fp>>break。 //判断是否文件尾 printf("\n%10s%6d%6s%6.2f%6.2f%6.2f%6.2f%6.2f%6.2f\n",s.name,s.num,s.sex,s.math,s.yingyu,s.zhengzhi,s.ywen,s.aver,s.sum>。 mZkklkzaaP } fclose(fp>。 printf("\n按任意键返回主菜单">。 getch(>。 } //统计 voidtongji(> { inti=0,j=0,k=0,l=0,m=0,n,p,q,r,t,u。 FILE*fp。 students[N],*p1[N],*p2[N],*p3[N],*p4[N]。 /*用指针数组*/AVktR43bpw system("cls">。 if((fp=fopen("student.dat","rb">>==NULL>{printf("cant'topenfile! \n">。 exit(0>。 }ORjBnOwcEd while(! feof(fp>> { fread(&s[i++],sizeof(stu>,1,fp>。 /*读入数据*/ if(feof(fp>>break。 } t=i。 i=0。 for(u=0。 u u++>/*以下每个指针数组用于指向各分数段的学生信息*/ { if(s[i].aver<60>{p1[j++]=&s[i++]。 continue。 }/*每个学生信息只能位于一个分数段*/2MiJTy0dTT if(s[i].aver>=60&&s[i].aver<80>{p2[k++]=&s[i++]。 continue。 }gIiSpiue7A if(s[i].aver>=80&&s[i].aver<90>{p3[l++]=&s[i++]。 continue。 }uEh0U1Yfmh if(s[i].aver>=90>{p4[m++]=&s[i++]。 continue。 } } printf("学生成绩单">。 IAg9qLsgBX printf("\n90以上的人有: 姓名学号平均分\n">。 for(r=0。 r r++> { printf("\n%10s%6d%6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver>。 WwghWvVhPE } printf("\n80-89分的人有: 姓名学号平均分\n">。 for(q=0。 q q++> { printf("\n%10s%6d%6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver>。 asfpsfpi4k } printf("\n60-79分的人有: 姓名学号平均分\n">。 for(p=0。 p p++> { printf("\n%10s%6d%6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver>。 ooeyYZTjj1 } printf("\n不及格的人有: 姓名学号平均分\n">。 for(n=0。 n n++> { printf("\n%10s%6d%6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver>。 BkeGuInkxI } fclose(fp>。 printf("\n按任意键返回主菜单">。 getch(>。 } //if(s[i].aver<60>{p1[j++]=&s[i++]。 continue。 }/*每个学生信息只能位于一个分数段*/PgdO0sRlMo if(s[i].aver>=60&&s[i].aver<80>{p2[k++]=&s[i++]。 continue。 }3cdXwckm15 if(s[i].aver>=80&&s[i].aver<90>{p3[l++]=&s[i++]。 continue。 }h8c52WOngM if(s[i].aver>=90>{p4[m++]=&s[i++]。 continue。 } } printf("学生成绩单">。 v4bdyGious printf("\n90以上的人有: 姓名学号平均分\n">。 for(r=0。 r r++> { printf("\n%10s%6d%6.2f\n",p4[r]->name,p4[r]->num,p4[r]->aver>。 J0bm4qMpJ9 } printf("\n80-89分的人有: 姓名学号平均分\n">。 for(q=0。 q q++> { printf("\n%10s%6d%6.2f\n",p3[q]->name,p3[q]->num,p3[q]->aver>。 XVauA9grYP } printf("\n60-79分的人有: 姓名学号平均分\n">。 for(p=0。 p p++> { printf("\n%10s%6d%6.2f\n",p2[p]->name,p2[p]->num,p2[p]->aver>。 bR9C6TJscw } printf("\n不及格的人有: 姓名学号平均分\n">。 for(n=0。 n n++> { printf("\n%10s%6d%6.2f\n",p1[n]->name,p1[n]->num,p1[n]->aver>。 pN9LBDdtrd } fclose(fp>。 printf("\n按任意键返回主菜单">。 getch(>。 } //删除: 输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息 voiddele(> { studentxs[N]。 FILE*fp。 charname[10]。 inti=0,len,k=-1/*k<0是为后面if判断用的*/。 system("cls">。 printf("\n输入要删除的学生姓名: ">。 scanf("%s",name>。 if((fp=fopen("student.dat","rb+">>==NULL> {printf("can'topenfile! \n">。 exit(0>。 } while(! feof(fp>> { 删除: 输入学生姓名,若该学生存在,则删除,并显示删除后余下的学生成绩信息 voiddele(> { studentxs[N]。 FILE*fp。 charname[10]。 inti=0,len,k=-1/*k<0是为后面if判断用的*/。 system("cls">。 printf("\n输入要删除的学生姓名: ">。 scanf("%s",name>。 if((fp=fopen("student.dat","rb+">>==NULL> {printf("can'topenfile! \n">。 exit(0>。 } while(! feof(fp>> { fread(&xs[i],sizeof(stu>,1,fp>。 if(feof
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 学生 系统