当前位置:文档之家› 学生管理系统源代码

学生管理系统源代码

#include
#include
#include

//宏定义
#define FUNC_NEW 1 /* 建立新的班级学生数据*/
#define FUNC_SAVE 2 /*把数据写入文件并保存*/
#define FUNC_OPEN 3 /*打开文件并从里读入数据*/
#define FUNC_INSERT 4 /*插入一个学生的信息*/
#define FUNC_SEARCH 5 /*查找学生的信息*/
#define FUNC_CHANGE 6 /*修改学生的信息*/
#define FUNC_DELETE 7 /*删除学生的信息*/
#define FUNC_DISPLAY 8 /*展示学生的信息*/
#define FUNC_CENSUS 9 /*分段统计学生总分人数并打印*/
#define FUNG_EXIT 10/*结束程序*/


#define FUNC_CLOSE 10
#define MAX_NUM 45
#define MAX_NAME_STRLEN 25

//用户定义的类型声明
struct _student{
int id;
char name[MAX_NAME_STRLEN];
int AdMath;
int English;
int Chinese;
int OS;
int C_Language;
float averScore;
int sum;
};

typedef struct _student STUD;

struct _studTb{
STUD stud[MAX_NUM];
int length;
};

//函数声明
void Greeting();
void DoSave();
void DoOpen();
void DoNew();
void DoInsert();
void DoDisplay();
void DoDelete();
void DoSearch();
void DoChange();
void Docensus();
void DoExit();
//全局变量的定义
struct _studTb si;
char strClassId[15];

//函数定义

int main()
{
int iUserSelect;
int MainMenu();
system("color 18");
Greeting();

for(;;)
{
iUserSelect = MainMenu();
if(FUNC_CLOSE == iUserSelect)
break;
switch(iUserSelect)
{
case FUNC_NEW:
DoNew();
break;
case FUNC_OPEN:
DoSave();
break
;case FUNC_SAVE:
DoOpen();
break;
case FUNC_INSERT:
DoInsert();
break;
case FUNC_SEARCH:
DoSearch();
break;
case FUNC_CHANGE:
DoChange();
break;
case FUNC_DELETE:
DoDelete();
break;
case FUNC_DISPLAY:
DoDisplay();
break;
case FUNC_CENSUS:
Docensus();
break;
case FUNC_CLOSE :
DoExit();
break;
default:
break;

}
}
}
/********************************************************************************/

int MainMenu()
{
int iUserSelect;

system("cls");

printf("Main function menu of MIS\n");
printf("1> 新建学生信息\n");
printf("2> 保存学生信息\n");
printf("3> 打开学生信息\n");
printf("4> 插入学生信息\n");
printf("5> 查找学生信息\n");
printf("6> 修改学生信息\n");
printf("7> 删除学生信息\n");
printf("8> 展示学生信息的成绩排名\n");
printf("9> 分段统计学生信息\n");
printf("10> 退出学生系统\n");
printf("Please select a function id(1..9) to execute:");
scanf("%d",&iUserSelect);
return iUserSelect;
}
/*************************************************************************************/

