/*教室信息管理系统设计
要求实现的教室基本信息(编号、位置、座位数、有无多媒体、是否可用等)的管理功能,并将教室信息保存到文本文件中。主要功能包括:
提供系统操作的主界面;
1.教室信息的录入、修改与保存;
2.教室信息的删除;
3.教室信息的查询;
4.教室信息的统计;*/
#include
#include
typedef struct ClassRoom
{
unsigned int ClassNum; //教室编号
char Adress[10]; //教室地址
short SeatNum; //座位数
bool IfMedia; //是否有多媒体
bool IfCanUse; //是否能用
ClassRoom *Next; //链接下一个
ClassRoom *Pre; //链接上一个
}ClassRoom;
////////////////////////////////////////////////////////////////////////
void Menu(ClassRoom *&PCRoom, ClassRoom *&CRoom);//菜单
ClassRoom * CreatClassRoom(); //开辟空间创建结构体
void BuyClassRoom(ClassRoom *&PCRoom); //创建新教室
void PutInImfor(ClassRoom *&PRoom); //录入教室信息
void DeleteClass(ClassRoom *&CRoom); //删除教室
void SaveImfor(ClassRoom *&CRoom); //保存教室信息到本地
void LookFor(ClassRoom *&CRoom); //查询教室信息
void Change(ClassRoom *&CRoom); //改变教室信息
void DisPlatClass(ClassRoom *&CRoom); //打印教室信息
void PrintClass(ClassRoom *&CRoom); //打印当前教室的编号
void ClassCount(ClassRoom *&CRoom); //教室数据统计
void FindNum(ClassRoom *&CRoom, unsigned int Num); //查询教室编号
void FreeAll(ClassRoom *&CRoom); //退出时释放空间
////////////////////////////////////////////////////////////////////////
ClassRoom * CreatClassRoom() //开辟空间创建结构体
{
ClassRoom *temp;
temp=(ClassRoom *)malloc(sizeof(ClassRoom));
return temp;
}
void BuyClassRoom(ClassRoom *&PCRoom) //创建新教室
{
ClassRoom *tmp;
tmp=CreatClassRoom();
if(tmp == NULL)
{
printf("创建教室失败!");
system("pause");
return;
}
PCRoom->Next = tmp;
tmp->Pre = PCRoom;
PCRoom = PCRoom->Next;
PCRoom->Next = NULL;
PutInImfor(PCRoom);
}
////////////////////////////////////////////////////////////////////////
void PutInImfor(ClassRoom *&PRoom) //录入教室信息
{
char tp,cp;
system("cls");
printf("请输入教室编号:");
scanf("%d", &PRoom->ClassNum);
printf("请输入教室位置:");
scanf("%s", &PRoom->Adress);
printf("请输入教室座位数:");
scanf("%d", &PRoom->SeatNum);
fflush(stdin);
printf("是否有多媒体?(Y/N):");
scanf("%c", &tp);
if (tp == 'Y' || tp == 'y')
{
PRoom->IfMedia = true;
}else
{
PRoom->IfMedia = false;
}
fflush(stdin);
printf("是否可用?(Y/N):");
scanf("%c", &cp);
if (cp == 'Y' || cp == 'y')
{
PRoom->IfMedia = true;
}else
{
PRoom->IfMedia = false;
}
printf("创建教室成功!\n");
system("pause");
}
////////////////////////////////////////////////////////////////////////
void Menu(ClassRoom *&PCRoom, ClassRoom *&CRoom)
{
unsigned int t=0;
loop: //跳转
system("cls");
printf("********************************************************************\n");
printf("*********************欢迎使用教室管理系统***************************\n");
printf("** 1.创建教室 **\n");
printf("** 2.删除教室 **\n");
printf("** 3.修改教室信息 **\n");
printf("** 4.查询教室信息 **\n");
printf("** 5.统计教室信息 **\n");
printf("** 6.保存当前信息 **\n");
printf("** 7.退出 **\n");
printf("********************************************************************\n\n\n");
printf("请输入编号:");
scanf("%d", &t);
while (t < 1 || t > 7)
{
fflush(stdin);
printf("输入错误,请重新输入:");
scanf("%d",&t);
}
switch(t)
{
case 1:
BuyClassRoom(PCRoom);
break;
case 2:
DeleteClass(CRoom);
break;
case 3:
Change(CRoom);
break;
case 4:
LookFor(CRoom);
break;
case 5:
ClassCount(CRoom);
break;
case 6:
SaveImfor(CRoom);
break;
}
if (t != 7)
{
goto loop;
}
}
////////////////////////////////////////////////////////////////////////
void DeleteClass(ClassRoom *&CRoom) //删除教室
{
system("cls");
unsigned int Num;
ClassRoom *tmp = CRoom;
PrintClass(CRoom);
printf("请选择需要删除的教室编号:");
scanf("%d", &Num);
FindNum(CRoom, Num);
CRoom->Next->Pre = CRoom->Pre;
CRoom->Pre->Next = CRoom->Next;
free(CRoom);
CRoom = tmp;
printf("删除教室成功!\n");
system("pause");
}
////////////////////////////////////////////////////////////////////////
void SaveImfor(ClassRoom *&CRoom) //保存教室信息到本地
{
system("cls");
FILE *fp=fopen("ClassRoomMng.txt","w");
ClassRoom *p = CRoom;
if(p != NULL)
{
while (p != NULL)
{
fwrite(p, sizeof(struct ClassRoom), 1, fp);
p = p->Next;
}
}
fclose(fp);
system("pause");
}
////////////////////////////////////////////////////////////////////////
void LookFor(ClassRoom *&CRoom) //查询教室信息
{
system("cls");
ClassRoom *tmp = CRoom;
unsigned int Num;
PrintClass(CRoom);
printf("请选择需要查询的教室编号:");
scanf("%d", &Num);
FindNum(CRoom, Num);
DisPlatClass(CRoom);
CRoom = tmp;
}
void DisPlatClass(ClassRoom *&CRoom) //打印教室信息
{
printf("教室编号: %d\n", CRoom->ClassNum);
printf("教室地址: %s\n", CRoom->Adress);
printf("教室座位数: %d\n", CRoom->SeatNum);
printf("是否有多媒体:%s\n", CRoom->IfMedia == true? "有":"没有");
printf("是否可用: %s\n", CRoom->IfCanUse == true? "能":"不能");
system("pause");
}
////////////////////////////////////////////////////////////////////////
void Change(ClassRoom *&CRoom) //修改教室信息
{
system("cls");
unsigned int Num;
ClassRoom *tmp = CRoom;
PrintClass(CRoom);
printf("请输入需要修改的教室编号:");
scanf("%d", &Num);
FindNum(CRoom, Num);
PutInImfor(CRoom);
CRoom = tmp;
printf("修改成功!\n");
system("pause");
}
void PrintClass(ClassRoom *&CRoom) //打印当前教室的编号
{
ClassRoom *tmp = CRoom;
tmp = tmp->Next;
printf("当前已有教室编号:\n");
while (tmp != NULL)
{
printf("%d\n",tmp->ClassNum);
tmp = tmp->Next;
}
printf("\n");
}
void FindNum(ClassRoom *&CRoom, unsigned int Num) //查询教室编号
{
while (CRoom != NULL)
{
if (CRoom->ClassNum == Num)
{
break;
}
CRoom = CRoom->Next;
}
}
////////////////////////////////////////////////////////////////////////
void ClassCount(ClassRoom *&CRoom) //教室数据统计
{
system("cls");
ClassRoom *tmp = CRoom;
int MediaNum = 0;
int CanUseNum = 0;
int AllSeatNum = 0;
tmp = tmp->Next;
printf("教室编号:\n");
while (tmp != NULL) //记录所有教室的特征信息
{
printf("%d\n",tmp->ClassNum);
if (tmp->IfCanUse == true)
{
++CanUseNum;
}
if (tmp->IfMedia == true)
{
++MediaNum;
}
AllSeatNum += tmp->SeatNum;
tmp = tmp->Next;
}
printf("\n");
printf("有多媒体的教室有%d个\n", MediaNum);
printf("可用的教室有%d个\n", CanUseNum);
printf("作为一共有%d个\n", AllSeatNum);
system("pause");
}
void FreeAll(ClassRoom *&CRoom) //释放空间
{
ClassRoom *tmp = *&CRoom;
while (CRoom != NULL)
{
tmp = CRoom;
CRoom = CRoom->Next;
free(tmp);
}
}
void main()
{
ClassRoom *CRoom; //始终指向链
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
头部
ClassRoom *PCRoom; //始终指向链表尾部
CRoom = PCRoom = CreatClassRoom();
CRoom->Pre = PCRoom->Pre = NULL;
CRoom->Next = PCRoom->Next = NULL;
Menu(PCRoom, CRoom);
FreeAll(CRoom);
}