通讯录改进(可以保存至文件并读取)
来源:互联网 发布:中文域名重要性 编辑:程序博客网 时间:2024/06/05 07:13
头文件:
#ifndef _NODE_H_#define _NODE_H_struct node { char id[100] ; char name[10]; char address[10]; char tel[100]; char mob[100]; struct node *next;};typedef struct node Node;typedef Node *STU;#endif
子函数:
#include <stdio.h>#include "student.h"#include <stdlib.h>#include <string.h>void ListInit(STU *L){ (*L) = (STU)malloc(sizeof(Node)); (*L)->next = NULL;}int AddInfo(STU *L){ STU p = *L; STU s; printf("Please input name,id,mob,tel,address:\n"); s = (STU)malloc(sizeof(Node)); scanf("%s%s%s%s%s",s->name,s->id,s->mob,s->tel,s->address); if(strlen(s->mob) != 11) { printf("无效手机号码!\n"); return 0; } if(strlen(s->tel) != 8) { printf("无效家庭电话号码!\n"); return 0; } while(p->next) { if(strcmp((p->next)->mob,s->mob) == 0 || strcmp((p->next)->tel,s->tel) == 0) { printf("已存在相同号码!\n"); return 0; } p = p->next; } p=*L; if(p->next ==NULL) { s->next = p->next; p->next = s; } else { while(p->next) { if(strcmp((p->next)->name,s->name)>0) { s->next = p->next; p->next = s; break; } p = p->next; } if(p->next ==NULL) { s->next = p->next; p->next = s; } }}void Save(STU l){ STU p; FILE *fp; int ret; p = l->next; fp = fopen("save.txt","w"); if(NULL == fp ) { perror("Fopen Failure!\n"); exit(1); } while(p) { ret = fwrite(p,1,sizeof(Node),fp); if(0 == ret) { perror("Fwrite Failure!\n"); exit(1); } p=p->next; } fclose(fp);}void Read(STU l){ STU p; STU r; FILE *fp; l->next = NULL; r = l; int ret; fp = fopen("save.txt","r"); if(NULL == fp) { perror("Fopen Failure!\n"); exit(1); } while(!feof(fp)) { p = (STU)malloc(sizeof(Node)); if(!p) { printf("Malloc Failure!\n"); return; } if(fread(p,sizeof(Node),1,fp) != 1) { break; } else { p->next = NULL; r->next = p; r = p; } } fclose(fp);}int ShowInfo(STU l){ if(l->next == NULL) { printf("It is NULL!\n"); } else { STU p = l->next; while(p) { printf("Name: %s Id: %s Mobile: %s Tele: %s Address: %s\n",p->name,p->id,p->mob,p->tel,p->address); p=p->next; } }}int ChangeInfo(STU *l){ STU p = (*l)->next; STU t = *l; STU s ; char n[10]; printf("Please input the name you want to change:\n"); scanf("%s",n); while(p) { s = (STU)malloc(sizeof(Node)); if(strcmp(p->name,n) == 0) { printf("Please input the new information:\n"); scanf("%s%s%s%s%s",s->name,s->id,s->mob,s->tel,s->address); if(strlen(s->mob) != 11) { printf("无效手机号码!\n"); return 0; } if(strlen(s->tel) != 8) { printf("无效家庭电话号码!\n"); return 0; } while(t->next) { if(strcmp((t->next)->mob,s->mob) == 0|| strcmp((t->next)->tel,s->tel) == 0) { printf("已存在相同号码!\n"); return 0; } t = t->next; } strcpy(p->name , s->name); strcpy(p->id , s->id); strcpy(p->mob , s->mob); strcpy(p->tel, s->tel); strcpy(p->address , s->address); free(s); printf("Change Success!\n"); break; } else { p = p->next; } } if(p == NULL) { printf("Unknown person!\n"); }}int DeleteInfo(STU l){ STU p = l; STU tmp; char n[10]; printf("Please input the name you want to delete:\n"); scanf("%s",n); while(p->next) { if(strcmp((p->next)->name,n) == 0) { tmp = p->next; p->next = tmp->next; free(tmp); printf("Delete Success!\n"); break; } else { p = p->next; } }}int SearchInfo(STU l){ STU p = l->next; char n[10]; printf("Please input the name you want to search:\n"); scanf("%s",n); while(p) { if(strcmp(p->name,n) == 0) { printf("ID: %s Tel: %s Mob: %s Address: %s\n",p->id,p->tel,p->mob,p->address); break; } else { p =p->next; } } if(p == NULL) { printf("Unknown name!\n"); }}
主函数:
#include <stdio.h>#include "student.h"#include <stdlib.h>void show(){ printf("***********************************\n\n"); printf("*******1.Add 2.Show********\n\n"); printf("*******3.Change 4.Delete******\n\n"); printf("*******5.Search 6.Save********\n\n"); printf("*******7.Read 8.Quit********\n\n"); printf("***********************************\n\n"); printf("*******Please input your choice****\n\n");}int main(){ int choice; STU stu; ListInit(&stu); while(1) { show(); scanf("%d",&choice); switch (choice) { case 1: AddInfo(&stu); break; case 2: ShowInfo(stu); break; case 3: ChangeInfo(&stu); break; case 4: DeleteInfo(stu); break; case 5: SearchInfo(stu); break; case 6: Save(stu); break; case 7: Read(stu); break; case 8: exit(0); break; default: printf("Unknown Input!\n"); } } return 0;}
阅读全文
0 0
- 通讯录改进(可以保存至文件并读取)
- 用链表实现通讯录,并保存到文件
- 读取文件夹所有文件并保存文件名至指定文件
- 通讯录(C语言、文件保存)
- 电子通讯录(文件保存版)
- .net读取图像并保存为文件
- PHP读取远程文件并保存
- Android 读取并显示通讯录
- linux下,用c语言编程,实现从一个文件读取内容到另一个文件,可以在文件的不同位置修改文件内容,并保存。
- 附带文件操作的通讯录,可以实现链表到文件的写入以及文件到链表的读取
- 从网络下载文件并保存至本地,及其文件的读取
- C# 读取Excel文件 并保存为html文件
- 关于创建Excel表格问题(保存至指定文件/弹出直接打开还是下载,并可以选择保存路径的对话框)
- android保存文件到sd卡,读取和清空记录功能(可以用来保存用户名和密码)
- 可以动态增长的通讯录(在第一版的基础上进行了改进)
- 文件上传并可以批量编辑修改保存
- 【C语言】通讯录实现以及信息保存至文件。
- 手机通讯录系统设计(带文件保存)
- 小试牛刀——用python画一朵美丽的玫瑰花
- 84. Largest Rectangle in Histogram
- 将一个视频转换为一个极坐标视频
- ThinkPhp 5 目录结构及基础配置详解
- 2017.12.10《“剑锋OI”普及组多校联盟系列赛(14)#Sooke#Kornal 的课余时间 》分析报告
- 通讯录改进(可以保存至文件并读取)
- kuangbin专题五 并查集 POJ 1213 How Many Tables
- Gossip算法学习笔记
- bonnie++安装报错zcav.cpp:
- 安装虚拟机教程(学习汇编语言)
- Digit Divide Numbers-LintCode
- 网络Cisco实验-动态路由协议配置
- java--数组2(重点)
- word怎么批量改图片大小 摘自百度经验