您的位置:首页 > 职场人生

黑马程序员-通讯录

2015-06-30 22:02 627 查看
------- android培训java培训、期待与您交流!
----------

这是黑马视频的一个小程序,关于c语言的,简单,但是很强大,可以看看,很棒,很适合初学者。简单,完整,使用的代码,不好找哇

//
//  main.c
//  con2
//
//  Created by cqycomputer on 15/7/8.
//  Copyright (c) 2015年 cqycomputer. All rights reserved.
//

#include <stdio.h>

#include <stdio.h>
#include <string.h>
#define LEN 100
#define NAMELEN 22
#define TELLEN 12
/**
*打印功能的函数
*/
void interface(){
printf("**************************\n");
printf("****** 欢迎使用通讯录 ******\n");
printf("****** 1、添加联系人  ******\n");
printf("****** 2、删除联系人  ******\n");
printf("****** 3、修改联系人  ******\n");
printf("****** 4、查看所有联系人 ****\n");
printf("****** 5、搜索联系人  ******\n");
printf("****** 6、退出系统    ******\n");
printf("**************************\n\n");
}
//定义结构体说明联系人信息
typedef struct{
char name[NAMELEN];
char tel[TELLEN];
}Person;
Person per[LEN];
//文件指针哦
FILE * fp=NULL;
int totel,num;
//遍历结构体数组哈
void con(){
for(int i=0;i<totel;i++)
printf("%d\t%s\t\t%s\t\n",i+1,per[i].name,per[i].tel);
}

void doAdd(){
char a[NAMELEN],b[TELLEN];
int x;
printf("请输入联系人姓名..\n");
getchar();
fgets(a,NAMELEN,stdin);
if(a[strlen(a)-1]=='\n')
a[strlen(a)-1]='\0';
printf("请输入联系人电话号..\n");
fgets(b,TELLEN,stdin);
if(b[strlen(b)-1]=='\n')
b[strlen(b)-1]='\0';
printf("1.确认 2.取消\n");
scanf("%d",&x);
if(x==1){
strcpy(per[totel].name,a);
strcpy(per[totel].tel,b);
fp=fopen("contact.date","wb+");
totel++;
fwrite(&totel,4,1,fp);
fwrite(per,sizeof(Person)*totel,1,fp);
fclose(fp);
printf("添加成功!\n");
}
}

void doDelete(){
con();
printf("选择要删除的联系人编号..\n");
int x,y;
scanf("%d",&x);
if(x>0&&x<=totel){
printf("要删除 %s 吗?1.确定 2.取消\n",per[x-1].name);
scanf("%d",&y);
if(y==1){
for(int i=x;i<totel;i++)
per[i-1]=per[i];
totel--;
fp=fopen("contact.date","wb+");
fwrite(per,sizeof(Person)*totel,1,fp);
fwrite(&totel,4,1,fp);
fclose(fp);
}
}else{
printf("已取消删除!\n");
}
}

void doRevise(){
con();
int x,y;
char a[NAMELEN],b[TELLEN];
printf("请选择要修改的联系人编号..\n");
scanf("%d",&x);
if(x>0&&x<=totel){
printf("请输入新的姓名..\n");
scanf("%s",a);
printf("请输入新的电话号..\n");
scanf("%s",b);
printf("要修改联系人%s吗? 1.确定 2.取消\n",per[x-1].name);
scanf("%d",&y);
if(y==1){
strcpy(per[x-1].name,a);
strcpy(per[x-1].tel,b);
fp=fopen("contact.date","wb+");
fwrite(per,sizeof(Person)*totel,1,fp);
fwrite(&totel,4,1,fp);
fclose(fp);
printf("修改成功!\n");
}
}else{
printf("已取消修改!\n");
}
}

void doSearch(){
printf("请输入要查找的联系人姓名..\n");
char a[NAMELEN];
scanf("%s",a);
int i=0;
for(;i<totel;i++){
if(strcpy(per[i].name,a)==0){
printf("查找信息如下..\n");
printf("%d\t%s\t\t%s\t\n",i+1,per[i].name,per[i].tel);
break;
}
}
if(i==totel)
printf("查无此人!\n");
}

int main(int argc, const char * argv[]) {
//定义变量,结构体,文件指针
interface();
//将文件写入结构体
fp=fopen("contact.date","r");
if(fp!=NULL){
fread(&totel,4,1,fp);
fread(per,sizeof(Person)*totel,1,fp);
rewind(fp);
fclose(fp);
}
printf("请输入操作!\n");
//用循环来执行用户操作
while(1){
//接受用户操作,并判断是否合法
scanf("%d",&num);
if(num<1||num>6){
printf("操作错误!\n");
continue;
}
switch(num){
case 1:
doAdd();
break;
case 2:
doDelete();
break;
case 3:
doRevise();
break;
case 4:
con();
break;
case 5:
doSearch();
break;
case 6:
printf("系统已退出!\n");
return 0;
}
interface();
}

return 0;
}


------- android培训java培训、期待与您交流!
----------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: