扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
/* 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语言编写具有数据插入、修改、删除、显示和查询功能的电话薄管理程序】
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;
}
#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;
}
}
}
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流