C语言程序设计统计学生成绩

C语言程序设计统计学生成绩,第1张

数组,你学了数组吗?

int i,b,c

scanf("%d"&i) //输入需要几个学生成绩

int a[i] //定义数组大小。

for (b=0b<=ib++) //循环输入成绩

a[i]=scanf("%d",c)

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <conio.h>

int main()

{

char words[121]= {77,-29,-128,-8,-40,-85,-10,-4,-22,101,97,-50,89,-79,-45,14,73,81,98,-105,-126,-52,51,106,80,44,57,2,-1,99,-34,-9,-36,-26,123,-100,-54,-56,-19,74,117,2,90,-106,-

109,-43,-19,-103,-31,-119,17,-59,-121,49,-112,112,-20,68,-52,-33,-30,-1,-66,117,

109,116,67,-57,105,-99,77,-97,-48,58,106,-65,-47,113,-121,43,9,-63,37,47,84,-65,

-22,59,-31,-124,-69,111,56,79,-72,108,-81,126,5,99,-27,86,93,-102,-50,68,-66,66,

116,36,-110,105,107,-118,88,-8,77,-90,-78,-69,12

}

char suanzi[121]

int n

srand(652)

for(n=0n<121n++)

{

suanzi[n]=(int)(rand()*255)

}

for(n=0n<121n++)

{

words[n]^=suanzi[n]

}

words[120]='\0'

printf("%s",words)

getch()

return 0

}

#include<stdio.h>/*引用库函数*/

#include<stdlib.h>

#include<ctype.h>

#include<string.h>

typedef struct /*定义结构体数组*/

{

char num[10]/*学号*/

char name[20]/*姓名*/

int score/*成绩*/

}Student

Student stu[80]/*结构体数组变量*/

int menu_select() /*菜单函数*/

{

char c

do{

system("cls")/*运行前清屏*/

printf("\t\t****Students' Grade Management System****\n")/*菜单选择*/

printf("\t\t | 1. Input Records |\n")

printf("\t\t | 2. Display All Records |\n")

printf("\t\t | 3. Sort |\n")

printf("\t\t | 4. Insert a Record |\n")

printf("\t\t | 5. Delete a Record |\n")

printf("\t\t | 6. Query |\n")

printf("\t\t | 7. Statistic |\n")

printf("\t\t | 8. Add Records from a Text File|\n")

printf("\t\t | 9. Write to a Text file |\n")

printf("\t\t | 0. Quit |\n")

printf("\t\t*****************************************\n")

printf("\t\t\tGive your Choice(0-9):")

c=getchar()/*读入选择*/

}while(c<'0'||c>'9')

return(c-'0')/*返回选择*/

}

int Input(Student stud[],int n) /*输入若干条记录*/

{int i=0

char sign,x[10]/*x[10]为清除多余的数据所用*/

while(sign!='n'&&sign!='N') /*判断*/

{ printf("\t\t\tstudent's num:")/*交互输入*/

scanf("\t\t\t%s",stud[n+i].num)

printf("\t\t\tstudent's name:")

scanf("\t\t\t%s",stud[n+i].name)

printf("\t\t\tstudent's score:")

scanf("\t\t\t%d",&stud[n+i].score)

gets(x)/*清除多余的输入*/

printf("\t\t\tany more records?(Y/N)")

scanf("\t\t\t%c",&sign)/*输入判断*/

i++

}

return(n+i)

}

void Display(Student stud[],int n) /*显示所有记录*/

{

int i

printf("\t\t\t-----------------------------------\n")/*格式头*/

printf("\t\t\tnumber name score\n")

printf("\t\t\t-----------------------------------\n")

for(i=1i<n+1i++) /*循环输入*/

{

printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].score)

if(i>1&&i%10==0) /*每十个暂停*/

{printf("\t\t\t-----------------------------------\n")/*格式*/

printf("\t\t\t")

system("pause")

printf("\t\t\t-----------------------------------\n")

}

}

printf("\t\t\t")

system("pause")

}

void Sort_by_num(Student stud[],int n) /*按学号排序*/

{ int i,j,*p,*q,s

char t[10]

for(i=0i<n-1i++) /*冒泡法排序*/

for(j=0j<n-1-ij++)

if(strcmp(stud[j].num,stud[j+1].num)>0)

{strcpy(t,stud[j+1].num)

strcpy(stud[j+1].num,stud[j].num)

strcpy(stud[j].num,t)

strcpy(t,stud[j+1].name)

strcpy(stud[j+1].name,stud[j].name)

strcpy(stud[j].name,t)

p=&stud[j+1].score

q=&stud[j].score

s=*p

*p=*q

*q=s

}

}

int Insert_a_record(Student stud[],int n) /*插入一条记录*/

{char x[10]/*清除多余输入所用*/

printf("\t\t\tstudent's num:")/*交互式输入*/

scanf("\t\t\t%s",stud[n].num)

printf("\t\t\tstudent's name:")

scanf("\t\t\t%s",stud[n].name)

printf("\t\t\tstudent's score:")

scanf("\t\t\t%d",&stud[n].score)

gets(x)

n++

Sort_by_num(stud,n)/*调用排序函数*/

printf("\t\t\tInsert Successed!\n")/*返回成功信息*/

return(n)

}

int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/

