时:%3.2f\\n\, pTemp->ArrTeachName, pTemp->ArrTeachNum, pTemp->ArrTeachSex, pTemp->ArrTitle, pTemp->ArrSubject, pTemp->ArrClass, pTemp->ClassNum, pTemp->TheoryClaHour, pTemp->practicerClaHour, pTemp->AllClaHour); }
break; }
case 3: //OK {
printf(\请输入指定教师的姓名:\); scanf(\, Name);
pTemp = SearchTeach(Name); if (NULL != pTemp) {
printf(\请输入教工号:\);
scanf(\,pTemp->ArrTeachNum); printf(\请输入性别:\);
scanf(\, pTemp->ArrTeachSex); printf(\请输入职称:\);
scanf(\, pTemp->ArrTitle); printf(\请输入所授课程:\); scanf(\,pTemp->ArrSubject); printf(\请输入授课班级:\); scanf(\,pTemp->ArrClass); printf(\请输入授课班级数目:\); scanf(\, &(pTemp->ClassNum)); printf(\请输入理论课时时长:\);
scanf(\, &(pTemp->TheoryClaHour)); printf(\请输入实践课时时长:\);
scanf(\, &(pTemp->practicerClaHour)); }
break; }
case 4: {
SaveTeachToFile(); break; }
case 5: //OK {
printf(\请输入指定教师的姓名:\); scanf(\, Name);
pTemp = SearchTeach(Name);
//删除这个节点 if (NULL != pTemp) {
DeleTeacher(pTemp); }
break; }
case 6: //OK {
ShowAllTeacher(); break; }
case 0: //OK {
exit(1); }
default:
printf(\输入的指令不对!\\n\); } }
system(\); return 0; }
//指令菜单
void Menu(void) {
printf(\教师信息管理系统*********************\\n\);
printf(\本系统操作指令如下*******************\\n\);
printf(\、 增加一个教师信息(链表尾部添加) ***\\n\);
printf(\、 查找指定教师的信息(姓名/工号) ***\\n\);
printf(\、 修改指定教师的信息 ***\\n\);
printf(\、 保存教师的信息到文件中 ***\\n\);
printf(\、 删除指定教师的信息
***\\n\);
printf(\、 显示所有教师的信息 ***\\n\);
printf(\、 退出系统 ***\\n\);
printf(\n\); }
//增加一个教师信息
void AddTeaMsg(TEACHER Teacher) {
//创建一个节点
TEACHER* pTemp = (PTEACH)malloc(sizeof(TEACHER)); //由于参数过多,本次设计在此处不检验参数的合法性 //数值部分赋值
pTemp->ClassNum = Teacher.ClassNum;
pTemp->practicerClaHour = Teacher.practicerClaHour; pTemp->TheoryClaHour = Teacher.TheoryClaHour; if (2 == pTemp->ClassNum) {
pTemp->AllClaHour = 1.3*(pTemp->TheoryClaHour + pTemp->practicerClaHour); }
if (3 == pTemp->ClassNum) {
pTemp->AllClaHour = 1.7*(pTemp->TheoryClaHour + pTemp->practicerClaHour); }
if (pTemp->ClassNum >= 4) {
pTemp->AllClaHour = 2.0*(pTemp->TheoryClaHour + pTemp->practicerClaHour); }
//数组部分赋值
strcpy(pTemp->ArrClass, Teacher.ArrClass); strcpy(pTemp->ArrSubject, Teacher.ArrSubject); strcpy(pTemp->ArrTeachName, Teacher.ArrTeachName); strcpy(pTemp->ArrTeachNum, Teacher.ArrTeachNum); strcpy(pTemp->ArrTitle, Teacher.ArrTitle);
strcpy(pTemp->ArrTeachSex, Teacher.ArrTeachSex);
if (NULL == pHead) {
pHead = pTemp;
} else {
pEnd->pNext = pTemp; //链接 }
pEnd = pTemp;
pEnd->pNext = NULL; }
//查找一个教师信息
PTEACH SearchTeach(char * Name) {
PTEACH pTemp = pHead; //检测参数的合法性 if (NULL == Name) {
printf(\姓名输入错误!\\n\); return NULL; }
//判断链表是否为空
if (NULL == pHead || NULL == pEnd) {
printf(\链表为空!\\n\); return NULL; }
//遍历链表
while (pTemp != NULL) {
if (0 == strcmp(pTemp->ArrTeachName, Name)) {
return pTemp; }
pTemp = pTemp->pNext; }
printf(\无此教师信息!\\n\); return NULL; }
//删除一个教师信息
void DeleTeacher(PTEACH pNode) {
PTEACH pTemp = pHead; //判断
if (pHead == pNode) //删除头结点的情况 {
//pTemp = pHead;
pHead = pHead->pNext; free(pTemp); pTemp = NULL;
return; //结束 }
while (pTemp) {
if (pTemp->pNext == pNode) {
//删除
if (pNode == pEnd) //删除尾节点的情况 {
free(pNode); pNode = NULL; pEnd = pTemp;
pEnd->pNext = NULL; return; } else {
//记住要删除的节点
PTEACH p = pTemp->pNext; //链接
pTemp->pNext = pTemp->pNext->pNext; //释放节点 free(p); p = NULL; return; } }
pTemp = pTemp->pNext; } }
//显示所有教师信息
void ShowAllTeacher(void) {
PTEACH pTemp = pHead; while (pTemp != NULL) {
printf(\姓名:%s\\n工号:%s\\n性别:%s\\n职称:%s\\n所教课程:%s\\n所教班级:%s\\n班级数目:%d\\n理论课时:%d\\n实践课时:%d\\n总课
时:%3.2f\\n\,pTemp->ArrTeachName,pTemp->ArrTeachNum,pTemp->ArrTeachSe