c语言大作业学生管理完整整理.docx
- 文档编号:1824625
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:29
- 大小:22.62KB
c语言大作业学生管理完整整理.docx
《c语言大作业学生管理完整整理.docx》由会员分享,可在线阅读,更多相关《c语言大作业学生管理完整整理.docx(29页珍藏版)》请在冰豆网上搜索。
c语言大作业学生管理完整整理
#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")。
printf("*=======================*\n")。
printf("*请选择相应的功能:
*\n")。
printf("*1.成绩录入*\n")。
printf("*2.查询成绩*\n")。
printf("*3.修改成绩*\n")。
printf("*4.插入成绩*\n")。
printf("*5.报表输出*\n")。
printf("*6.删除操作*\n")。
printf("*0.退出系统*\n")。
printf("*=======================*\n")。
printf("\n\n\n\n\n\n\n\n\n****\n")。
}
//成绩录入
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****************************************************")。
while(c++)/*中间加油break,可使循环中断*/
{printf("\n请输入您的姓名(姓名为end结束):
")。
scanf("%s",xs.name)。
if(strcmp(xs.name,"end")==0)break。
/*判断姓名是否为end,用字符串判断*/
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)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/
{
printf("\n学生的信息如下:
\n")。
printf("\n%10s%6s%6s%6s%6s%6s%6s%6s%6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩")。
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)。
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","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩")。
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)。
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)。
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","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩")。
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)。
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=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4。
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","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩")。
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)。
fseek(fp,sizeof(stu),1)。
/*负号表示后退,1表示文件当前位置*/
fwrite(&xs,sizeof(stu),1,fp)。
/*再写入,同时把要修改的那个覆盖掉*/
}
else
printf("\n学生不存在,修改失败!
!
")。
fclose(fp)。
printf("\n按任意键返回主菜单")。
getch()。
}
//插入:
输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。
voidinsert()
{
inti=0,j,k,lenth。
FILE*fp。
students,xs[N]。
system("cls")。
printf("\n请输入插入的学生的姓名:
")。
scanf("%s",&s.name)。
printf("\n学生的学号:
")。
scanf("%d",&s.num)。
printf("\n学生的性别:
")。
scanf("%s",&s.sex)。
printf("\n数学成绩:
")。
scanf("%f",&s.m
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 作业 学生 管理 完整 整理