今天给各位分享学生信息管理系统的知识,其中也会对学生信息管理系统课程设计报告进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!
学生信息管理系统
#includestdio.h/*我们也做过的*/
#includestdlib.h
#includestring.h
#define MAX_LEN 10
#define STU_NUM 30
#define COURSE_NUM 6
typedef struct student
{
long num;
char name[MAX_LEN];
float score[COURSE_NUM];
float sum;
float aver;
}STU;
int Menu(void);
void ReadScore(STU stu[],int n,int m);
void AverSumofEveryStudent(STU stu[],int n,int m);
void AverSumofEveryCourse(STU stu[],int n,int m);
void SortbyScore(STU stu[],int n,int m,int (*compare)(float a,float b));
int Ascending(float a,float b);
int Descending(float a,float b);
void SwapFloat(float *x,float *y);
void SwapLong(long *x,long *y);
void SwapChar(char x[],char y[]);
void AsSortbyNum(STU stu[],int n,int m);
void SortbyName(STU stu[],int n,int m);
void SearchbyNum(STU stu[],int n,int m);
void SearchbyName(STU stu[],int n,int m);
void StatisticAnalysis(STU stu[],int n,int m);
void PrintScore(STU stu[],int n,int m);
void WritetoFile(STU record[],int n,int m);
void ReadfromFile(STU record[],int *n,int *m);
int main()
{
char ch;
int n=0,m=0;
STU stu[STU_NUM];
while(1)
{
ch=Menu();
switch (ch)
{
case 1:printf("Input student number(n=%d):",STU_NUM);
scanf("%d",n);
printf("Input course number(m=%d):",COURSE_NUM);
scanf("%d",m);
ReadScore(stu,n,m);
break;
case 2:AverSumofEveryCourse(stu,n,m);
break;
case 3:AverSumofEveryStudent(stu,n,m);
break;
case 4:SortbyScore(stu,n,m,Descending);
printf("\nSort in descending order by score:\n");
PrintScore(stu,n,m);
break;
case 5:SortbyScore(stu,n,m,Ascending);
printf("\nSort in ascending order by score:\n");
PrintScore(stu,n,m);
break;
case 6:AsSortbyNum(stu,n,m);
printf("\nSort in ascending order by score:\n");
PrintScore(stu,n,m);
break;
case 7:SortbyName(stu,n,m);
printf("\nSort in dictionary order by score:\n");
PrintScore(stu,n,m);
break;
case 8:SearchbyNum(stu,n,m);
break;
case 9:SearchbyName(stu,n,m);
break;
case 10:StatisticAnalysis(stu,n,m);
break;
case 11:PrintScore(stu,n,m);
break;
case 12:WritetoFile(stu,n,m);
break;
case 13:ReadfromFile(stu,n,m);
break;
case 14:printf("End of program!\n");
exit(0);
default :printf("Input error!\n");
}
}
return 0;
}
/*函数功能:显示菜单并获得用户键盘输入的选项*/
int Menu(void)
{
int itemSelected;
printf("Management for Students' scores\n");
printf("1.Input record\n");
printf("2.Caculate total and average score of every course \n");
printf("3.Caculate total and average score of every student \n");
printf("4.Sort in descending order by score \n");
printf("5.Sort in ascending order by score \n");
printf("6.Sort in ascending order by number \n");
printf("7.Sort in dictionary order by name \n");
printf("8.Search by number \n");
printf("9.Search by name \n");
printf("10.Statistic *** ysis \n");
printf("11.List record \n");
printf("12.write to a file \n");
printf("13.read from a file \n");
printf("0.Exit \n");
printf("Please Input your choice:"); //读入用户输入
scanf("%d",itemSelected);
return itemSelected;
}
/*函数功能:输入n个学生的m门课程成绩*/
void ReadScore(STU stu[],int n,int m)
{
int i,j;
printf("Input students' ID,name and score:\n");
for(i=0;in;i++)
{
scanf("%ld%s",stu[i].num,stu[i].name);
for(j=0;jm;j++)
{
scanf("%f",stu[i].score[j]);
}
}
}
/*函数功能:计算每个学生各门课程的总分和平均分*/
void AverSumofEveryStudent(STU stu[],int n,int m)
{
int i,j;
for(i=0;in;i++)
{
stu[i].sum=0;
for(j=0;jm;j++)
{
stu[i].sum=stu[i].sum+stu[i].score[j];
}
stu[i].aver=m0?stu[i].sum/m:-1;
printf("student %d: sum = %.0f,aver = %.0f\n",
i+1,stu[i].sum,stu[i].aver);
}
}
/*函数功能:计算每门课程的总分和平均分*/
void AverSumofEveryCourse(STU stu[],int n,int m)
{
int i,j;
float sum[COURSE_NUM],aver[COURSE_NUM];
for(j=0;jm;j++)
{
sum[j]=0;
for(i=0;in;i++)
{
sum[j]=sum[j]+stu[i].score[j];
}
aver[j] = n0 ? sum[j]/n:-1;
printf("course %d:sum = %.0f,aver = %.0f\n",j+1,sum[j],aver[j]);
}
}
/*函数功能:按选择法将数组sum中的元素值排序*/
void SortbyScore(STU stu[],int n,int m,int (*compare)(float a,float b))
{
int i,j,k,t;
for(i=0;in-1;i++)
{
k=i;
for(j=i+1;jn;j++)
{
if((*compare)(stu[j].sum,stu[k].sum)) k=j;
}
if(k!=i)
{
for(t=0;tm;t++)
{
SwapFloat(stu[k].score[t],stu[i].score[t]);
}
SwapFloat(stu[k].sum,stu[i].sum);
SwapFloat(stu[k].aver,stu[i].aver);
SwapLong(stu[k].num,stu[i].num);
SwapChar(stu[k].name,stu[i].name);
}
}
}
/*使数据按升序排序*/
int Ascending(float a,float b)
{
return ab;
}
/*使数据按降序排序*/
int Descending(float a,float b)
{
return ab;
}
/*交换两个单精度浮点型数据*/
void SwapFloat(float *x,float *y)
{
float temp;
temp=*x;
*x=*y;
*y=temp;
}
/*交换两个长整形数据*/
void SwapLong(long *x,long *y)
{
long temp;
temp=*x;
*x=*y;
*y=temp;
}
/*交换两个字符串*/
void SwapChar(char x[],char y[])
{
char temp[MAX_LEN];
strcpy(temp,x);
strcpy(x,y);
strcpy(y,temp);
}
/*函数功能:按选择法将数组num的元素值按从低到排高序*/
void AsSortbyNum(STU stu[],int n,int m)
{
int i,j,k,t;
for(i=0;in-1;i++)
{
k=i;
for(j=i+1;jn;j++)
{
if(stu[j].num stu[k].num) k=j;
}
if(k!=i)
{
for(t=0;tm;t++)
{
SwapFloat(stu[k].score[t],stu[i].score[t]);
}
SwapFloat(stu[k].sum,stu[i].sum);
SwapFloat(stu[k].aver,stu[i].aver);
SwapLong(stu[k].num,stu[i].num);
SwapChar(stu[k].name,stu[i].name);
}
}
}
/*函数功能:交换法实现字符串按字典顺序排序*/
void SortbyName(STU stu[],int n,int m)
{
int i,j,t;
for(i=0;in-1;i++)
{
for(j=i+1;jn;j++)
{
if(strcmp(stu[j].name, stu[i].name)0)
{
for(t=0;tm;t++)
{
SwapFloat(stu[i].score[t],stu[j].score[t]);
}
SwapFloat(stu[i].sum,stu[j].sum);
SwapFloat(stu[i].aver,stu[j].aver);
SwapLong(stu[i].num,stu[j].num);
SwapChar(stu[i].name,stu[j].name);
}
}
}
}
/*函数功能:按学号查找学生成绩并显示查找结果*/
void SearchbyNum(STU stu[],int n,int m)
{
long number;
int i,j;
printf("Input the number you want to search");
scanf("%ld",number);
for(i=0;in;i++)
{
if(stu[i].num==number)
{
printf("%ld \t%s \t",stu[i].num,stu[i].name);
for(j=0;jm;j++)
{
printf("%.0f \t",stu[i].score[j]);
}
printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
return;
}
}
printf("\n Not Found! \n");
}
/*函数功能:按姓名的字典顺序排出成绩表*/
void SearchbyName(STU stu[],int n,int m)
{
char x[MAX_LEN];
int i,j;
printf("Input the number you want to search");
scanf("%s",x);
for(i=0;in;i++)
{
if(strcmp(stu[i].name,x)==0)
{
printf("%ld \t%s \t",stu[i].num,stu[i].name);
for(j=0;jm;j++)
{
printf("%.0f \t",stu[i].score[j]);
}
printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
return;
}
}
printf("\n Not Found! \n");
}
/*函数功能:统计各分数段的学生人数及所占的百分比*/
void StatisticAnalysis(STU stu[],int n,int m)
{
int i,j,total,t[6];
for(j=0;jm;j++)
{
printf("For course %d:\n",j+1);
memset(t,0,sizeof(t)); //将数组t的全部元素初始化为0
for(i=0;in;i++)
{
if(stu[i].score[j]=0stu[i].score[j]60) t[0]++;
else if (stu[i].score[j]70) t[1]++;
else if (stu[i].score[j]80) t[2]++;
else if (stu[i].score[j]90) t[3]++;
else if (stu[i].score[j]100) t[4]++;
else if (stu[i].score[j]=100) t[5]++;
}
for(total=0,i=0;i=5;i++)
{
total=total+t[i];
}
for(i=0;i=5;i++)
{
if(i==0) printf("60\t%d\t%.2f%%\n",t[i],(float)t[i]/n*100);
else if(i==5)
printf("%d\t%d\t%.2f%%\n",(i+5)*10,t[i],(float)t[i]/n*100);
else
printf("%d-%d\t%d\t%.2f%%\n",(i+5)*10,(i+5)*10+9,t[i],(float)t[i]/n*100);
}
}
}
/*函数功能:打印学生成绩*/
void PrintScore(STU stu[],int n,int m)
{
int i,j;
for(i=0;in;i++)
{
printf("%ld\t%s\t",stu[i].num,stu[i].name);
for(j=0;jm;j++)
{
printf("%.0f\t",stu[i].score[j]);
}
printf("%.0f\t%.0f\n",stu[i].sum,stu[i].aver);
}
}
/*输出n个学生的学号,姓名及m门课程的成绩到文件student.txt中*/
void WritetoFile(STU stu[],int n,int m)
{
FILE *fp;
int i,j;
if((fp=fopen("student.txt","w"))==NULL)
{
printf("Failure to open score.txt!\n");
exit(0);
}
fprintf(fp,"%d\t%d\n",n,m); //将学生人数和课程门数写入文件
for(i=0;in;i++)
{
fprintf(fp,"%10ld%10s",stu[i].num,stu[i].name);
for(j=0;jm;j++)
{
fprintf(fp,"%10.0f",stu[i].score[j]);
}
fprintf(fp,"%10.0f%10.0f\n",stu[i].sum,stu[i].aver);
}
fclose(fp);
}
/*从文件中读取学生的学号,姓名及成绩等信息写入到结构体数组stu中*/
void ReadfromFile(STU stu[],int *n,int *m)
{
FILE *fp;
int i,j;
if((fp=fopen("student.txt","r"))==NULL)
{
printf("Failure to open score.txt!\n");
exit(0);
}
fscanf(fp,"%d\t%d",n,m); //从文件中读出学生人数和课程门数
for(i=0;i *n;i++)
{
fscanf(fp,"%10ld",stu[i].num);
fscanf(fp,"%10s",stu[i].name);
for(j=0;j *m;j++)
{
fscanf(fp,"%10f",stu[i].score[j]);
}
fscanf(fp,"%10f%10f",stu[i].sum,stu[i].aver); //不能用%10.0f
}
fclose(fp);
}
学生信息管理系统有什么作用?
学生信息管理西永得作用:
1、学生信息管理系统使用起来非常的灵活和方便,它能够更大限度的满足学校或者是培训机构的排课方面的需求,这样就可以预防上课冲突的情况发生了。
2、老师和学生可以直接在学员管理系统上面去搜索上课的情况,然后就可以选择自己喜欢的课程去上课了,而老师也可以根据实际的情况,选择上课的时间。
3、学生信息管理系统能够对输入的数据进行自动的保存,因此大家是不需要担心数据丢失的问题的;同时大家还可以去即时的打印或者是打印预览各类课程表,并设置各种不同的打印格式。
4、学生信息管理系统能够对学生的名字,年龄和学号等进行相应的操作,这种操作包括增加学员,删除学员,修改学员信息,查找学员等,这些都是可以利用数据组做出来的。
5、大家在使用该系统的时候,可以使用二维数组去做,一维是用作存储学生信息的,一维是用作存储,增加和删除的操作的。同时还可以进行查询,我们可以以学号进行查询,这样就可以得到学生的信息数组了。
学生信息管理系统包括哪些表
学生信息管理系统包括:学生(students)、老师(teachers)、课程(courses)、成绩(scores)。
学生信息管理系统是针对学校学生处的大量业务处理工作而开发的管理软件,主要用于学校学生信息管理,总体任务是实现学生信息关系的系统化、科学化、规范化和自动化,其主要任务是用计算机对学生各种信息进行日常管理,如查询、修改、增加、删除等。
另外还考虑到学生选课,针对这些要求设计了学生信息管理系统。推行学校信息管理系统的应用是进一步推进学生学籍管理规范化、电子化、控制辍学和提高义务教育水平的重要举措。
系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。
学生信息管理系统有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。
以上内容就是为大家分享的 学生信息管理系统(学生信息管理系统课程设计报告) 相关知识,希望对您有所帮助,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题。