ai>|ai-1
ai∈D
i=1
2```````
n}
基本操作:
InitList(&L);
操作结果:
构造一个空的线性表L
DestroyList(&L);
初始条件:
线性表L存在
操作结果:
销毁线性表L
LocateElem(L
I
&e);
初始条件:
线性表L存在
1
操作结果:
用e返回线性表L中第i个数据元素的值
ClearList(&L);
初始条件:
线性表L存在
操作结果:
将线性表L重置为空表
}ADTGraph
2)本程序是由几个函数构成的:
① 主函数:
main()
② 菜单函数menu();
③ 文件读入函数:
readdata();
④ 文件写入函数:
writedata();
⑤ 信息查询函数:
chaxun();
⑥ 信息更新函数:
gengxin();
⑦ 信息一览函数:
liebiao();
⑧ 数据删除函数:
shanchu();
⑨ 数据添加函数:
tianjia();
⑩ 数据修改函数:
xiugai();
它们的调用关系如
三、详细设计
#include
#include
#include
#include//清屏函数头文件
#include
#include
#include
#defineLENsizeof(structemp)
#defineDATA"employee.txt"
structemp
{
longintnum;//编号
charname[20];//姓名
intage;//年龄
charsex[4];//性别
charbirthday[10];//生日
chartel[15];//电话
charedu[8];//学历
charpos[20];//职务
charadd[30];//住址
structemp*next;
};
structemp*head=NULL;
intt=0;
voidmenu();
voidgengxin();
voidtianjia();
voidinsert(structemp*em);
voiddisplay(structemp*p);
voidliebiao();
voidchaxun();
voidbianhao();
voidshengri();
voidxingming();
voidreadDate();
voidwriteDate();
voidfreeAll();
voidshanchu();
voidchange();
voiddevise(structemp*p);
voidmain()
{
structemp*head=NULL;
head=(structemp*)malloc(LEN);
head->next=NULL;system("color1f");
system("modecon:
cols=150lines=500");
readDate();menu();system("cls");
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");
printf("谢谢使用
再见\n");
}
voidmenu(void)
{
chari
lj[100];intflog;time_tT;
structtm*timenow;
time(&T);timenow=localtime(&T);
flog=0;
while
(1)
{
system("cls");printf("\n\n\n\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━员工信息管理系统━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃1.员工信息查询┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃2.员工信息更新┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃3.员工信息列表┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃0.退出管理系统┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┃┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
printf("%s"
asctime(timenow));
printf("请输入您的选择(数字0-3):
\n");
scanf("%c"
&i);gets(lj);if(lj[0])i='a';
switch(i)
{
case'1':
chaxun();break;
case'2':
gengxin();break;
case'3':
liebiao();break;
case'0':
flog=1;break;
default:
printf("输入有误
请按回车键重新输入\n");gets(lj);break;
}if(flog)break;}}
voidtianjia()
{
structemp*p
*p1;charlj[100];
p=NULL;p1=head;
printf("请输入第%d个员工的信息.\n"
t+1);
p=(structemp*)malloc(LEN);
if(p==NULL)
{printf("分配空间失败");exit(0);}
printf("请输入员工的编号:
\n");
scanf("%ld"
&p->num);
while((p1!
=NULL)&&(p->num!
=p1->num))p1=p1->next;
if(p1!
=NULL)
{if(p->num==p1->num){
printf("编号已经存在
请重新输入
按回车键继续:
\n");
free(p);gets(lj);getchar();}}
printf("请输入员工的姓名:
\n");scanf("%s"
p->name);
printf("请输入员工的年龄:
\n");scanf("%d"
&p->age);
printf("请输入员工的性别:
\n");scanf("%s"
p->sex);
printf("请输入员工的出生年月:
\n");scanf("%s"
p->birthday);
printf("请输入员工的电话:
\n");scanf("%s"
p->tel);
printf("请输入员工的学历:
\n");scanf("%s"
p->edu);
printf("请输入员工的职务:
\n");scanf("%s"
p->pos);
printf("请输入员工的住址:
\n");scanf("%s"
p->add);
insert(p);printf("输入的员工信息为:
\n");
printf("------------------------------------------------------------------------:
\n");
printf("编号\t\t姓名\t\t年龄\t\t性别\t\t出生年月\t\t电话\t\t学历\t\t职务\t\t住址:
\n");
display(p);printf("按回车键继续\n");writeDate();gets(lj);getchar();}
voidinsert(structemp*em)
{
structemp*p0
*p1
*p2;p1=head;p0=em;
if(head==NULL)
{head=p0;p0->next=NULL;}
else
{
while((p0->num>p1->num)&&(p1->next!
=NULL))
{p2=p1;p1=p1->next;}if(p0->num<=p1->num)
{
if(head==p1)head=p0;
else
p2->next=p0;p0->next=p1;}
else
{p1->next=p0;p0->next=NULL;}}t++;}
voiddisplay(structemp*p)
{printf("%ld\t\t%s\t\t%d\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n"
p->num
p->name
p->age
p->sex
p->birthday
p->tel
p->edu
p->pos
p->add);}
voidliebiao()
{
charlj[100];structemp*p;p=hea