📄 教师信息管理系统.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 + -