问题描述:
编辑学生信息时,无法正确进行修改,更改后的信息输入不进去,姓名性别和年级都没有按照输入的值进行输出,而且运行后界面会卡在那里
#include<iostream>
#include<stdlib.h>
using namespace std;
#include"mylist.h"
void menu()
{
cout << "-------------学生信息管理系统-------------" << endl;
cout << "请通过键盘进行输入操作" << endl;
cout << "1-----添加学生信息" << endl;//ok
cout << "2-----查询学生信息" << endl;//ok
cout << "3-----显示学生信息" << endl;//ok
cout << "4-----编辑学生信息" << endl;
cout << "5-----删除学生信息" << endl;//ok
cout << "6-----统计学生信息" << endl;
cout << "0-----退出系统" << endl;
cout << "----------------------------------------------" << endl;
}
struct node* list = createlist();
void choose()
{
student data;
int choose;
cin >> choose;
switch (choose)
{
case 1:
cout << "请输入学生学号,姓名,性别,年龄,年级(一次仅限输入一人)" << endl;
cin.sync();
cin >> data.number >> data.name >> data.sex >> data.age >> data.classroom;
insertlist(list, data);
break;
case 2:
cout << "请输入学生学号" << endl;
cin.sync();
cin >> data.number;
searchdata(list, data.number);
break;
case 3:
cout << "学生信息如下" << endl;
printlist(list);
break;
case 4:
cout << "输入修改学生的学号" << endl;
cin.sync();
cin >> data.number;
editordata(list, data.number);
break;
case 5:
cout << "输入删除学生学号" << endl;
cin >> data.number;
deletenode(list, data.number);
break;
case 6:
cout << "统计数据如下" << endl;
break;
case 0:
cout << "正常退出" << endl;
break;
}
}
int main()
{
while (1)
{
menu();
choose();
system("pause");
system("cls");
}
system("pause");
return 0;
}
#pragma once
#include<iostream>
#include<iomanip>
using namespace std;
struct student
{
char number[20];
char name[20];
int age;
char sex[5];
char classroom[10];
friend ostream& operator<<(ostream& output, student& s);
friend istream& operator>>(istream& input, student& s);
};
istream& operator>>(istream& input, student& s)
{
input >> s.number >> s.name >> s.age >> s.sex >> s.classroom;
return input;
}
ostream& operator<<(ostream& output, student& s)
{
output << setw(10) << s.number << "||" << setw(10) << s.name << "||" << setw(10) << s.sex << "||" << setw(10) << s.age << "||" << setw(10) << s.classroom;
return output;
}
struct node
{
student data;
node* next;
};
struct node* createlist()
{
node* headnode = (node*)malloc(sizeof(node));
headnode->next = NULL;
return headnode;
}
struct node* createnode(student a)
{
node* newnode = (node*)malloc(sizeof(node));
newnode->data = a;
newnode->next = NULL;
return newnode;
}
void printlist(node* headnode)
{
node* put = headnode->next;
cout << setw(10) << "学号" << "||" << setw(10) << "姓名" << "||" << setw(10) << "性别" << "||" << setw(10) << "年龄" << "||" << setw(10) << "年级" << endl;
while (put)
{
cout << put->data << endl;
put = put->next;
}
}
void insertlist(struct node* headnode, student a)
{
node* insert = createnode(a);
insert->next = headnode->next;
headnode->next = insert;
}
void deletenode(node* headnode, char* number)
{
node* frontdeletenode = headnode;
node* deletenode = headnode->next;
while (strcmp(deletenode->data.number,number))
{
frontdeletenode = deletenode;
deletenode = frontdeletenode->next;
if (deletenode == NULL)
{
cout << "没有找到相关数据" << endl;
return;
}
frontdeletenode->next = deletenode->next;
}
free(deletenode);
}
void* searchdata(struct node* headnode, char* number)
{
struct node* pmove = headnode->next;
if (pmove == NULL)
{
return NULL;
}
while (strcmp(pmove->data.number,number))
{
pmove = pmove->next;
}
cout << pmove->data << endl;
}
void* editordata(struct node* headnode, char* number)
{
student s;
struct node* pmove = headnode->next;
if (pmove == NULL)
{
return NULL;
}
while (strcmp(pmove->data.number, number))
{
pmove = pmove->next;
}
cout << "请输入学生学号,姓名,性别,年龄,年级(一次仅限输入一人" << endl;
cin >> s;
pmove->data = s;
cout << setw(10) << "学号" << "||" << setw(10) << "姓名" << "||" << setw(10) << "性别" << "||" << setw(10) << "年龄" << "||" << setw(10) << "年级" << endl;
cout << pmove->data;
}