学生信息管理系统C语言代码

#include "stdio.h"
#include "time.h"
#include "stdlib.h"
#include"string.h"
#define N 100 /*定义学生信息数组的长度*/
void mainmenu();/*创建主菜单*/
void sortmain(struct stu *a,int n);/*排序功能*/
void init(struct stu *a,int n);/*初始化,主要工作是保存学生信息的数组清空*/
void input(struct stu *a,int n);/*录入学生信息*/
void output(struct stu *a,int n);/*显示学生信息*/
void sort(struct stu *a,int n,int sorttype); /*按照指定的方式进行排序*/
void search(struct stu *a,int n);/*查找学生信息*/
void del(struct stu *a,int n);/*删除学生信息*/
void modify(struct stu *a,int n);/*修改学生信息*/
void savetofile(struct stu *a,int n);/*保存学生信息到文件中*/
void loadfromfile(struct stu *a,int n);/*从文件中读取学生信息*/
struct stu b[N];/*内存中存放学生信息的数组*/
static int m=0;/*记录内存中学生数组的非空元素的最后一个的下标*/
struct stu /*定义学生的结构体*/
{
char name[20];
char num[20];
char sex;
int age;
float score[3];
float sum;
float averge;
};
void main()
{
int i,a,c;

printf("\n\n\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t* *\n");
printf("\t* 学生信息管理系统 *\n");
printf("\t* *\n");
printf("\t* 欢迎使用!! *\n");
printf("\t* *\n");
printf("\t* *\n");
printf("\t* 版本号: 1.0 *\n");
printf("\t* 系统开发人员:雷电1班 张三 李四 王五 *\n");
printf("\t* 版权所有 成都信息工程学院 电子工程学院 *\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t请按任意键进入!");
getch();
while (1)
{
mainmenu();
scanf("%d",&a);
switch(a)
{
case 1:
{
system("cls");
init(b,N);
}break;
case 2:
{
sortmain(b,N);
}break;
case 3:
{
system("cls");
search(b,N);
}break;
case 4:
{
system("cls");
output(b,N);
printf("任意键退出....");
getch();
}break;
case 5:
{

system("cls");
input(b,N);
printf("增加记录完毕!!\n");
}break;
case 6:
{
system("cls");
del(b,N);
}break;
case 7:
{
system("cls");
modify(b,N);
}break;
case 8:
{
savetofile(b,N);
}break;
case 9:
{
loadfromfile(b,N);
}break;
case 0:exit(0);break;
default:printf("不存在,请选择(0~9)!! \n");break;
}
}
}
void mainmenu()
{
system("cls");
printf("\n\n\n");
printf("\t\t+--------------------------------------------+\n");
printf("\t\t| 学生管理系统选择菜单 |\n");
printf("\t\t+--------------------------------------------+\n");
printf("\t\t| 1、初始化或追加一条记录 |\n");
printf("\t\t+--------------------------------------------+\n");
printf("\t\t| 2、排序输出 |\n");
printf("\t\t| 3、搜索记录 |\n");
printf("\t\t| 4、浏览记录 |\n");
printf("\t\t+--------------------------------------------+\n");
printf("\t\t| 5、插入记录 6、删除记录 |\n");
printf("\t\t| 7、修改记录 |\n");
printf("\t\t+--------------------------------------------+\n");
printf("\t\t| 8、保存记录 9、读取记录 |\n");
printf("\t\t| 0、退出 |\n");
printf("\t\t+--------------------------------------------+\n");
printf("\t\t请选择(0~9):");
}
void sortmain(struct stu *a,int n)
{
int c;
do
{
system("cls");
printf("\t\t\t* * * * * * * * * * * * * * * * * *\n");
printf("\t\t\t* * * * * *学生成绩排序 * * * * * *\n");
printf("\t\t\t*<1>按学号排序!! *\n");
printf("\t\t\t*<2>按总分排序!! *\n");
printf("\t\t\t*<3>按平均成绩排序!! *\n");
printf("\t\t\t*<4>按C语言成绩排序!! *\n");
printf("\t\t\t*<5>按外语成绩排序!! *\n");
printf("\t\t\t*<6>按高数成绩排序!! *\n");
printf("\t\t\t*<0>返回上一层! *\n");
printf("\t\t\t*请选择(0~6): *\n");
printf("\t\t\t* * * * * * * * * * * * * * * * * *\n");
scanf("\t\t\t%d",&c);
if(c>0)
{
system("cls");
sort(a,n,c);
output(a,n);
printf("任意键退出....");
getch();
}
}while(c!=0);
}
void init(struct stu *a,int n)
{
int i,c=0;
int h=0;
for(i=m;i>0;i--)
{

a[i]=a[i+1];
m--;
}
printf("初始化完毕!是否增加新记录(1/0)!");
scanf("%d",&c);
if(c==1)
{
input(a,n);
}
}
void input(struct stu *a,int n)
{
int i;
int h=0;
for(i=m;i{
printf("请输入学号:\n");
scanf(" %s",a[i].num);
printf("姓名:\n");
scanf(" %s",a[i].name);
printf("性别(b/g):\n");
scanf(" %c",&a[i].sex);
printf("年龄:\n");
scanf("%d",&a[i].age);
a[i].sum=0;
printf("C语言的成绩:\n");
scanf("%f",&a[i].score[0]);
printf("外语的成绩:\n");
scanf("%f",&a[i].score[1]);
printf("高数的成绩:\n");
scanf("%f",&a[i].score[2]);
a[i].sum=a[i].sum+a[i].score[0]+a[i].score[1]+a[i].score[2];
a[i].averge=a[i].sum/3;
m++;
printf("请输入1继续0结束!!\n");
scanf("%d",&h);
if(h==1)
continue;
else
break;
}
}
void output(struct stu *a,int n)
{
int i;
int j;
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("学号\t姓名\t性别\t年龄\tc语言\t外语\t高数\t总分\t平均分\n");
for(i=0;i{
printf("%s\t",a[i].num);
printf("%s\t",a[i].name);
printf(" %c\t",a[i].sex);
printf("%d\t",a[i].age);
for(j=0;j<3;j++)
{
printf("%.1f\t ",a[i].score[j]);
}
printf("\t%.1f\t %.1f",a[i].sum,a[i].averge);
printf("\n");
}
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
}
void sort(struct stu *a,int n,int sorttype)
{
int i,j;
struct stu temp;
for(i=0;i{
for(j=i+1;j{
switch (sorttype)
{
case 1:/*按照学号排序*/
{
if(strcmp(a[i].num,a[j].num)>0)
{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
break;
case 2:/*按照总分排序*/
{
if(a[i].sum{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
break;
case 3:/*按照平均分排序*/
{
if(a[i].averge{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
break;
case 4:/*按照C语言成绩排序*/
{
if(a[i].score[0]{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
break;
case 5:/*按照外语成绩排序*/
{
if(a[i].score[1]{
temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
break;
case 6:/*按照高数成绩排序*/
{
if(a[i].score[2]{


temp=a[i];
a[i]=a[j];
a[j]=temp;
}
}
break;
default:break;
}
}
}
}
void search(struct stu *a,int n)
{
char snum[20];
int i,j,d=0;
do
{
printf("请输入你要查找的学号\n");
scanf("%s",snum);
for(i=0;i{
if(strcmp(a[i].num,snum)==0)
{
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("学号\t姓名\t性别\t年龄\tc语言\t外语\t高数\t总分\t平均分\n");
printf("%s\t",a[i].num);
printf("%s\t",a[i].name);
printf(" %c\t",a[i].sex);
printf("%d\t",a[i].age);
for(j=0;j<3;j++)
{
printf("%.1f\t ",a[i].score[j]);
}
printf("\t%.1f\t %.1f",a[i].sum,a[i].averge);
printf("\n");
printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("搜索成功\n");
break;
}
}
if(i==m)/*没有找到指定的学号*/
{
printf("你输入的学号不存在!\n");
}
printf("是否继续查询?(1/0)\n");
scanf("%d",&d);
system("cls");
}while(d==1);
}
void del(struct stu *a,int n)
{
int c=0;
int i,j,d,k;
char snum[20];
do
{
printf("请输入要删除的学号\n");
scanf("%s",snum);
for(i=0;i{
if(strcmp(a[i].num,snum)==0)
{
printf("学号\t姓名\t性别\t年龄\tc语言\t外语\t高数\t总分\t平均分\n");
printf("%s\t",a[i].num);
printf("%s\t",a[i].name);
printf(" %c\t",a[i].sex);
printf("%d\t",a[i].age);
for(j=0;j<3;j++)
{
printf("%.1f\t ",a[i].score[j]);
}
printf("\t%.1f\t %.1f",a[i].sum,a[i].averge);
printf("\n");
printf("是否删除此记录?(1/0)\n");
scanf("%d",&c);
if(c==1)
{
for(k=i;k{
a[k]=a[k+1];
}
m--;
printf("删除成功!\n");break;
}
else
break;
}
}
if(i==n)
{
printf("你输入的学号不存在!\n");
}
if((c==1) || (i==n))
{
printf("是否继续删除?1继续0退出(1/0)!\n");
scanf("%d",&d);
system("cls");
}
}while(d==1);
}
void modify(struct stu *a,int n)
{
int i,j,c=0,d,f=0;
char snum[20];
float xscore[3];
char xn[20];
do
{
printf("请输入要修改的学号\n");
scanf("%s",snum);
for(i=0;i{
if(strcmp(a[i].num,snum)==0)
{
printf("学号\t姓名\t性别\t年龄\tc语言\t外语\t高数\t总分\t平均分\n");
printf("%s\t",a[i].num);
printf("%s\t",a[i].name);
printf("%c\t",a[i].sex);
printf("%d\t",a[i].age);
for(j=0;j<3;j++)
{
printf("%.1f\t ",a[i].score[j]);
}
printf("\t%.1f\t %.1f",a[i].sum,a[i].averge);
printf("\n");
printf("是否修改此记录?(1/0)\n");
scanf("%d",&c);
if(c==1)

{
do
{
system("cls");
printf("\t\t请选者你要修改的记录,0返回上级菜单\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t* <1> c语言 <2> 外语 *\n");
printf("\t* <3> 高数 <4> 姓名 *\n");
printf("\t* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n");
scanf("%d",&d);
switch(d)
{
case 1:
{
printf("请输入修改的成绩\n");
scanf("%f",&xscore[0]);
a[i].score[0]=xscore[0];
printf("修改成功!\n");
printf("任意键返回上级菜单....");
getch();
}break;
case 2:
{
printf("请输入修改的成绩\n");
scanf("%f",&xscore[1]);
a[i].score[1]=xscore[1];
printf("修改成功!\n");
printf("任意键返回上级菜单....");
getch();
}break;
case 3:
{
printf("请输入修改的成绩\n");
scanf("%f",&xscore[2]);
a[i].score[2]=xscore[2];
printf("修改成功!\n");
printf("任意键返回上级菜单....");
getch();
}break;
case 4:
{
printf("\t\t请输入修改的姓名\n");
scanf("\t\t%s",xn);
strcpy(a[i].name,xn);
printf("修改成功!\n");
printf("任意键返回上级菜单....");
getch();
}break;
case 0:break;
default:printf("\t\t不存在,请选择(1~4)!! \n");break;
}
}while(d!=0);break;
}
}
}
if(i==m)
{
printf("你输入的学号不存在!是否继续修改(1/0)!\n");
scanf("%d",&f);
}
}while(f==1);
}

void savetofile(struct stu *a,int n)//保存记录
{
int i,c=0;
FILE* fp;
system("cls");
output(a,n);
printf("是否保存改记录(1/0)");
scanf("%d",&c);
if(c==1)
{
if((fp=fopen("d:\\studentinfo.txt","w+"))==NULL)
printf("无法打开文件\n");
else
{
fprintf(fp,"学号\t姓名\t性别\t年龄\tc语言\t外语\t高数\t总分\t平均分\n");
for(i=0;i{
fprintf(fp,"%s\t",a[i].num);
fprintf(fp,"%s\t",a[i].name);
fprintf(fp,"%c\t",a[i].sex);
fprintf(fp,"%d\t",a[i].age);
fprintf(fp,"%.1f\t",a[i].score[0]);
fprintf(fp,"%.1f\t",a[i].score[1]);
fprintf(fp,"%.1f\t",a[i].score[2]);
fprintf(fp,"%.1f\t",a[i].averge);
fprintf(fp,"%.1f\t",a[i].sum);
fprintf(fp,"\n");
}
fclose(fp);
printf("保存磁盘文件数据成功!\n请稍后,系统自动返回!!\n");
for(i=0;i<10;i++)
{
printf("\t");
_sleep(150);
}
}
}
}
void loadfromfile(struct stu *a,int n)
{
int i;
FILE* fp;
system("cls");
if((fp=fopen("d:\\studentinfo.txt","r"))==NULL)
printf("不能打开此文件\n");
fseek(fp,49L,0);
while(!feof(fp))
{
fscanf(fp,"%s\t",a[m].num);
fscanf(fp,"%s\t",a[m].name);
fs

canf(fp,"%c\t",&a[m].sex);
fscanf(fp,"%d\t",&a[m].age);
fscanf(fp,"%f\t",&a[m].score[0]);
fscanf(fp,"%f\t",&a[m].score[1]);
fscanf(fp,"%f\t",&a[m].score[2]);
fscanf(fp,"%f\t",&a[m].averge);
fscanf(fp,"%f\t",&a[m].sum);
m++;
}
fclose(fp);
printf("读取文件数据成功!\n请稍后,系统自动返回!!\n");
for(i=0;i<10;i++)
{
printf("\t");
_sleep(150);
}
}

相关文档
最新文档