c语言电话簿管理系统函数 c语言电话本管理系统

求用C语言编写一个学生通讯录管理系统

/* HELLO.C -- Hello, world */

专注于为中小企业提供网站建设、成都网站设计服务,电脑端+手机端+微信端的三站合一,更高效的管理,为中小企业阜平免费做网站提供优质的服务。我们立足成都,凝聚了一批互联网行业人才,有力地推动了1000+企业的稳健成长,帮助中小企业通过网站建设实现规模扩充和转变。

#includestdio.h

struct person

{

char name[8];

char tel[15];

char addr[50];

};

char filename[20]="E:\\txl.txt";

FILE *fp;

void creat();

void output();

void search();

void append();

void modify();

void delete();

main( )

{

int m;

creat();

while(1)

{

printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n");

printf("\n\t\t添加,请按1");

printf("\n\t\t查找,请按2");

printf("\n\t\t修改,请按3");

printf("\n\t\t删除,请按4");

printf("\n\t\t输出,请按5");

printf("\n\t\t退出,请按0\n");

printf("\n\t\t********************************************\n\n");

printf("Please select(0--5):");

scanf("%d",m);

if(m=0m=5)

{

switch(m)

{

case 1: append();

break;

case 2: search();

break;

case 3: modify();

break;

case 4: delete();

break;

case 5: output();

break;

case 0: exit();

}

printf("\n\n操作完毕,请再次选择!");

}

else

printf("\n\n选择错误,请再次选择!");

}

}

/*输入模块creat( ): 创建通讯录的子函数。*/

void creat()

{

struct person one;

long s1;

/*printf("\n请输入通讯录文件名:");

scanf("%s",filename); */

if((fp=fopen(filename,"at+"))==NULL)

{

printf("\n不能建立通讯录!");

exit();

}

fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");

printf("\n请输入姓名、电话号码及住址(以0结束)\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);

}

/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/

void output()

{

struct person one;

if((fp=fopen(filename,"r"))==NULL)

{

printf("\n不能打开通讯录!");

exit();

}

printf("\n\n%20s\n","通 讯 录");

while(!feof(fp))

{

fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);

printf("%-10s%-20s%-50s",one.name,one.tel,one.addr);

}

fclose(fp);

}

/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/

void append()

{

struct person one;

if((fp=fopen(filename,"a"))==NULL)

{

printf("\n不能打开通讯录!");

exit();

}

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);

}

/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/

void search()

{

int k=0;

char namekey[8];

struct person one;

printf("\n请输入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"rb"))==NULL)

{

printf("\n不能打开通讯录!");

exit();

}

while(!feof(fp))

{

fscanf(fp,"%s%s%s\n",one.name,one.tel,one.addr);

if(!strcmp(namekey,one.name))

{

printf("\n\n已查到,记录为:");

printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);

k=1;

}

}

if(!k)

printf("\n\n对不起,通讯簿中没有此人的记录。");

fclose(fp);

}

/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/

void modify()

{

int m,k=0;

long offset;

char namekey[8];

struct person one;

printf("\n请输入姓名:");

scanf("%s",namekey);

if((fp=fopen(filename,"r+"))==NULL)

{

printf("\n不能打开通讯录!");

exit();

}

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)

{

printf("\n已查到,记录为:");

printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);

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);

}

/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/

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不能打开通讯录!");

exit();

}

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)

{

printf("\n已查到,记录为");

printf("\n%-10s%-18s%-50s",one.name,one.tel,one.addr);

printf("\n确实要删除,按1;不删除,按0:");

scanf("%d",m);

if(m)

{

fseek(fp,offset1,SEEK_SET);

fprintf(fp,"%-10s%-20s%-50s\n","","","");

}

else

printf("\n对不起,通讯录中没有此人的记录。");

fclose(fp);

}

}

}

}

PIXTEL_MMI_EBOOK_20051###########################################################/PIXTEL_MMI_EBOOK_2005

