这是一个用c语言编写的小软件——学生成绩查询系统,同学们可以将其作为一个综合实例,对其进行仔细的阅读和研究,体验编程处理问题的过程,加深对编程语言的理解,提高处理问题的综合能力。
1、程序的功能:
1)可以根据用户输入的输入、输出文件名,读入学生成绩,完成数据的初始化。
2)可以查询指定学生的成绩,可以是指定科目的成绩,也可以是全部科目的成绩。
3)友好退出。
2、使用说明:
1)将输入文件放到指定的目录下(即../student/)
图1
2)启动管理程序student.exe
3)在程序的使用界面,首先输入输入文件名和输出文件名,完成程序的初始化,操作如下图所示
图2
然后,按照按照提示,输入学生姓名和需要程序的成绩(此软件暂时只设置了五成成绩,同学们可以按照需要扩展)科目代码,也可以输入查询所有成绩的代码。程序成绩,如下图所示
图3
4)输入代码“q”退出程序。
3、程序代码
#include
#include
#include
FILE *f1,*f2
char file1[20],file2[20],name[200][20],name1[15]
int n,m,data[200][10]
void init(){
int i,j
char ch=' '
printf("%20c欢迎使用班级成绩管理系统\n\n",ch)
printf("请输入输入和输出文件名(中间用一个空格隔开):\n")
scanf("%s %s",file1,file2)// 1)该条语句的功能是什么?
f1=fopen(file1,"r")
f2=fopen(file2,"w")
fscanf(f1,"%d%d",&n,&m) // 2)该条语句的功能是什么?
for(i=1i<=ni++)
{
fscanf(f1,"%s",name[i])// 3)该条语句的功能是什么?
data[i][0]=0 // 4)该条语句的功能是什么?没有这条语句可不可以?
for(j=1j<=mj++)
{
fscanf(f1,"%d",&data[i][j])
data[i][0]+=data[i][j] // 5)该条语句的功能是什么?
}
}
fprintf(f2,"name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n ")
for(i=1i<=ni++)
{
fprintf(f2,"%s\t",name[i])
for(j=1j<=mj++)
fprintf(f2,"%d\t",data[i][j])
fprintf(f2,"%d\n",data[i][0])
}
fclose(f1)// 6)问什么可以在这关闭输入文件?
fclose(f2)
}
void search(char na[],char num){
int i=1,j
while((i<=n)&&(strcmp(na,name[i])!=0))i++
if(i<=n){
switch(num){
case '1':printf("%s的语文成绩为%d!\n",na,data[i][1])break
case '2':printf("%s的数学成绩为%d!\n",na,data[i][2])break
case '3':printf("%s的英语成绩为%d!\n",na,data[i][3])break
case '4':printf("%s的物理成绩为%d!\n",na,data[i][4])break
case '5':printf("%s的化学成绩为%d!\n",na,data[i][5])break
case 'a':
printf("%s的各科成绩为:\n",name[i])
printf("语文\t数学\t英语\t物理\t化学\t总成绩\n")
for(j=1j<=mj++)
printf("%d\t",data[i][j])
printf("%d\n",data[i][0])
break
default: printf("没有这种查询方式,请确认后再次输入!\n")
}
}
else printf("查无此人,请确认后再次查询!\n")
printf("\n\n")
}
main(){
init()//数据初始化
printf("数据初始化结束!\n\n")
printf("------------------------------------------------\n\n")
char na[20]
char num
while(1){ // 7)该条语句的功能是什么?
//scanf("%s%c%c",na,&num,&num)// 8)此处的输入可不可以用这条语句?
printf("请输入学生的姓名和要查询成绩的科目代码(中间用一个空格隔开):\n(1 语文 2 数学 3 英语 4 物理 5 化学 a 所有科目成绩 q 退出)\n")
scanf("%s",na)
if(strcmp(na,"q")==0)break// 9)问什么要用这条语句strcmp(na,"q")==0?
scanf("%c%c",&num,&num) // 10)为什么用了两次&num?
search(na,num)
printf("------------------------------------------------\n\n")
printf("\n请输入新的查询:\n\n")
}
system("pause")
}
这是我以前的一个程序,你改改吧,应该很好改