#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define LEN sizeof(struct student)
struct student
{
long int student_number; //定义学生的学号
char student_name[20]; //定义学生的姓名
int student_age; //定义学生的年龄
char student_sex[20]; //定义学生的性别
long int student_phone_number; //定义学生的手机号码
int student_grade; //定义学生的成绩
struct student* next;
};
struct student*the_first();
struct student*p;
struct student*creat(struct student*s); //声明一个创建学生信息的函数
void printf_student_message(struct student*h); //声明一个浏览学生信息的函数
void menu(); //声明一个输出界面的函数
void search_student_message(struct student*s);
void student_message_change(struct student*s);
void student_message_delete(struct student*s);
int n; //定义一个全局变量n
struct student* head;
int main() //定义一个主函数
{
int i;
struct student*p=NULL;
while(1)
{
menu();
scanf("%d",&i);
switch(i)
{
case 1:
printf(" 1.查询学生信息 \n");
search_student_message(head);
system("pause");
break;
case 2:
printf(" 2.修改学生信息 \n");
student_message_change(head);
system("pause");
break;
case 3:
printf(" 3.录入学生信息 \n");
p=creat(p);
system("pause");
break;
case 4:
printf(" 4.删除学生信息 \n");
printf("请输入要删除的学生的姓名:\n");
student_message_delete(head);
system("pause");
break;
case 5:
printf(" 5.浏览学生信息 \n");
printf_student_message(head); //调用一个查找学生信息的函数
system("pause");
break;
case 6:printf("正在退出程序\n");break;
default:
{
printf("输入错误请重新输入:\n");
system("pause");
}
}
if(i==6)break;
system("pause");
system("cls");
}
}
void menu() //输出界面的一个函数
{
printf(" 学生信息管理系统 ");
printf("\n");
printf(" 1.查询学生信息 2.修改学生信息 ");
printf("\n");
printf(" 3.录入学生信息 4.删除学生信息");
printf("\n");
printf(" 5.浏览学生信息 6.退出程序 ");
printf("\n");
printf("请输入选项\n");
}
struct student*creat(struct student*s) //定义一个创建学生信息的函数
{
int i;
printf("继续请按1\n");
printf("退出请按2\n");
scanf("%d",&i);
switch(i)
{
case 1:
struct student*node;
node=(struct student*)malloc(LEN);
printf("请输入学生的学号\n");
scanf("%ld",&node->student_number);
printf("请输入学生的姓名\n");
scanf("%s",node->student_name);
printf("请输入学生的年龄\n");
scanf("%d",&node->student_age);
printf("请输入学生的性别\n");
scanf("%s",node->student_sex);
printf("请输入学生的手机号码\n");
scanf("%ld",&node->student_phone_number);
printf("请输入学生的成绩\n");
scanf("%d",&node->student_grade);
if(n==0)
{
head=node;
node->next=NULL;
n=n+1;
return node;
}
else
{
s->next=node;
node->next=NULL;
n=n+1;
return node;
}
break;
case 2:break;
}
}
void printf_student_message(struct student*h)
{
if(h!=NULL)
{
for(;h!=NULL;)
{
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",h->student_number,h->student_name,h->student_age,h->student_sex,h->student_phone_number,h->student_grade);
h=h->next;
}
}
else
printf("用户未录入信息\n");
}
void search_student_message(struct student*s)
{
int i;
char a[20];
long int l=0;
printf("请输入以下选项\n");
printf("1.按学号查找学生\n");
printf("2.按姓名查找学生\n");
printf("3.退回主菜单\n");
printf("请输入选项\n");
while(1)
{
scanf("%d",&i);
switch(i)
{
case 1:
printf("请输入学生的学号\n");
scanf("%ld",&l);
for(;;s=s->next)
{
if(n==0)
{
printf("用户未录入信息\n");
break;
}
if(s->student_number==l)
{
printf("要查找的学生的信息是:\n");
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);
break;
}
if(s->next==NULL)
{
printf("输入信息有误\n");
break;
}
}
break;
case 2:
printf("请输入学生的姓名\n");
scanf("%s",a);
for(;;s=s->next)
{
if(n==0)
{
printf("用户未录入信息\n");
break;
}
if(strcmp(a,s->student_name)==0)
{
printf("要查找的学生的信息为:\n");
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);
break;
}
if(s->next==NULL)
{
printf("输入信息有误\n");
break;
}
}
break;
case 3:
printf("正在退回主菜单");break;
default :printf("输入的信息有误\n");
}
if(i!=3)
{
printf("1.按学号查找学生\n");
printf("2.按姓名查找学生\n");
printf("3.退回主菜单\n");
}
if(i==3)break;
}
}
void student_message_delete(struct student*s)
{
int i;
char a[20];
long int l;
struct student*p;
printf("请输入以下选项\n");
printf("1.按学生的学号来删除学生信息\n");
printf("2.按学生的姓名来删除学生的信息\n");
printf("3.退回主菜单\n");
printf("请输入选项\n");
while(1)
{
scanf("%d",&i);
switch(i)
{
case 1:
printf("请输入学生的学号\n");
scanf("%ld",&l);
for(;;s=s->next)
{
if(n==0)
{
printf("用户未录入信息\n");
break;
}
if(head->student_number==l)
{
p=head;
head=p->next;
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);
free(p);
n=n-1;
printf("删除信息成功\n");
}
p=s->next;
if(p->student_number==l)
{
s->next=p->next;
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);
free(p);
printf("删除信息成功:\n");
break;
}
if(s->next==NULL)
{
printf("输入信息有误\n");
break;
}
}
break;
case 2:
printf("请输入学生的姓名\n");
scanf("%s",a);
for(;;s=s->next)
{
if(n==0)
{
printf("用户未录入信息\n");
break;
}
if(strcmp(head->student_name,a)==0)
{
p=head;
head=p->next;
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);
free(p);
printf("删除信息成功\n");
break;
}
p=s->next;
if(strcmp(a,p->student_name)==0)
{
s->next=p->next;
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",p->student_number,p->student_name,p->student_age,p->student_sex,p->student_phone_number,p->student_grade);
free(p);
printf("删除信息成功\n");
break;
}
if(s->next==NULL)
{
printf("用户输入信息有误\n");
break;
}
}
break;
case 3:
printf("正在退回主菜单");
break;
}
if(i!=3)
{
printf("1.按学生的学号来删除学生信息\n");
printf("2.按学生的姓名来删除学生的信息\n");
printf("3.退回主菜单\n");
}
if(i==3)break;
}
}
void student_message_change(struct student*s)
{
int i;
char a[20];
long int l;
printf("请输入以下选项\n");
printf("1.按学号查找学生\n");
printf("2.按姓名查找学生\n");
printf("3.退回主菜单\n");
printf("请输入选项\n");
while(1)
{
scanf("%d",&i);
switch(i)
{
case 1:
printf("请输入学生的学号\n");
scanf("%ld",&l);
for(;;s=s->next)
{
if(n==0)
{
printf("用户未录入信息\n");
break;
}
if(s->student_number==l)
{
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);
printf("请输入要更改的学生的信息\n");
printf("请输入修改后学生的学号\n");
scanf("%ld",&s->student_number);
printf("请输入修改后学生的姓名\n");
scanf("%s",s->student_name);
printf("请输入修改后学生的年龄\n");
scanf("%d",&s->student_age);
printf("请输入修改后学生的性别\n");
scanf("%s",s->student_sex);
printf("请输入修改后学生的手机号码\n");
scanf("%ld",&s->student_phone_number);
printf("请输入修改后学生的成绩\n");
scanf("%d",&s->student_grade);
printf("修改成功\n");
break;
}
if(s->next==NULL)
{
printf("输入信息有误\n");
break;
}
}
break;
case 2:
printf("请输入学生的姓名\n");
scanf("%s",a);
for(;;s=s->next)
{
if(n==0)
{
printf("用户未录入信息\n");
break;
}
if(strcmp(a,s->student_name)==0)
{
printf("学号:\t%ld\t姓名:\t%s\t年龄:\t%d\t性别:\t%s\t手机号码:\t%ld\t成绩:\t%d\n",s->student_number,s->student_name,s->student_age,s->student_sex,s->student_phone_number,s->student_grade);
printf("请输入要更改的学生的信息\n");
printf("请输入修改后学生的学号\n");
scanf("%ld",&s->student_number);
printf("请输入修改后学生的姓名\n");
scanf("%s",s->student_name);
printf("请输入修改后学生的年龄\n");
scanf("%d",&s->student_age);
printf("请输入修改后学生的性别\n");
scanf("%s",s->student_sex);
printf("请输入修改后学生的手机号码\n");
scanf("%ld",&s->student_phone_number);
printf("请输入修改后学生的成绩\n");
scanf("%d",&s->student_grade);
printf("修改成功\n");
break;
}
if(s->next==NULL)
{
printf("输入信息有误");
break;
}
}
case 3:
printf("正在退回主菜单");
break;
}
if(i!=3)
{
printf("1.按学号查找学生\n");
printf("2.按姓名查找学生\n");
printf("3.退回主菜单\n");
}
if(i==3)break;
}
}