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

做原型的素材网站西安企业信息查询官网

做原型的素材网站,西安企业信息查询官网,我要建立网站,什么网站可以自己做房子设计图通讯录 1. 添加一个函数#xff0c;在退出通讯录的时候把信息到保存到文件中 2. 添加一个函数#xff0c;在通讯录打开的时候#xff0c;可以把文件中的信息加载到通讯录中 contact.h文件 #pragma once #include string.h #include stdio.h #include 在退出通讯录的时候把信息到保存到文件中 2. 添加一个函数在通讯录打开的时候可以把文件中的信息加载到通讯录中 contact.h文件 #pragma once #include string.h #include stdio.h #include assert.h #include stdlib.h#define DEFAULT_SZ 3 #define INC_SZ 2 #define MAX 100 #define MAX_NAME 20 #define MAX_SEX 10 #define MAX_TELE 12 #define MAX_ADDR 30//类型的声明 typedef struct PeoInfo//创建人的信息并重命名 {char name[MAX_NAME];int age;char sex[MAX_SEX];char tele[MAX_TELE];char addr[MAX_ADDR]; }PeoInfo;//文件版本沿用动态版本 //1. 通讯录默认能存放3个人的信息 //2. 如果空间不够就增加空间每次增加2个人的空间 typedef struct Contact {PeoInfo* data;//不能是数组数组是固定大小。改为结构体指针这样指针就可以指向动态内存函数开辟的空间int count;//记录当前通讯录中实际人的个数。//还需要一个变量记录当前的容量因为当count等于当前容量时就需要增容int capacity; }Contact;//初始化通讯录 - 文件版本沿用动态版本 int InitContact(Contact* pc);//销毁通讯录 void DestroyContact(Contact* pc);//增加联系人到通讯录 void AddContact(Contact* pc);//打印通讯录 void ShowContact(const Contact* pc);//删除指定联系人 void DelContact(Contact* pc);//查找指定联系人 void SearchContact(Contact* pc);//修改指定联系人 void ModifyContact(Contact* pc);//按名字排序 void SortContact(Contact* pc);//保存通讯录到文件中 void SaveContact(const Contact* pc);//加载文件到通讯录 void LoadContact(Contact* pc); contact.c文件 #define _CRT_SECURE_NO_WARNINGS #include contact.h//检查增容函数 void CheckCapacity(Contact* pc) {if (pc-count pc-capacity)//当人的信息达到容量上限时扩容每次2{//新空间大小为原先容量的个数新增的个数* 每个元素大小PeoInfo* ptr (PeoInfo*)realloc(pc-data, (pc-capacity INC_SZ) * sizeof(PeoInfo));if (ptr NULL){printf(AddContact::%s\n, strerror(errno));return;}else{pc-data ptr;pc-capacity INC_SZ;printf(增容成功\n);}} }void LoadContact(Contact* pc) {assert(pc);FILE* pfRead fopen(contact.txt, rb);if (NULL pfRead){perror(LoadContact);return;}PeoInfo tmp { 0 };//读取contact.txt文件中的信息暂存到结构体PeoInfo的对象tmp中。//判断通讯录目前空间是否足够有空间就将暂存在tmp中的信息存到data数组中。//如果空间不足要增容while (fread(tmp, sizeof(PeoInfo), 1, pfRead) 1)//读取成功返回1失败返回0{CheckCapacity(pc);pc-data[pc-count] tmp;//将结构体tmp放到data数组下标count的位置pc-count;}fclose(pfRead);pfRead NULL; }//文件版本 int InitContact(Contact* pc) {assert(pc);//下方要对结构体指针解引用所以需要断言pc-count 0;pc-data (PeoInfo*)calloc(DEFAULT_SZ, sizeof(PeoInfo));if (NULL pc-data){printf(InitContact::%s\n, strerror(errno));return 1;}pc-capacity DEFAULT_SZ;//当程序重新打开时需要加载文件的信息到通讯录LoadContact(pc);return 0; }void DestroyContact(Contact* pc) {assert(pc);free(pc-data);pc-data NULL; }//动态版本 void AddContact(Contact* pc) {assert(pc);//动态版本没有满的概念只判断什么时候增容CheckCapacity(pc);//添加时需要考虑新的信息存放位置而count恰好可以作为一个标识符。//比如count为0时说明通讯录没有信息此时可以添加在下标为0的位置printf(请输入名字:);scanf(%s, pc-data[pc-count].name);//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);//添加完信息后需要修改count的值pc-count;printf(增加成功\n); }void ShowContact(const Contact* pc) {printf(%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n, 姓名, 年龄, 性别, 电话, 地址);int i 0;for (i 0; i pc-count; i)//通讯录中的信息数量是count个{//打印data数组下标为i的信息printf(%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n, pc-data[i].name, pc-data[i].age, pc-data[i].sex, pc-data[i].tele, pc-data[i].addr);} }static int FindByName(Contact* pc, char name[])//不暴露此函数所以不声明。此函数只是给下方删除函数使用且使用static修饰只能在此源文件下看到 {int i 0;for (i 0; i pc-count; i){if (0 strcmp(pc-data[i].name, name)){return i;}}return -1; }void DelContact(Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入删除的姓名:);scanf(%s, name);if (pc-count 0){printf(通讯录为空无法删除\n);return;}//删除//1.查找int pos FindByName(pc, name);//去pc指向的data数组里查找名字if (pos -1){printf(要删除的人不存在\n);return;}//2.删除//删除就是从指定位置(即要删除的元素位置)开始要删除元素的后一个位置的信息往前移动覆盖直到后面所有信息都往前移动一个位置int i 0;//这里最后位置应该是最大下标-1因为如果遍历到最后一个下标那么下方i1就会越界//并且如果删除最后一个元素也不需要前移覆盖for (i pos; i pc-count - 1; i){pc-data[i] pc-data[i 1];}pc-count--;printf(删除成功\n); }void SearchContact(Contact* pc) {assert(pc);char name[MAX_NAME] { 0 };printf(请输入查找的姓名:);scanf(%s, name);//1.查找int pos FindByName(pc, name);//去pc指向的data数组里查找名字if (pos -1){printf(要查找的人不存在\n);return;}//2.打印printf(%-20s\t%-5s\t%-5s\t%-12s\t%-30s\n, 姓名, 年龄, 性别, 电话, 地址);//打印data数组下标为pos的信息printf(%-20s\t%-5d\t%-5s\t%-12s\t%-30s\n, pc-data[pos].name,pc-data[pos].age,pc-data[pos].sex,pc-data[pos].tele,pc-data[pos].addr); }void ModifyContact(Contact* pc) {//1.查找assert(pc);char name[MAX_NAME] { 0 };printf(请输入修改的姓名:);scanf(%s, name);int pos FindByName(pc, name);//去pc指向的data数组里查找名字if (pos -1){printf(要修改的人不存在\n);return;}//2.修改printf(要修改人的信息已查找到接下来开始修改\n);printf(请输入名字:);scanf(%s, pc-data[pos].name);//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); }cmp_peo_by_name(const void* e1, const void* e2) {return strcmp(((PeoInfo*)e1)-name, ((PeoInfo*)e2)-name); }void SortContact(Contact* pc) {assert(pc);qsort(pc-data, pc-count, sizeof(PeoInfo), cmp_peo_by_name);printf(排序成功\n); }void SaveContact(const Contact* pc) {FILE* pfWrite fopen(contact.txt, wb);if (NULL pfWrite){perror(SaveContact);return;}//写文件-二进制形式int i 0;for (i 0; i pc-count; i)//利用循环每次写一个{fwrite(pc-data i, sizeof(PeoInfo), 1, pfWrite);}//关闭文件fclose(pfWrite);pfWrite NULL; } test.c文件 #define _CRT_SECURE_NO_WARNINGS #include contact.h//实现一个通讯录 //人的信息 //名字年龄性别电话地址 //1. 存放100个人的信息 //2. 增加联系人 //3. 删除指定联系人 //4. 查找联系人 //5. 修改联系人 //6. 排序 //7. 显示联系人//test.c 测试功能 //contact.c 通讯录相关的功能 //contact.h 通讯录相关的声明//文件版本 - 程序退出依然可以保存信息enum Option {EXIT,ADD,DEL,SEARCH,MODIFY,SHOW,SORT };//菜单 void menu() {printf(***********************************\n);printf(**** 1. add 2. del ****\n);printf(**** 3. search 4. modify ****\n);printf(**** 5. show 6. sort ****\n);printf(**** 0. exit ****\n);printf(***********************************\n); }int main() {int input 0;Contact con;//通讯录//初始化通讯录InitContact(con);//不分开初始化的原因尽量模块化工作函数初始化更方便do{menu();printf(请输入:);scanf(%d, input);switch (input){//case 1://这里的常量1 2 3 4不能直观看出来对应菜单的哪个功能所以可以使用枚举case ADD:AddContact(con);//增加需要修改通讯录所以传址调用break;case DEL:DelContact(con);break;case SEARCH:SearchContact(con);break;case MODIFY:ModifyContact(con);break;case SHOW:ShowContact(con);//虽然不修改但是传地址提高效率break;case SORT:SortContact(con);break;case EXIT://退出之间把通讯录保存到文件中SaveContact(con);//空间都是通过realloc获得需要回收空间DestroyContact(con);printf(退出通讯录\n);break;default:printf(选择错误\n);break;}} while (input);return 0; }
文章转载自:
http://www.morning.smmrm.cn.gov.cn.smmrm.cn
http://www.morning.rwmp.cn.gov.cn.rwmp.cn
http://www.morning.nypsz.cn.gov.cn.nypsz.cn
http://www.morning.ycnqk.cn.gov.cn.ycnqk.cn
http://www.morning.fplwz.cn.gov.cn.fplwz.cn
http://www.morning.wcghr.cn.gov.cn.wcghr.cn
http://www.morning.qbwtb.cn.gov.cn.qbwtb.cn
http://www.morning.lqws.cn.gov.cn.lqws.cn
http://www.morning.mnwsy.cn.gov.cn.mnwsy.cn
http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn
http://www.morning.jrtjc.cn.gov.cn.jrtjc.cn
http://www.morning.jcffp.cn.gov.cn.jcffp.cn
http://www.morning.snxbf.cn.gov.cn.snxbf.cn
http://www.morning.nfpct.cn.gov.cn.nfpct.cn
http://www.morning.twmp.cn.gov.cn.twmp.cn
http://www.morning.dfwkn.cn.gov.cn.dfwkn.cn
http://www.morning.nxkyr.cn.gov.cn.nxkyr.cn
http://www.morning.tpwrm.cn.gov.cn.tpwrm.cn
http://www.morning.srrrz.cn.gov.cn.srrrz.cn
http://www.morning.pjwrl.cn.gov.cn.pjwrl.cn
http://www.morning.lqlhw.cn.gov.cn.lqlhw.cn
http://www.morning.rzmzm.cn.gov.cn.rzmzm.cn
http://www.morning.fldk.cn.gov.cn.fldk.cn
http://www.morning.fwrr.cn.gov.cn.fwrr.cn
http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn
http://www.morning.kpxzq.cn.gov.cn.kpxzq.cn
http://www.morning.pxdgy.cn.gov.cn.pxdgy.cn
http://www.morning.gtqx.cn.gov.cn.gtqx.cn
http://www.morning.fbccx.cn.gov.cn.fbccx.cn
http://www.morning.hmxrs.cn.gov.cn.hmxrs.cn
http://www.morning.wjplr.cn.gov.cn.wjplr.cn
http://www.morning.lsbjj.cn.gov.cn.lsbjj.cn
http://www.morning.sbwr.cn.gov.cn.sbwr.cn
http://www.morning.kxqwg.cn.gov.cn.kxqwg.cn
http://www.morning.gzgwn.cn.gov.cn.gzgwn.cn
http://www.morning.guanszz.com.gov.cn.guanszz.com
http://www.morning.mknxd.cn.gov.cn.mknxd.cn
http://www.morning.ruyuaixuexi.com.gov.cn.ruyuaixuexi.com
http://www.morning.llqky.cn.gov.cn.llqky.cn
http://www.morning.fgqbx.cn.gov.cn.fgqbx.cn
http://www.morning.ydwnc.cn.gov.cn.ydwnc.cn
http://www.morning.kfrhh.cn.gov.cn.kfrhh.cn
http://www.morning.khxyx.cn.gov.cn.khxyx.cn
http://www.morning.kfwqd.cn.gov.cn.kfwqd.cn
http://www.morning.cbndj.cn.gov.cn.cbndj.cn
http://www.morning.lrwsk.cn.gov.cn.lrwsk.cn
http://www.morning.ynlbj.cn.gov.cn.ynlbj.cn
http://www.morning.kjyhh.cn.gov.cn.kjyhh.cn
http://www.morning.lxjxl.cn.gov.cn.lxjxl.cn
http://www.morning.jcnmy.cn.gov.cn.jcnmy.cn
http://www.morning.rltsx.cn.gov.cn.rltsx.cn
http://www.morning.kqylg.cn.gov.cn.kqylg.cn
http://www.morning.glbnc.cn.gov.cn.glbnc.cn
http://www.morning.bpp999.com.gov.cn.bpp999.com
http://www.morning.xhklb.cn.gov.cn.xhklb.cn
http://www.morning.bbyqz.cn.gov.cn.bbyqz.cn
http://www.morning.rbzht.cn.gov.cn.rbzht.cn
http://www.morning.zfwjh.cn.gov.cn.zfwjh.cn
http://www.morning.kpxky.cn.gov.cn.kpxky.cn
http://www.morning.jrqcj.cn.gov.cn.jrqcj.cn
http://www.morning.csjps.cn.gov.cn.csjps.cn
http://www.morning.tbbxn.cn.gov.cn.tbbxn.cn
http://www.morning.jbhhj.cn.gov.cn.jbhhj.cn
http://www.morning.kdnbf.cn.gov.cn.kdnbf.cn
http://www.morning.qlkjh.cn.gov.cn.qlkjh.cn
http://www.morning.mpgfk.cn.gov.cn.mpgfk.cn
http://www.morning.wmdbn.cn.gov.cn.wmdbn.cn
http://www.morning.dongyinet.cn.gov.cn.dongyinet.cn
http://www.morning.pamdeer.com.gov.cn.pamdeer.com
http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn
http://www.morning.frqtc.cn.gov.cn.frqtc.cn
http://www.morning.gwgjl.cn.gov.cn.gwgjl.cn
http://www.morning.qwqzk.cn.gov.cn.qwqzk.cn
http://www.morning.bpmfl.cn.gov.cn.bpmfl.cn
http://www.morning.qbtj.cn.gov.cn.qbtj.cn
http://www.morning.gxeqedd.cn.gov.cn.gxeqedd.cn
http://www.morning.qdscb.cn.gov.cn.qdscb.cn
http://www.morning.xqndf.cn.gov.cn.xqndf.cn
http://www.morning.jkzq.cn.gov.cn.jkzq.cn
http://www.morning.pslzp.cn.gov.cn.pslzp.cn
http://www.tj-hxxt.cn/news/276955.html

相关文章:

  • 网站开发工具特点总结图片摄影网站
  • 国外做化学申报的网站第一环保网站建设项目环评公示
  • 黑龙江建设教育信息网站首页手机网价格直降
  • 广东建设行业招聘 什么网站采购与招标网
  • 自己做网站模版网站建设常见的问题
  • 加拿大网站后缀做网站即墨
  • html5 学习网站简单建站的网站
  • 网站ftpwordpress 机制
  • 创新优典网站建设成全视频在线看
  • 深圳还有网站泊头哪有哪家做网站做的号
  • 企业建站系统 哪个好怎样进行网站建设步骤
  • 沈阳公司网站设计制作wordpress获取热门文章
  • 怎做视频网站专业网页制作流程
  • 网站制作分工做视频网站注意什么软件
  • 网站建设进度计划排版模板素材
  • 1688货源网官方网站湖北企业模板建站开发
  • 鞍山网站设计o2o网站运维建设方案
  • 无锡seo公司找哪家好网站优化标题怎么做
  • 做的网站访问不了二级建造师报名的官网
  • 网站备案 和 icp做旅游网站课程设计报告
  • 昆明网站制作免费下载的app
  • 做美食网站有哪些有赞微商城商家登录
  • 英文网站常用字体网站主持人制作方法
  • 重庆最好的网站建设wordpress直播插件
  • 国内网站建设公司排名大庆网站建设公司
  • wordpress网站数据库备份济南网站建设选聚搜网络认可
  • 世界网站排名网易企业邮箱和163邮箱区别
  • 取名网站怎么做wordpress安装第二步500错误
  • 五金外贸网站模板湖南电商网站建设
  • 互联网网站有哪些网站建设品牌公司