C语言程序设计,通讯录管理系统

/*【用C语言编写具有数据插入、修改、删除、显示和查询功能的电话薄管理程序】

1、数据包括:人名、工作单位、电话号码和E-mail地址。

2、可对记录中的姓名和电话号码进行修改。

3、可增加或删除记录。

4、可显示所有保存的记录。

5、可按人名或电话号码进行查询。

另:采用结构体数组和文件系统实现。结构体包括人名、工作单位、电话号码和E-mail

绝对原创,2010年7月12日晚刚写完测试通过的,纯C语言! */

#include stdio.h

#include stdlib.h

#include string.h

#define szSTR 64

#define fileDB "c:\\contact.txt"

struct CONTACT {

char name[szSTR];/*姓名*/

char unit[szSTR];/*工作单位*/

char tele[szSTR];/*电话*/

char mail[szSTR];/*mail*/

};

typedef struct CONTACT CON;

#define BNAME 1

#define BUNIT 2

#define BTELE 4

#define BMAIL 8

#define BFULL 0xFF

int OPER[5] = {BFULL, BNAME, BUNIT, BTELE, BMAIL};

void input(CON * s, int mask)

{

if(mask BNAME) { printf("请输入学生姓名:"); scanf("%s", s-name); }

if(mask BUNIT) { printf("请输入工作单位:"); scanf("%s", s-unit); }

if(mask BTELE) { printf("请输入联系电话:"); scanf("%s", s-tele); }

if(mask BMAIL) { printf("请输入电子邮件:"); scanf("%s", s-mail); }

}/*end input*/

void show (int id, CON * s)

{

if(!s) return ;

if(id)

printf("%d\t%s\t%s\t%s\t%s\n",

id, s-name , s-unit , s-tele , s-mail );

else

printf("【姓名】%s【工作单位】%s【电话】%s【电邮】%s\n",

s-name , s-unit , s-tele , s-mail );

/*end if*/

}/*end show*/

void regist(void)

{

CON s; FILE * f = 0;

input(s, BFULL);

f = fopen(fileDB, "ab");

fwrite(s,sizeof(s),1,f);

fclose(f);

printf("资料已保存!\n");

}/*end regist*/

int browse(char * key, fpos_t * p, CON * s)

{

FILE * f =0; int i = 0, r = 0; CON t;

char * a = 0, * b = 0; fpos_t q;

if(!s) return 0;

f = fopen(fileDB, "rb");

if(!f) {

printf("数据库暂无记录\n");

return 0;

}/*end if*/

printf("编号\t姓名\t单位\t电话\t电邮\n");

printf("------------------------------------------------\n");

while(!feof(f)) {

fgetpos(f, q);

r = fread(t, sizeof(t), 1, f);

if(r1)break;

if(t.name[0]==0) continue;

if(key) {

a = strstr(t.name , key);

b = strstr(t.tele , key);

if(a == 0 b == 0) continue;

}/*end if*/

if(p) *p = q;

if(s) memcpy(s, t, sizeof(t));

i++;

show(i, t);

}/*end while*/

fclose(f);

printf("------------------------------------------------\n");

return i;

}/*end browse*/

fpos_t query(CON * s)

{

char key[szSTR]=""; fpos_t p = 0; int r = 0;

printf("请输入姓名或者电话号码:");

scanf("%s", key);

r = browse(key, p, s);

return r?p:-1;

}/*end query*/

void clear(void)

{

FILE * f = 0; CON s;

fpos_t p = query(s);

if(p0) return;

f = fopen(fileDB, "rb+");

fsetpos(f, p);

memset(s, 0, sizeof(s));

fwrite(s, sizeof(s),1, f);

fclose(f);

printf("记录已删除!\n");

}/*end clear*/

void modify(void)

