#include<stdio.h>
#include<stdlib.h>
typedef struct student
{
char name[40];
int age;
int stuNum;
int grade;
struct student * next;
}student;//学生信息
struct node
{
student stu;
struct node * next;
};//节点
node * head=NULL; //头节点
void welcome();//欢迎系统声明
void inputstudent();//添加系统声明
void dayinstudent();//打印系统声明
void chazhaostudent();//查询系统声明
void changestudent();//修改系统声明
void deletestdent();//删除系统声明
int main()
{
system("color 56");
while(1){
welcome();
int a;
scanf("%d",&a);
switch(a)
{
case 1://增加学生信息
system("cls");
inputstudent();
break;
case 2://打印学生信息
system("cls");
dayinstudent();
break;
case 3://查找学生信息
system("cls");
chazhaostudent();
break;
case 4://修改学生信息
system("cls");
changestudent();
break;
case 5://删除学生信息
system("cls");
deletestdent();
break;
}
}
return 0;
}
void welcome()//欢迎系统
{
printf("*****************************************\n");
printf("\t欢迎使用高校学生管理系统\t\n");
printf("\t请输入对应功能的号码 \t\n");
printf("\t1.录入学生信息 \t\n");
printf("\t2.打印学生信息 \t\n");
printf("\t3.查找学生信息 \t\n");
printf("\t4.修改学生信息 \t\n");
printf("\t5.删除学生信息 \t\n");
printf("*****************************************\n");
};
void inputstudent()
{
node * newnode=(node *)malloc(sizeof(node));//创建一个新节点
newnode->next=NULL;
if(head==NULL)
{
head=newnode;
}
else
{
newnode->next=head;
head=newnode;
}
printf("请输入学生姓名:\n");
scanf("%s",newnode->stu.name);
printf("请输入学生年龄:\n");
scanf("%d",&newnode->stu.age);
printf("请输入学生学号:\n");
scanf("%d",&newnode->stu.stuNum);
printf("请输入学生成绩:\n");
scanf("%d",&newnode->stu.grade);
printf("打印完毕!!!!");
system("pause");
system("cls");
}
void dayinstudent()
{
//遍历
node * newnode=head;
while(newnode!=NULL)
{ printf("学生的信息如下:\n");
printf("学生的姓名是:%s\n",newnode->stu.name);
printf("学生的年龄是:%d\n",newnode->stu.age);
printf("学生的学号是:%d\n",newnode->stu.stuNum);
printf("学生的成绩是:%d\n",newnode->stu.grade);
newnode=newnode->next;
}
system("pause");
system("cls");
}
void chazhaostudent()
{
printf("请输入您要查找的学生的学号:\n");
int n;
scanf("%d",&n);
//遍历
node * newnode=head;
while(1)
{
if(newnode->stu.stuNum==n)
{
printf("学生的姓名是:%s\n",newnode->stu.name);
printf("学生的年龄是:%d\n",newnode->stu.age);
printf("学生的学号是:%d\n",newnode->stu.stuNum);
printf("学生的成绩是:%d\n",newnode->stu.grade);
system("pause");
system("cls");
break;
}
if(newnode->stu.stuNum==NULL){
printf("没这个人");
break;
}
newnode=newnode->next;
}
}
void changestudent()
{
printf("请输入您要修改信息的学生的学号:\n");
int n;
scanf("%d",&n);
//遍历
node * newnode=head;
while(1)
{
if(newnode->stu.stuNum==n)
{
printf("请输入学生姓名:\n");
scanf("%s",newnode->stu.name);
printf("请输入学生年龄:\n");
scanf("%d",&newnode->stu.age);
printf("请输入学生学号:\n");
scanf("%d",&newnode->stu.stuNum);
printf("请输入学生成绩:\n");
scanf("%d",&newnode->stu.grade);
system("pause");
system("cls");
break;
}
if(newnode->stu.stuNum==NULL)
{
printf("没有这个人");
break;
}
newnode=newnode->next;
}
}
void deletestdent()
{
int n;
printf("请输入你要删除的学生学号:");
scanf("%d",&n);
node * now;//头节点情况专用
node * p;
node * p1;
if(head->stu.stuNum==n)
{
now=head;
head=head->next;
free(p1);
system("cls");
return;
system("pause");
}
p=head;
while(p->next!=NULL)
{
if(p->next->stu.stuNum==n)
{
p1=p->next;
p->next=p->next->next;
free(p1);
system("cls");
return;
system("pause");
}
p=p->next;
if(p->next==NULL)
{
break;
}
}
if(p->next==NULL)
{
printf("没有这个人");
system("cls");
}
}
changestudent这个函数修改如下:
void changestudent()
{
printf("请输入您要修改信息的学生的学号:\n");
int n;
scanf("%d",&n);
//遍历
node * newnode=head;
while(1)
{
if(newnode==NULL)
{
printf("没有这个人");
break;
}
if(newnode->stu.stuNum==n)
{
printf("请输入学生姓名:\n");
scanf("%s",newnode->stu.name);
printf("请输入学生年龄:\n");
scanf("%d",&newnode->stu.age);
printf("请输入学生学号:\n");
scanf("%d",&newnode->stu.stuNum);
printf("请输入学生成绩:\n");
scanf("%d",&newnode->stu.grade);
system("pause");
system("cls");
break;
}
newnode=newnode->next;
}
}