C语言实现个人通讯录管理系统

  

如何用c语言制作简易的个人通讯录管理系统?想必这是每一位初步学习c语言的同学需要解决的一个大问题。如何将这些数据类型不完全相同的数据元素存储并访问呢?采用结构体便能轻松解决这个问题!

        # include   # include   # include   # include   struct斯图//第一部分:声明结构体类型结构斯图   {   char[100]名称;//姓名为字符串型   int xh;//学号为整形   int年级;//年级   char玻璃纸[15];//手机   char tel[50];//电话   char邮件[50];//邮件   字符添加[100];//地址为字符串型   char[15]后;//邮编   struct stu *下;//用指针处理链表,接下来是指针变量,指向结构体变量   };   struct stu * charu (struct stu *头,struct stu * q)//第二部分:插入函数(插入新结点)   {   struct stu * p;   (p=头;p→下一个!=零;p=p→下);//(使p也指向头;当p为空文件时,p指向下一个结点)   p→下=问;   问:接下来,=零;   返回头;   }   无效的搜索(struct stu *头)//第三部分:查找结点并输出   {   struct stu * p;   int;//要查找学生的学号   如果(头→下一==NULL)//头文件为空时打印出的结果为“通讯录为空”   printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *通讯录为空! ! ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n \ n”);//其他头文件不为空时,开始查询学生的信息   {   printf (" \ t输入要查询学生学号:”);   scanf (“% d”,和一个);   (p=头→下;p→下一个!=零;p=p→下)//(使p也指向头;当p为空文件时,p指向下一个结点)   {   如果(p→xh==)//如果输入的学号和某个相同,输出以下的东西。   {   printf("要查找的学生信息为:\ n”);   printf("★姓名:“);使(p→名称);   printf (" \ t学号:”);printf (" % d”, p→xh);   printf (" \ t年级:”);printf (% d \ n, p→年级);   printf (" \ t手机:”);使(p:玻璃纸,);   printf (" \ t电话:”);使(p→电话);   printf (" \ t邮箱:”);使(p→邮件);   printf (" \ t地址”);使(p→添加);   printf (" \ t邮编:“);使(p→岗位);   printf (" \ t查找成功! ! !”);   printf (" \ n \ n \ n ");   打破;   }   }   如果(p→xh==)   {   printf("要查找的学生信息为:\ n”);   printf("★姓名:“);使(p→名称);   printf (" \ t年级:”);printf (% d \ n, p→年级);   printf (" \ t手机:”);使(p:玻璃纸,);   printf (" \ t电话:”);使(p→电话);   printf (" \ t邮箱:”);使(p→邮件);   printf (" \ t地址”);使(p→添加);   printf (" \ t邮编:“);使(p→岗位);   printf (" \ t查找成功! ! !”);   printf (" \ n \ n \ n ");   }   其他printf("没有人发现! ! ! \ n ");//如果不符合,就输出没有找到   }   }   struct stu *德尔(struct stu *头)//第四部分:删除结点   {   struct stu * p *问;   int;//要删除学生的学号   如果(头→下一==NULL)//头文件为空时,输出通讯录为空   printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *通讯录为空! ! ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n \ n”);   其他的   {   printf (" \ t输入要删除学生学号:”);   scanf (“% d”,和一个);   (p=,=p→下;问→xh !=第一部;,问→下一个!=零;)   {   p=p→下;   q=p→下;   }   如果(q→xh==)   {   下q=p→→下;   自由(q);//释放问,也就是删除q,在这里就是删除q(学号为一)   printf("删除成功! ! ! \ n”);   }   其他printf(“没有人发现!”);//如果不符合,就输出没有找到   }   返回头;//返回头文件   }   struct stu *变化(struct stu *头)//第五部分:修改结点内容   {   int b, a、c;   struct stu * p;   如果(头→下一==NULL)//头文件为空时,输出通讯录为空   printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *通讯录为空! ! ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n \ n”);   其他的   {   printf("输入要修改学生学号:”);   scanf (“% d”,和一个);   (p=头→下;p !=零;p=p→下一个)   {   开始:printf("输入想要修改什么& # 63;\ n”);   printf (" \ t \ \ t 1:修改姓名\ n”);   printf (" \ t \ \ t 2:修改学号\ n”);   printf (" \ t \ \ t 3:修改年级\ n”);   printf (" \ t \ \ t 4:手机\ n”);   printf (" \ t \ \ t 5:电话\ n”);   printf (" \ t \ \ t 6:邮件\ n”);   printf (" \ t \ \ t 7:地址\ n”);   printf (" \ t \ \ t 8:邮编\ n”);   printf(“请输入你的选择:”);   scanf (“% d和b);   开关(b)//先通过学号找到该学生,然后用开关语句选择修改项,再用开关和goto语句实现是否循环   {   案例1:   printf (" \ t输入新姓名:”);   scanf (“% s”, p→名称),打破;   案例2:printf (" \ t输入新学号:”);   scanf (“% d”,和p→xh);断裂;   案例3:   printf (" \ t输入新的年级:”);   scanf (“% d”,和p→年级);断裂;   案例4:   printf (" \ t输入新的手机号:”);   scanf (“% s”, p→玻璃纸);断裂;   例5:   printf (" \ t输入新的电话号:”);   scanf (“% s”, p→tel);断裂;   例6:   printf (" \ t输入新的邮箱:”);   scanf (“% s”, p→邮件);断裂;   例7:   printf (" \ t输入新的地址:”);   scanf (“% s”, p→添加);断裂;   例8:   printf (" \ t输入新的邮编;”);   scanf (“% s”, p→post);断裂;   默认值:printf("输入操作错误,请重新输入:”);   }   printf("修改成功! ! ! \ n”);   printf("是否要修改其他项? 1:是2:否\ n”);   printf(“请输入你的选择:”);   scanf (“% d和c);   开关(c)//转到语句实现是否循环   {   案例1:goto开始;   案例2:休息;   }   }   }   返回头;//返回头文件   }   空白printall (struct stu *头)//第六部分:输出全部通讯录   {   struct stu * p=头→下;   而(1)   {   如果(p==NULL)   {   printf(" * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *通讯录为空! ! ! * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n \ n \ n”);   打破;   }   else if (p→下==NULL)   {   printf("★姓名:“);使(p→名称);   printf (" \ t学号:”);printf (% d \ n, p→xh);   printf (" \ t年级:”);printf (% d \ n, p→年级);   printf (" \ t手机:”);使(p:玻璃纸,);   printf (" \ t电话:”);使(p→电话);   printf (" \ t邮箱:”);使(p→邮件);   printf (" \ t地址:”);使(p→添加);   printf (" \ t邮编:“);使(p→岗位);   printf("输出成功! ! ! \ n”);   printf (" \ n \ n \ n ");   打破;   }   其他的   {   printf("★姓名:“);使(p→名称);   printf (" \ t学号:”);printf (% d \ n, p→xh);   printf (" \ t年级:”);printf (% d \ n, p→年级);   printf (" \ t手机:”);使(p:玻璃纸,);   printf (" \ t电话:”);使(p→电话);   printf (" \ t邮箱:”);使(p→邮件);   printf (" \ t地址:”);使(p→添加);   printf (" \ t邮编:“);使(p→岗位);   printf (" \ n ");   p=p→下;   继续;   }   printf("输出成功! ! ! \ n”);   }   }   空白科幻(struct stu *头)//第八部分:释放结点退出系统   {   struct stu * p=头;   printf("释放链表:\ n”);   而(p !=NULL)   {   头=头→下;   自由(p);   p=头;   }   printf("释放链表成功! ! ! \ n”);   }   int main()//第九部分:主函数框架   {   int cz;//操作符   struct stu *, *问;   头=(struct斯图*)malloc (sizeof (struct stu));//动态链表malloc   头→下=零;//使下一指向下一个结点,下一个结点不放其他结点地址   系统(“颜色1 e ");//修改dos窗口前背景色,用两个十六进制数表示   printf("班级:姓名:学号:设计课题:一个人通讯录管理系统\ n”);   printf (" \ n * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * C语言课程设计* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * \ n”);   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

C语言实现个人通讯录管理系统