📄 programe.c
字号:
{
printf("thank you !!!\n");
outbilla();
}
else printf("%s",c);
}
}
/*段伟*/
struct person
{ char name[8];
char tel[15];
char addr[50];
};
char filename[20];
FILE *fp;
void creat1();
void output();
void search1();
void append();
void modify();
void delete();
Duanwei()
{
int m;
textcolor(6);
cprintf("*******************************************************************************");
printf("\n");
textcolor(10);
cprintf("***********************欢迎进入此通讯簿管理系统********************************");
printf("\n");
textcolor(6);
cprintf("*******************************************************************************");
printf("\n");
printf("\n");
creat1();
while(1)
{
clrscr();
textcolor(6);
cprintf("*******************************************************************************");
printf("\n");
textcolor(10);
cprintf("***********************欢迎进入此通讯簿管理系统********************************");
printf("\n");
textcolor(6);
cprintf("*******************************************************************************");
printf("\n");
printf("\n");
cprintf("\n添加,请按1");
printf("\n");
textcolor(1);
cprintf("\n查找,请按2");
printf("\n");
textcolor(2);
cprintf("\n修改,请按3");
printf("\n");
textcolor(3);
cprintf("\n删除,请按4");
printf("\n");
textcolor(4);
cprintf("\n输出,请按5");
printf("\n");
textcolor(5);
cprintf("\n退出,请按0\n");
printf("\n");
scanf("%d",&m);
if(m>=0&&m<=5)
{
switch(m)
{
case 1: append(); break;
case 2: search1(); break;
case 3: modify(); break;
case 4: delete(); break;
case 5: output(); break;
case 0: main();
}
cprintf("\n\n操作完毕,请再次选择!");
printf("\n");
getch();
clrscr();
}
else cprintf("\n\n选择错误,请再次选择!");
printf("\n");
}
}
void creat1()
{
struct person one;
long s1;
textcolor(12);
cprintf("\n 请输入通讯簿名:");
scanf("%s",filename);
if((fp=fopen(filename,"w"))==NULL)
{
cprintf("\n不能建立通讯簿!");
main();
}
fprintf(fp," %-10s%-20s%-50s\n","姓名","电话号码","住址");
textcolor(13);
cprintf("\n请输入姓名、电话号码及住址(以0结束)");
printf("\n");
scanf("%s",one.name);
while(strcmp(one.name,"0"))
{
scanf("%s%s",one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
scanf("%s",one.name);
}
fclose(fp);
}
void output()
{
struct person one;
if((fp=fopen(filename,"r"))==NULL)
{
printf("\n不能打开通讯簿!");
main();
}
clrscr();
textcolor(5);
cprintf("******************************************************************************");
printf("\n") ;
textcolor(4);
cprintf("*******************************通讯簿*****************************************");
printf("\n");
textcolor(5);
cprintf("******************************************************************************");
printf("\n") ;
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
cprintf("%-10s%-20s%-50s",one.name,one.tel,one.addr);
}
fclose(fp);
}
void append()
{
struct person one;
if((fp=fopen(filename,"a"))==NULL)
{
printf("\n不能打开通讯簿!");
main();
}
printf("\n请输入添加的姓名、电话号码及住址\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
fclose(fp);
}
void search1()
{
int k=0;
char namekey[8];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"rb"))==NULL)
{
printf("\n不能打开通讯簿!");
main();
}
while(!feof(fp))
{
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
textcolor(6);
cprintf("\n\n已查到,记录为:");
cprintf("%10s%10s%10s\n",one.name,one.tel,one.addr);
k=1;
}
}
if(!k)cprintf("\n\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
void modify()
{
int m,k=0;
long offset;
char namekey[8];
struct person one;
cprintf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
cprintf("\n不能打开通讯簿!");
main();
}
while(!feof(fp))
{
offset=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
cprintf("\n已查到,记录为:");
cprintf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
printf("\n");
textcolor(5);
cprintf("\n请输入新姓名、电话号码及住址:");
printf("\n");
scanf("%s%s%s",one.name,one.tel,one.addr);
fseek(fp,offset,SEEK_SET);
printf("%ld",ftell(fp));
fprintf(fp,"%-10s%-20s%-50s\n",one.name,one.tel,one.addr);
}
else printf("\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
void delete()
{
int m,k=0,flag;
long offset1,offset2;
char namekey[8], valid[4];
struct person one;
printf("\n请输入姓名:");
scanf("%s",namekey);
if((fp=fopen(filename,"r+"))==NULL)
{
printf("\n不能打开通讯簿!");
main();
}
while(!feof(fp))
{
offset1=ftell(fp);
fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);
if(!strcmp(namekey,one.name))
{
k=1;
break;
}
}
if(k)
{
cprintf("\n已查到,记录为");
cprintf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);
textcolor(1);
cprintf("\n确实要删除,按1;不删除,按0:");
scanf("%d",&m);
if(m)
{
fseek(fp,offset1,SEEK_SET);
fprintf(fp,"%-10s%-20s%-50s\n","","","");
}
}
else cprintf("\n对不起,通讯簿中没有此人的记录。");
fclose(fp);
}
/*侯树超*/
struct date1
{ int year;
int month;
int day;
};
struct address
{ char province[10];
char city[10];
char street[20];
};
struct WORKER
{ int num;
char name[20];
char sex[10];
char status[10];
char position[20];
char rofs[10];
struct address addr;
long tel;
struct date1 birthday;
struct date1 workday;
struct WORKER *next;
};
void in(struct WORKER *q)
{
printf("input the worker's message:\n");
printf("num:");
scanf("%d",&q->num);
if(q->num==0)
goto end;
printf("name:");
scanf("%s",q->name);
printf("sex:");
scanf("%s",q->sex);
printf("position:");
scanf("%s",q->position);
printf("status:");
scanf("%s",q->status);
printf("rofs:");
scanf("%s",q->rofs);
printf("province:");
scanf("%s",q->addr.province);
printf("city:");
scanf("%s",q->addr.city);
printf("street:");
scanf("%s",q->addr.street);
printf("tel:");
scanf("%ld",&q->tel);
printf("birthday_year,birthday_month,birthday_day,workday_year,workday_month,workday_day\n");
scanf("%d,%d,%d,%d,%d,%d",&q->birthday.year,&q->birthday.month,&q->birthday.day,&q->workday.year,&q->workday.month,&q->workday.day);
end:printf(":\n");
}
struct WORKER *creat(void)
{
struct WORKER *head;
struct WORKER *p1,*p2;
int n=0;
p1=p2=(struct WORKER *)malloc(LEN);
in(p1);
head=NULL;
do
{
n=n+1;
if(n==1) head=p1;
else p2->next=p1;
p2=p1;
if(p1->num!=0)
{
p1=(struct WORKER *)malloc(LEN);
in(p1);
}
else break;
}while(p1->num!=0);
p2->next=NULL;
return(head);
}
void insert(struct WORKER *head)
{
struct WORKER *p0,*p1,*p2;
p1=head;
p2=head->next;
p0=(struct WORKER *)malloc(LEN);
in(p0);
if(head==NULL)
{
head=p0;
p0->next=NULL;
}
else
{
p1->next=p0;
p0->next=p2;
}
}
void list(struct WORKER *head)
{
struct WORKER *p3;
p3=head;
if(p3==NULL)
{
printf("There is no profile in the list!\nPress any key to return\n");
getch();
return;
}
if(head!=NULL)
{ do
{
printf("NO.%d workers' profile=>\n",p3->num);
printf("Name:%s\n",p3->name);
printf("Sex:%s\n",p3->sex);
printf("Status:%s\n",p3->status);
printf("Birthday:%d,%d,%d\n",p3->birthday.year,p3->birthday.month,p3->birthday.day);
printf("Rofs:%s\n",p3->rofs);
printf("Workday:%d,%d,%d\n",p3->workday.year,p3->workday.month,p3->workday.day);
printf("Position:%s\n",p3->position);
printf("Address:%s,%s,%s\n",p3->addr.province,p3->addr.city,p3->addr.street);
printf("Tel:%ld\n",p3->tel);
p3=p3->next;
getch();
}while(p3!=NULL);
}
}
void print(struct WORKER *p4)
{
if(p4==NULL)
{
printf("no this message!");
return;
}
printf("NO.%d workers' profile=>\n",p4->num);
printf("Name:%s\n",p4->name);
printf("Sex:%s\n",p4->sex);
printf("Status:%s\n",p4->status);
printf("Birthday:%d,%d,%d\n",p4->birthday.year,p4->birthday.month,p4->birthday.day);
printf("Rofs:%s\n",p4->rofs);
printf("Workday:%d,%d,%d\n",p4->workday.year,p4->workday.month,p4->workday.day);
printf("Position:%s\n",p4->position);
printf("Address:%s,%s,%s\n",p4->addr.province,p4->addr.city,p4->addr.street);
printf("Tel:%ld\n",p4->tel);
}
void search(struct WORKER *head1)
{
char temp[20];
struct WORKER *p;
p=head1;
printf("input the name of the worker\n");
scanf("%s",temp);
do
{
if(strcmp(temp,p->name)==0)
{
print(p);
break;
}
else p=p->next;
}while(p!=NULL);
}
void change(struct WORKER * head2)
{
char temp[20];
int k;
struct WORKER *p;
p=head2;
printf("input the name of the worker:");
scanf("%s",temp);
do
{
if(strcmp(temp,p->name)==0) break;
else p=p->next;
}while(p!=NULL);
do
{
printf("1.num-2.mame-3.sex-4.birthday-5.rofs-6.workday-7.position-8.addr-9.tel-10.status-0.end\n");
scanf("%d",&k);
switch(k)
{
case 1:
printf("Enter the num to change:\n");
scanf("%d",&p->num);
break;
case 2:
printf("Enter the name to change:\n");
scanf("%s",p->name);
break;
case 3:
printf("Enter the sex to change:\n");
scanf("%s",&p->sex);
break;
case 4:
printf("Enter the birthday(year,month,day) to change:\n");
scanf("%d,%d,%d",&p->birthday.year,&p->birthday.month,&p->birthday.day);
break;
case 5:
printf("Enter the rofs to change:\n");
scanf("%s",&p->rofs);
break;
case 6:
printf("Enter the workerday(year,month,day) to change:\n");
scanf("%d,%d,%d",&p->workday.year,&p->workday.month,&p->workday.day);
break;
case 7:
printf("Enter the position to change:\n");
scanf("%s",p->position);
break;
case 8:
printf("Enter the province to change:\n");
scanf("%s",p->addr.province);
printf("Enter the city to change:\n");
scanf("%s",p->addr.city);
printf("Enter the street to change:\n");
scanf("%s",p->addr.street);
break;
case 9:
printf("Enter the tel to change:\n");
scanf("%ld",&p->tel);
break;
case 10:
printf("Enter the status to change:\n");
scanf("%s",&p->status);
break;
}
}while(k!=0);
}
void del(struct WORKER *head3)
{
int i;
struct WORKER *d1,*d2;
printf("input the num of the worker:");
scanf("%d",&i);
if(head3==NULL)
{
printf("no list!");
goto end;
}
d1=head3;
while(i!=d1->num&&d1->next!=NULL)
{
d2=d1;
d1=d1->next;
}
if(i==d1->num)
{
if(d1==head3) head3=d1->next;
else d2->next=d1->next;
printf("delete num:%d\n",i);
}
else printf("not found:\n");
end: printf("end:");
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -