| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 710 人关注过本帖
标题:求测试成功通讯录程序
取消只看楼主 加入收藏
艳阳初
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-30
结帖率:0
收藏
已结贴  问题点数:20 回复次数:3 
求测试成功通讯录程序

以下是我编写的源代码,可以运行,但是测试的时候有些功能不能实现,求大神指导!
/*通讯录的制作
模块要求:
    第一个模块——主函数main()的功能是:根据选单的选项调用各函数,
          并完成相应的功能。
  第二个模块——Menu()的功能是:显示英文提示选单。
  第三个模块——Quit()的功能是:退出选单。
  第四个模块——Create()的功能是:创建新的通讯录。
  第五个模块——Add()的功能是:在通讯录的末尾,写入新的信息,并返回选单。
  第六个模块——Find()的功能是:查询某人的信息,如果找到了,
           则显示该人的信息,如果未找到,则提示通讯录中没有此
           人的信息,并返回选单。
  第七个模块——Alter()的功能是:修改某人的信息,
          如果未找到要修改的人,则提示通讯录中没有此人的信息,并返回选单。
  第八个模块——Delete()的功能是:删除某人的信息,
          如果未找到要删除的人,则提示通讯录中没有此人的信息,并返回选单。
  第九个模块——List()的功能是:显示通讯录中的所有记录。

 设计要求:
1) 每条信息至包含 :姓名(NAME )、性别(GENDER)、电话(TEL) 、
   城市(CITY)邮编(EIP)几项。
2) 作为一个完整的系统,应具有友好的界面和较强的容错能力*/

#include<stdio.h>
#include<stdlib.h>
#include<string>
#include<conio.h>
#define M 100
#define N 100

struct tongxunlu    //定义储存学生信息的结构体
{
char name[6];//姓名
char gender[2];//性别
char tel[11];//电话号码
char city[10];//居住城市
char eip[6];//邮编
};

void main()
{
    char choose,yes_no;
    void Quit();
void manu();
void Create();
void Add();
void Find();
void Alter();
void Delete();
void List();

do
{
manu();  //显示主菜单界面
printf("                  ");
choose=getchar();
switch(choose)//根据选择进行相应的操作
{
case'1':Create();break;/*创建*/
case'2':Add();break;/*添加*/
case'3':Find();break;/*查询*/
case'4':Alter();break;/*修改*/
case'5':Delete();break;/*删除*/
case'6':List();break;/*显示*/
case'0':Quit();break;/*退出选单*/
default:printf("\n      %c为非法选项!\n",choose);
}

printf("\n        要继续选择吗?(y/n)\n");
do
{
yes_no=getchar();

}while(yes_no!='Y'&&yes_no!='y'&&yes_no!='N'&&yes_no!='n');
}while(yes_no!='Y'||yes_no!='y');
}



// 以下是各函数模块
    //菜单显示函数manu()
void manu()
{
printf("\n\n\n\n\n");
printf("|----------------------------------------   |\n");
printf("                 请输入编号0—7:           \n");
printf("|----------------------------------         |\n");
printf("|     0 Quit     --退出选单                 |\n");
printf("|     1 Create() --创建信息查询系统         |\n");
printf("|     2 Add()    --添加信息查询系统         |\n");
printf("|     3 Find()   --查询某人的信息           |\n");
printf("|     4 Alter()  --修改某人的信息           |\n");
printf("|     5 Delete() --删除某人的信息           |\n");
printf("|     6 List()   --显示通讯录中的所有记录   |\n");
printf("|----------------------------------------   |\n");
}