void Greeting()
{
int i;

printf(" -------------------------------------------- \n");
printf(" | | \n");
printf(" | Welcome to MIS of Student | \n");
printf(" | 王章伟 徐小利 | \n");
printf(" -------------------------------------------- \n");

printf(" Please input a number(0..9) to continue!");
scanf("%d",&i);
}
/************************************************************************************/
void DoNew()
{
int number,i;
system("cls");
//printf("Do new!\n");
printf("\t\tFUNCION: 新建一个班级:\n");
printf("\t\t请输入班级序号(string):");
scanf("%s",strClassId);
printf("\t\t请输入这个班有多少人:");
scanf("%d",&number);
for (i = 0; i < number; i++)
{
// 从键盘读入各个学生的信息
printf("\t\t请输入学生学号:");
scanf("%d",&si.stud[i].id);
printf("\t\t请输入学生姓名:");

scanf("%s",si.stud[i].name);
printf("\t\t请输入学生成绩:\n");
printf("\t\tAdMath English Chinese OS C_Language\n");

scanf("%4d %4d %4d %4d %4d",& si.stud[i].AdMath, & si.stud[i].English, & si.stud[i].Chinese,
& si.stud[i].OS, & si.stud[i].C_Language);

}
si.length = number;

}
/*****************************************************************************************/
//保存学生信息
void DoSave()
{
FILE *fp;
int i;
system("cls");

if((fp=fopen("stu-list.txt","wb"))==NULL)
{
printf("打开文件失败\n");
return;
}
for(i=0;i{
if(fwrite(&si.stud[i],sizeof(si),1,fp)==1)
printf("保存成功\n");
}

fclose(fp);
}

/**********************************************************************************************/
//开文件读取学生信息
void DoOpen()
{

FILE *fp;
int i=0;
system("cls");
if((fp=fopen("stu-list.txt","ab+"))==NULL)
{
printf("打开文件失败\n");
return;
}
while(!feof(fp))
{
if(fread(&si.stud[i],sizeof(si),1,fp)==1)
i++;
}
fclose(fp);
for(i=0;iprintf("学号 :%d 姓名 :%s 数学: %d 英语:%d 语文:%d OS:%d C语言:%d \n", si.stud[i].id, si.stud[i].name, si.stud[i].AdMath, si.stud[i].English, si.stud[i].Chinese,
si.stud[i].OS, si.stud[i].C_Language);
}
/**********************************************************************************************/
//插入学生信息
void DoInsert()
{
FILE *fp;
int j,INid,sid;
int m=0,i=0,k=0;
system("cls");

if((fp=fopen("stu-list.txt","ab+"))==NULL)
{ printf("\t文件打开失败!");
getchar();
return;
}

while(!feof(fp)){
if(fread(&si.stud[i],sizeof(si),1,fp)==1)
m++;
i++;}
/*if(m==0)
{
printf("没有学生记录!");
fclose(fp);
return;
}*/
printf("\t请输入要插入信息在那个学号之后:\n");
scanf("%d",&INid);
for(i=0;iif(INid==si.stud[i].id)
break;
for(j=m-1;j>i;j--)
si.stud[j+1]=si.stud[j];
stare1:
printf("\t请输入要插入的学生的信息:\n");
printf("\t请输入要插入的学号");
scanf("%d",&sid);

while(k{
if(si.stud[k].id==sid)
{
printf("\t 该学号已经存在,不允许重复插入!\n");
goto stare1;
}
k++;}

si.stud[i+1].id=sid;
printf("\t请输入你想输入的姓名");
scanf("%s",si.stud[i+1].name);

printf(" AdMath English Chinese OS C_Language\n");

scanf("%d %d %d %d %d",& si.stud[i+1].AdMath,
& si.stud[i+1].English,
& si.stud[i+1].Chinese,
& si.stud[i+1].OS,
& si.stud[i+1].C_Language);
si.length=si.length+1;
DoSave();

}
/**********************************************************************************************/
//在文件中查找学生信息,支持姓名学号查找
void DoSearch()
{

int i=0,choice,Sid;
char sname[MAX_NAME_STRLEN];
int flag=0;

system("cls");

DoOpen();

printf("\n1按姓名查找:\n2按学号查找:");
scanf("%d",&choice);

switch(choice)
{
case 1: printf("请你输入要查找的姓名");
scanf("%s",sname);
while(i{


if(strcmp(si.stud[i].name,sname)==0)
{
flag=1;
printf("学号:%d 姓名:%s 数学成绩:%d 英语成绩:%d 语文成绩:%d OS成绩:%d C语言成绩:%d\n",si.stud[i].id,
si.stud[i].name ,
si.stud[i].AdMath,
si.stud[i].English,
si.stud[i].Chinese,
si.stud[i].OS,
si.stud[i].C_Language);}
i++;
}

if(flag==0)
printf("你输入的姓名不存在,请确认后再输入");
break;


case 2: printf("请你输入要查找的学号");
scanf("%d",&Sid);

while(i

{
if(Sid==si.stud[i].id)
{
flag=1;
printf("学号:%d 姓名:%s 数学成绩:%d 英语成绩:%d 语文成绩:%d OS成绩:%d C语言成绩:%d\n",si.stud[i].id,
si.stud[i].name ,
si.stud[i].AdMath,
si.stud[i].English,
si.stud[i].Chinese,
si.stud[i].OS,
si.stud[i].C_Language);
}
i++;
}

if(flag==0)
printf("你输入的学号不存在,请确认后再输入");
break;


}
printf(" Please input a number to continue!");
scanf("%d",&i);
return;
}
/**********************************************************************************************/
//对学生信息进行修改
void DoChange()

{

int choice1;
int i=0;
int onum;
char choice2;
system("cls");
DoOpen();
printf("你想对那个学生进行操作,请输入学号\n");
scanf("%d",&onum);
while(onum!=si.stud[i].id)
i++;
if(onum==si.stud[i].id)
{
printf("\n你要修改哪一项");
printf("1学号\t2姓名\n3数学成绩\n4英语成绩\n5汉语成绩\n6电分成绩\n7C程序成绩");
printf("请选择");
scanf("%d",&choice1);
switch(choice1)
{
case 1: printf("\n请输入修改后的学号");
scanf("%d",&si.stud[i].id);
break;
case 2: printf("\n输入你要修改的姓名");
scanf("%s",&si.stud[i].name);
break;
case 3: printf("\n请输入要修改的成绩");
scanf("%d",&si.stud[i].AdMath);
break;
case 4: printf("\n请输入要修改的成绩");
scanf("%d",&si.stud[i].Eng

lish);
break;
case 5: printf("\n请输入要修改的成绩");
scanf("%d",&si.stud[i].Chinese);
break;
case 6: printf("\n请输入要修改的成绩");
scanf("%d",&si.stud[i].OS);
break;
case 7: printf("\n请输入要修改的成绩");
scanf("%d",&si.stud[i].C_Language);
break; }

}

else
printf("没有该同学信息");

printf(" Please input a number(0..9) to continue!");
scanf("%d",&i);
}

/**********************************************************************************************/
//删除学生信息
void DoDelete()
{
int i,id;

char fname[MAX_NAME_STRLEN];
system("cls");
DoOpen();

printf("请输入学生学号");

scanf("%d",&id);

i=0;

while(si.stud[i].id!=id)

i++;

if(si.stud[i].id==id)
{
while(i{
si.stud[i]=si.stud[i+1];
i++;
}
si.length=si.length-1;
for(i=0;iprintf("学号 :%d 姓名 :%s 数学: %d 英语:%d 语文:%d OS:%d C语言:%d \n", si.stud[i].id, si.stud[i].name, si.stud[i].AdMath, si.stud[i].English, si.stud[i].Chinese,
si.stud[i].OS, si.stud[i].C_Language);
}

else
printf("没有该同学信息");
printf(" Please input a number(0..9) to continue!");
scanf("%d",&i);
}
/**********************************************************************************************/
//展示学生信息
void DoDisplay()
{
struct _studTb m;

int i,j,n;
system("cls");
DoOpen();
printf("请选择\n1.数学排名 2.英语排名 3.语文排名 4.OS排名 5.C语言排名 6.学生总分并排序 7.学生平均分并排序\n");
scanf("%d",&n);
if(n==1)
{
for(j=0;j{
for(i=0;iif(si.stud[i].AdMath{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}

}
for(i=0;iprintf("学号:%d 姓名:%s 数学成绩排名:%d\n", si.stud[i].id, si.stud[i].name ,si.stud[i].AdMath);

}
else if(n==2)
{
for(j=0;j{
for(i=0;iif(si.stud[i].English{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}
}
for(i=0;iprintf("学号:%d 姓名:%s 英语成绩排名:%d\n", si.stud[i].id, si.stud[i].name , si.stud[i].English);

}
else if(n==3)
{
for(j=0;j{
for(i=0;iif(si.stud[i].Chinese{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}
}
for(i=0;iprintf("学号:%d 姓名:%s 语文成绩排名:%d\n", si.stud[i].id, si.stud[i].name, si.stud[i].Chinese);

}
else if(n==4)
{
for(j=0;j{
for(i=0;iif(si.stud[i].OS{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}
}
for(i=0;iprintf("学号:%d 姓名:%s OS成绩排名:%d\n", si.stud[i].id, si.stud[i].name, si.stud[i].OS);

}
else if(n==5)
{
for(j=0;j{
for(i=0;iif(si.stud[i].C_Language{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}
}
for(i=0;i

printf("学号:%d 姓名:%s C语言成绩排名:%d\n", si.stud[i].id, si.stud[i].name,si.stud[i].C_Language);

}
else if(n==6)
{
for(i=0;isi.stud[i].sum=si.stud[i].AdMath+si.stud[i].English+si.stud[i].Chinese+si.stud[i].OS+si.stud[i].C_Language;
for(j=0;j{
for(i=0;iif(si.stud[i].sum{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}
}
for(i=0;iprintf("学号:%d 姓名:%s 总分成绩排名:%f\n", si.stud[i].id, si.stud[i].name, si.stud[i].sum);

}

else if(n==7)
{
for(i=0;i{
si.stud[i].sum=si.stud[i].AdMath+si.stud[i].English+si.stud[i].Chinese+si.stud[i].OS+si.stud[i].C_Language;
si.stud[i].averScore=(float)si.stud[i].sum/si.length;


}
for(j=0;j{
for(i=0;iif(si.stud[i].averScore{
m.stud[1]=si.stud[i];
si.stud[i]=si.stud[i+1];
si.stud[i+1]=m.stud[1];

}
}
for(i=0;iprintf("学号:%d 姓名:%s 平均成绩排名:%f\n", si.stud[i].id, si.stud[i].name, si.stud[i].averScore);
}
printf(" Please input a number(0..9) to continue!");
scanf("%d",&i);
}
/**********************************************************************************************/
//统计学生信息
void Docensus()
{
struct _studTb sen;
int mark;
int sum=0;
int i=0;
system("cls");
DoOpen();

printf("请输入要统计多少分以上的学生信息");
scanf("%d",&mark);

while(i{ if(si.stud[i].AdMath>mark)
{
sen.stud[sum]=si.stud[i];
sum++;
}
i++;
}
printf("一共有:%d人\n",sum);

for(i=0;iprintf("他的学号%4d姓名 %s数学成绩 %4d英语成绩 %4d 中文成绩%4d OS成绩

%4d C语言成绩%4d\n ",sen.stud[i].id,sen.stud[i].name,sen.stud[i].AdMath,sen.stud[i].English,sen.stud[i].Chinese,
sen.stud[i].OS,sen.stud[i].C_Language);

printf(" Please input a number(0..9) to continue!");
scanf("%d",&i);
}
/**********************************************************************************************/
void DoExit()
{ //结束程序
printf("\t\t 谢谢使用,祝您好运,再见!\n");

printf("\t\t");

system("pause");

exit(0);

}

相关主题
文本预览
相关文档 最新文档