当前位置:文档之家› C语言实现学生成绩管理系统

C语言实现学生成绩管理系统

{
int i,j,t,c,d;
long a;
char b[10];
float e;
/*用交换法进行排序*/
for(i=0;i<n-1;i++)
{
for(j=i+1;j<n;j++)
{
if(strcmp(stu[j].studentName,stu[i].studentName)<0)
{
a = stu[i].studentID; /*交换学号。*/
{
if(stu[j].sumS>stu[k].sumS)
{
k=j;
}
}
if(k!=i)
{
a = stu[k].studentID; /*交换学号。*/
stu[k].studentID=stu[i].studentID;
stu[i].studentID=a;
/*交换姓名要用字符串处理函数!*/
strcpy(b,stu[k].studentName);
}
}
return -1;
}
6、将每个学生的信息写入文件
(1):思路:使用文件处理函数将结果写入文件
(2):程序:
void WritetoFile(STUDENT stu[],int n,int m)
{
FILE *fp;
int i,j;
if((fp=fopen("H:\\score.txt","w"))==NULL)
6、按数据块读写文件:unsigned int fread(void *buffer,unsigned int size,unsigned int count,FILE *fp) unsigned int fwrite(const void *buffer,unsigned int size,unsigned int count,FILE *fp)
/*交换各科成绩*/
for(t=0;t<COURSE;t++)
{
d=stu[i].score[t];
stu[i].score[t]=stu[j].score[t];
stu[j].score[t]=d;
}
c = stu[i].sumS; /*交换总分。*/
stu[i].sumS=stu[j].sumS;
(2)熟悉二维字符数组作函数参数、字符串处理函数、字符串处理操作。
(3)体会应用结构体类型代替普通的数组类型是下数据库管理的优越性。
(4)熟悉文件的基本操作,掌握对文本格式文件和二进制格式文件的操作
2、熟悉文件的打开方式和关闭,并且注意一定要关闭文件。
3、按字符读写文件:int fgetc(FILE *fp) int fputc(int c, FILE *fp)
(2)程序:
void sortbystudentsumS(STUDENT stu[],int n)
{
int i,j,k,t,d;
long a;
char b[10];
int c;
float e;
/*用选择法进行排序!*/
for(i=0;i<n-1;i+j<n;j++)
fscanf(fp,"%8s",stu[i].studentName);
for(j=0;j<m;j++)
{
fprintf(fp,"%d",stu[i].score[j]);
}
fprintf(fp,"%d",stu[i].sumS);
fprintf(fp,"%6.1f\n",stu[i].averS);
{
printf("打开score.txt失败");
exit(0);
}
for(i=0;i<n;i++)
{
fprintf(fp,"%10ld\t%8s\t",stu[i].studentID,stu[i].studentName);
for(j=0;j<m;j++)
{
fprintf(fp,"%d\t",stu[i].score[j]);
}
fclose(fp);
printf("学生人数是:%d.\n",i-1);
}
/*函数功能:将从文件中读取信息输出到屏幕上!*/
void PrintScore(STUDENT stu[],int n,int m)
{
int i,j;
for(i=0;i<n;i++)
{
printf("%10ld%8s\t",stu[i].studentID,stu[i].studentName);
(2)程序:
int InputScore(STUDENT stu[],int m)
{
int i,j,n;
printf("请输入参加考试的人数:");
scanf("%d",&n);
for(i=0;i<n;i++)
{
printf("请输入第%d个学生的信息:学号,姓名,成绩(数学、英语,物理)\n",i+1);
stu[i].studentID=stu[j].studentID;
stu[j].studentID=a;
/*交换姓名*/
strcpy(b,stu[i].studentName);
strcpy(stu[i].studentName,stu[j].studentName);
strcpy(stu[j].studentName,b);
实验内容(问题,思路,程序,结果)
得分
主要说明面对的问题是什么现象(输入,输出或者编译器提示等),通过这样的现象,能够得到什么已知条件。
由此,通过自己的设计方案,设计并实现满足实验需求的程序或者文档。在实验报告中,对于问题的分析和设计是重点内容。
1、录入每个学生的学号,姓名,和各科考试成绩:
(1)思路:由于使用的是结构体数组,所以录入成绩,存储成绩是使用远点运算符,使用for循环读入学生的具体信息。
(2)程序:
int LinrSearch(STUDENT stu[],char p[],int n)
{
int i;
for(i=0;i<n;i++)
{
if(strcmp(p,stu[i].studentName)==0) /*用字符串处理函数来进行比较!*/
{
return i; /*返回学生所在数组中的位置!*/
}
}
Print(stu,n,COURSE); /*打印学生的信息*/
}
4、按姓名的字典顺序排出成绩
(1)思路:按姓名的字典顺序排序需要进行字符串的比较用到字符串处理函数strcmp(str1,str2),使用比较法进行排序。
(2)程序:
void SortbyName(STUDENT stu[],int n)
strcpy(stu[k].studentName,stu[i].studentName);
strcpy(stu[i].studentName,b);
/*交换各科成绩*/
for(t=0;t<COURSE;t++)
{
d=stu[i].score[t];
stu[i].score[t]=stu[k].score[t];
1、学会了如何创建头文件及使函数模块化。能够使函数得到更好的利用以及使主函数变得不臃肿。
2、通过分析问题,让我知道了遇到错误应该怎样修正,增加了自己的经验。
3、通过不断分析解决问题,培养了我的耐心,从而能更加理性地分析问题。
4、通过使用字符串处理函数,熟悉了对它的理解。
5、掌握了对结构体的使用。
教师评价
scanf("%ld",&stu[i].studentID); /*将学生的学号保存在stu[i].studentID*/
scanf("%s",stu[i].studentName); /*stu[i].studentName前不用加&号*/
for(j=0;j<m;j++)
{
scanf("%d",&stu[i].score[j]); /*将学生的分数保存在stu[i].studentID*/
哈尔滨工业大学(威海)软件学院
C程序设计实验报告
编号:
姓名
李勇
院系
软件学院
学号
131110409
任课教师
于水
指导教师
于水
实验地点
研究院中507-508
实验时间
2013年12月26日
实验名称
函数、文件与模块化
同组人

预习报告(对实验主要内容的认识)
得分
1、实验目的:
(1)熟悉模块化程序设计以及增量测试方法。
{
FILE *fp;
int i,j;
if((fp=fopen("H:\\score.txt","r"))==NULL)
{
printf("打开score.txt失败");
exit(0);
}
for(i=0;!feof(fp);i++)
{
fscanf(fp,"%10ld",&stu[i].studentID);
相关主题