c语言学生通讯系统

#include<stdio.h>     //标准输入,输出函数
#include<stdlib.h>    //常用函数
#include<string.h>    //字符串函数
#include<conio.h>     //文本窗口函数

struct record         //定义结构体
{
   char name[20];     //姓名
   char phone[12];    ///int
   char adress[50];   //地址
   char postcode[8];  //邮政编码
   char e_mail[20];   //电子邮件。
} student[100];       //假设最大数为100.

int num;              //定义全局变量num,表示已经输入的人数 。

int menu_select()
{
    char s[80];       //数组
    int a;            //定义整形变量
    system("cls");    //刷屏
    printf("\t\t-----------欢迎进入通讯管理界面-----------\n\n");
    printf("\t\t\t0. 输入记录\n");
    printf("\t\t\t1. 显示记录\n");
    printf("\t\t\t2. 按姓名查找\n");
    printf("\t\t\t3. 按电话号码查找\n");
    printf("\t\t\t4. 插入记录 \n");
    printf("\t\t\t5. 按姓名排序\n");
    printf("\t\t\t6. 删除记录\n");
    printf("\t\t\t7. Quit\n");
    printf("\t\t-------------------------------------------\n\n");
    do{
    printf("Enter you choice(0~7)");
    scanf("%s,s");
    a=atoi(s);    //类型转换
	}
    while (a<0 || a>7);
    return a;
}

int adduser()
{
    printf("\t\t\t------------- 请输入用户信息 ---------------\n");
    printf("\t\t\t输入姓名:\n");
    scanf("%s",student[num].name);
    printf("\t\t\t输入电话号码:\n");
    scanf("%s",&student[num].phone);
    printf("\t\t\t输入地址:\n");
    scanf("%s",student[num].adress);
    printf("\t\t\t输入邮编:\n");
    scanf("%s",student[num].postcode);
    printf("\t\t\t输入e-mail:\n");
    scanf("%s",student[num].e_mail);
    num++;
    printf("\t\t\t是否继续添加?(Y/N):\n");
    if(getch()=='y' || getch()=='Y')
    adduser();
    return(0);
}

void list()
{
     int i;
     system("cls");
     if(num!=0)
	 {
         printf("\t\t\t--------------- 以下为通讯录所有信息------------\n");
         for (i=0;i<num;i++)
		 {
             printf("\t\t\t姓名:%s\n",student[i].name);
             printf("\t\t\t电话:%s\n",student[i].phone);
             printf("\t\t\t地址:%s\n",student[i].adress);
             printf("\t\t\t邮编:%s\n",student[i].postcode);
             printf("\t\t\te-mail:%s\n",student[i].e_mail);
             if(i+1<num)
			 {
                 system("pause");
			 }
		 }
         printf("\t\t\t-------------------------------------------------\n");
	 }
     else
     printf("\t\t\t通讯录中无任何纪录\n");
     printf("\t\t\t按任意键返回主菜单:\n");
     getch(); //无回显的输入字符
     return;
}

int searchbyname()
{
    int mark=0;
    int i;
    printf("\t\t\t----------------- 按姓名查找 ---------------\n");
    printf("\t\t\t请输入姓名:\n");
    scanf("%s,name==");
    for(i=0;i<=10;i++);
	{
        if("name,num<'100'");
		{
            printf("\t\t\t----------- 以下是您查找的用户信息 -----------\n");
            printf("\t\t\t姓名: %s",student[i].name);
            printf("\t\t\t电话: %s",student[i].phone);
            printf("\t\t\t地址: %s",student[i].adress);
            printf("\t\t\te-mail:%s",student[i].e_mail);
            printf("\t\t\t-----------------------------------------------\n");
            mark++;
            if((i+1)<num)//查找相同名字的用户信息
			{
                printf("\t\t\t是否继续查找相同名字的用户信息:(y/n)\n");
                if(getch()=='y' || getch()=='Y')
				{
                    printf("\t\t\t继续");
				}
                else
                return(0);
			}
            else
			{
                printf("\t\t\t按任意键返回主菜单");
                getch();
                return(0);
			}
		}
	}
	{
        if (student[i],mark == 0);
        printf("\t\t\t没有相同姓名的用户纪录\n");
        printf("\t\t\t按任意键返回主菜单\n");
        getch();
        return(0);
	}
    return 0;
}

