⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 教师信息管理系统.cpp

📁 一个学生通讯录系统 用C++做的 有以下功能:能查看所有成员的名单。 能增加、删除、修改一位成员的资料。 能查询成员资料。 能清空通讯录。
💻 CPP
字号:
#include "stdio.h"
#include "process.h"
#include "string.h"
#include "stdlib.h"
#define N 4
struct TEACHER{
      char name[20];      /*教师名称*/
      int age;            /*教师年龄*/
      int gradu;
      int xueli;
      int xuewei;
      int zhicheng;
      int zhiwu;
      struct DATE{ 
         int year;
         int month;
         int day;
      }born,work;       /*教师出生日期,参加工作日期*/
      struct TEACHER *next;     /*指向一个象自己一样的结构体变量*/
};
void main()
{
   int m=0,n;
   struct TEACHER *x,*y;
   void creat();
   void list();
   void search();
   struct TEACHER *add(),*dele();
   while(m==0)          /*提供菜单选择*/
   {
      printf("\n");
      printf("*********************\n");
      printf(" * * * * * * * * * *\n");
      printf("* 教师信息管理系统 *\n");
      printf(" * * * * * * * * * *\n");
      printf("*                  *\n");
      printf("* 1.输入数据函数 *\n");
      printf("* 2.增加数据函数 *\n");
      printf("* 3.删除数据函数 *\n");
      printf("* 4.查找数据函数 *\n");
      printf("* 5.输出数据函数 *\n");
      printf("* 6.退出系统 *\n");
      printf("*                 *\n");
      printf("********************\n");
      printf(" 请输入选项(1-6): \n");
      scanf("%d",&n);
      switch(n)
      {
         case 1:printf("执行输入数据函数的命令。\n");creat();break; /*调用输入数据函数*/
         case 2:printf("执行增加数据函数的命令。\n");y=add();break;/*调用增加数据函数*/
         case 3:printf("执行删除数据函数的命令。\n");x=dele();break; 
		 case 4:printf("执行查找数据函数的命令。\n");search();break;
         case 5:printf("执行输出数据函数的命令。\n");list();break;  /*调用输出数据函数*/
         case 6:printf("退出系统。\n");m=1;break;   /*循环结束*/
         default:printf("输入有误,重输!!\n");break;
      }
   }
}
void creat()
{
   int i;
   struct TEACHER teacher[N];
/*   FILE *fp;                       //定义文件指针
   if((fp=fopen("TEACHER.dat","r"))==NULL)  //打开文件并判断是否成功打开
   {
      printf("cannot open this file\n");      //打开失败,退出运行
      exit(1);
   }    */
   for(i=0;i<N;i++)
   {
      scanf("%s%d%d%d%d%d%d%d%d%d",teacher[i].name,&teacher[i].age,&teacher[i].gradu,&teacher[i].xueli,&teacher[i].xuewei,&teacher[i].zhicheng,&teacher[i].zhiwu,&teacher[i].born.year,&teacher[i].born.month,&teacher[i].born.day,&teacher[i].work.year,&teacher[i].work.month,&teacher[i].work.day);

//	  printf(fp,"%s%d%d%d%d%d%d%d%d%d\n",teacher[i].name,teacher[i].age,teacher[i].gradu,teacher[i].xueli,teacher[i].xuewei,teacher[i].zhicheng,teacher[i].zhiwu,teacher[i].born.year,teacher[i].born.month,teacher[i].born.day,teacher[i].work.year,teacher[i].work.month,teacher[i].work.day);
printf("\n\n");
   }          
 // fclose(fp);        //关闭文件    
}
void list()
{
   int i;
   struct TEACHER teacher[N];
 FILE *fp;
   if((fp=fopen("TEACHER.dat","r"))!=NULL)
  {
    for(i=0;i<N;i++)
    {
        fscanf(fp,"%s%d%d%d%d%d%d%d%d%d",teacher[i].name,&teacher[i].age,&teacher[i].gradu,&teacher[i].xueli,&teacher[i].xuewei,&teacher[i].zhicheng,&teacher[i].zhiwu,&teacher[i].born.year,&teacher[i].born.month,&teacher[i].born.day,&teacher[i].work.year,&teacher[i].work.month,&teacher[i].work.day);
         printf("%s %d %d %d %d %d %d %d %d %d\n",teacher[i].name,teacher[i].age,teacher[i].gradu,teacher[i].xueli,teacher[i].xuewei,teacher[i].zhicheng,teacher[i].zhiwu,teacher[i].born.year,teacher[i].born.month,teacher[i].born.day,teacher[i].work.year,teacher[i].work.month,teacher[i].work.day);
         printf("\n\n");
	}
   }    
   else
   {
     printf("\ncannot open this file\n");
     exit(1);
   }
   fclose(fp);
} 
void search()
{
	char temp_name[20];
	int i;
	struct TEACHER teacher[N];
	printf("\nplease input name of a teacher that you want to know his information");
	scanf("%s",temp_name);    /*读入要查询的名字*/
	for(i=0;i<N;i++)
	{
		if(strcmp(teacher[i].name,temp_name)==0)    /*字符串比较,查询*/
		{
			printf("%s %d %d %d %d %d %d %d %d %d\n",teacher[i].name,&teacher[i].age,&teacher[i].gradu,&teacher[i].xueli,&teacher[i].xuewei,&teacher[i].zhicheng,&teacher[i].zhiwu,&teacher[i].born.year,&teacher[i].born.month,&teacher[i].born.day,&teacher[i].work.year,&teacher[i].work.month,&teacher[i].work.day);
			break;          /*跳出循环*/
		}
	}
	if(i<0||i>=4)
		printf("not found\n");  /*查询失败输出失败信息*/
}
struct TEACHER *dele()
{
	int i,j;
	struct TEACHER *q,*head;
	if(i==0||head==NULL)   return head;       /*如果原来的链表为空或参数为0*/
else if(i<0)   return head;                 /*错误数据不做任何操作*/
	else if(i==1&&head->next==NULL)    return NULL;
	else 
	{
       j=1;
	   q=head;
	   while(q->next->next!=NULL&&j<i-1)       /*走链到第i-1个接点*/
	   {
		 q=q->next;
		 j++;
	   }
	   if(j==i-1)
	   {
		 q->next=q->next->next;
		 return head;
	   }
	}
}
struct TEACHER *add()
{
	int i,j;
	struct TEACHER teacher[20];
	struct TEACHER *p,*q,*head;
	p=head;
	if(p==NULL)   exit(1);               /*分配失败退出程序运行*/
    puts("please input the data:");
	scanf("%s%d%d%d%d%d%d%d%d%d",teacher[i].name,&teacher[i].age,&teacher[i].gradu,&teacher[i].xueli,&teacher[i].xuewei,&teacher[i].zhicheng,&teacher[i].zhiwu,&teacher[i].born.year,&teacher[i].born.month,&teacher[i].born.day,&teacher[i].work.year,&teacher[i].work.month,&teacher[i].work.day);
    p->next=NULL;
	if(i==0&&head==NULL)               /*如果原来的链表为空,返回p作为头指针*/
		return p;
	else if(i<0)                           /*数据错误,不做任何操作*/
		return head;
	else
	{
		j=1;
		q=head;
		while(q->next!=NULL&&j<i)             /*走链到第i个结点*/
		{
			q=q->next;
			j++;
		}
		if(j==i)
		{
			p->next=q->next;             /*新插入接点的指针指向第i个接点后面*/
			q->next=p;
			return head;
		}
	}
}


⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -