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

做个网站的价格网站建设培训班多少钱

做个网站的价格,网站建设培训班多少钱,c2c平台的特点是什么,北京天通苑 做网站文章目录 前言通讯录要求利用顺序表的现有功能代码呈现 前言 这篇文章实现的通讯录利用了笔者上一篇写的有关顺序表的应用 https://blog.csdn.net/2301_77954967/article/details/137360029?spm1001.2014.3001.5502#xff0c;需要用的朋友自行复制 通讯录要求 1)至少能够… 文章目录 前言通讯录要求利用顺序表的现有功能代码呈现 前言 这篇文章实现的通讯录利用了笔者上一篇写的有关顺序表的应用 https://blog.csdn.net/2301_77954967/article/details/137360029?spm1001.2014.3001.5502需要用的朋友自行复制 通讯录要求 1)至少能够存储100个人的通讯信息 2)能够保存用户信息:名字、性别、年龄、电话、地址等 3)增加联系人信息 4)删除指定联系人 5)查找制定联系人 6)修改指定联系人 7)显示联系人信息 8)能够保存信息用于下次读取 利用顺序表的现有功能 我们现在contact.h的头文件里建立如下结构体 #define NAME_MAX 100 #define GENDER_MAX 10 //male female #define TEL_MAX 20 #define ADDR_MAX 100//定义联系人数据结构 //姓名 性别 年龄 电话 地址 typedef struct personInfo {char name[NAME_MAX];char gender[GENDER_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX]; }peoInfo;我们可以把这个通讯录中的每个人的信息看成一个顺序表中每一个数组的数据这样一来就只需要将这里的类型名 peoInfo 给重命名成 SLDataType 就行了需要注意的是这里是两个头文件不仅需要放在同一目录下还需要在 SeqList.h 文件里附加上 Contact.h 的头文件名 #includeContact.htypedef peoInfo SLDataType;//将proInfo改成SLDataTypetypedef struct SeqList {SLDataType* arr;int size;//有效数据个数int capacity;//空间大小 }SL; 再然后如果后续的功能名仍用 SL 来命名会有些模糊但是两个头文件之间不能互相引用那么这里我们可以回到 Contact.h 里进行前置声明 typedef struct SeqList Contact;//前置声明用顺序表里第一个创立的结构体名SeqList而不是SL这样一来就是要进行方案功能的实现就行了开始工作做好了后面就会简单很多 //初始化通讯录 void InitContact(Contact* con);//添加通讯录数据 void AddContact(Contact* con);//删除通讯录数据 void DelContact(Contact* con);//展示通讯录数据 void ShowContact(Contact* con);//查找通讯录数据 void FindContact(Contact* con);//修改通讯录数据 void ModifyContact(Contact* con);//销毁通讯录数据 void DestroyContact(Contact* con); 假设我们上面几个方法都已经完善并测验好了我们需要思考的如何使这些数据进行保存方便下一次读取这里就需要用到文件了 这里我们选择用二进制文件的方式读取和写入原因是这里我们利用了 peoInfo 这个现有的结构体和 SLPushBack 这个现有的方法不需要以文本文件格式化的形式读入文件再花费功夫去调整文本文件的格式 代码呈现 Contact.h #pragma once//同一个文件不会被包含多次。这里所说的”同一个文件”是指物理上的一个文件而不是指内容相同的两个文件#define _CRT_SECURE_NO_WARNINGS 1 #pragma warning(disable:6031) #includestdio.h #includestdlib.h #includeassert.h#define NAME_MAX 100 #define GENDER_MAX 10 //male female #define TEL_MAX 20 #define ADDR_MAX 100//定义联系人数据结构 //姓名 性别 年龄 电话 地址 typedef struct personInfo {char name[NAME_MAX];char gender[GENDER_MAX];int age;char tel[TEL_MAX];char addr[ADDR_MAX]; }peoInfo;typedef struct SeqList Contact;//前置声明用到顺序表里第一个创立的结构体名 //这里的通讯录实际上就是顺序表//要用到顺序表相关的方法对通讯录的操作实际就是对顺序表进行操作 // //通讯录相关的方法//初始化通讯录 void InitContact(Contact* con);//添加通讯录数据 void AddContact(Contact* con);//删除通讯录数据 void DelContact(Contact* con);//展示通讯录数据 void ShowContact(Contact* con);//查找通讯录数据 void FindContact(Contact* con);//修改通讯录数据 void ModifyContact(Contact* con);//销毁通讯录数据 void DestroyContact(Contact* con);//利用文件保存数据 //读取 void LoadContact(Contact* con);//写入 void SaveContact(Contact* con); SeqList.h #pragma once #define _CRT_SECURE_NO_WARNINGS 1 #pragma warning(disable:6031) #includestdio.h #includestdlib.h #includeassert.h#includeContact.h//头文件之间不能互相包含typedef peoInfo SLDataType;//将proInfo改成SLDataTypetypedef struct SeqList {SLDataType* arr;int size;//有效数据个数int capacity;//空间大小 }SL;//typedef struct SeqList SL;//将这个顺序表的类型名简化成SL//顺序表初始化 void SLInit(SL* ps); //顺序表的销毁 void SLDestory(SL* ps);//尾部插入 void SLPushBack(SL* ps, SLDataType x); //头部插入 void SLPushFront(SL* ps, SLDataType x);//尾部删除 void SLPopBack(SL* ps); //头部删除 void SLPopFront(SL* ps);//扩容 void SLCheckCapacity(SL* ps); //打印 void SLPrint(SL s);//在指定位置之前插入数据 void SLInsert(SL* ps, int pos, SLDataType x); //删除指定位置的数据 void SLErase(SL* ps, int pos);//查找 int SLFind(SL* ps, SLDataType x); Contact.c #includeContact.h #includeSeqList.h//初始化通讯录 void InitContact(Contact* con) {//实际上要进行的是顺序表的初始化//con-arr NULL;//con-capacity con-size 0;SLInit(con);LoadContact(con); }//销毁通讯录数据 void DestroyContact(Contact* con) {SaveContact(con);SLDestory(con); }//添加通讯录数据 void AddContact(Contact* con) {//获取用户输入的内容一个结构体peoInfo info;printf(请输入要添加的联系人姓名\n);scanf(%s, info.name);printf(请输入要添加的联系人性别\n);scanf(%s, info.gender);printf(请输入要添加的联系人年龄\n);scanf(%d, info.age);//数组名即首元素的地址所以不用取地址创建时字符是以数组的形式创建的printf(请输入要添加的联系人电话\n);scanf(%s, info.tel);printf(请输入要添加的联系人地址\n);scanf(%s, info.addr);//往通讯录中添加联系人数据SLPushBack(con, info);//顺序表中已有功能的复用 }//查找通讯录数据依靠名字 FindByName(Contact* con, char name[]) {for (int i 0; i con-size; i){if (0 strcmp(con-arr[i].name, name)){//找到了return i;}}//没有找到return -1; }//通讯录删除数据 void DelContact(Contact* con) {//要删除的数据必须要存在才能执行删除操作//查找char name[NAME_MAX];printf(请输入要删除的联系人名字:\n);scanf(%s, name);int find FindByName(con, name);if (find 0){printf(要删除的联系人数据不存在!\n);return;}//要删除的联系人数据存在从 - 知道了要删除联系人的下标SLErase(con, find);printf(删除成功\n); }//展示通讯录数据 void ShowContact(Contact* con) {//打印表头printf(%5s %5s %5s %5s %5s\n, 姓名, 性别, 年龄, 电话, 地址);//遍历通讯录按照格式打印每个联系人数据for (int i 0; i con-size; i){printf(%5s %5s %5d %5s %5s\n,con-arr[i].name,con-arr[i].gender,con-arr[i].age,con-arr[i].tel,con-arr[i].addr);} }//修改通讯录数据 void ModifyContact(Contact* con) {char name[NAME_MAX];printf(请输入要修改的数据\n);scanf(%s, name);int find FindByName(con,name);if (find 0){printf(要修改的联系人数据不存在\n);return;}//直接修改printf(请输入新的姓名\n);scanf(%s,con-arr[find].name);printf(请输入新的性别\n);scanf(%s,con-arr[find].gender);printf(请输入新的年龄\n);scanf(%d,con-arr[find].age);printf(请输入新的电话\n);scanf(%s,con-arr[find].tel);printf(请输入新的地址\n);scanf(%s,con-arr[find].addr);printf(修改成功\n); }//查找通讯录数据 void FindContact(Contact* con) {char name[NAME_MAX];printf(请输入要查找的联系人\n);scanf(%s, name);int find FindByName(con,name);if (find 0){printf(要查找的联系人数据不存在\n);return;}printf(%5s %5s %5s %5s %5s\n, 姓名, 性别, 年龄, 电话, 地址);printf(%5s %5s %5d %5s %5s\n,con-arr[find].name,con-arr[find].gender,con-arr[find].age,con-arr[find].tel,con-arr[find].addr);}//利用文件保存数据 //读取 void LoadContact(Contact* con) {FILE* pf fopen(contact.txt, rb);if (pf NULL){perror(fopen error!\n);return;}//循环读取文件数据peoInfo info;while (fread(info, sizeof(peoInfo), 1, pf)){SLPushBack(con, info);}fclose(pf);pf NULL;printf(历史数据写入成功!\n); }//写入 void SaveContact(Contact* con) {FILE* pf fopen(contact.txt, wb);if (pf NULL){perror(fopen error!\n);return;}for (int i 0; i con-size; i){fwrite(con-arr i, sizeof(peoInfo), 1, pf);}fclose(pf);pf NULL;printf(通讯录数据保存成功!\n); }SeqList.c #includeSeqList.h//初始化顺序表 void SLInit(SL* ps) {ps-arr NULL;ps-size ps-capacity 0;}//顺序表的销毁 void SLDestory(SL* ps) {if (ps-arr){free(ps-arr);}ps-arr NULL;ps-size ps-capacity 0; }//扩容 void SLCheckCapacity(SL* ps) {//插入数据前看看空间够不够if (ps-size ps-capacity){//扩容申请空间int newCapacity ps-capacity 0 ? 4 : 2 * ps-capacity;//三目表达式SLDataType* tmp (SLDataType*)realloc(ps-arr, newCapacity * 2 * sizeof(SLDataType));if (tmp NULL){perror(realloc fail!);exit(1);}//空间申请成功ps-arr tmp;ps-capacity newCapacity;} }//打印 void SLPrint(SL s) {for (int i 0; i s.size; i){printf(%d , s.arr[i]);}printf(\n); }//在尾部插入 void SLPushBack(SL* ps, SLDataType x) {//温柔的解决方式//if(ps NULL)//{// return 0;//}assert(ps);////扩容SLCheckCapacity(ps);//ps-arr[ps-size] x;//ps-size;ps-arr[ps-size] x; }//头插 void SLPushFront(SL* ps, SLDataType x) {//扩容SLCheckCapacity(ps);//先将顺序表中已有的数据整体往后移动一位for (int i ps-size; i 0; i--){ps-arr[i] ps-arr[i - 1];}ps-arr[0] x;ps-size; }//尾部删除 void SLPopBack(SL* ps) {assert(ps);assert(ps-size);//顺序表不为空--ps-size; }//头部删除 void SLPopFront(SL* ps) {assert(ps);assert(ps-size);//顺序表不为空//数据整体王前移动一位for (int i 0; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }//在指定位置之前插入数据 void SLInsert(SL* ps, int pos, SLDataType x) {assert(ps);assert(pos 0 pos ps-size);//扩容判断空间够不够SLCheckCapacity(ps);//让pos之后及其自身往后移动一位for (int i ps-size; i pos; i--){ps-arr[i] ps-arr[i - 1];}ps-size;ps-arr[pos] x; }//删除指定位置的数据 void SLErase(SL* ps, int pos) {assert(ps);assert(pos 0 pos ps-size);for (int i pos; i ps-size - 1; i){ps-arr[i] ps-arr[i 1];}ps-size--; }//查找 //int SLFind(SL* ps, SLDataType x) //{ // assert(ps); // for (int i 0; i ps-size; i) // { // if (ps-arr[i] x) // { // return i; // } // } // return -1; //} test.c #includeContact.h #includeSeqList.h通讯录测试 //void ContactTest01() //{ // Contact con;//创建通讯录对象 // InitContact(con); // // //测试添加数据功能 // AddContact(con); // AddContact(con); // // //测试删除数据功能 // DelContact(con); // // //测试打印功能 // ShowContact(con); // // //销毁通讯录数据 // DestroyContact(con); // //} // //int main1() //{ // ContactTest01(); // return 0; //}void menu() {printf(*******************通讯录******************\n);printf(*****1.增加联系人 ****** 2.删除联系人****\n);printf(*****3.修改联系人 ****** 4.查找联系人****\n);printf(*****5.展示联系人 ****** 0. 退 出 ****\n);printf(*******************************************\n); } int main() {int op -1;Contact con;InitContact(con);do{menu();printf(请选择您的操作\n);scanf(%d, op);//要根据对应的op执行不同的操作switch (op){case 1:AddContact(con);break;case 2:DelContact(con);break;case 3:ModifyContact(con);break;case 4:FindContact(con);break;case 5:ShowContact(con);break;case 0:op 0;printf(退出通讯录中......\n);break;default:printf(选择错误!请重新选择\n);break;}}while(op ! 0);printf(退出成功\n);DestroyContact(con);return 0; }
http://www.zqtcl.cn/news/709885/