//0 Quit     --退出选单
void Quit()
{char c;
c=getchar();
while(c==0);
    system("cls");
    printf("\n");
    printf("\t   系统已退出!\n");
    printf("\t                谢谢使用!!          \n");
    printf("\n");
}
// 1、Create() --创建信息查询系统      
 void create()
 {
int i=1;
struct tongxunlu temp;
FILE *fp;
fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","w+");
if(fp==NULL)
{
printf("\n        打开文件失败!\n");
return;
}
printf("\n            请输入第一个记录:\n");
printf("                姓名(用#号结束输入):");
do
{
gets(temp.name);
}while(strcmp(temp.name,"")==0);

printf("             性别(用#号结束输入:)");
gets(temp.gender);

printf("             电话号码(用#号结束输入:)");
gets(temp.tel);

printf("             居住城市(用#号结束输入:)");
gets(temp.city);

printf("             邮编(用#号结束输入:)");
gets(temp.eip);

while(temp.name[0]!='#'&&temp.gender[0]!='#'&&temp.tel[0]!='#'&&temp.city[0]!='#'&&temp.eip[0]!='#')
{
fprintf(fp,"%23s%15s%15s\n",temp.name,temp.gender,temp.tel,temp.city,temp.eip);
i++;
printf("\n        请输入第%d个记录:\n",i);
do
{
gets(temp.name);
}while(strcmp(temp.name,"")==0);

printf("             性别(用#号结束输入:)");
gets(temp.gender);

printf("             电话号码(用#号结束输入:)");
gets(temp.tel);

printf("             居住城市(用#号结束输入:)");
gets(temp.city);

printf("             邮编(用#号结束输入:)");
gets(temp.eip);

fclose(fp);
}
 }

 //2 Add()    --添加信息查询系统   
 void Add()
{
char c;
int n=0;
struct tongxunlu temp,record[M],*p;
FILE*fp;

fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
         if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
p=record;
 while(feof(fp)==0)
         {
         fscanf(fp,"15%s15%s15%s15%s15%s\n",p->name,p->gender,p->tel,p->city,p->eip);
         p++;
         n++;
         }
         fclose(fp);

    do
    {  
    printf("\n   请输入新记录的学生姓名:\n ");
    do
    {
    gets(temp.name);
    }while(strcmp(temp.name,"")==0);
printf("             性别(用#号结束输入:)");
gets(temp.gender);

printf("             电话号码(用#号结束输入:)");
gets(temp.tel);

printf("             居住城市(用#号结束输入:)");
gets(temp.city);

printf("             邮编(用#号结束输入:)");
gets(temp.eip);

    for(p=record;p<record+n;p++)
        if(strcmp(temp.name,p->name)==0)
        {
        printf("\n 姓名重复需要重新输入吗?(y/n)\n");
        do
        {
        c=getchar();
        }while(c!='Y'&&c!='y'&&c!='n'&&c!='N');
        putchar('\n');
        break;
        }
   

    if(p==record+n)
{
*p=temp;
break;
}
}while(c=='y'||c=='Y');

fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
         if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
for(p=record;p<record+n;p++)
fprintf(fp,"15%s15%s15%s15%s15%s\n",p->name,p->gender,p->tel,p->city,p->eip);
fclose(fp);
 
 }

 // 3 Find()   --查询某人的信息
 void Find()
{
     FILE*fp;
     int flag=0,n=0;
char tempname[10];
struct tongxunlu temp;

fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }

printf("\n   请输入要查询记录的姓名:");
gets(tempname);
while(feof(fp)==0)
{
fscanf(fp,"15%s15%s15%s15%s15%s\n",&temp.name,&temp.gender,&temp.tel,&temp.city,&temp.eip);
if(strcmp(tempname,temp.name)==0)
{
if(flag==0)
printf("      姓名    性别   电话号码  居住城市     邮编\n");
printf("15%s15%s15%s15%s15%s\n",temp.name,temp.gender,temp.tel,temp.city,temp.eip);
       flag=1;
}
n++;
}
if(n==0)
printf("\n 文中无记录!\n");
else
 if(flag==0)
     printf("\n文件中无此人!\n");
fclose(fp);
}
      

