在Linux环境下使用qt工具实现一个通讯录该通讯录有一下功能:
1.可以添加
2.可以搜索
3.可以删除
4.可以退出
//头文件里面放结构体与函数的声明
#ifndef HEAD_H
#define HEAD_H
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <stdlib.h>
typedef struct
{
char name[50];
char age[5];
char addr[50];
}Per;
extern int show_menu();
extern int get_input();
extern int do_add();
extern int do_sear();
extern int do_del();
#endif // HEAD_H
//各个子模块的实现
#include “head.h”
int show_menu()
{
puts(“1.add”);
puts(“2.search”);
puts(“3.del”);
puts(“4.quit”);
return 0;
}
int get_input()
{
char cmd[5];//1\n
fgets(cmd,5,stdin);
cmd[strlen(cmd)-1]=’\n’;
if(‘1’== cmd[0] )//add
{
do_add();
}
if(‘2’== cmd[0] )//search
{
do_sear();
}
if(‘3’== cmd[0] )//del
{
do_del();
}
if(‘4’== cmd[0] )//exit
{
//do_add();
exit(1);
}
return 0;
}
int do_add()
{
Per per;
printf(“pls input name:”);//zhagn\n
fgets(per.name,50,stdin);
per.name[strlen(per.name)-1]=’\0’;
printf(“pls input age:”);
fgets(per.age,5,stdin);
per.age[strlen(per.age)-1]=’\0’;
printf(“pls input addr:”);
fgets(per.addr,50,stdin);
FILE* fp = fopen(“tel”,“a”);
if(NULL == fp)
{
perror(“add fopen”);
exit(1);
}
// zhangsan:20:xian
fprintf(fp,"%s:%s:%s",per.name,per.age,per.addr);
fclose(fp);
return 0;
}
int do_sear()
{
char name[50]={0};
printf(“pls find name”);
fgets(name,50,stdin);
name[strlen(name)-1]=’\0’;
FILE*fp = fopen(“tel”,“r”);
if(NULL == fp)
{
perror(“search fopen”);
exit(1);
}
while(1)
{
char line[256]={0};
char *temp = fgets(line,256,fp);
if(NULL == temp)
{
break;
}
if(0 == strncmp(line,name,strlen(name)))
{
printf("%s",line);
fclose(fp);
return 0;
}
}
fclose(fp);
return 0;
}
int do_del()
{
char name[50] = {0};
printf(“pls input name\n”);
fgets(name,50, stdin);
name[strlen(name) -1] = ‘\0’;
FILE *fp = fopen("tel", "r+");
if(NULL == fp)
{
perror("do_del open");
exit(1);
}
FILE *new_fp = fopen("tel2", "w");
if(NULL == new_fp)
{
perror("del fopen2");
exit(1);
}
while(1)
{
char line[512] = {0};
char line2[512] = {0};
char * temp = fgets(line,512, fp);
if(NULL == temp)
{
break;
}
strcpy(line2, line);
char *name2 = strtok(line, ":");
if(0 == strcmp(name, name2))
{
}
else
{
fputs(line2, new_fp);
}
}
fclose(fp);
fclose(new_fp);
remove("tel");
rename("tel2", "tel");
return 0;
}
//主函数
#include “head.h”
int main()
{
while(1)
{
show_menu(); //显示菜单提示命令
get_input(); //获得输入跳转到相应的函数
}
printf(“Hello World!\n”); //最后一句可以判断出程序是否执行完。
return 0;
}