c语言编写查询学生成绩管理程序。

Python09

c语言编写查询学生成绩管理程序。,第1张

#include<stdio.h>#include<stdlib.h>#include<string.h>struct record{char xuehao[10]//学号char name[20]//姓名char sex[3]//性别int ke1//数学int ke2 //语文int ke3//英语int pin}stu[50]int k=1,n,mvoid readfile()void seek()void insert()void del()void save()void menu() void seek(){int i,j,item,flag<br>char s1[20]<br>printf("------------------\n")<br>printf("1.按学号查询\n")<br>printf("2.退出本菜单\n")<br>printf("------------------\n")<br>while(1)<br>{ printf("请选择子菜单编号:")<br>scanf("%d",&item)<br>flag=0<br>switch(item)<br>{<br>case 1:<br>printf("请输入要查询的学生的学号:\n")<br>scanf("%s",s1)<br>for(i=0i<ni++)<br>if(strcmp(stu[i].xuehao,s1)==0)<br>{ flag=1<br>printf("该学生学号,姓名,性别,数学,语文,英语 分别为:\n")<br>printf("%s%s%s %d%d%d",stu[i].xuehao,stu[i].name,<br>stu[i].sex,stu[i].ke1,stu[i].ke2,stu[i].ke3)<br>}if(flag==0)printf("该学号不存在!\n")breakcase 2:returndefault:printf("请在1-2之间选择\n")}}}void insert(){ int i=n,j,flagprintf("请输入待增加的学生数:\n")scanf("%d",&m)do{ flag=1while(flag){ flag=0printf("请输入第 %d 个学生的学号:\n",i+1)scanf("%s",stu[i].xuehao)for(j=0j<ij++)if(strcmp(stu[i].xuehao,stu[j].xuehao)==0){ printf("已有该学号,请检查后重新录入!\n")flag=1break}}printf("请输入第 %d 个学生的姓名:",i+1)scanf("%s",stu[i].name)printf("\n请输入第 %d 个学生的性别:",i+1)scanf("%s",stu[i].sex)printf("\n请输入第 %d 个学生的数学成绩:",i+1)scanf("%d",&stu[i].ke1)printf("\n请输入第 %d 个学生的语文成绩:",i+1)scanf("%d",&stu[i].ke2)printf("\n请输入第 %d 个学生的英语成绩:",i+1)scanf("%d",&stu[i].ke3)if(flag==0){ i=ii++}}while(i<n+m)n+=mprintf("录入完毕!\n\n")}void del(){ int i,j,flag=0char s1[20]printf("请输入要删除学生的学号:\n")scanf("%s",s1)for(i=0i<ni++)if(strcmp(stu[i].xuehao,s1)==0){ flag=1for(j=ij<n-1j++)stu[j]=stu[j+1]}if(flag==0)printf("该学号不存在!\n")if(flag==1){ printf("删除成功,显示结果请选择菜单6\n")n--}}void readfile(){char buf[80],*p="student.dat"FILE *fpint i=0if ((fp=fopen("student.dat","r"))==NULL){ printf("Open file %s error! Strike any key to exit!",p)system("pause")exit(0)}while(fscanf(fp,"%s%s%s%d%d%d",stu[i].xuehao,stu[i].name,stu[i].sex,&stu[i].ke1,&stu[i].ke2,&stu[i].ke3)==6){ i++i=i}fclose(fp)n=iprintf("录入完毕!\n")}void save(){ int i,j,k,flag=0FILE *fpfp=fopen("student.dat","w")for(i=0i<mi++){ fprintf(fp,"%s%s%d%d%d",stu[i].xuehao,stu[i].name,stu[i].sex,&stu[i].ke1, &stu[i].ke2,&stu[i].ke3)fclose(fp)printf("已储存")}}void paixu(){ int i,j,k,tfor(i=0i<mi++) { stu[i].pin=(stu[i].ke1+stu[i].ke2+stu[i].ke3)/3} for(i=0i<=m-2i++) { k=i for(j=i+1j<=m-1j++) if(stu[j].pin<stu[k].pin) k=j if(k!=i) { t=stu[k].pin stu[k].pin=stu[i].pin stu[i].pin=t } } for(i=0i<mi++) {printf("第 %d 个学生的姓名%s:",i+1,stu[i].name)<br> printf("\n第 %d 个学生的性别:%s",i+1,stu[i].sex)<br> printf("\n第 %d 个学生的数学成绩:%d",i+1,stu[i].ke1)<br> printf("\n第 %d 个学生的语文成绩:%d",i+1,stu[i].ke2)<br> printf("\n第 %d 个学生的英语成绩:%d",i+1,stu[i].ke3)<br> printf("\n第 %d 个学生的平均成绩:%d",i+1,stu[i].pin)<br>}}void menu(){ int nubprintf(" \n\n学生成绩管理系统\n\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("请选择菜单编号:")scanf("%d",&nub)switch(nub){case 1:insert()breakcase 2:seek()breakcase 3:del()breakcase 4:readfile()breakcase 5:save()breakcase 6:paixu()breakcase 0:k=0breakdefault:printf("请在0-6之间选择\n")}}void main(){while(k)menu()}//平均数是排序后,输出的,如果你不想直接输入,那就不要对每个学生进行选择排序了

