|

楼主 |
发表于 2022-1-4 18:18:32
|
显示全部楼层
本帖最后由 焦糖橙子 于 2022-1-4 18:20 编辑
- #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);
- }
复制代码 |
|