//contact.h#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include <string.h>#include <stdlib.h>#ifndef __CONTACT_H__#define __CONTACT_H__#define MAX 1000#define MAX_NAME 20#define MAX_SEX 5#define MAX_TEL 12#define MAX_ADDR 20typedef struct PeoInfor{ char name[MAX_NAME]; char sex[MAX_SEX]; int age; char tel[MAX_TEL]; char addr[MAX_ADDR];}PeoInfor;typedef struct Contact{ PeoInfor contact [MAX]; int count;}Contact,*pContact;void InitContact(pContact pcon);void AddContact(pContact pcon);void DelContact(pContact pcon);void SearchContact(pContact pcon);void ModifyContact(pContact pcon);void ShowContact(pContact pcon);void SortContact(pContact pcon);#endif ////contact.c#define _CRT_SECURE_NO_WARNINGS 1#include "contact.h" void InitContact(pContact pcon){ pcon ->count = 0; memset(pcon->contact,0,MAX*sizeof(PeoInfor));}void AddContact(pContact pcon){ if (pcon->count >=MAX) { PRintf ("电话本满了。/n"); return ; } printf ("请输入姓名>:"); scanf ("%s",pcon->contact[pcon->count].name); printf ("请输入年龄>:"); scanf ("%d",&(pcon->contact [pcon->count].age)); printf ("请输入性别>:"); scanf ("%s",pcon->contact [pcon->count].sex); printf ("请输入电话>:"); scanf ("%s",pcon->contact [pcon->count].tel); printf ("请输入地址>:"); scanf ("%s",pcon->contact [pcon->count].addr); pcon->count ++; printf("添加成功/n");}int find_entry(pContact pcon,char name[]){ int i = 0; for (i=0;i<pcon->count;i++) { if (strcmp(name,pcon->contact[i].name)==0) return i; } return -1;}void DelContact(pContact pcon){ char name[MAX_NAME] = {0}; int pos = 0; int i = 0; if (pcon->count==0) { printf ("电话本为空,无法删除/n"); return ; } printf ("请输入要删除的人名字>:"); scanf ("%s",name); pos = find_entry(pcon,name); if (pos==-1) { printf ("要删的人不存在/n"); return ; } for (i=pos;i<pcon->count;i++) { pcon->contact[i] = pcon->contact[i+1]; } pcon->count--; printf ("删除成功/n");}void SearchContact(pContact pcon){ int pos = 0; char name[MAX_NAME] = {0}; printf ("请输入你要查找的人名字/n"); scanf ("%s",name); pos = find_entry(pcon,name); if (pos==-1) { printf ("没有这个人/n"); return ; } else { printf ("%10s%5s%6s%7s%8s/n", "name","age","sex","tel","addr" ); printf ("%10s%5d%6s%7s%8s/n", pcon->contact[pos].name, pcon->contact[pos].age, pcon->contact[pos].sex, pcon->contact[pos].tel, pcon->contact[pos].addr); }}void ModifyContact(pContact pcon){ int pos = 0; char name[MAX_NAME] = {0}; int age = 0; char sex[MAX_SEX] = {0}; char tel[MAX_TEL] = {0}; char addr[MAX_ADDR] = {0}; printf ("请输入你要查找的人名字/n"); scanf ("%s",name); pos = find_entry(pcon,name); if (pos==-1) { printf ("没有这个人/n"); return ; } printf ("请输入你要改为的名字/n"); scanf ("%s",name); printf ("请输入你要改为的年龄/n"); scanf ("%d",&age); printf ("请输入你要改为的性别/n"); scanf ("%s",sex); printf ("请输入你要改为的电话/n"); scanf ("%s",tel); printf ("请输入你要改为的地址/n"); scanf ("%s",addr); printf ("%10s%5d%6s%7s%8s/n", strcpy(pcon->contact[pos].name,name), age, strcpy(pcon->contact[pos].sex,sex), strcpy(pcon->contact[pos].tel,tel), strcpy(pcon->contact[pos].addr,addr));}void ShowContact(pContact pcon){ int i = 0; printf ("%10s%5s%6s%7s%8s/n","name","age","sex","tel","addr" ); for (i=0;i<pcon->count;i++) { printf ("%10s%5d%6s%7s%8s/n", pcon->contact[i].name, pcon->contact[i].age, pcon->contact[i].sex, pcon->contact[i].tel, pcon->contact[i].addr); }}static int cmp(const void *elem1,const void *elem2){ return strcmp ((*(PeoInfor*)elem1).name ,(*(PeoInfor*)elem2).name );}void SortContact(pContact pcon){ int i = 0; int sz = sizeof(pcon->contact)/sizeof(pcon->contact[0]); qsort (pcon->contact,pcon->count,sizeof (pcon->contact[0]),&cmp); for (i=0;i<pcon->count;i++) { printf ("%s %d %s %s %s/n", pcon->contact[i].name, pcon->contact[i].age, pcon->contact[i].sex, pcon->contact[i].tel, pcon->contact[i].addr); } } //test.c#define _CRT_SECURE_NO_WARNINGS 1#include <stdio.h>#include "contact.h"enum Option{ EXIT, ADD, DEL, SEARCH, MODIFY, SHOW, SORT,};void menu (){ printf ("***************1.ADD *******/n"); printf ("***************2.DEL *******/n"); printf ("***************3.SEARCH *******/n"); printf ("***************4.MODIFY *******/n"); printf ("***************5.SHOW *******/n"); printf ("***************6.SORT *******/n"); printf ("***************0.EXIT *******/n");}void test (){ int input = 0; Contact con = {0} ; InitContact(&con); do { menu(); printf ("请选择>:"); scanf ("%d",&input); switch (input) { 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: break; default : printf ("输入有误,请重新输入!/n"); break; } }while (input);}int main (){ test(); return 0;}
新闻热点
疑难解答