//分数序列如:2\1,3\2.5\3,8\5.13\8,21\13.......的前20项之和。

#include//直接看这一组数列有什么规律,很容易发现,从2/1开始,后一组的分母为前一组的一个分子

//后一项的分子为前一项的分母分子之和,如果用An表示分母,Bn表示分子,则有递推工式,B(n+1)=An::A(n+1)=An+Bn知道这个就很好办了

float getMe(int n)//这个函数就是求第n项的那个数的值

{

float An=2.0float Bn=1.0

float temp

while(--n)

{

temp=Bn

Bn=An

An=An+temp

}

return(An/Bn)}

void main()

{

int n

float theSum=0.0

printf("请输入你想要求的前n项的和:")

scanf("%d",&n)

for(n>0n--)

{

theSum=theSum+getMe(n)

}

printf("%f",theSum)

}

#include<iostream>

#include<string.h>

using

namespace

std

struct

student

{

char

name[50]

int

score

}

void

teacherC(student

*stu)//老师录入成绩

{

int

i,n

cout<<"请输入需要录入的学生的个数\n"

cin>>n

cout<<"请依次输入学生的姓名和成绩\n"

for(i=0i<ni++)

{

cin>>stu[i].name>>stu[i].score

}

stu[i].score=-1

}

void

show(student

*stu)

{

int

i=0

for(i<100i++)

{

if(stu[i].score==-1)

break

cout<<stu[i].name<<"

"<<stu[i].score<<endl

}

}

int

search(student

*stu,char

*name)

{

int

i=0,k=-1

for(i<100i++)

{

if(stu[i].score==-1)

break

if(strcmp(stu[i].name,name)==0)

{

k=i

break

}

}

return

k

}

void

edit(student

*stu)

{

int

i=0,j=0

char

name[30],an

while(1)

{

cout<<"请输入需要修改的学生名字\n"

cin>>name

i=search(stu,name)

if(i>=0)

{

cout<<"该学生的信息为:\n"

cout<<stu[i].name<<"

"<<stu[i].score<<endl

cout<<"确定要修改该学生的信息是的输入Y不是输入N:\n"

cin>>an

if(an=='Y'||an=='y')

{

cout<<"请输入修改后的姓名成绩:\n"

cin>>stu[i].name>>stu[i].score

cout<<"修改成功\n"

}

cout<<"继续修改请输入1退出输入0:\n"

cin>>j

if(j==0)

break

}

else

cout<<"没有该学生的信息\n"

}

}

void

dele(student

*stu)

{

int

i=0,j=0

char

name[30],an

while(1)

{

cout<<"请输入需要删除的学生名字\n"

cin>>name

i=search(stu,name)

if(i>0)

{

cout<<"该学生的信息为:\n"

cout<<stu[i].name<<"

"<<stu[i].score<<endl

cout<<"确定要删除该学生的信息是的输入Y不是输入N:\n"

cin>>an

if(an=='Y'||an=='y')

{

*stu[i].name=0

cout<<"删除成功\n"

}

cout<<"继续删除请输入1退出输入0:\n"

cin>>j

if(j==0)

break

}

else

cout<<"没有该学生的信息\n"

}

}

int

main()

{

int

i,n

char

name[30]

student

stu[100]//学生总数上限为100个

while(1)

{

cout<<"请做出以下的选择:"<<endl

cout<<"输入

0

退出系统\n"

cout<<"输入

1

教书录入成绩\n"

cout<<"输入

2

学生查询成绩\n"

cout<<"输入

3

修改学生成绩\n"

cout<<"输入

4

删除学生成绩\n"

cin>>i

switch(i)

{

case

1:

teacherC(stu)break

case

2:

cout<<"请输入查询的姓名\n"

cin>>namen=search(stu,name)cout<<"该学生成绩是:"<<stu[n].score<<endlbreak

case

3:

edit(stu)break

case

4:

dele(stu)break

default:if(i!=0)cout<<"请输入有效数字\n"

}

if(i==0)

break

}

return

0

}