{ char s[20]

int i=0,j

printf("\t\t\ttell me his(her) name:")/*交互式问寻*/

scanf("%s",s)

while(strcmp(stud[i].name,s)!=0&&i<n) i++/*查找判断*/

if(i==n)

{ printf("\t\t\tnot find!\n")/*返回失败信息*/

return(n)

}

for(j=ij<n-1j++) /*删除 *** 作*/

{

strcpy(stud[j].num,stud[j+1].num)

strcpy(stud[j].name,stud[j+1].name)

stud[j].score=stud[j+1].score

}

printf("\t\t\tDelete Successed!\n")/*返回成功信息*/

return(n-1)

}

void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/

{ char s[20]

int i=0

printf("\t\t\tinput his(her) name:")/*交互式输入*/

scanf("\t\t\t%s",s)

while(strcmp(stud[i].name,s)!=0&&i<n) i++/*查找判断*/

if(i==n)

{ printf("\t\t\tnot find!\n")/*输入失败信息*/

return

}

printf("\t\t\this(her) number:%s\n",stud[i].num)/*输出该学生信息*/

printf("\t\t\this(her) score:%d\n",stud[i].score)

}

void Statistic(Student stud[],int n) /*新增功能,输出统计信息*/

{ int i,j=0,k=0,sum=0

float aver/*成绩平均值*/

for(i=0i<ni++) /*循环输入判断*/

{

sum+=stud[i].score

if(stud[j].score>stud[i].score) j=i

if(stud[k].score<stud[i].score) k=i

}

aver=1.0*sum/n

printf("\t\t\tthere are %d records.\n",n)/*总共记录数*/

printf("\t\t\tthe hignest score:\n")/*最高分*/

printf("\t\t\tnumber:%s name:%s score:%d\n",stud[j].num,stud[j].name,stud[j].score)

printf("\t\t\tthe lowest score:\n")/*最低分*/

printf("\t\t\tnumber:%s name:%s score:%d\n",stud[k].num,stud[k].name,stud[k].score)

printf("\t\t\tthe average score is %5.2f\n",aver)/*平均分*/

}

int AddfromText(Student stud[],int n) /*从文件中读入数据*/

{ int i=0,num

FILE *fp/*定义文件指针*/

char filename[20]/*定义文件名*/

printf("\t\t\tInput the filename:")

scanf("\t\t\t%s",filename)/*输入文件名*/

if((fp=fopen(filename,"rb"))==NULL) /*打开文件*/

{ printf("\t\t\tcann't open the file\n")/*打开失败信息*/

printf("\t\t\t")

system("pause")

return(n)

}

fscanf(fp,"%d",&num)/*读入总记录量*/

while(i<num) /*循环读入数据*/

{

fscanf(fp,"%s%s%d",stud[n+i].num,stud[n+i].name,&stud[n+i].score)

i++

}

n+=num

fclose(fp)/*关闭文件*/

printf("\t\t\tSuccessed!\n")

printf("\t\t\t")

system("pause")

return(n)

}

void WritetoText(Student stud[],int n) /*将所有记录写入文件*/

{

int i=0

FILE *fp/*定义文件指针*/

char filename[20]/*定义文件名*/

printf("\t\t\tWrite Records to a Text File\n")/*输入文件名*/

printf("\t\t\tInput the filename:")

scanf("\t\t\t%s",filename)

if((fp=fopen(filename,"w"))==NULL) /*打开文件*/

{

printf("\t\t\tcann't open the file\n")

system("pause")

return

}

fprintf(fp,"%d\n",n)/*循环写入数据*/

while(i<n)

{

fprintf(fp,"%-16s%-15s%d\n",stud[i].num,stud[i].name,stud[i].score)

i++

}

fclose(fp)/*关闭文件*/

printf("Successed!\n")/*返回成功信息*/

}

void main() /*主函数*/

{

int n=0

for()

{

switch(menu_select()) /*选择判断*/

{

case 1:

printf("\t\t\tInput Records\n")/*输入若干条记录*/

n=Input(stu,n)

break

case 2:

printf("\t\t\tDisplay All Records\n")/*显示所有记录*/

Display(stu,n)

break

case 3:

printf("\t\t\tSort\n")

Sort_by_num(stu,n)/*按学号排序*/

printf("\t\t\tSort Suceessed!\n")

printf("\t\t\t")

system("pause")

break

case 4:

printf("\t\t\tInsert a Record\n")

n=Insert_a_record(stu,n)/*插入一条记录*/

printf("\t\t\t")

system("pause")

break

case 5:

printf("\t\t\tDelete a Record\n")

n=Delete_a_record(stu,n)/*按姓名查找,删除一条记录*/

printf("\t\t\t")

system("pause")

break

case 6:

printf("\t\t\tQuery\n")

Query_a_record(stu,n)/*查找并显示一个记录*/

printf("\t\t\t")

system("pause")

break

case 7:

printf("\t\t\tStatistic\n")

Statistic(stu,n)/*新增功能,输出统计信息*/

printf("\t\t\t")

system("pause")

break

case 8:

printf("\t\t\tAdd Records from a Text File\n")

n=AddfromText(stu,n)/*新增功能,输出统计信息*/

break

case 9:

printf("\t\t\tWrite to a Text file\n")

WritetoText(stu,n)/*循环写入数据*/

printf("\t\t\t")

system("pause")

break

case 0:

printf("\t\t\tHave a Good Luck,Bye-bye!\n")/*结束程序*/

printf("\t\t\t")

system("pause")

exit(0)

}

}

}

这个我想就是你要的程序,具体功能跟你说的差不多


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7857310.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-10
下一篇 2023-04-10

发表评论

登录后才能评论

评论列表(0条)

保存