不是考试题,是我的一个编程任务,我变得差不多了,那位高手能帮我改改以满足要求 
以下是我自己编的程序: 
#include<stdio.h> 
#include<stdlib.h> 
#include<string.h> 
 
#define BUFLEN  80      /* 缓冲区最大字符数 */ 
#define LEN     30      /* 学号和姓名最大字符数,实际请更改 */ 
#define N       200     /* 最大学生人数,实际请更改*/ 
 
struct record 
{ 
    char    code[LEN+1];    /* 学号 */ 
    char    name[LEN+1];    /* 姓名 */ 
    int     age; 
    char    sex[3]; 
    char    job[LEN+1]; 
    char    add[LEN+1]; 
    char    tel[LEN+1]; 
    char    mail[LEN+1]; 
        char    qq[LEN+1]; 
}stu[N]; 
int k=1,n,m; 
int count=0; 
char   Number[8]; 
void readfile();/* 函数声明 */ 
void seek(); 
void modify(); 
void insert(); 
void del(); 
void display(); 
void save(); 
void menu(); 
 
int main() 
{   
        readfile(); 
        printf("当前您的名片有%d张\n",count); 
        if(count==0) 
        { 
                printf("这是你第一次进入系统,请输入你的注册码(你的学号……)!\n"); 
                scanf("%d",&Number); 
        } 
        while(k)  
    menu(); 
    system("pause"); 
    return 0; 
} 
  
void readfile()/* 建立信息 */ 
{ 
    char buf[BUFLEN],*p="Cards.dat"; 
    FILE *fp; 
    int i=0; 
    if ((fp=fopen("Cards.dat","r"))==NULL) /* 把此程序和文件student.dat放在同一目录下 */ 
    {    
                printf("文件读取失败,可能并未建立文件!\n"); 
                return; 
    } 
    while(fscanf(fp,"%s %s%d%s %s %s %s %s %s",stu[i].code,stu[i].name,&stu[i].age, 
    stu[i].sex,stu[i].job,stu[i].add,stu[i].tel,stu[i].mail,stu[i].qq)==9) 
    { 
        i++; 
                count++; 
    } 
    fclose(fp); 
    n=i; 
    printf("录入完毕!\n"); 
} 
 
void seek() 
{int i,j,item,flag; 
 int number=1; 
 char s1[LEN+1]; /* 以姓名和学号最长长度+1为准 */ 
        printf("请输入要查询的学生的姓名:\n"); 
        scanf("%s",s1); 
        for(i=0;i<n;i++) 
                { 
            if(strcmp(stu[i].name,s1)==0) 
            {    
                                flag=1; 
                printf("该学生姓名,年龄,性别,职位,地址,电话,E-mail QQ号码 分别为:\n"); 
                printf("%d   %s  %d  %s  %s  %s  %s  %s %s\n",number++,stu[i].name,stu[i].age, 
                stu[i].sex,stu[i].job,stu[i].add,stu[i].tel,stu[i].mail,stu[i].qq); 
            } 
                        else if(stu[i].name[0]==s1[0]) 
                        { 
                                flag=1; 
                printf("该学生姓名,年龄,性别,职位,地址,电话,E-mail QQ号码 分别为:\n"); 
                printf("%d  %s  %d  %s  %s  %s  %s  %s %s\n",number++,stu[i].name,stu[i].age, 
                stu[i].sex,stu[i].job,stu[i].add,stu[i].tel,stu[i].mail,stu[i].qq); 
                        } 
                } 
        if(flag==0) 
            printf("该姓名不存在!\n");    
} 
 
int checkEmail(char sl[]) 
{ 
        int i; 
           for(i=0;i<n;i++) 
        { 
                if(strcmp(stu[i].mail,sl)==0)         
                { 
                         printf("对不起,这个Email已经有了!操作失败:\n"); 
                        return 0; 
                } 
        } 
        return 1; 
} 
 
void modify() /*修改信息*/ 
{int i,j,item,num; 
 char sex1[3],s1[LEN+1],s2[LEN+1]; /* 以姓名和学号最长长度+1为准 */ 
 printf("请输入要要修改的学生的学号:\n"); 
        scanf("%s",s1); 
 for(i=0;i<n;i++) 
 if(strcmp(stu[i].code,s1)==0) 
    num=i; 
printf("------------------\n"); 
printf("1.修改姓名\n"); 
printf("2.修改年龄\n"); 
printf("3.修改性别\n"); 
printf("4.修改职位\n"); 
printf("5.修改地址\n"); 
printf("6.修改电话号码\n"); 
printf("7.修改E-mail地址\n"); 
printf("8.修改QQ号码\n"); 
printf("9.退出本菜单\n"); 
printf("------------------\n"); 
while(1) 
{   printf("请选择子菜单编号:"); 
    scanf("%d",&item); 
    switch(item) 
    { 
    case 1: 
        printf("请输入新的姓名:\n"); 
        scanf("%s",s2); 
        strcpy(stu[num].name,s2);     break;  
    case 2: 
        printf("请输入新的年龄:\n"); 
        scanf("%d",&stu[num].age);break; 
    case 3: 
        printf("请输入新的性别:\n"); 
        scanf("%s",sex1); 
        strcpy(stu[num].sex,sex1);     break; 
    case 4: 
        printf("请输入新的出生年月:\n"); 
        scanf("%s",s2); 
        strcpy(stu[num].job,s2);     break; 
    case 5: 
        printf("请输入新的地址:\n"); 
        scanf("%s",s2); 
        strcpy(stu[num].add,s2);     break; 
    case 6: 
        printf("请输入新的电话号码:\n"); 
        scanf("%s",s2); 
        strcpy(stu[num].tel,s2);     break; 
    case 7: 
        printf("请输入新的E-mail地址:\n"); 
        scanf("%s",s2); 
if(checkEmail(s2)==1) 
        { 
          strcpy(stu[num].mail,s2); 
        } 
     break; 
    case 8: printf("请输入新的QQ号码:\n"); 
                        scanf("%s",s2); 
                        strcpy(stu[num].qq,s2);     break; 
        case 9:return; 
    default:printf("请在1-8之间选择\n"); 
    } 
} 
} 
 