{

FILE * f = 0; CON s; int cmd = 0;

fpos_t p = query(s);

if(p0) return;

f = fopen(fileDB, "rb+");

fsetpos(f, p);

for(;;) {

show(0, s);

printf("请选择:1-姓名;2-工作单位;3-电话;4-电邮;5-保存并退出;6-放弃修改并退出\n");

scanf("%d", cmd);

switch(cmd) {

case 1:

case 2:

case 3:

case 4:

input(s, OPER[cmd]);

break;

case 5:

fsetpos(f, p);

fwrite(s, sizeof(s), 1, f);

case 6:

fclose(f);

return;

default:

printf("错误的操作,请重新输入。\n");

}/*end case*/

}/*mext*/

}/*end clear*/

int main(void)

{

int cmd = 0; CON s;

for(;;) {

printf("欢迎使用通信簿!请选择:1-添加;2-查询;3-删除;4-修改;5-全部输出;0-退出\n");

scanf("%d", cmd);

switch(cmd) {

case 0: return 0;

case 1: regist(); break;

case 2: query(s); break;

case 3: clear(); break;

case 4: modify(); break;

case 5: browse(0, 0, s); break;

}//end case

}

return 0;

}

c语言 电话簿管理系统

#includestdio.h

#includestdlib.h

#includestring.h

#include iostream

//主函数

int main()

{

LinkQueue Q;

initAddressBook(Q);

int flag=0;

while(flag!=8)

{

printf("※※※※※主※※※※※菜※※※※※单※※※※※\n");

printf("※1、增加联系人 2、删除联系人 ※\n");

printf("※3、修改联系人 4、清空通讯录 ※\n");

printf("※5、查找联系人 6、按组显示 ※\n");

printf("※7、显示全部联系人 8、退出 ※\n");

printf("※※※※※※※※※※※※※※※※※※※※※※※\n");

printf("请输入编号(1-8):\n");

scanf("%d",flag);

if(flag1||flag8)

{

printf("输入错误请重新输入!\n");

continue;

}

else

{

switch(flag){

case 1:

if(enAddressBook(Q))

printf("增加联系人成功!\n");

else

printf("增加联系人失败!\n");

break;

case 2:

if(delPerson(Q))

printf("删除联系人成功!\n");

else

printf("联系人删除失败!\n");

break;

case 3:

if(update(Q))

printf("修改联系人成功!\n");

else

printf("修改联系人失败!\n");

break;

case 4:

if(clearAddressBook(Q))

printf("通讯录已清空!\n");

else

printf("通讯录清空失败!\n");

break;

case 5:

findByName(Q);

break;

case 6:

findByGroup(Q);

break;

case 7:

disAll(Q);

break;

case 8:

system("cls");

break;

}

}

}

printf("※※※※※感谢您使用本系统!※※※※※※\n");

return 0;

}

//初始化通讯录

void initAddressBook(LinkQueue Q)

{

Q.front=Q.rear=(QNode *)malloc(sizeof(QNode));

if(!Q.front)

exit(1);

else

Q.front-next=NULL;

}

//清空通讯录

bool clearAddressBook(LinkQueue Q)

{

system("cls");

while(addressBookLength(Q)!=0)

{

QNode *p;

p=Q.front-next;

Q.front-next=p-next;

if(p==Q.rear)

Q.rear=Q.front;

free(p);

}

return true;

}

//通讯录当前人数

int addressBookLength(LinkQueue Q)

{

int i=0;

QNode *p;

p=Q.front;

if(Q.front==Q.rear)

i=0;

else

{

while(p!=Q.rear)

{

p=p-next;

i++;

}

}

return i;

}

//删除联系人

bool delPerson(LinkQueue Q)

{

char _name[20];

system("cls");

printf("请输入要删除的联系人的姓名:\n");

scanf("%s",_name);

QNode *p,*q;

if(Q.front==Q.rear)

{

printf("通讯录为空!\n");

return false;

}

else

{

p=Q.front;

q=Q.front-next;

while(q!=Q.rear){

if(strcmp(q-name,_name)==0)

{

p-next=q-next;

free(q);//删除节点

return true;

}

else

{

p=p-next;

q=q-next;

}

}

if((strcmp(q-name,_name)==0))

{

free(q);

Q.front=Q.rear;

return true;

}

else

{

printf("无此联系人!\n");

return false;

}

}

}

