学生信息管理系统能做些什么?

学生信息管理系统能做些什么?,第1张

学生管理系统是校园MIS系统中综合处理学生信息的重要组成部分,囊括了从招生到毕业以及毕业后相关的所有信息。其中还包括了对班主任的管理,团员管理,综合成绩管理等,从本软件可以任意查询出某学生学习期间的一切情况,是一套完美的学生管理系统。学生管理系统分为以下模块:基本信息学生基本信息:分班级管理学生基本信息班级课程查询:可浏览班级在某一学期所设置的课程。招生管理招生计划:按年度制订招生计划,并可按招生专业把计划人数分配到每一地区。可打印地区分配表。新生登记:分年度、按招生类别登记入学新生,并可按招生类别打印新生登记表。新生编班管理:分年度、按招生专业对新生进行自动或人工的分班处理。在校学生管理学生考勤:按班级对学生进行考勤,可改变考勤学期和考勤月份,以对不同月份进行考勤。学生奖惩:此模块分奖励和处分两部分。先进学生登记:按班级分学期对学生综合成绩进行管理,可改变学期以对不同学期的综合成绩进行管理。可设置系数,计算综合成绩,打印输出成绩表和名次表。入党学员登记综合成绩管理班级工作管理班主任名单:按班级分学期登记班主任信息,可改变学期以登记不同学期的班主任、历任班主任。班主任考核:按班级分学期、月份对班主任进行考核,可改变学期、月份以对不同月份的班主任情况进行考核。可打印考核月报和期表。班主任获奖班团委干部:按班级分学期管理班团委干部,可改变学期,以对不同学期的班干部进行登记管理。班级工作考核:按班级分学期、月份对班级工作进行考核,可改变学期、月份以对不同月份的班级工作进行考核。可打印考核月报和期报表。团支部目标考核:按班级分月份对团支部工作进行考核,可改变月份以对不同月份的团支部工作进行考核。可打印考核月报。团员管理:按班级对团员进行管理。先进班级管理毕业生管理毕业生分配去向管理:按班级对毕业生分配去向 生综合成绩管理:按班级对毕业生成绩进行管理。

#include<stdio.h>/*我们也做过的*/

#include<stdlib.h>

#include<string.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 analysis \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=0i<ni++)

{

scanf("%ld%s",&stu[i].num,stu[i].name)

for(j=0j<mj++)

{

scanf("%f",&stu[i].score[j])

}

}

}

/*函数功能:计算每个学生各门课程的总分和平均分*/

void AverSumofEveryStudent(STU stu[],int n,int m)

{

int i,j

for(i=0i<ni++)

{

stu[i].sum=0

for(j=0j<mj++)

{

stu[i].sum=stu[i].sum+stu[i].score[j]

}

stu[i].aver=m>0?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=0j<mj++)

{

sum[j]=0

for(i=0i<ni++)

{

sum[j]=sum[j]+stu[i].score[j]

}

aver[j] = n>0 ? 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=0i<n-1i++)

{

k=i

for(j=i+1j<nj++)

{

if((*compare)(stu[j].sum,stu[k].sum)) k=j

}

if(k!=i)

{

for(t=0t<mt++)

{

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 a<b

}

/*使数据按降序排序*/

int Descending(float a,float b)

{

return a>b

}

/*交换两个单精度浮点型数据*/

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=0i<n-1i++)

{

k=i

for(j=i+1j<nj++)

{

if(stu[j].num <stu[k].num) k=j

}

if(k!=i)

{

for(t=0t<mt++)

{

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=0i<n-1i++)

{

for(j=i+1j<nj++)

{

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

{

for(t=0t<mt++)

{

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=0i<ni++)

{

if(stu[i].num==number)

{

printf("%ld \t%s \t",stu[i].num,stu[i].name)

for(j=0j<mj++)

{

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=0i<ni++)

{

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

{

printf("%ld \t%s \t",stu[i].num,stu[i].name)

for(j=0j<mj++)

{

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=0j<mj++)

{

printf("For course %d:\n",j+1)

memset(t,0,sizeof(t)) //将数组t的全部元素初始化为0

for(i=0i<ni++)

{

if(stu[i].score[j]>=0&&stu[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=0i<=5i++)

{

total=total+t[i]

}

for(i=0i<=5i++)

{

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=0i<ni++)

{

printf("%ld\t%s\t",stu[i].num,stu[i].name)

for(j=0j<mj++)

{

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=0i<ni++)

{

fprintf(fp,"%10ld%10s",stu[i].num,stu[i].name)

for(j=0j<mj++)

{

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=0i<*ni++)

{

fscanf(fp,"%10ld",&stu[i].num)

fscanf(fp,"%10s",stu[i].name)

for(j=0j<*mj++)

{

fscanf(fp,"%10f",&stu[i].score[j])

}

fscanf(fp,"%10f%10f",&stu[i].sum,&stu[i].aver) //不能用%10.0f

}

fclose(fp)

}


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

原文地址: http://outofmemory.cn/tougao/6067297.html

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

发表评论

登录后才能评论

评论列表(0条)

保存