学生信息管理系统设计与实现C由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“学生信息管理系统c版”。
毕业论文题目: 学生信息管理系统的设计与实现
1.学生信息由 :学号,姓名,班级,英语,高数,c语言,及平均成绩组成。
如: 0201,张三,0304,78,62,70,70(自动计算)
2.系统功能:
1)增加一个学生的信息,如 0201,张三,0304,78,62,70。代码如下: void AddStuInfor(struct student *S){ FILE *fp=NULL;fp=fopen(“e:file_student est.txt”,“a”);if(fp==NULL){
printf(“fopen file_student failedn”);} printf(“学号:n”);scanf(“%d”,&S->num);printf(“姓名:n”);scanf(“%s”,&S->name);printf(“班级:n”);scanf(“%d”,&S->grade);printf(“英语:n”);scanf(“%f”,&S->English);printf(“高数:n”);scanf(“%f”,&S->Math);printf(“C:n”);scanf(“%f”,&S->C);S->average=(S->English+S->Math+S->C)/3;S->flag=1;fseek(fp,0,SEEK_END);fwrite(S,sizeof(struct student),1,fp);fclose(fp);printf(“添加成功n”);system(“pause”);system(“cls”);} 2)学生信息的显示:显示出所有信息。代码如下: void PrintStuInfor(){
FILE *fp=NULL;
struct student st[Stu_Total];
int i=0,j;
fp=fopen(“e:file_student est.txt”,“r”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
while(!feof(fp))
{
fread(&st[i],sizeof(struct student),1,fp);
i++;
}
i=i-1;
printf(“学号t姓名t班级t英语t高数tCt平均成绩n”);
for(j=0;j
{
if(st[j].flag==1){
printf(“%dt%st%dt%0.2ft%0.2ft%0.2ft%0.2fn”,st[j].num,st[j].name,st[j].grade,st[j].English,st[j].Math,st[j].C,st[j].average);}
}
fclose(fp);
system(“pause”);
system(“cls”);} 3)学生信息查询,可按学号查询,可按姓名查询,有重名时均显示。(两个功能)代码如下: A.按学号查询: void NumSeek(int num){
FILE *fp=NULL;
struct student st[Stu_Total];
int i=0,j;
fp=fopen(“e:file_student est.txt”,“r”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
while(!feof(fp))
{
fread(&st[i],sizeof(struct student),1,fp);
i++;
}
i=i-1;
printf(“学号t姓名t班级t英语t高数tCt平均成绩n”);
for(j=0;j
{
if(st[j].num==num)
{
printf(“%dt%st%dt%0.2ft%0.2ft%0.2ft%0.2fn”,st[j].num,st[j].name,st[j].grade,st[j].English,st[j].Math,st[j].C,st[j].average);
}
}
fclose(fp);
system(“pause”);
system(“cls”);} B.按姓名查询: void NameSeek(char name[10]){
FILE *fp=NULL;
struct student st[Stu_Total];
int i=0,j;
fp=fopen(“e:file_student est.txt”,“r”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
while(!feof(fp))
{
fread(&st[i],sizeof(struct student),1,fp);
i++;
}
i=i-1;
printf(“学号t姓名t班级t英语t高数tCt平均成绩n”);
for(j=0;j
{
if(!strcmp(st[j].name,name))
{
printf(“%dt%st%dt%0.2ft%0.2ft%0.2ft%0.2fn”,st[j].num,st[j].name,st[j].grade,st[j].English,st[j].Math,st[j].C,st[j].average);
}
}
fclose(fp);
system(“pause”);
system(“cls”);
} 4)按学号删除一个学生的信息。代码如下: void DelStuInfor(struct student *a){ int num,j,i=0;FILE *fp1=NULL,*fp2=NULL;fp1=fopen(“e:file_student est.txt”,“r”);if(fp1==NULL){
printf(“fopen file_student failedn”);} printf(“请输入要删除的学生的学号:n”);scanf(“%d”,&num);while(!feof(fp1)){
fread(&a[i],sizeof(struct student),1,fp1);
i++;} i=i-1;fclose(fp1);fp2=fopen(“e:file_student est.txt”,“w”);if(fp2==NULL){
printf(“fopen file_student failedn”);} for(j=0;j
if(a[j].num==num)
{
a[j].flag=0;
}
else
{
fwrite(&a[j],sizeof(struct student),1,fp2);
} }
fclose(fp2);
printf(“删除成功n”);
system(“pause”);
system(“cls”);
} 5)按学号对学生信息排序。代码如下: void NumSort(){
FILE *fp=NULL;
struct student st[Stu_Total],temp;
int i=0,j,k;
fp=fopen(“e:file_student est.txt”,“r”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
while(!feof(fp))
{
fread(&st[i],sizeof(struct student),1,fp);
i++;
}
i=i-1;
for(j=0;j
for(k=0;k
if(st[k].num>st[k+1].num)
{
temp=st[k];
st[k]=st[k+1];
st[k+1]=temp;
} } printf(“学号t姓名t班级t英语t高数tCt平均成绩n”);for(k=0;k
printf(“%dt%st%dt%0.2ft%0.2ft%0.2ft%0.2fn”,st[k].num,st[k].name,st[k].grade,st[k].English,st[k].Math,st[k].C,st[k].average);}
fclose(fp);
system(“pause”);
system(“cls”);} 6)按平均成绩高低对学生信息排序。代码如下: void AverSort(){
FILE *fp=NULL;
struct student st[Stu_Total],temp;
int i=0,j,k;
fp=fopen(“e:file_student est.txt”,“r”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
while(!feof(fp))
{
fread(&st[i],sizeof(struct student),1,fp);
i++;
}
i=i-1;
for(j=0;j
for(k=0;k
if(st[k].average>st[k+1].average)
{
temp=st[k];
st[k]=st[k+1];
st[k+1]=temp;
} } printf(“学号t姓名t班级t英语t高数tCt平均成绩n”);for(k=0;k
printf(“%dt%st%dt%0.2ft%0.2ft%0.2ft%0.2fn”,st[k].num,st[k].name,st[k].grade,st[k].English,st[k].Math,st[k].C,st[k].average);}
fclose(fp);
system(“pause”);
system(“cls”);} 7)修改学生信息,如更改某一科的成绩,或更改班级、学号信息等。代码如下: void ChangeStuInfor(int num){
int i=0,j,number,grade;
float Math,English,C;
char name[10];
struct student st[ Stu_Total];
FILE *fp1=NULL,*fp2=NULL;
fp1=fopen(“e:file_student est.txt”,“r”);
if(fp1==NULL)
{
printf(“fopen file_student failedn”);
}
while(!feof(fp1))
{
fread(&st[i],sizeof(struct student),1,fp1);
i++;
}
fclose(fp1);
for(j=0;j
{
if(st[j].num==num)
{
printf(“要修改学生的信息:n”);
printf(“学号t姓名t班级t英语t高数tCt平均成绩n”);
printf(“%dt%st%dt%0.2ft%0.2ft%0.2ft%0.2fn”,st[j].num,st[j].name,st[j].grade,st[j].English,st[j].Math,st[j].C,st[j].average);
printf(“学号:1,姓名:2,班级:3,英语:4,高数:5,C:6n”);
printf(“请输入要修改内容的序号:n”);
scanf(“%d”,&number);
switch(number)
{
case 1:printf(“请输入修改后的学号n”);
scanf(“%d”,&num);
st[j].num=num;break;
case 2:printf(“请输入修改后的姓名n”);
scanf(“%s”,name);
strcpy(st[j].name,name);break;
case 3:printf(“请输入修改后的班级n”);
scanf(“%d”,&grade);
st[j].grade=grade;break;
case 4:printf(“请输入修改后的英语成绩n”);
scanf(“%f”,&English);
st[j].English=English;break;
case 5:printf(“请输入修改后的高数成绩n”);
scanf(“%f”,&Math);
st[j].Math=Math;break;
case 6:printf(“请输入修改后的C成绩n”);
scanf(“%f”,&C);
st[j].C=C;break;
default:printf(“输入有误,请重新输入n”);break;
}
}
}
fp2=fopen(“e:file_student est.txt”,“w”);
if(fp2==NULL)
{
printf(“fopen file_student failedn”);
}
for(j=0;j
{
fwrite(&st[j],sizeof(struct student),1,fp2);
}
fclose(fp2);
system(“cls”);
} 8)要求有保存的功能,当关闭系统后,下次打开时依然可以看到之前的信息。代码如下: void store(){ char c;FILE *fp=NULL;printf(“是否保存上次的学生信息?(Y/N)n”);scanf(“%c”,&c);if(c=='n'||c=='N')
{fp=fopen(“e:file_student est.txt”,“w”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
} else {
fp=fopen(“e:file_student est.txt”,“r”);
if(fp==NULL)
{ printf(“fopen file_student failedn”);
}
PrintStuInfor();
fclose(fp);} system(“pause”);//请按任意键继续是由它产生的。
system(“cls”);} 9)退出功能。代码如下: while(correct){
Pic();scanf(“%d”,&number);//连续使用scanf,出现的n(它为一个字符)会输入到下一个scanf中,影响输入。
switch(number){
case 1:
for(i=0;i
{
char c;
if(stu[i].flag!=0)
continue;
else AddStuInfor(&stu[i]);
printf(“是否继续增加?(Y/N)n”);
scanf(“n%c”,&c);
if(c=='n'||c=='N')break;
}
break;
case 2:PrintStuInfor();break;
case 3:printf(“请输入要查询的学生的学号:n”);
scanf(“%d”,&num);
NumSeek(num);break;
case 4:printf(“请输入要查询学生的姓名:n”);
scanf(“n%s”,name);
NameSeek(name);break;
case 5:DelStuInfor(stu);break;
case 6:NumSort();break;
case 7:AverSort();break;
case 8:printf(“请输入要修改学生信息的学号:n”);
scanf(“%d”,&num);
ChangeStuInfor(num);break;
case 9:correct=0;break;//退出系统即退出该while循环.default :printf(“输入信息有误,请重新输入:n”);break;} 3.完成一个对学生信息进行管理的系统,要求如下:
要求用绘出一个简单的界面。界面示例如:(界面可自行调整,更改,只要更能具备就可以。)
********************************************************************************** 学生信息管理系统 *** 1 增加学生信息
2显示学生信息按学号查询按姓名查询删除学生信息按学号排序
7按平均成绩排序
8修改学生信息 退出。******************************************************************************* 代码如下: void Pic(){ printf(“***************************************************n”);printf(“***
学生信息管理系统
***n”);printf(“1增加学生信息
2显示学生信息
3按学号查询n”);printf(“4按姓名查询
5删除学生信息
6按学号排序n”);printf(“7按平均成绩排序
8修改学生信息
9退出n”);printf(“***************************************************n”);
printf(“请输入需要的操作的序号(1-9):n”);}