//4 Alter()  --修改某人的信息  
 void Alter()
 {
char c;
 int n; struct tongxunlu *find,temp,record[M],*p;//最多M条记录
 FILE*fp;
 fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
         if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
         p=record;
         while(feof(fp)==0)
         {
         fscanf(fp,"15%s15%s15%s15%s15%s\n",&temp.name,&temp.gender,&temp.tel,&temp.city,&temp.eip);
         p++;
         n++;
         }
         fclose(fp);
         if(n==0)
         {
         printf("\n文中无记录!\n");
         return;
         }
         printf("\n 请输入需要修改的记录的学生姓名:");
         gets(temp.name);
         for(p=record;p<record+n;p++);
         if(strcmp(temp.name,p->name)==0)
         {
         find=p;
   
         }
if (p==record+n)
{
printf("/n无此人!/n");
return;
}
do
{
printf("\n  请输入正确的姓名:");
do
{
gets(temp.name);
}while(strcmp(temp.name,"")==0);

printf("         请输入正确的性别:");
gets(temp.gender);

printf("     请输入正确的电话号码:");
gets(temp.tel);

printf("     请输入正确的居住城市:");
gets(temp.city);

printf("     请输入正确的邮编:");
gets(temp.eip);

for(p=record;p<record+n;p++)
    if((strcmp(temp.name,p->name)==0)&&(p!=find))
{
printf("\n      姓名重复,需要重新输入码?(Y/N)");
do
{
c=getchar();
}while(c!='y'&&c!='Y'&&c!='n'&&c!='N');
putchar('\n');
break;
}
if(p==record+n)
{
*find=temp;
break;
}
}while(c=='y'||c=='Y');

fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
         if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
for(p=record;p<record+n;p++)
fprintf(fp,"15%s15%s15%s15%s15%s\n",temp.name,temp.gender,temp.tel,temp.city,temp.eip);
fclose(fp);
 }

// 5 Delete() --删除某人的信息  
 void Delete()
 {
     int n=0;
char tempname[10];
struct tongxunlu record[N],*p,*k;
FILE*fp;
fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
p=record;
while(feof(fp)==0)
 {
         fscanf(fp,"15%s15%s15%s15%s15%s\n",p->name,p->gender,p->tel,p->city,p->eip);
         p++;
         n++;
         }
         fclose(fp);

         printf("\n请输入需要删除的学生的姓名:");
         gets(tempname);

         for(k=record;k<record+n;k++)
             if(strcmp(tempname,k->name)==0)
                 break;
             if(k<record+n)
                 for(p=k;p<k+n-1;p++)
                     *p=*(p+1);
                 else
                     printf("\n无此人!\n");
fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","w");
         if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
for(p=record;p<record+n-1;p++)
fprintf(fp,"15%s15%s15%s15%s15%s\n",p->name,p->gender,p->tel,p->city,p->eip);
fclose(fp);
}



 //6 List()   --显示通讯录中的所有记录
 void List()
{
int n=0;
struct tongxunlu temp;FILE*fp;
fp=fopen("g:\\个人专业学习\\数据结构\\tongxunlu.dat","r+");
         if(fp==NULL)
         {
         printf("/n打开文件失败!/n");
         return;
         }
system("cls");
 printf("      姓名    性别   电话号码  居住城市     邮编\n");
 while(feof(fp)==0)
 {
 fscanf(fp,"15%s15%s15%s15%s15%s\n",&temp.name,&temp.gender,&temp.tel,&temp.city,&temp.eip);
 printf("15%s15%s15%s15%s15%s\n",temp.name,temp.gender,temp.tel,temp.city,temp.eip);
 n++;
 }
if(n==0)
printf("文件中无记录!\n");
else printf("文件中共有%d个记录!\n",n);
fclose(fp);
}

  










搜索更多相关主题的帖子: 通讯录 源代码 Create 英文 
2014-05-30 16:15
艳阳初
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-30
收藏
得分:0 
回复 2 楼 wp231957
我自己写的代码,仿照他人的模板
2014-05-30 18:24
艳阳初
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-30
收藏
得分:0 
回复 3 楼 砖家的谎言
模板函数感觉没问题啊,可就是实现不了,实现了也有错误,就是3打下的函数,江湖救急呵
2014-05-30 18:28
艳阳初
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2014-5-30
收藏
得分:0 
回复 2 楼 wp231957
看你都5个太阳的级别了,这个对你来说应该是小case,求大神出手相助
2014-05-30 18:36
快速回复:求测试成功通讯录程序
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025499 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved