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

个人建设网站流程国外低代码开发平台

个人建设网站流程,国外低代码开发平台,工信部备案网站查询,做网站致富相信大家都有过通讯录#xff0c;今天我来带大家实现以下最简单的通讯录#xff0c;通过本篇文章#xff0c;相信可以让大家对C语言有进一步的认识。 话不多说#xff0c;我们先放函数的实现 #define _CRT_SECURE_NO_WARNINGS 1 #include Contact.hint Chea…相信大家都有过通讯录今天我来带大家实现以下最简单的通讯录通过本篇文章相信可以让大家对C语言有进一步的认识。 话不多说我们先放函数的实现 #define _CRT_SECURE_NO_WARNINGS 1 #include Contact.hint CheakCapacity(Contact* ps);void LoadContact(Contact* ps) {FILE* pf fopen(Contact.dat, rb);if (pf NULL){perror(LoadContact);return;}PeoInfo tmp { 0 };while (fread(tmp,sizeof(PeoInfo),1,pf)){CheakCapacity(ps);ps-date[ps-size] tmp;ps-size;}fclose(pf);pf NULL;}void InitContact(Contact* ps) {assert(ps);ps-date NULL;ps-size ps-capacity 0;LoadContact(ps); }int CheakCapacity(Contact* ps) {assert(ps);if (ps-capacity ps-size){int newcapacity ps-capacity 0 ? 4 : ps-capacity * 2;PeoInfo* tmp (PeoInfo*)realloc(ps-date, newcapacity * sizeof(PeoInfo));if (tmp NULL){perror(CheakCapacity);return 0;}else{ps-date tmp;ps-capacity newcapacity;printf(增容成功\n);return 1;}}return 1; }void AddContact(Contact* ps) {assert(ps);if (CheakCapacity(ps) 0){return;}printf(请输入增加的姓名:);scanf(%s, ps-date[ps-size].name);printf(请输入增加的年龄:);scanf(%d, ps-date[ps-size].age);printf(请输入增加的性别:);scanf(%s, ps-date[ps-size].sex);printf(请输入增加的电话:);scanf(%s, ps-date[ps-size].tele);printf(请输入增加的地址:);scanf(%s, ps-date[ps-size].addr);ps-size;printf(增加成功\n); }void ShowContact(Contact* ps) {assert(ps);printf(%-10s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);for (int i 0; ips-size; i){printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,ps-date[i].name,ps-date[i].age,ps-date[i].sex,ps-date[i].tele,ps-date[i].addr);} }int FindByName(const Contact* ps,char name[]) {int i 0;for (i 0; ips-size; i){if (strcmp(ps-date[i].name,name)0){return i;}}return -1; }void DeleteContact(Contact* ps) {assert(ps);if (ps-size 0){printf(通讯录为空,无法删除\n);return;}char name[20] { 0 };printf(请输入你要删除的姓名:);scanf(%s, name);int ret FindByName(ps, name);if (ret -1){printf(要删除的人不存在\n);return;}for (int i ret; ips-size; i){ps-date[i] ps-date[i 1];}ps-size--;printf(删除成功\n); }void SearchContact(Contact* ps) {assert(ps);char name[20] { 0 };printf(请输入你要删除的姓名:);scanf(%s, name);int pos FindByName(ps, name);if (pos -1){printf(要查找的人不存在\n);return;}printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,ps-date[pos].name,ps-date[pos].age,ps-date[pos].sex,ps-date[pos].tele,ps-date[pos].addr); }void ModifyContact(Contact* ps) {assert(ps);char name[20] { 0 };printf(请输入你要修改的姓名:);scanf(%s, name);int pos FindByName(ps, name);if (pos -1){printf(要修改的人不存在\n);return;}printf(请输入修改的姓名:);scanf(%s, ps-date[pos].name);printf(请输入修改的年龄:);scanf(%d, ps-date[pos].age);printf(请输入修改的性别:);scanf(%s, ps-date[pos].sex);printf(请输入修改的电话:);scanf(%s, ps-date[pos].tele);printf(请输入修改的地址:);scanf(%s, ps-date[pos].addr); }void SortContact(Contact* ps) {int i 0;int j 0;for (i0; ips-size-1; i){for (j 0; jps-size-1-i; j){if (strcmp(ps-date[j].name, ps-date[j1].name) 0){PeoInfo tmp ps-date[j];ps-date[j] ps-date[j 1];ps-date[j 1] tmp;}}}printf(排序成功\n); }void DestoryContact(Contact* ps) {free(ps-date);ps-date NULL;ps-capacity ps-size 0; }void SaveContact(Contact* ps) {FILE* pf fopen(Contact.dat, wb);if (pf NULL){perror(SaveContact);return;}for (int i 0; ips-size; i){fwrite(ps-date i, sizeof(PeoInfo), 1, pf);}fclose(pf);pf NULL; } #define _CRT_SECURE_NO_WARNINGS 1 #include Contact.hvoid 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);}void Text() {int input 0;Contact con;InitContact(con);do {menu();printf(请输入你的选择:);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DEL:DeleteContact(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);DestoryContact(con);printf(退出通讯录成功\n);break;default:printf(你选择的有误请重新输入\n);break;}} while (input); }int main() {Text();return 0; } 是不是看到这里会感到很害怕不用怕跟着我的思路你也可以实现它我带着你一步一步实现每一个功能 我们要实现这个功能首先我们来看下面的代码首先我们应该先选择这里我选择了do while的语句要实现这个功能我们就用到了menu这个函数来打印菜单其实很简单我就用了printf函数来实现。 void Text() {int input 0;Contact con;InitContact(con);do {menu();printf(请输入你的选择:);scanf(%d, input);switch (input){case ADD:AddContact(con);break;case DEL:DeleteContact(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);DestoryContact(con);printf(退出通讯录成功\n);break;default:printf(你选择的有误请重新输入\n);break;}} while (input); }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);} 我们直接来实现通讯录的基本功能我先用struct来定义了一个人的基本信息然后再用struct来包含人的基本信息但是我还加上了size和capcacitysize是用来记录存储了多少个人而capacity是用来说明有多少个空间 typedef struct PeoInfo {char name[MAX_NAME];int age;char sex[MAX_SEX];char tele[MAX_TELE];char addr[MAX_ADDR]; }PeoInfo;typedef struct Contact {PeoInfo *date;int size;int capacity; }Contact; 我们一开始用通讯录不要忘了要初始化我在这里是把ps-date指向的空间置位了NULLsize和capacity初始化为0因为我们是要弄一个动态的通讯录所以我们特意用结构体的指针date来设计。我们实现一个通讯录我们先设想一个场景如果你的手机关机了重启后是不是通讯录里面的信息还是存在的所以我们也要实现这样的功能。我在这里是用到了文件操作我先创建了结构体的tmp临时变量我用fread来操作如果freaed的返回值不是0我们就将数据拷贝到tmp中。 while (fread(tmp,sizeof(PeoInfo),1,pf)){CheakCapacity(ps);ps-date[ps-size] tmp;ps-size;} 下面是这个功能的全部代码 void LoadContact(Contact* ps) {FILE* pf fopen(Contact.dat, rb);if (pf NULL){perror(LoadContact);return;}PeoInfo tmp { 0 };while (fread(tmp,sizeof(PeoInfo),1,pf)){CheakCapacity(ps);ps-date[ps-size] tmp;ps-size;}fclose(pf);pf NULL;}void InitContact(Contact* ps) {assert(ps);ps-date NULL;ps-size ps-capacity 0;LoadContact(ps); } 接着我们来看第二个功能增加人的信息我们在一开始增加信息的时候要想到如果空间满了的话就要考虑扩容。所以我一开始就判断是否要扩容因为一开始size和capacity都是0所以一开始就要扩容我是malloc了一个空间如果满了的话我就扩二倍。最后通过返回值来判断是否扩容成功了。 int CheakCapacity(Contact* ps) {assert(ps);if (ps-capacity ps-size){int newcapacity ps-capacity 0 ? 4 : ps-capacity * 2;PeoInfo* tmp (PeoInfo*)realloc(ps-date, newcapacity * sizeof(PeoInfo));if (tmp NULL){perror(CheakCapacity);return 0;}else{ps-date tmp;ps-capacity newcapacity;printf(增容成功\n);return 1;}}return 1; } 然后接着实现add函数其实很简单我们一开始的size是0所以每当我们增加一个信息ps-size就要而ps-date指向的就是人信息的那片空间ps-date【ps-size】后面再加上我们要增加的信息就完成了我们add函数的功能。 void AddContact(Contact* ps) {assert(ps);if (CheakCapacity(ps) 0){return;}printf(请输入增加的姓名:);scanf(%s, ps-date[ps-size].name);printf(请输入增加的年龄:);scanf(%d, ps-date[ps-size].age);printf(请输入增加的性别:);scanf(%s, ps-date[ps-size].sex);printf(请输入增加的电话:);scanf(%s, ps-date[ps-size].tele);printf(请输入增加的地址:);scanf(%s, ps-date[ps-size].addr);ps-size;printf(增加成功\n); }第二个删除的功能我的思想就是先创建一个数组然后用数组和通讯录中名字相比较看是否相等。然后返回要删除的下标 int FindByName(const Contact* ps,char name[]) {int i 0;for (i 0; ips-size; i){if (strcmp(ps-date[i].name,name)0){return i;}}return -1; } 最后到删除的操作就是后面往前面移动然后ps-size--就可以了。 void DeleteContact(Contact* ps) {assert(ps);if (ps-size 0){printf(通讯录为空,无法删除\n);return;}char name[20] { 0 };printf(请输入你要删除的姓名:);scanf(%s, name);int ret FindByName(ps, name);if (ret -1){printf(要删除的人不存在\n);return;}for (int i ret; ips-size; i){ps-date[i] ps-date[i 1];}ps-size--;printf(删除成功\n); }第三个search功能的实现也是和删除差不多的操作不过我们是查找功能所以我们最后是直接printf来打印出我们要查找的信息这里我也用到了FindByName函数的复用。 void SearchContact(Contact* ps) {assert(ps);char name[20] { 0 };printf(请输入你要删除的姓名:);scanf(%s, name);int pos FindByName(ps, name);if (pos -1){printf(要查找的人不存在\n);return;}printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,ps-date[pos].name,ps-date[pos].age,ps-date[pos].sex,ps-date[pos].tele,ps-date[pos].addr); } 第四个修改的功能因为我们也要找到要修改的下标所以我用到了函数的复用我们只要在要修改的下标中重新输入自己想修改的值就可以了。 void ModifyContact(Contact* ps) {assert(ps);char name[20] { 0 };printf(请输入你要修改的姓名:);scanf(%s, name);int pos FindByName(ps, name);if (pos -1){printf(要修改的人不存在\n);return;}printf(请输入修改的姓名:);scanf(%s, ps-date[pos].name);printf(请输入修改的年龄:);scanf(%d, ps-date[pos].age);printf(请输入修改的性别:);scanf(%s, ps-date[pos].sex);printf(请输入修改的电话:);scanf(%s, ps-date[pos].tele);printf(请输入修改的地址:);scanf(%s, ps-date[pos].addr); } 是不是发现其实函数的实现很多都是相似的 所以不用怕接着往后看。 第五个函数就是我们要展示信息我们直接用for循环遍历一遍就行了只不过我们为了好看一点用到了左对齐至于长度可以根据你来实现。最后的效果就是下面这样。 void ShowContact(Contact* ps) {assert(ps);printf(%-10s\t%-4s\t%-5s\t%-12s\t%-30s\n, 名字, 年龄, 性别, 电话, 地址);for (int i 0; ips-size; i){printf(%-10s\t%-4d\t%-5s\t%-12s\t%-30s\n,ps-date[i].name,ps-date[i].age,ps-date[i].sex,ps-date[i].tele,ps-date[i].addr);} } 第六个函数我们要排序名字的大小这里我直接用了冒泡排序可以直接把名字的大小排出来。只不过这里的时间复杂度是ON^2效率是很低的也可以用快排来实现效率可以更高一点 void SortContact(Contact* ps) {int i 0;int j 0;for (i0; ips-size-1; i){for (j 0; jps-size-1-i; j){if (strcmp(ps-date[j].name, ps-date[j1].name) 0){PeoInfo tmp ps-date[j];ps-date[j] ps-date[j 1];ps-date[j 1] tmp;}}}printf(排序成功\n); } 因为我们是动态来实现通讯录的所以我用到了malloc在最后退出的时候也要free掉开辟的空间我用了一个DestoryContact函数来实现。 void DestoryContact(Contact* ps) {free(ps-date);ps-date NULL;ps-capacity ps-size 0; } 最后一个函数是否想过这样的一个问题在我们输入信息的时候如果我们退出信息在下一次打开时还保存着呢经过学习我发现文件操作就可以来实现它 。我是用了fopen来打开一个二进制的文件Contact.dat用到了for循环fwrite来把已经存在的信息保存在文件流中(也就是这个文件中)又因为一开始初始化的时候要把文件的信息录进去这样我们就实现了信息的保存。 void SaveContact(Contact* ps) {FILE* pf fopen(Contact.dat, wb);if (pf NULL){perror(SaveContact);return;}for (int i 0; ips-size; i){fwrite(ps-date i, sizeof(PeoInfo), 1, pf);}fclose(pf);pf NULL; }
http://www.yutouwan.com/news/429727/

相关文章:

  • php mysql 网站开发实例教程二级域名分发
  • 阿里云网站备案要多久校园二手物品交易网站怎么做
  • 建设电影播放网站建设公司网站的申请
  • 成都网站建设优创智汇统一企业信息管理系统网站
  • 如何申请免费域名做网站设计师投资做项目网站
  • 档案网站建设经验定制一款软件需要多少钱
  • 现在网站开发用什么dede导入wordpress
  • wordpress分类目录名称福州短视频seo方法
  • 技术网站源码wordpress百度霸屏全网推广
  • 免费建网站平台哪个好网站如何添加二维码
  • 怎样制作网站建设方案网站建设的公司太多了
  • 网站搭建详细步骤网站的首页面设计
  • 效果图网站有哪些怎么用一个主机做多个网站
  • 网站建设销售开场白用divid做网站代码
  • 网站内容建设的核心和根本是编程教学
  • 网站制作与管理技术标准实训教程wordpress andriod
  • 制作自己的网站多少钱外贸seo是什么意思
  • 宁海企业网站建设网站建设前端学什么语言
  • 网站建设的闪光点外网门户网站建设方案
  • wordpress简约下载站模板网站 301
  • 长春网站排名优化价格在线看视频网站怎么做
  • 灵武市建设银行网站做网站建
  • 都江堰城乡建设局网站wordpress登录不了
  • wordpress小工具文件seo网络推广机构
  • 那些网站做网批wordpress单页淘宝客
  • 电子商务网站的建设包含哪些流程图网站建设推广需要多少钱
  • 尉氏做网站网站降权如何百度申诉
  • seo优化网站推广专员招聘wordpress上传文件大小
  • 如何做登陆界面的网站网站建设销售员工作内容
  • asp 网站源码怎么看网站空间多大