c语言大作业学生系统.docx

上传人:b****4 文档编号:5194700 上传时间:2022-12-13 格式:DOCX 页数:19 大小:221.62KB
下载 相关 举报
c语言大作业学生系统.docx_第1页
第1页 / 共19页
c语言大作业学生系统.docx_第2页
第2页 / 共19页
c语言大作业学生系统.docx_第3页
第3页 / 共19页
c语言大作业学生系统.docx_第4页
第4页 / 共19页
c语言大作业学生系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

c语言大作业学生系统.docx

《c语言大作业学生系统.docx》由会员分享,可在线阅读,更多相关《c语言大作业学生系统.docx(19页珍藏版)》请在冰豆网上搜索。

c语言大作业学生系统.docx

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=0>/*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

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

当前位置:首页 > 求职职场 > 简历

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

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