📄 studentlistmodify.cpp
字号:
#include "StudentList.h" //学生链表类头文件
//函数功能:输入学生学号修改学生信息,调用函数InputOneNewStuInf()实现具体修改
//输入参数:从键盘输入学生学号及相关参数值
//输出参数:显示找到的学生信息
//返回值:无
//修改人:邹明上
//修改时间:2006.06.18
void CStudentList::Modify_Id()
{
char cModify = 'Y';
string sTemp = "\0"; //定义一个字符串,临时存放从键盘输入的字符串,当字符串满足要求后,再分别拷贝到学号,姓名,电话变量中
char* pModifyId = new char[12];//存放预查找的学号
while(cModify == 'Y'||cModify == 'y')
{
int nTotalId = 0;
FindList pFind_H; //定义一个结构体的变量,将查找到的学生节点地址连结成链表
printf("\n\n\t\t---------------------------------------\n");
while(7)
{
printf("\t\t 请输入修改学生学号(11位内):");
fflush(stdin);
cin >> sTemp;
if(InputJudge(sTemp,11))
{
strcpy(pModifyId,sTemp.c_str());//将自定义类型string变量字符串转换成char 字符串
break;
}
}
nTotalId = Find(&pFind_H,pModifyId,1); //按学号找查时,传入一个整型常数1
if(nTotalId == 0) //当nTotalId为0,表示没有找到符合要查找的学生学号,这里也可以用函数返回值来判断
{
printf("\n\t\t 系统信息:您查寻的学生信息不存在");
}
else
{
printf("\n 查寻结果以下:\n");
printf(" 学号是 %s 的学生信息如下:\n",pModifyId);
printf(" 学生学号 姓 名 性别 学生电话 年龄 数学 C++ 英语 平均分 总成绩\n");
ShowOneInf(pFind_H.pNext->pNow);
printf("\n\t\t 要修改该学生信息吗?Y键确定,其他键退出");
fflush(stdin);
cModify = getch();
if(cModify == 'Y'||cModify == 'y')
{
InputOneNewStuInf(pFind_H.pNext->pNow); //确定修改后,调用函数修改该学生信息
}
else
{
printf("\n\t\t 系统信息:未对改学生信息进行修改操作");
}
}
delete pFind_H.pNext; //释放查找到创建的一个节点
printf("\n\t\t 是否继续按学号修改?Y键确定,其他键退出");
fflush(stdin);
cModify = getch();
}
delete[] pModifyId;
}
//函数功能:输入学生姓名修改学生信息,调用函数InputOneNewStuInf()实现具体修改
//输入参数:从键盘输入学生姓名及相关参数值
//输出参数:显示找到的学生信息
//返回值:无
//修改人:邹明上
//修改时间:2006.06.18
void CStudentList::Modify_Name()
{
char cModify = 'Y';
string sTemp = "\0"; //定义一个字符串,临时存放从键盘输入的字符串,当字符串满足要求后,再分别拷贝到学号,姓名,电话变量中
char* pModifyName = new char[12];//存放预查找的学号
while(cModify == 'Y'||cModify == 'y')
{
int nTotalName = 0;
FindList pFind_H; //定义一个结构体的变量,将查找到的学生节点地址连结成链表
printf("\n\n\t\t---------------------------------------\n");
while(7)
{
printf("\t\t 请输入修改学生姓名(4个汉字内):");
fflush(stdin);
cin >> sTemp;
if(InputJudge(sTemp,8))
{
strcpy(pModifyName,sTemp.c_str());//将自定义类型string变量字符串转换成char 字符串
break;
}
}
nTotalName = Find(&pFind_H,pModifyName,2); //按姓名找查时,传入一个整型常数2
if(nTotalName == 0) // 没有查找到输入的学生信息
{
printf("\n\t\t 系统信息:您查寻的学生信息不存在");
}
else if(nTotalName == 1) //找到一位学生信息
{
printf("\n 查寻结果以下:\n");
printf(" 姓名是 %s 的学生信息如下:\n",pModifyName);
printf(" 学生学号 姓 名 性别 学生电话 年龄 数学 C++ 英语 平均分 总成绩\n");
ShowOneInf(pFind_H.pNext->pNow);
printf("\n\t\t 要修改该学生信息吗?Y键确定,其他键退出");
fflush(stdin);
cModify = getch();
if(cModify == 'Y'||cModify == 'y')
{
InputOneNewStuInf(pFind_H.pNext->pNow); //确定修改后,调用函数实现修改该学生信息
}
else
{
printf("\n\t\t 系统信息:未对改学生信息进行修改操作");
}
delete pFind_H.pNext; //释放查找到创建的一个节点
}
else //找到相同姓名一位以上学生信息
{
int nTemp = 0;
FindList* pHead = pFind_H.pNext;
printf("\n 查寻结果以下:\n");
printf(" 姓名是 %s 学生共有%2d位相同\n",pModifyName,nTotalName);
printf(" 学生学号 姓 名 性别 学生电话 年龄 数学 C++ 英语 平均分 总成绩\n");
for(int nI = 0;nI < nTotalName;nI ++,pHead = pHead->pNext)
{
printf(" 第%d位学生\n",nI + 1);
ShowOneInf(pHead->pNow);
}
printf("\n\t\t 请选择要修改第几位学生信息:");
scanf("%d",&nTemp);
fflush(stdin);
if(nTemp < 1 || nTemp > nTotalName)
{
printf("\n\t\t 系统信息:您的修改操作失败,请注意啰");
}
else
{
pHead = pFind_H.pNext;
for(FindList* pTemp = pHead;pTemp != NULL;pTemp = pTemp->pNext)
{
if(pTemp->nNo == nTemp) //查找创建链表中的nNo记录的是第几位学生,相当于数组的下标值
{
InputOneNewStuInf(pTemp->pNow); //确定要修改后,调用函数实现修改该学生信息
break;
}
}
}
FindList* pFind_Del = NULL;//定义一个变量,用于临时存放要释放内存地址
pHead = pFind_H.pNext; //因为查找的链表的第一个节点不是堆区分配的内存空间所以,第一个节点不能delete
while(pHead != NULL) //释放查找建立的链表空间
{
pFind_Del = pHead;
pHead = pHead->pNext;
delete pFind_Del;
}
}
printf("\n\t\t 是否继续按姓名修改?Y键确定,其他键退出");
fflush(stdin);
cModify = getch();
}
delete[] pModifyName;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -