黑马程序员技术交流社区
标题:
C语言通讯录 自改完善
[打印本页]
作者:
tr2e
时间:
2015-10-10 11:46
标题:
C语言通讯录 自改完善
#include <stdio.h>
#include <string.h>
#define NAMELEN 22
#define TELLEN 12
#define CONTECTNUM 100
void writeFile();
void init();
void doAdd();
void doShow();
void doDelete();
void doUpdata();
void doSearch();
//定义文件指针
char *filePath = "telbook_tree.data";
typedef struct{
char name[NAMELEN];
char telNum[TELLEN];
}Person;
//定义联系人结构体数组
Person contacts[CONTECTNUM];
//定义联系人数量
int contactsnum = 0;
int main(int argc, const char * argv[]) {
//初始化通讯录
init();
printf("通讯录初始化完成!\n");
while (1) {
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");
int no = 0;
printf("请输入您要选择的操作序号:");
scanf("%d",&no);
if (no<1||no>6) {
printf("您的操作请求不合法");
}else{
switch (no) {
case 1:
doAdd();
break;
case 2:
doDelete();
break;
case 3:
doUpdata();
break;
case 4:
doShow();
break;
case 5:
doSearch();
break;
case 6:
printf("系统正在退出...\n系统推出成功\n");
return 0;
break;
default:
break;
}
}
printf("\n");
}
return 0;
}
void init(){
FILE *fp = fopen(filePath, "r");
if (fp!=NULL) {
//如果不为空 将文件中的数据更新到程序中
fread(&contactsnum, sizeof(contactsnum), 1, fp);
for (int i=0; i<contactsnum; i++) {
fread(&contacts[i], sizeof(Person), 1, fp);
}
}else{
//如果为空 新建文件 将人员个数写入
fp = fopen(filePath, "wb");
fwrite(&contactsnum, sizeof(contactsnum), 1, fp);
printf(" */文件初始化中/*\n");
printf("通讯录文件创建成功\n");
}
fclose(fp);
}
void writeFile(){
FILE *fp = fopen(filePath, "wb");
if (fp!=NULL) {
fwrite(&contactsnum, sizeof(contactsnum), 1, fp);
for (int i=0; i<contactsnum; i++) {
fwrite(&contacts[i], sizeof(Person), 1, fp);
}
}
fclose(fp);
}
void doAdd(){
printf("请输入联系人姓名(注意中间不可有空格):\n");
scanf("%s",contacts[contactsnum].name);
printf("请输入联系人电话(注意中间不可有空格):\n");
scanf("%s",contacts[contactsnum].telNum);
printf("您确定要添加吗?1.确定 0.取消\n");
int flag;
scanf("%d",&flag);
if (flag) {
contactsnum++;
writeFile();
printf("文件更新成功\n");
}else{
printf("您的操作已经取消\n");
}
}
void doDelete(){
doShow();
printf("请输入删除的联系人的编号:\n");
int no;
scanf("%d",&no);
if (no == contactsnum) {
contactsnum--;
}else{
for (int i=no-1; i<contactsnum; i++) {
contacts[i]=contacts[i+1];
}
contactsnum--;
}
writeFile();
printf("联系人删除成功\n");
}
void doShow(){
if (contactsnum == 0) {
printf("您的通讯录里暂时没有联系人,请自行维护。\n");
}else{
printf("序号\t 联系人\t\t 联系方式\t\n");
for (int i=0; i<contactsnum; i++) {
printf("%d\t %s\t\t %s\t\n",i+1,contacts[i].name,contacts[i].telNum);
}
}
}
void doUpdata(){
doShow();
printf("请输入您要修改的联系人序号:\n");
int no = 0;
scanf("%d",&no);
printf("请选择您要修改的项目:1.联系人 2.联系方式 3.全部修改 0.取消操作\n");
int fno = 0;
scanf("%d",&fno);
switch (fno) {
case 1:
printf("请输入新的联系人姓名:\n");
char name[NAMELEN];
scanf("%s",name);
strcpy(contacts[no-1].name,name);
break;
case 2:
printf("请输入新的联系方式:\n");
char tel[TELLEN];
scanf("%s",tel);
strcpy(contacts[no-1].telNum, tel);
break;
case 3:
printf("请输入新的联系人姓名:\n");
char name1[NAMELEN];
scanf("%s",name1);
strcpy(contacts[no-1].name,name1);
printf("请输入新的联系方式:\n");
char tel1[TELLEN];
scanf("%s",tel1);
strcpy(contacts[no-1].telNum, tel1);
break;
case 0:
printf("您的操作应经成功取消\n");
break;
default:
break;
}
writeFile();
printf("您的通讯录已经同步更新\n");
}
void doSearch(){
printf("请选择您要搜索的方式:1.按姓名搜索 2.按号码搜索\n");
int flag = 0;
scanf("%d",&flag);
if (flag ==1 ) {
printf("请输入您要搜索人的姓名:\n");
char name[NAMELEN];
scanf("%s",name);
printf("您的搜索结果是:\n");
int i;
for (i=0; i<contactsnum; i++) {
if (strcmp(name,contacts[i].name)==0) {
printf("序号\t 联系人\t\t 联系方式\t\n");
printf("%d\t %s\t\t %s\t",i+1,contacts[i].name,contacts[i].telNum);
break;
}
}
if (i == contactsnum ) {
printf("联系人不存在,请核对后查找\n");
}
}else if (flag == 2){
printf("请输入您要搜索的联系方式:\n");
char tel[TELLEN];
scanf("%s",tel);
printf("您的搜索结果是:\n");
int i;
for (i=0; i<contactsnum; i++) {
while (strcmp(contacts[i].telNum,tel) == 0) {
printf("序号\t 联系人\t\t 联系方式\t\n");
printf("%d\t %s\t\t %s\t",i+1,contacts[i].name,contacts[i].telNum);
break;
}
}
if (i == contactsnum ) {
printf("联系人不存在,请核对后查找\n");
}
}
}
复制代码
作者:
liyang783
时间:
2015-10-10 12:38
看起来就很牛。。。。
作者:
tr2e
时间:
2015-10-10 14:54
liyang783 发表于 2015-10-10 12:38
看起来就很牛。。。。
不牛的 就是几个简单的功能函数
作者:
chingwei2011
时间:
2015-10-10 18:28
之前做过一个类似的学生图书管理系统。
作者:
tr2e
时间:
2015-10-10 21:08
chingwei2011 发表于 2015-10-10 18:28
之前做过一个类似的学生图书管理系统。
感觉差不多 类似的管理类
作者:
tr2e
时间:
2015-10-11 22:33
Car *p = [Car new]; 向计算机申请内存空间
给类中的每个成员初始化值
作者:
tr2e
时间:
2015-10-11 22:35
返回新申请的空间的首地址
其作用就是用car类实例化一个实例对象,对象的名称为p
作者:
tr2e
时间:
2015-10-11 22:36
类似于c语言的结构体指针
作者:
tr2e
时间:
2015-10-12 09:00
早安 各位
作者:
tr2e
时间:
2015-10-14 21:54
#import <Foundation/Foundation.h>
@interface Gun : NSObject
{
int _bulletCount;
}
-(void)shoot;
-(void)setBulletCount:(int)bulletCount;
@end
@implementation Gun
-(void)shoot{
if(_bulletCount>0){
_bulletCount--;
NSLog(@"\npa! 剩余子弹:%d",_bulletCount);
}else{
NSLog(@"没有子弹");
}
}
-(void)setBulletCount:(int)bulletCount{
if (bulletCount>0) {
_bulletCount = bulletCount;
}else{
_bulletCount = 0;
}
}
@end
int main(int argc, const char * argv[]) {
@autoreleasepool {
Gun *gun= [Gun new];
[gun setBulletCount:3];
[gun shoot];
[gun shoot];
[gun shoot];
[gun shoot];
[gun shoot];
}
return 0;
}
作者:
Brisingr
时间:
2015-10-15 01:35
zanyige!wo gangkandao zhe
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2