void insert() 
{   int i=n,j,flag; 
    char mail[20]; 
    printf("请输入待增加的学生数:\n"); 
    scanf("%d",&m); 
    do  
    {   flag=1; 
        while(flag) 
        {   flag=0; 
            printf("请输入第 %d 个学生的学号:\n",i+1); 
            scanf("%s",stu[i].code);         
            for(j=0;j<i;j++)  
            if(strcmp(stu[i].code,stu[j].code)==0) 
            {   printf("已有该学号,请检查后重新录入!\n"); 
                flag=1; 
                break; /*如有重复立即退出该层循环,提高判断速度*/ 
            } 
        } 
        printf("请输入第 %d 个学生的姓名:\n",i+1); 
        scanf("%s",stu[i].name); 
        printf("请输入第 %d 个学生的年龄:\n",i+1); 
        scanf("%d",&stu[i].age); 
        printf("请输入第 %d 个学生的性别:\n",i+1); 
        scanf("%s",stu[i].sex); 
        printf("请输入第 %d 个职位:\n",i+1); 
        scanf("%s",stu[i].job); 
        printf("请输入第 %d 个学生的地址:\n",i+1); 
        scanf("%s",stu[i].add); 
        printf("请输入第 %d 个学生的电话:\n",i+1); 
        scanf("%s",stu[i].tel); 
        printf("请输入第 %d 个学生的E-mail:\n",i+1); 
        scanf("%s",&mail); 
        while(checkEmail(mail)!=1) 
        { 
         printf("请输入第 %d 个学生的E-mail:\n",i); 
         scanf("%s",&mail); 
           
        } 
        strcpy(stu[i].mail,mail); 
        printf("请输入第 %d 个学生的QQ号码:\n",i+1); 
        scanf("%s",stu[i].qq); 
        if(flag==0)  
        { 
            i++; 
        } 
    }while(i<n+m); 
    n+=m; 
    printf("录入完毕!\n\n"); 
} 
 
void del() 
{   int i,j,flag=0; 
    char s1[LEN+1]; 
    printf("请输入要删除学生的学号:\n"); 
    scanf("%s",s1); 
    for(i=0;i<n;i++) 
    if(strcmp(stu[i].code,s1)==0) 
    {   flag=1; 
        for(j=i;j<n-1;j++) 
            stu[j]=stu[j+1]; 
    } 
    if(flag==0) 
    printf("该学号不存在!\n"); 
    if(flag==1) 
    { 
        n--; 
        printf("删除成功,显示结果请选择菜单6\n"); 
    } 
} 
 
void display() 
{   int i,j; 
        printf("你的注册码是08931133\n"); 
    printf("所有学生的信息为:\n"); 
    for(i=0;i<n;i++) 
    { 
        printf("%s  %s  %d  %s  %s  %s  %s  %s %s\n",stu[i].code,stu[i].name,stu[i].age, 
                stu[i].sex,stu[i].job,stu[i].add,stu[i].tel,stu[i].mail,stu[i].qq); 
    } 
} 
 
void save() 
{   int i,j,k,flag=0; 
    FILE *fp; 
    fp=fopen("Cards.dat","w"); 
    for(i=0;i<n;i++) 
    {   fprintf(fp,"%s  %s  %d  %s  %s  %s  %s  %s  %s\n",stu[i].code,stu[i].name,stu[i].age, 
                stu[i].sex,stu[i].job,stu[i].add,stu[i].tel,stu[i].mail,stu[i].qq); 
    } 
    fclose(fp); 
} 
 
void menu()/* 界面  */ 
{   int num; 
    printf(" \n\n简易学生通讯录系统\n\n"); 
    printf("*****系统功能菜单*****\n"); 
    printf("----------------------\n"); 
    printf("1.查询学生信息\n"); 
    printf("2.修改学生信息\n"); 
    printf("3.增加学生信息\n"); 
    printf("4.按学号删除信息\n"); 
    printf("5.显示当前信息\n"); 
    printf("6.保存当前学生信息(要把修改保存到文件,退出程序前必须执行本项)\n"); 
    printf("7.退出系统\n"); 
    printf("----------------------\n"); 
    printf("请选择菜单编号:"); 
    scanf("%d",&num); 
    switch(num) 
    {  
    case 1 ek();break; 
    case 2:modify();break; 
    case 3:insert();break; 
    case 4:del();break; 
    case 5:display();break; 
    case 6 ve();break; 
    case 7:k=0;break; 
    default:printf("请在1-7之间选择\n"); 
    }  
} 
 
 
谢了 |