#include <stdio.h>
#include <stdlib.h>
typedef struct student {
int num;
int age;
char natuve_place[50];
char gender[2];
char email[20];
char QQ[15];
char name[20];
char academy[30];
int grade;
struct student* next;
struct student* prior;
} Student;
void DeletData(Student*, int);//删除数据
void CrateData(Student*);//增加数据
Student* ChcekData(Student*, int);//查看数据
void ReviseData(Student*, int);//修改数据
void PrintfData(Student*, int);//打印数据
int main() {
int input, num, flag = 1;
Student* temp = (Student*)malloc(sizeof(Student));
Student* pStu, * PStu;
pStu = (Student*)malloc(sizeof(Student));
pStu->next = NULL;
pStu->prior = NULL;
PStu = (Student*)malloc(sizeof(Student));
pStu = PStu;
while (flag) {
printf("\n****************************************\n");
printf("1.删除学生信息\n");
printf("2.新增学生信息\n");
printf("3.查询学生信息\n");
printf("4.修改学生信息\n");
printf("5.打印学生信息\n");
printf("0.结束程序\n");
printf("请输入操作指令:");
scanf("%d", &input);
if (input != 0) {
printf("请输入学生学号:");
scanf("%d", &num);
}
else
flag = 0;
putchar('\n');
switch (input) {
case 1:
DeletData(pStu, num);
break;
case 2:
CrateData(pStu);
break;
case 3:
temp = ChcekData(pStu, num);
printf("\n学生的姓名:%s", temp->name);
printf("\n学生的学号:%d", temp->num);
printf("\n学生的年龄:%d", temp->age);
printf("\n学生的性别:%s", temp->gender);
printf("\n学生的籍贯:%s", temp->natuve_place);
printf("\n学生的邮箱:%s", temp->email);
printf("\n学生的QQ:%s", temp->QQ);
printf("\n学生的学院:%s", temp->academy);
printf("\n学生的年级:%d", temp->grade);
break;
case 4:
ReviseData(pStu, num);
break;
case 5:
PrintfData(pStu, num);
break;
case 0:
flag = 0;
break;
default:
printf("请输入正确的数字!\n");
break;
}
}
return 0;
}
void DeletData(Student* pStu, int num) {
Student* temp = (Student*)malloc(sizeof(Student));
temp = ChcekData(pStu, num);
temp->prior->next = temp->next;
temp->next->prior = temp->prior;
}
Student* ChcekData(Student* p, int num) {
while (p) {
if (p->num == num)
return p;
else
p = p->next;
}
printf("查无此人\n");
}
void CrateData(Student* pStu) { //pStu是头指针
Student* n_student = (Student*)malloc(sizeof(Student));
printf("请输入学生的姓名:");
scanf(" %s", &n_student->name);
printf("请输入学生的学号:");
scanf(" %d", &n_student->num);
printf("请输入学生的性别:");
scanf(" %s", &n_student->gender);
printf("请输入学生的年龄:");
scanf(" %d", &n_student->age);
printf("请输入学生的籍贯:");
scanf(" %s", &n_student->natuve_place);
printf("请输入学生的邮箱:");
scanf(" %s", &n_student->email);
printf("请输入学生的QQ:");
scanf(" %s", &n_student->QQ);
printf("请输入学生的学院:");
scanf("%s", &n_student->academy);
printf("请输入学生的年级:");
scanf(" %d", &n_student->grade);
if (!pStu->prior) {
n_student->prior = pStu;
pStu->prior = n_student;
n_student->next = pStu;
pStu->next = n_student;
}
else {
n_student->prior = pStu;
pStu->prior = n_student;
n_student->next = pStu;
pStu->next = n_student;
}
printf("\n成功创建!\n");
}
void ReviseData(Student* pStu, int num) {
Student* temp = (Student*)malloc(sizeof(Student));
temp = ChcekData(pStu, num);
printf("当前学生信息如下:\n");
printf("\n学生的姓名:%s", temp->name);
printf("\n学生的学号:%d", temp->num);
printf("\n学生的年龄:%d", temp->age);
printf("\n学生的性别:%s", temp->gender);
printf("\n学生的籍贯:%s", temp->natuve_place);
printf("\n学生的邮箱:%s", temp->email);
printf("\n学生的QQ:%s", temp->QQ);
printf("\n学生的学院:%s", temp->academy);
printf("\n学生的年级:%d", temp->grade);
char ch;
printf("是否确认修改?(Y/N)");
scanf("%c", &ch);
if (ch == 'Y')
{
printf("请输入学生的姓名:");
scanf(" %s", &temp->name);
printf("请输入学生的学号:");
scanf(" %d", &temp->num);
printf("请输入学生的性别:");
scanf(" %s", &temp->gender);
printf("请输入学生的年龄:");
scanf(" %d", &temp->age);
printf("请输入学生的籍贯:");
scanf(" %s", &temp->natuve_place);
printf("请输入学生的邮箱:");
scanf(" %s", &temp->email);
printf("请输入学生的QQ:");
scanf(" %s", &temp->QQ);
printf("请输入学生的学院:");
scanf(" %s", &temp->academy);
printf("请输入学生的年级:");
scanf(" %d", &temp->grade);
printf("修改成功,修改后结果如下:\n");
printf("\n学生的姓名:%s", temp->name);
printf("\n学生的学号:%d", temp->num);
printf("\n学生的年龄:%d", temp->age);
printf("\n学生的性别:%s", temp->gender);
printf("\n学生的籍贯:%s", temp->natuve_place);
printf("\n学生的邮箱:%s", temp->email);
printf("\n学生的QQ:%s", temp->QQ);
printf("\n学生的学院:%s", temp->academy);
printf("\n学生的年级:%d", temp->grade);
}
}
void PrintfData(Student* pStu, int num) {
Student* temp = (Student*)malloc(sizeof(Student));
temp = ChcekData(pStu, num);
printf("学生姓名:%s 学生学号:%d\n", temp->name, temp->num);
printf("学生年龄:%d 学生性别:%s\n", temp->age, temp->gender);
printf("学生籍贯:%s 学生邮箱:%d\n", temp->natuve_place, temp->email);
printf("学生QQ:%s 学生学院:%d 学生年级:%d\n", temp->academy, temp->grade);
}