//查找联系人

bool findByName(LinkQueue Q)

{

system("cls");

if(Q.front==Q.rear)

{

printf("手机中无联系人!\n");

return false;

}

else

{

char _name[20];

printf("请输入要查询的联系人姓名:\n");

scanf("%s",_name);

QNode *p;

p=Q.front-next;

while(p-next!=NULL)

{

if(strcmp(p-name,_name)==0)

{

printf("姓名:%s 号码:%s 分组:%s\n",p-name,p-tel,p-group);

return true;

}

p=p-next;

}

if(strcmp(p-name,_name)==0){

printf("姓名:%s 号码:%s 分组:%s\n",p-name,p-tel,p-group);

return true;

}

else

{

printf("查无此人!\n");

return false;

}

}

}

//按组显示联系人

bool findByGroup(LinkQueue Q)

{

system("cls");

if(Q.front==Q.rear)

{

printf("手机中无联系人!\n");

return false;

}

else

{

char _group[20];

printf("请输入要查询的分组:\n");

scanf("%s",_group);

QNode *p;

p=Q.front-next;

while(p-next!=NULL)

{

if(strcmp(p-group,_group)==0)

{

printf("姓名:%s 号码:%s \n",p-name,p-tel);

}

p=p-next;

}

if(strcmp(p-group,_group)==0){

printf("姓名:%s 号码:%s \n",p-name,p-tel);

return true;

}

else

{

printf("无此分组!\n");

return false;

}

}

}

//增加联系人

bool enAddressBook(LinkQueue Q)

{

system("cls");

QNode *p;

p=(QNode *)malloc(sizeof(QNode));

if(!p)

return false;

else

{

printf("请输入联系人姓名:\n");

scanf("%s",p-name);

printf("请输入联系人号码:\n");

scanf("%s",p-tel);

printf("请输入联系人分组:\n");

scanf("%s",p-group);

if(Q.front-next==NULL)

{

Q.front-next=p;

Q.rear=p;

Q.rear-next=NULL;

}

else

{

p-next=NULL;

Q.rear-next=p;

Q.rear=p;

}

return true;

}

}

//修改联系人

bool update(LinkQueue Q)

{

system("cls");

if(Q.front==Q.rear)

{

printf("手机中无联系人!\n");

return false;

}

else

{

char _name[20];

printf("请输入要修改的联系人姓名:\n");

scanf("%s",_name);

QNode *p;

p=Q.front-next;

while(p-next!=NULL)

{

if(strcmp(p-name,_name)==0)

{

printf("请输入新联系人姓名:\n");

scanf("%s",p-name);

printf("请输入新联系人号码:\n");

scanf("%s",p-tel);

printf("请输入新联系人分组:\n");

scanf("%s",p-group);

return true;

}

p=p-next;

}

if(strcmp(p-name,_name)==0){

printf("请输入新联系人姓名:\n");

scanf("%s",p-name);

printf("请输入新联系人号码:\n");

scanf("%s",p-tel);

printf("请输入新联系人分组:\n");

scanf("%s",p-group);

return true;

}

else

{

printf("查无此人!\n");

return false;

}

}

}

//显示所有联系人

void disAll(LinkQueue Q)

{

system("cls");

int i=0;

QNode *p;

p=Q.front-next;

if(Q.front==Q.rear)

printf("无联系人!\n");

else

{

printf(" 姓名 号码 分组\n");

while(p!=NULL){

printf("%15s %15s %15s\n",p-name,p-tel,p-group);

p=p-next;

}

}

}


新闻标题:c语言电话簿管理系统函数 c语言电话本管理系统
文章链接:http://ybzwz.com/article/hposec.html