当前位置: 首页 > news >正文

校园门户网站系统建设产品推广策划方案怎么做

校园门户网站系统建设,产品推广策划方案怎么做,网站突然暴增流量,网站群建设的目的用c语言实现一个通讯录 功能:.添加、删除、查找、更改、显示、排序联系人 内存存储方式:结构体数组 1.打印菜单,各个功能分别用函数实现,将函数声明放在头文件中。 2.定义联系人信息,将联系人信息与count&#xff…

用c语言实现一个通讯录

功能:.添加、删除、查找、更改、显示、排序联系人

内存存储方式:结构体数组

1.打印菜单,各个功能分别用函数实现,将函数声明放在头文件中。

2.定义联系人信息,将联系人信息与count(用来记录当前通讯录人数),capacity(记录最大容量)。一起定义到结构体中,完成联系人的创建:

//定义联系人
typedef struct PenInfo {char name[20];int age;char sex[10];char tele[12];char addr[30];
}PenInfo;typedef struct Contact {PenInfo* data;int count;int capacity;//设置我通讯录的最大容量
}Contact;

3.创建联系人,并用malloc或calloc函数向内存堆区开辟内存,在退出时记得释放内存,将count初始化为0

int Initcontact(Contact* pc) {assert(pc);pc->data =(PenInfo*) calloc(3,3 * sizeof(PenInfo));//为data开辟三个空间if (pc->data == NULL) {printf("%s", strerror(errno));return 1;}pc->count = 0;pc->capacity = 3;//设置最大容量为3//从文件中读取联系人内容LoadContact(pc);return 0;
}

4.添加联系人,当联系人容量达到最大容量时,增容,然后进行联系人的信息输入:

void AddCapacity(Contact *pc) {assert(pc);if (pc->count == pc->capacity) {pc->capacity +=2;//printf("增容成功\n");}return;
}void Addcontact(Contact* pc){assert(pc);//增容AddCapacity(pc);//添加联系人printf("请输入联系人名字:>");scanf("%s", pc->data[pc->count].name);printf("请输入联系人年龄:>");scanf("%d", &(pc->data[pc->count].age));printf("请输入联系人性别:>");scanf("%s", pc->data[pc->count].sex);printf("请输入联系人电话:>");scanf("%s", pc->data[pc->count].tele);printf("请输入联系人地址:>");scanf("%s", pc->data[pc->count].addr);pc->count++;printf("添加成功\n");
}

5. 显示联系人(记得格式化)通过for循环标准输出:

void Showcontact(const Contact* pc) {assert(pc);if (pc->count == 0) {printf("还没添加联系人\n");return;}printf("%-20s\t%-3s\t%-10s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("-----------------------------------------------------------------------------\n");for (int i = 0; i < pc->count; i++) {printf("%-20s\t%-5d\t%-10s\t%-12s\t%-30s", pc->data[i].name,pc->data[i].age,pc->data[i].sex,pc->data[i].tele,pc->data[i].addr);printf("\n");printf("-----------------------------------------------------------------------------\n");}
}

6.当查找、删除、更改时都需要进行查找,所以直接封装一个查找函数(找到了返回下标)

//查找联系人
static int Findcontact(Contact* pc, char* name) {assert(pc);for (int i = 0; i < pc->count; i++) {if (strcmp(name, pc->data[i].name) == 0) {return i;}}return -1;
}

7.查找联系人

void Searchcontact(Contact* pc) {assert(pc);char name[20] = { 0 };printf("请输入要查找的联系人名字:>");scanf("%s", name);//查找int pos = Findcontact(pc, name);//删除if (pos == -1) {printf("没有该联系人\n");return;}else {printf("找到了\n");printf("%-20s\t%-3s\t%-10s\t%-12s\t%-30s\n", "名字", "年龄", "性别", "电话", "地址");printf("-----------------------------------------------------------------------------\n");printf("%-20s\t%-5d\t%-10s\t%-12s\t%-30s", pc->data[pos].name,pc->data[pos].age,pc->data[pos].sex,pc->data[pos].tele,pc->data[pos].addr);printf("\n");printf("-----------------------------------------------------------------------------\n");}}

 8.删除联系人,删除后,由于是顺序表存储,将后面的数据向前一个结点覆盖,且count--

void Delcontact(Contact* pc) {assert(pc);char name[20] = { 0 };printf("请输入要删除的联系人名字:>");scanf("%s", name);//查找int pos = Findcontact(pc, name);//删除if (pos == -1) {printf("没有该联系人\n");return;}for (int i = pos; i < pc->count + 1; i++) {//count+1防止溢出pc->data[i] = pc->data[i + 1];}pc->count--;printf("删除成功\n");}

9.修改联系人,将信息覆盖即可:

void Modifycontact(Contact* pc) {assert(pc);char name[20] = { 0 };printf("请输入要修改的联系人的名字:>");scanf("%s", name);//查找int pos = Findcontact(pc, name);//删除if (pos == -1) {printf("没有该联系人\n");return;}else {printf("修改后联系人名字:>");scanf("%s", pc->data[pos].name);printf("修改后联系人年龄:>");scanf("%d", &(pc->data[pos].age));printf("修改后联系人性别:>");scanf("%s", pc->data[pos].sex);printf("修改后联系人电话:>");scanf("%s", pc->data[pos].tele);printf("修改后联系人地址:>");scanf("%s", pc->data[pos].addr);printf("\n");printf("修改成功\n");}
}

10.排序,分为年龄和姓名,都用库函数qsort(默认升序)实现,年龄进行时稍微复杂,细节如下:

//按姓名排序函数
int Sort_by_name(const void* e1, const void* e2) {return strcmp(((PenInfo*)e1)->name, ((PenInfo*)e2)->name);
}
//按年龄排序
int Sort_by_age(const void* e1, const void* e2) {if (((PenInfo*)e1)->age < ((PenInfo*)e2)->age) {return -1;}if (((PenInfo*)e1)->age > ((PenInfo*)e2)->age) {return 1;}if (((PenInfo*)e1)->age == ((PenInfo*)e2)->age) {return 0;}
}void Sortcontact(Contact* pc) {assert(pc);int chiose;printf("(1.按姓名排序 2.按年龄排序):>");scanf("%d", &chiose);if (chiose == 1) {qsort(pc->data,pc->count,sizeof(PenInfo), Sort_by_name);printf("排序成功\n");}else if (chiose == 2) {qsort(pc->data, pc->count, sizeof(PenInfo), Sort_by_age);printf("排序成功\n");}else {printf("无效输入\n");return;}
}

11.保存联系人到相对路径“contact.txt”中,通过二进制进行输入输出,退出时保存,打开时读取。

void SaveContact(Contact* pc) {FILE* pfWrite = fopen("contact.txt", "wb");if (pfWrite == NULL) {perror("SaveContact");return;}//用二进制的形式写入文件for (int i = 0; i <= pc->count; i++) {fwrite(pc->data+i, sizeof(PenInfo), 1, pfWrite);}//关闭文件fclose(pfWrite);pfWrite = NULL;
}void LoadContact(Contact* pc) {assert(pc);FILE* pfRead = fopen("contact.txt", "rb");if (pfRead == NULL) {//perror("LoadContact");return;}while (fread(&(pc->data[pc->count]), sizeof(PenInfo), 1, pfRead) == 1) {//判断是否空间不足AddCapacity(pc);pc->count++;}fclose(pfRead);pfRead = NULL;
}

12.测试代码:

#define _CRT_SECURE_NO_WARNINGS#include "contact.h"//创建菜单
void menu() {printf("------------My ContactBook------------\n");printf("-----------1.Add linkman  ------------\n");printf("-----------2.Del linkman  ------------\n");printf("-----------3.Show linkman ------------\n");printf("-----------4.Search linkman ----------\n");printf("-----------5.Modify linkman ----------\n");printf("-----------6.Sort linkman -----------\n");printf("-----------0.Exit menu  -------------\n");}
int main() {    int input = 0;//创建联系人Contact con;//初始化通讯录Initcontact(&con);do {menu();printf("请选择对应功能的编号:>");scanf("%d", &input);switch (input) {case 1:         Addcontact(&con);break;case 2:Delcontact(&con);break;case 3:Showcontact(&con);break;case 4:Searchcontact(&con);break;case 5:Modifycontact(&con);break;case 6:Sortcontact(&con);break;case 0:SaveContact(&con);DestoryContact(&con);printf("退出通讯录\n");break;default :printf("选择错误\n");break;}} while (input);return 0;
}

测试结果:

http://www.shuangfujiaoyu.com/news/38629.html

相关文章:

  • 徐州app定制引擎搜索优化
  • 办公室装修计入什么费用无锡优化网站排名
  • 中小型网站建设价位seo会被取代吗
  • 深圳建网站哪个公司好国内手机怎么上google浏览器
  • 做一个网站得多少钱抖音优化排名
  • 网站建设方案书一定要交天津百度分公司
  • 网站建设技术员湖南最新消息今天
  • cms做企业网站公众号推广
  • wordpress降级郑州seo排名公司
  • 东莞网站建设平台推广app赚钱的平台
  • 三水网站建设企业环球网最新消息疫情
  • wordpress设置访问密码忘记seo赚钱暴利
  • 网页设计与网站建设论文上海最新发布
  • 提交网站入口百度推广退款电话
  • 山东德州网站建设哪家最专业福州百度关键词排名
  • 潍坊 网站建设seo营销专员
  • 上海网站建设最好的公司网站综合查询工具
  • 做网站的运营维护都要学什么编程培训班学费一般多少钱
  • 购物平台网站建设流程百度广告联盟平台的使用知识
  • 济南网站建设是什么做网站需要准备什么
  • 如何区分静态和动态网站软件优化
  • 网站开始怎么做外贸推广建站
  • 如何做自己的淘客网站湖南企业竞价优化服务
  • 免费购物网站模板百度官网推广
  • 中国核工业华兴建设有限公司网站关键词优化报价
  • 做网站设计软件石家庄关键词优化报价
  • 长乐市建设局网站百度链接
  • 获取网站服务器信息免费找客户软件
  • 徐州免费网站制作html网页制作代码大全
  • 安全无毒做网站饥饿营销的十大案例