#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<Windows.h>
#define N 100
typedef struct Student
{
char xm[20];
char xb[4];
int xh;
float gaoshu;
float daying;
float xiandai;
float wuli;
float zf;
}xs;
xs Student[N];
int renshu;
int ad;
char yh[10]="abcdef";//起始用户名
char mm[20]="00000000";//起始密码
char cyh[10],cmm[20];
void zhucaidan(void)
{
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t\t 欢迎使用学生管理系统\t\n");
printf("\t\t\t\t\t|----------------------------|\n");;
printf("\t\t\t\t\t 一(1)、格式化并初始化学生信息。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 二(2)、查找学生信息。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 三(3)、将学生按学号排序。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 四(4)、增加学生的数据。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 五(5)、删除学生数据。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 六(6)、显示当前信息。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 七(7)、修改学生信息。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 八(8)、保存当前信息。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 九(9)、加载文件数据。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 零(0)、退出系统。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
printf("\t\t\t\t\t 注意:在进行相关操作之后要保存信息才行。\n");
printf("\t\t\t\t\t|------------------------------------|\n");
}
void xcaidan()
{
printf("|--------------------------------------|\n");
printf("| 修改数据子菜单 |\n");
printf("|--------------------------------------|\n");
printf("| 1.修改该同学的学号。 |\n");
printf("|--------------------------------------|\n");
printf("| 2.修改该同学的性别。 |\n");
printf("|--------------------------------------|\n");
printf("| 3.修改该同学的姓名 |\n");
printf("|--------------------------------------|\n");
printf("| 4.修改该同学的高数分数。 |\n");
printf("|--------------------------------------|\n");
printf("| 5.修改该同学的英语分数。 |\n");
printf("|--------------------------------------|\n");
printf("| 6.修改该同学的代数分数。 |\n");
printf("|--------------------------------------|\n");
printf("| 7.修改该同学的物理分数。 |\n");
printf("|--------------------------------------|\n");
}
void chuangjian()
{
yh[10]=0;
mm[20]=0;
printf("请输入您的用户名:\n");
scanf("%s",&cyh);
printf("请您输入您的密码:\n");
scanf("%s",&cmm);
if(yh&&mm)
printf("创建成功!:\n");
else
printf("创建失败!:\n");
}
int cdenglu()
{
char a[10],b[20];
int s=0,q=0,h=0,i,j,count;
char m[20],cj;
scanf("%d",&cj);
for(i=1;i<=3;i++)
{count=3;
scanf("%s",&a);
if(strcmp(cyh,a)==0)
{
s=1;
printf("用户名输入正确!\n");
break;
}
else
printf("用户名错误!请再次输入:你还有%d次机会!\n",count-i);
}
for(j=1;j<=3;j++)
{count=3;
printf("请输入用户密码:\n");
scanf("%s",&b);
if(strcmp(cmm,b)==0)
{
q=1;
printf("用户密码输入正确!\n");
break;
}
else
printf("用户密码输入错误!请重新输入:(你还有%d次机会)\n",count-j);
}
if(s&&q)
h=1;
return h;
}
int denglu()
{
char a[10],b[20];
int s=0,q=0,h=0,i,j,count;
char m[20],cj;
printf(" -------------------------|\n");
printf("\t欢迎使用学生管理系统\t\n");
printf("|------------------------------------------------------------|\n");
printf("| 请输入用户名:(若没有账号按E创建用户名和密码按任意键开始登录)\n");
printf("|------------------------------------------------------------|\n");
printf("| 若错误次数超3次将自动退出系统!\n");
printf("-------------------------------------------------------------|\n");
cj=getchar();
//scanf("%c",&cj);
if(cj=='E')
{
chuangjian();
system("CLS");
printf("请再次登录!\n");
printf("请输入用户名:\n");
cdenglu();
}
else
{
printf("请输入用户名:\n");
for(i=1;i<=3;i++)
{count=3;
scanf("%s",&a);
if(strcmp(yh,a)==0)
{
s=1;
printf("用户名输入正确!\n");
break;
}
else
{
if((count-i)==0)
exit(0);
printf("用户名错误!请再次输入:你还有%d次机会!\n",count-i);
}
}
system("CLS");
printf("请输入登录密码:\n");
for(j=1;j<=3;j++)
{count=3;
printf("请输入用户密码:\n");
scanf("%s",&b);
if(strcmp(mm,b)==0)
{
q=1;
printf("用户密码输入正确!\n");
break;
}
else
printf("用户密码输入错误!请重新输入:(你还有%d次机会)\n",count-j);
}
}
if(s&&q)
h=1;
return h;
}
void shuru()
{
int i=0,j;
int f=0;
printf("请输入您要存入多少学生的数据作为初始数据\n");
scanf("%d",&renshu);
while(i<renshu)
{
printf("请输入该学生的学号:\n");
scanf("%d",&Student[i].xh);
for(j=0;j<i;j++)
{
if(Student[i].xh==Student[j].xh)
f=1;
}
if(f)
{
printf("该学号已存在!请重新输入\n");
continue;
}
else
{
printf("请输入学生的姓名:\n");
scanf("%s",&Student[i].xm);
printf("请输入学生的性别:\n");
scanf("%s",&Student[i].xb);
printf("请输入学生高数分数:\n");
scanf("%f",&Student[i].gaoshu);
printf("请输入学生大学英语分数:\n");
scanf("%f",&Student[i].daying);
printf("请输入学生线性代数分数:\n");
scanf("%f",&Student[i].xiandai);
printf("请输入学生大学物理分数:\n");
scanf("%f",&Student[i].wuli);
Student[i].zf=Student[i].gaoshu+Student[i].daying+Student[i].xiandai+Student[i].wuli;
i++;
}
}
}
void find()
{
int i,c,f;
char xingming[20];
printf("请输入您需要的查找方式:(1.按学号查找 。2.按姓名查找)\n");
scanf("%d",&c);
switch(c)
{
case 1:
printf("请输入您需要查找的学号:\n");
scanf("%d",&f);
for(i=0;i<(renshu+ad);i++)
{
if(f==Student[i].xh)
break;
}
if(f==Student[i].xh)
{
printf("该学生的信息是:\n");
printf("姓名 | 学号 | 性别 | 高数 | 英语 | 线代 | 物理 | 总分 |\n ");
printf("%s %d %s %.1f %.1f %.1f %.1f %.1f",Student[i].xm,Student[i].xh,Student[i].xb,Student[i].gaoshu,Student[i].daying,Student[i].xiandai,Student[i].wuli,Student[i].zf);
}
else
printf("查询不到该学生或系统无该学生!\n");
break;
case 2:
printf("请输入该学生的姓名:\n");
scanf("%s",&xingming);
for(i=0;i<(renshu+ad);i++)
{
if(strcmp(xingming,Student[i].xm)==0)
{
printf("该学生的信息是:\n");
printf("姓名 | 学号 | 性别 | 高数 | 英语 | 线代 | 物理 | 总分 |\n ");
printf("%s %d %s %.1f %.1f %.1f %.1f %.1f",Student[i].xm,Student[i].xh,Student[i].xb,Student[i].gaoshu,Student[i].daying,Student[i].xiandai,Student[i].wuli,Student[i].zf);
}
else
printf("查询不到该学生或系统无该学生!\n");
}
}
}
void add()
{
int i=renshu,j=1;
int k,s,f=1;
int add;
printf("请输入您要增加学生数据的个数:\n");
scanf("%d",&add);
renshu+=add;
while(i<renshu)
{
printf("请输入第%d个要增加的学生的学号\n",j);
scanf("%d",&k);
for(s=0;s<renshu;s++)
{
if(k==Student[s].xh)
{
f=0;
printf("此学号已有同学!\n");
break;
}
}
if(f)
{
Student[i].xh=k;
printf("请输入学生的姓名:\n");
scanf("%s",&Student[i].xm);
printf("请输入学生的性别:\n");
scanf("%s",&Student[i].xb);
printf("请输入学生高数分数:\n");
scanf("%f",&Student[i].gaoshu);
printf("请输入学生大学英语分数:\n");
scanf("%f",&Student[i].daying);
printf("请输入学生线性代数分数:\n");
scanf("%f",&Student[i].xiandai);
printf("请输入学生大学物理分数:\n");
scanf("%f",&Student[i].wuli);
Student[i].zf=Student[i].gaoshu+Student[i].daying+Student[i].xiandai+Student[i].wuli;
i++;
j++;
}
}
}
void def()//
{
int h,i,s;
printf("请您选择您要删除学生的序号:\n");
scanf("%d",&h);
for(i=0;i<(renshu+ad);i++)
{
if(h==Student[i].xh)
break;
}
if(h==Student[i].xh)
{
for(s=i;s<(renshu+ad);s++)
{
Student[s].xh=Student[s+1].xh;
strcpy(Student[s].xm,Student[s+1].xm);
strcpy(Student[s].xb,Student[s+1].xb);
Student[s].gaoshu=Student[s+1].gaoshu;
Student[s].daying=Student[s+1].daying;
Student[s].xiandai=Student[s+1].xiandai;
Student[s].wuli=Student[s+1].wuli;
Student[s].zf=Student[s+1].zf;
}
printf("删除成功!\n");
renshu=renshu-1;
}
else
printf("该学号的学生不存在!\n");
}
void gai()//修改函数
{
int i,j,k;
int s=1;
printf("请您输入该学生的学号:\n");
scanf("%d",&j);
for(k=0;k<renshu;k++)
{
if(j==Student[k].xh)
break;
}
if(j==Student[k].xh)
{
while(s)
{
xcaidan();
printf("请输入您的操作:\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("请输入您想要修改学号的值:");
scanf("%d",&Student[k].xh);
break;
case 2:
printf("请输入要修改的性别:\n");
scanf("%s",&Student[k].xb);
break;
case 3:
printf("请输入要修改的姓名:\n");
scanf("%s",&Student[k].xm);
break;
case 4:
printf("请输入要修改的高数分数:\n");
scanf("%f",&Student[k].gaoshu);
break;
case 5:
printf("请输入要修改的英语分数:\n");
scanf("%f",&Student[k].daying);
break;
case 6:
printf("请输入要修改的代数分数:\n");
scanf("%f",&Student[k].xiandai);
break;
case 7:
printf("请输入要修改的物理分数:\n");
scanf("%f",&Student[k].wuli);
break;
default:
printf("输入错误!\n");
break;
}
printf("您是否继续这个子版块?(输入1继续0退出)\n");
scanf("%d",&s);
}
}
else
printf("该学号不存在\n");
}
void paixu()
{
int i,j,f;
int p;
float q;
char x[20],b[4];
printf("请您选择排序的方式:(1.按学号排序 2.按成绩排序)\n");
scanf("%d",&f);
switch(f)
{
case 1:
for(i=0;i<renshu;i++)
{
for(j=i+1;j<renshu;j++)
{
if(Student[i].xh<Student[j].xh)
{
p=Student[i].xh;
Student[i].xh=Student[j].xh;
Student[j].xh=p;
//
strcpy(x,Student[i].xm);
strcpy(Student[i].xm,Student[j].xm);
strcpy(Student[j].xm,x);
/
strcpy(b,Student[i].xb);
strcpy(Student[i].xb,Student[j].xb);
strcpy(Student[j].xb,b);
//
q=Student[i].gaoshu;
Student[i].gaoshu=Student[j].gaoshu;
Student[j].gaoshu=q;
/
q=Student[i].daying;
Student[i].daying=Student[j].daying;
Student[j].daying=q;
///
q=Student[i].xiandai;
Student[i].xiandai=Student[j].xiandai;
Student[j].xiandai=q;
/
q=Student[i].wuli;
Student[i].wuli=Student[j].wuli;
Student[j].wuli=q;
//
q=Student[i].zf;
Student[i].zf=Student[j].zf;
Student[j].zf=q;
}
}
}
break;
case 2:
for(i=0;i<renshu+ad;i++)
{
for(j=i+1;j<renshu+ad;j++)
{
if(Student[i].zf<Student[j].zf)
{
p=Student[i].xh;
Student[i].xh=Student[j].xh;
Student[j].xh=p;
//
strcpy(x,Student[i].xm);
strcpy(Student[i].xm,Student[j].xm);
strcpy(Student[j].xm,x);
/
strcpy(b,Student[i].xb);
strcpy(Student[i].xb,Student[j].xb);
strcpy(Student[j].xb,b);
//
q=Student[i].gaoshu;
Student[i].gaoshu=Student[j].gaoshu;
Student[j].gaoshu=q;
/
q=Student[i].daying;
Student[i].daying=Student[j].daying;
Student[j].daying=q;
///
q=Student[i].xiandai;
Student[i].xiandai=Student[j].xiandai;
Student[j].xiandai=q;
/
q=Student[i].wuli;
Student[i].wuli=Student[j].wuli;
Student[j].wuli=q;
//
q=Student[i].zf;
Student[i].zf=Student[j].zf;
Student[j].zf=q;
}
}
}
break;
default:
printf("输入错误!\n");
break;
}
}
void wenjian()//对文件进行操作的函数
{
int i=0,h;
char xming[20],xbie[4];
FILE *fp=fopen("(请自行输入文件的位置).txt","r");//在此请自己输入文件的位置
//memset(&Student,0,sizeof(Student));//将结构体清零(事实证明此操作对此程序无效!)
while(!feof(fp))
{
fscanf(fp,"%s %d %s %f %f %f %f %f",Student[i].xm,&Student[i].xh,Student[i].xb,&Student[i].gaoshu,&Student[i].daying,&Student[i].xiandai,&Student[i].wuli,&Student[i].zf);
//不能用.1f这种控制,否则会在文件读入时出现读入不正确
//printf("%s %d %s %.1f %.1f %.1f %.1f %.1f\n",Student[i].xm,Student[i].xh,Student[i].xb,Student[i].gaoshu,Student[i].daying,Student[i].xiandai,Student[i].wuli,Student[i].zf);
i++;
}
renshu=i-1;
fclose(fp);
}
void save()//把学生的信息保存到文件中
{
int i;
FILE *fp=fopen("(请自行输入文件的位置).txt","w");//这里也是自行输入文本文件位置
for(i=0;i<renshu;i++)
{
fprintf(fp,"%s %d %s %.1f %.1f %.1f %.1f %.1f\n",Student[i].xm,Student[i].xh,Student[i].xb,Student[i].gaoshu,Student[i].daying,Student[i].xiandai,Student[i].wuli,Student[i].zf);//写入数据
printf("%s %d %s %.1f %.1f %.1f %.1f %.1f\n",Student[i].xm,Student[i].xh,Student[i].xb,Student[i].gaoshu,Student[i].daying,Student[i].xiandai,Student[i].wuli,Student[i].zf);
//在写入时可以用.1f这样的控制写入文件的格式(读入则不行)
}
printf("保存成功!\n");
fclose(fp);
system("pause");
}
void dayin()
{
int i;
system("CLS");
printf("姓名 | 学号 | 性别 | 高数 | 英语 | 线代 | 物理 | 总分 |\n ");
for(i=0;i<renshu;i++)
{
printf("----------------------------------------------|\n");
printf("%s %d %s %.1f %.1f %.1f %.1f %.1f\n",Student[i].xm,Student[i].xh,Student[i].xb,Student[i].gaoshu,Student[i].daying,Student[i].xiandai,Student[i].wuli,Student[i].zf);
}
}
int main()
{
int i,j,x=1,p;
int ji=0;
p=denglu();
while(p!=0)
{
system("CLS");
zhucaidan();
while(x)
{
system("CLS");
zhucaidan();
printf("请您输入相关的数字进行操作!\n");
scanf("%d",&i);
switch(i)
{
case 1:
printf("请输入学生的相关信息:\n");
shuru();
dayin();
system("pause");
break;
case 2:
printf("请输入您要查找的学生信息:(1.按学号查找。2.按姓名查找。)\n");
find();
break;
case 3:
printf("将学生按学号排序后为:\n");
paixu();
dayin();
break;
case 4:
add();
dayin();
break;
case 5:
def();
break;
case 6:
dayin();
break;
case 7:
gai();
break;
case 8:
save();
break;
case 9:
wenjian();
break;
case 0:
printf("您是否确定退出?(是就按”y“按其他键取消)\n");
j=getchar();
if(j=='y'||j=='Y')
exit(0);
break;
default:
break;
}
system("pause");
printf("是否继续?(输入1继续0退出)\n");
scanf("%d",&x);
}
}
return 0;
}
在vc2010中运行的界面
这个代码不足的地方还有很多,但是它能实现基本功能(我是个刚学c语言的新手,做的不好大佬勿怪)