相关文章:

  • 三维网站是怎么做的商城网站 运营
  • 程序员网站开发框架无锡网络公司网站建设app微信公众号平
  • 中关村网站建设网络营销策划书范文
  • 电商网站建设与课程设计科技网站模版
  • 建设部网站资质漳州最专业的网站建设公司
  • 网站建设需求和页面需求怎么提一个静态网站怎么做
  • 宝塔wordpress广州网站营销seo
  • 甘肃城乡建设厅网站首页发布公司信息的网站
  • 工信部网站备案查询 手机凡科网微信小程序制作
  • 一站多通怎么做网站网站推广工具 刷链接
  • 学生做网站的工作室网络舆情监测与研判考试重点
  • 做网站去哪个公司好广告创意设计论文
  • 20m带宽做网站够用吗win7创建wordpress
  • qq音乐怎么做mp3下载网站发卡网站建设方案
  • 做cpc不做网站可以吗网站跳出率
  • 公司网站变更域名有了域名就可以做网站了吗
  • 网站建设推广营销策划做外贸网站需要注册公司吗
  • 可信赖的赣州网站建设做羽毛球网站
  • 如何找网站做推广wordpress登录及注册
  • 韩国美容网站 模板wordpress中英文
  • 为什么邮箱突然进不去了总提示正在进入不安全网站wordpress需注册访问
  • 建网站哪家最好山东泰安房价
  • wordpress4.9+多站点网络推广公司联系昔年下拉
  • 西安seo网站关键词优化罗田县建设局网站
  • 北京网站建设 shwllnmp新手 wordpress
  • 优化网站结构一般包括如何进行网络营销风险控制
  • 怎样查看网站是用什么做的郫都区规划建设局网站
  • 新乡营销型网站建设制作网站设计的总结
  • 做网站的免费空间微信crm管理系统
  • 网站开发方向 英语翻译护肤品网页设计图片