#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include<conio.h>
struct student
{
char id[15]; //学生学号
char name[20]; //学生姓名
char sex[5]; //学生性别
char major[20]; //学生专业
char chusheng[15]; //学生出生日期
char dizhi[30]; //学生家庭地址
int achievement; //学生英语成绩
struct student *next;
};
void menu()//菜单
{
printf("\t\t* * * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t* 1.增加学生信息 2.删除学生信息 *\n");
printf("\t\t* 3.导入学生信息 4.查询学生信息 *\n");
printf("\t\t* 5.学生信息统计 6.按英语成绩排序 *\n");
printf("\t\t* 7.学生信息保存 8.修改学生信息 *\n");
printf("\t\t* 0.退出程序 *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * * *\n");
}
void join(struct student *head)
{
struct student *p1;
FILE*in;
in=fopen("F:\\大作业\\学生信息.txt","r");
while(!feof(in))
{
p1=(struct student*)malloc(sizeof(struct student));
fscanf(in,"%s",&p1->id);
fscanf(in,"%s",&p1->name);
fscanf(in,"%s",&p1->sex);
fscanf(in,"%s",&p1->major);
fscanf(in,"%s",&p1->chusheng);
fscanf(in,"%s",&p1->dizhi);
fscanf(in,"%d",&p1->achievement);
p1->next=head->next;
head->next=p1;
}
fclose(in);
printf("导入成功!\n");
}
void add(struct student *head) //1.增加学生信息
{
while(1)
{
struct student *n=head->next;
struct student *p;
p=(struct student *)malloc(sizeof(struct student));
int o,v;
char id[15];
char name[20];
char sex[5];
char major[20];
char chusheng[15];
char dizhi[30];
int achievement;
printf("请输入学生学号:");
scanf("%s",id);
while(n)
{
if(n==NULL)
{
break;
}
if(strcmp(n->id,id)==0)
{
printf("学号重复请重新输入编号:");
scanf("%s",id);
n=head->next;
}
if(strcmp(n->id,id)!=0)
{
n=n->next;
}
}
printf("请输入学生姓名:");
scanf("%s",name);
printf("请输入学生性别:");
scanf("%s",sex);
printf("请输入学生专业:");
scanf("%s",major);
printf("请输入学生出生日期:");
scanf("%s",chusheng);
printf("请输入学生家庭地址:");
scanf("%s",dizhi);
printf("请输入学生英语成绩:");
achievement=scanf("%d", &v);
while(achievement!=1)
{
while((getchar())!='\n' );
printf("警告只能输入数字!成绩:");
achievement=scanf("%d", &v);
}
achievement=v;
strcpy(p->id,id);
strcpy(p->name,name);
strcpy(p->sex,sex);
strcpy(p->major,major);
strcpy(p->chusheng,chusheng);
strcpy(p->dizhi,dizhi);
p->achievement=achievement;
p->next=head->next;
head->next=p;
printf("添加成功\n");
printf("是否继续添加\n");
printf("是输入'1',否输入'0'\n");
printf("请输入数字:");
scanf("%d",&o);
while(o>1||o<0)
{
printf("输入错误,请重新输入:");
scanf("%d",&o);
}
if(o==0)
{
break;
}
}
}
void delete(struct student *head) //2.删除学生信息
{
struct student *a=head;
struct student *b=head->next;
char name[20];
printf("请输入删除学生姓名:");
scanf("%s",name);
while(b)
{
if(strcmp(b->name,name)==0)
{
a->next=b->next;
free(b);
printf("删除完成\n");
break;
}
else
{
a=a->next;
b=b->next;
if(b==NULL)
{
printf("无该生信息\n");
}
}
}
}
void query(struct student *head)//4.查询学生信息
{
printf("开始查询学生信息\n") ;
int i,v,a;
do
{
char id[20];
char name[20];
char sex[5];
char major[20];
char chusheng[20];
char dizhi[20];
int achievement;
int j = 0;
struct student*s=head->next;
s=head->next;
printf("请选择查询方法:\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t* 1.学生学号 2.学生名字 *\n");
printf("\t\t* 3.学生性别 4.学生专业 *\n");
printf("\t\t* 5.学生出生日期 6.学生家庭地址 *\n");
printf("\t\t* 7.学生英语成绩 0.退出查询程序 *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * *\n");
printf("请输入数字:");
i=scanf("%d", &v);
while(i!=1)
{
while((getchar())!='\n' );
printf("警告只能输入数字:");
i=scanf("%d", &v);
}
i=v;
switch(i)
{
case 0:
printf("退出成功\n");
break;
case 1:
printf("请输入查询学生学号:");
scanf("%s",id);
while(s)
{
if(strcmp(s->id,id)==0)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
break;
}
else
{
s=s->next;
if(s==NULL)
{
printf("查询无信息");
break;
}
}
}
break;
case 2:
printf("请输入查询学生姓名:");
scanf("%s",name);
while(s)
{
if(strcmp(s->name,name)==0)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
printf("\n");
s=s->next;
j++;
if(s==NULL)
{
break;
}
}
else
{
s=s->next;
if(s==NULL&&j==0)
{
printf("查询无信息");
break;
}
}
}
break;
case 3:
printf("请输入查询学生性别:");
scanf("%s",sex);
while(s)
{
if(strcmp(s->sex,sex)==0)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
printf("\n");
s=s->next;
j++;
if(s==NULL)
{
break;
}
}
else
{
s=s->next;
if(s==NULL&&j==0)
{
printf("查询无信息");
break;
}
}
}
break;
case 4:
printf("请输入查询学生专业:");
scanf("%s",major);
while(s)
{
if(strcmp(s->major,major)==0)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
printf("\n");
s=s->next;
j++;
if(s==NULL)
{
break;
}
}
else
{
s=s->next;
if(s==NULL&&j==0)
{
printf("查询无信息");
break;
}
}
}
break;
case 5:
printf("请输入查询学生出生日期:");
scanf("%s",chusheng);
while(s)
{
if(strcmp(s->chusheng,chusheng)==0)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
printf("\n");
s=s->next;
j++;
if(s==NULL)
{
break;
}
}
else
{
s=s->next;
if(s==NULL&&j==0)
{
printf("查询无信息");
break;
}
}
}
break;
case 6:
printf("请输入查询学生家庭地址:");
scanf("%s",dizhi);
while(s)
{
if(strcmp(s->dizhi,dizhi)==0)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
printf("\n");
s=s->next;
j++;
if(s==NULL)
{
break;
}
}
else
{
s=s->next;
if(s==NULL&&j==0)
{
printf("查询无信息");
break;
}
}
}
break;
case 7:
printf("请输入查询学生英语成绩:");
scanf("%d", &achievement);
while(s)
{
if(s->achievement==achievement)
{
printf("学号 :%s\n",s->id);
printf("姓名 :%s\n",s->name);
printf("性别 :%s\n",s->sex);
printf("专业 :%s\n",s->major);
printf("出生日期:%s\n",s->chusheng);
printf("家庭地址:%s\n",s->dizhi);
printf("英语成绩:%d\n",s->achievement);
printf("\n");
s=s->next;
j++;
if(s==NULL)
{
break;
}
}
else
{
s=s->next;
if(s==NULL&&j==0)
{
printf("查询无信息");
break;
}
}
}
break;
default :
printf("无效数字,请重新输入\n");
break;
}
}while(i);
}
void show(struct student *head) //5.学生信息统计
{
struct student*x=head->next;
x=head->next;
while(x)
{
printf("学号 :%s\n",x->id);
printf("姓名 :%s\n",x->name);
printf("性别 :%s\n",x->sex);
printf("专业 :%s\n",x->major);
printf("出生日期:%s\n",x->chusheng);
printf("家庭地址:%s\n",x->dizhi);
printf("英语成绩:%d\n",x->achievement);
printf("\n");
x=x->next;
}
}
void paixu(struct student *head)//按英语成绩排序
{
struct student*x=head->next;
int yingyv[1000];
int a,b;
int i,j;
for(i=0;i<1000;i++)
{
if(x==NULL)
{
break;
}
yingyv[i]=x->achievement;
a++;
x=x->next;
}
for(i=0;i<a-1;i++)
{
for(j=0;j<a-i-1;j++)
{
if(yingyv[j]<yingyv[j+1])
{
b=yingyv[j];
yingyv[j]=yingyv[j+1];
yingyv[j+1]=b;
}
}
}
for(i=0;i<a;i++)
{
x=head->next;
while(x)
{
if(x->achievement==yingyv[i])
{
printf("学号 :%s\n",x->id);
printf("姓名 :%s\n",x->name);
printf("性别 :%s\n",x->sex);
printf("专业 :%s\n",x->major);
printf("出生日期:%s\n",x->chusheng);
printf("家庭地址:%s\n",x->dizhi);
printf("英语成绩:%d\n",x->achievement);
printf("\n");
}
x=x->next;
}
}
}
void baocun(struct student *head)//保存学生信息
{
FILE*fp=fopen("F:\\大作业\\学生信息.txt","w");
struct student *p;
p=head->next;
if(fp==NULL)
{
printf("打开失败");
exit(1);//异常退出
}
while(p!=NULL)
{
fprintf(fp,"%s\n",p->id);
fprintf(fp,"%s\n",p->name);
fprintf(fp,"%s\n",p->sex);
fprintf(fp,"%s\n",p->major);
fprintf(fp,"%s\n",p->chusheng);
fprintf(fp,"%s\n",p->dizhi);
fprintf(fp,"%d\n",p->achievement);
p=p->next;
}
printf("保存成功!\n");
fclose(fp);//关闭文件
}
void modify(struct student *head)//8.修改学生信息
{
printf("开始修改学生信息\n");
struct student*q=head->next;
q=head->next;
char io[20];
printf("请输入查询学生学号:");
scanf("%s",io);
while(q)
{
if(strcmp(q->id,io)==0)
{
int i,v,a;
char id[15]; //学生学号
char name[20]; //学生姓名
char sex[5]; //学生性别
char major[20]; //学生专业
char chusheng[15]; //学生出生日期
char dizhi[30]; //学生家庭地址
int achievement;
do
{
printf("请选择修改项目:\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * *\n");
printf("\t\t* 1.学生学号 2.学生名字 *\n");
printf("\t\t* 3.学生性别 4.学生专业 *\n");
printf("\t\t* 5.学生出生日期 6.学生家庭地址 *\n");
printf("\t\t* 7.学生英语成绩 0.退出修改程序 *\n");
printf("\t\t* * * * * * * * * * * * * * * * * * * * *\n");
printf("请输入数字:");
i=scanf("%d", &a);
while(i!=1)
{
while((getchar())!='\n' );
printf("\t警告只能输入数字!学号:");
i=scanf("%d", &a);
}
i=a;
switch(i)
{
case 0:
printf("退出成功");
break;
case 1:
printf("请输入修改后的学生学号:");
scanf("%s",id);
strcpy(q->id,id);
break;
case 2:
printf("请输入修改后的学生名字:");
scanf("%s",name);
strcpy(q->name,name);
break;
case 3:
printf("请输入修改后的学生性别:");
scanf("%s",sex);
strcpy(q->sex,sex);
break;
case 4:
printf("请输入修改后的学生专业:");
scanf("%s",major);
strcpy(q->major,major);
break;
case 5:
printf("请输入修改后的学生出生日期:");
scanf("%s",chusheng);
strcpy(q->chusheng,chusheng);
break;
case 6:
printf("请输入修改后的学生家庭住址:");
scanf("%s",dizhi);
strcpy(q->dizhi,dizhi);
break;
case 7:
printf("请输入修改后的学生英语成绩:");
achievement=scanf("%d", &v);
while(achievement!=1)
{
while((getchar())!='\n' );
printf("\t警告只能输入数字!成绩:");
achievement=scanf("%d", &v);
}
achievement=v;
q->achievement=achievement;
break;
default :
printf("无效数字,请重新输入\n");
break;
}
}while(i);
break;
}
else
{
q=q->next;
if(q==NULL)
{
printf("无相关学生信息");
break;
}
}
}
}
void zhuce()
{
char zhanghao1[10];
char zhanghao2[10];
char mima1[10];
char mima2[10];
while(1)
{
printf("\t\t-------------------------------------------------\n");
printf("\t\t 学生信息管理系统注册页面 \n");
printf("\t\t-------------------------------------------------\n");
printf("\t\t注册学生通信录管理系统的账号\n");
printf("\t\t请输入学生通信录管理系统的账号:");
scanf("%s",zhanghao1);
printf("\t\t请输入学生通信录管理系统的密码:");
scanf("%s",mima1);
system("pause");
system("cls");
printf("\t\t-------------------------------------------------\n");
printf("\t\t 学生信息管理系统登录页面 \n");
printf("\t\t-------------------------------------------------\n");
printf("\t\t请输入学生通信录管理系统的账号:");
scanf("%s",zhanghao2);
printf("\t\t请输入学生通信录管理系统的密码:");
scanf("%s",mima2);
if(strcmp(zhanghao1,zhanghao2)!=0||strcmp(mima1,mima2)!=0)
{
printf("输入错误,请重新输入:");
scanf("%s",zhanghao2);
printf("密码:");
}
else
{
printf("成功登陆\n");
break;
}
}
}
int main()
{
int n,v;
struct student *head=(struct student*)malloc(sizeof(struct student));
head->next=NULL;
zhuce();
system("pause");
system("cls");
printf("\t \t \t \t 新生基本信息系统\n");
do
{
printf("请选择执行程序:\n");
menu();
printf("请输入数字");
n=scanf("%d", &v);
while(n!=1)
{
while((getchar())!='\n' );
printf("警告只能输入数字:");
n=scanf("%d", &v);
}
n=v;
system("pause");
system("cls");
switch(n)
{
case 0:
printf("正在退出程序\n");
printf("退出成功");
break;
case 1://1.增加学生信息
add(head);
system("pause");
system("cls");
break;
case 2://2.删除学生信息
delete(head);
system("pause");
system("cls");
break;
case 3://3.查看保存学生信息
join(head);
system("pause");
system("cls");
break;
case 4://4.查询学生信息
query(head);
system("pause");
system("cls");
break;
case 5://5.学生信息统计
show(head);
system("pause");
system("cls");
break;
case 6://6.按英语成绩排序
paixu(head);
system("pause");
system("cls");
break;
case 7://7.学生信息保存
baocun(head);
system("pause");
system("cls");
break;
case 8://8.修改学生信息
modify(head);
system("pause");
system("cls");
break;
default:
printf("输入错误,请重新输入");
break;
}
}while(n);
return 0;
system("pause");
system("cls");
}
学生管理系统
最新推荐文章于 2024-09-11 20:52:11 发布