int searchbyphone()
{
    int mark=0;
    int i;
    printf("\t\t\t****************** 按电话查找 ******************\n");

    printf("\t\t\t请输入电话号码:\n");
    scanf("%s",num);
    for(i=0;i<num;i++)
	{
        if (student[i].phone,num=='0')
		{
             printf("\t\t\t-------------- 以下是您查找的用户信息 ----------\n");
             printf("\t\t\t姓名: %s",student[i].name);
             printf("\t\t\t电话: %s",student[i].phone);
             printf("\t\t\t地址: %s",student[i].adress);
             printf("\t\t\te-mail:%s",student[i].e_mail);
             printf("\t\t\t------------------------------------------------\n");
             printf("\t\t\t按任意键返回主菜单\n");
             mark++;
             getch();
             return(0);
		}
	}
    if (mark==0)
	{
         printf("\t\t\t没有该用户的信息\n");
         printf("\t\t\t按任意键返回主菜单\n");
         getch();
         return(0);
	}
    return(0);
}

void deletebyphone()
{
     int i,j;
     int deletemark=0;
     char phone[20];
     printf("\t\t\t请输入要删除用户电话号码:\n");
     scanf("%s",phone);
     if(num==0)
	 {
          printf("\t\t\t对不起,文件中无任何纪录\n");
          printf("\t\t\t按任意键返回主菜单\n");
          getch();
          return;
	 }
     for (i=0;i<num;i++)
	 {
         if (strcmp(student[i].phone,phone)==0)
		 {
             printf("\t\t\t以下是您要删除的用户纪录:\n");
             printf("\t\t\t姓名: %s",student[i].name);
             printf("\t\t\t电话: %s",student[i].phone);
             printf("\t\t\t地址: %s",student[i].adress);
             printf("\t\t\te-mail:%s",student[i].e_mail);
             printf("\t\t\t是否删除?(y/n)");
             if (getch()=='y' || getch()=='Y')
			 {
                  for (j=i;j<num-1;j++)
                  student[j]=student[j+1];
			 }
		 }
	 }
}

main()
{ 
	switch(menu_select())
	{
	    case 0: adduser(); break;
		case 1: list(); break;
		case 2: searchbyname(); break;
		case 3: searchbyphone(); break;

		case 6: deletebyphone(); break;
		case 7: break;
	}
}



     

设计一个《学生通讯录管理系统》,在动态链表程序的基础上,设计要求如下 (必须使用结构体和链表等数据结构) 1建立文件 存储文件使用指定文件名或默认文件名; 可以不保存输入记录,但需要确认是否保存输入记录 如果已有文件,只能在其后追加; 新增记录可以不存入原文件中,以可以用原来的文件覆盖内存的内容; 可以将多个个文件记录合并到一个文件中; 2文件的存取和显示 可以单独存取文件; 可以随时显示内存中记录的全部内容; 可以直接存取默认文件或指定文件; 3删除记录 可以按“姓名”或“电话”方式删除记录并更新内存链表内容; 能给出被删除的信息,输出没有找到的信息; 如果已经是空表,上出时应给出信息并返回主菜单; 如果没有要删除的信息,输出没有找到的信息; 删除操作仅限于内存,只有执行记录时,才能覆盖原记录; 4查询记录 可以按“姓名”或“电话”或“宿舍”方式查询记录 能给出查询记录的信息; 如果查询的信息不存在,输出没有找到的信息; 5 整体功能 a可以随时检索、删除、或增加新记录,保存或取消新的记录 b使姓名可由16位字符和数字的混合编码组成 c使电话号码可由18位字符和数字组成 d将输出信息加上输出信息信息栏,例如 姓名 电话 性别 年龄 生日 宿舍 李四 1234 男 21 7月1日 东二333 e使用菜单实现功能的正确的选择 f 所有节点信息都是动态生成。 6测试程序 应列出测试大纲对程序进行测试; 应保证测试用例测试到程序的各种边缘情况
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值