回 帖 发 新 帖 刷新版面

主题:新手求助,一个通讯录,不会找错误,求大神解救。

我想弄个通讯录之类的程序,对这方面不是很熟悉,对几个程序东拼西凑,弄出了这个程序。本来参考程序都是正确的,拼凑之后的程序错漏百出。这是我的程序,第一次就这么惨不忍睹,求大神帮忙看看,到底错在哪里,应该怎么改?


#include"stdio.h"
#include<stdlib.h> 
#include<string.h> 
#include"process.h"
#include"ctype.h"
typedef struct 
{
    char num[15];
    char name[10];
    char dormitory[5];
    char QQ[10];
    char phone[15]; 
}Student;
Student stu[99];

int shuru(Student stud[],int n)/*输入若干条记录*/
{
    int i=0;
    char sign,x[10];
    double a=0.0;    
while(sign!='n'&&sign!='N') 

printf("输入学生姓名:"); 
scanf("%s",stu[n+i].name); 
printf("输入学生学号:"); 
scanf("%s",stu[n+i].num);                                     
printf("输入学生的宿舍:");
scanf("%s",&stu[n+i].dormitory);
printf("输入学生的QQ:");
scanf("%s",&stu[n+i].QQ);
printf("输入学生的电话:");
scanf("%s",&stu[n+i].phone);
gets(x);   /*清除多余的输入*/ 
printf("是否继续输入?(Y/N):\n");
scanf("%c",&sign);
i++; 

return(n+i);
}

void xianshi(Student stud[],int n) /*显示所有记录*/


  int i ;
  printf("-----------------------------------------------------------------------------------------\n"); /*格式头*/ 
  printf("姓名            学号                     宿舍         QQ              电话号码           \n"); 
  printf("-----------------------------------------------------------------------------------------\n");
  for(i=0;i<n;i++) 
  { 
    printf("%-10s%-15s%-5s%-15s%-15s%\n",stu[i].name,stu[i].num,stu[i].dormitory,stu[i].QQ,stu[i].phone);                                                
  }
}


void xiugai(Student stud[],int n)/*修改*/
{
 int i=0,choice=1;
 char x[10]; 
    while(choice!=0)
    {   printf("请输入您要修改的学生的学号:\n");
        scanf("%s",x);
        for(i=0;;i++)
        {
            if(strcmp(stu[i].num,x)==0)  break;
            
        }
        printf("请选择您要修改的内容:\n");
        printf(" ---------------------- \n"); 
        printf("| 姓名              请按 1 |\n");
        printf("| 宿舍              请按 2 |\n");
        printf("| QQ                请按 3 |\n");
        printf("| 电话号码          请按 4 |\n");
        printf("| 退出              请按 0|\n");
        printf("+----------------------+\n");
        printf("请输入您的选择:");
        scanf("%d", &choice);
        switch(choice)
        {                                                          
            case 0:break; 
            case 1:
                printf("请输入新姓名:");
                scanf("%s", stu[i].name);
                break; 
            case 2:                                               
                printf("请输入新的宿舍:");    
               scanf("%d", &stu[i].dormitory);
                break;
            case 3:
                printf("请输入新的QQ:");
               scanf("%d",&stu[i].QQ);
                break;
            case 4:
                printf("请输入新的电话号码:");                                          
               scanf("%d", &stu[i].phone);
                break;
            default:
                printf("\n无效选项!");
                break;
        } break;
    
       }
    
    return;
}                                                                    
int shanchu(Student stud[],int n) /*按姓名查找,删除一条记录*/  
{ char s[20]; 
int i;
int j; 
i=0;
printf("输入要删除记录的姓名:"); 
scanf("%s",s); 
while(strcmp(stu[i].name,s)!=0&&i<n) i++; 
if(i==n) 
{printf("not find!\n"); 
return(n); }                                                                    
for(j=i;j<n-1;j++) /*删除操作*/ 

strcpy(stu[j].num,stu[j+1].num); 
strcpy(stu[j].name,stu[j+1].name); 
stu[j].dormitory=stu[j+1].dormitory; 
stu[j].QQ=stu[j+1].QQ; 
stu[j].phone=stu[j+1].phone; 

printf("Delete Successed!\n"); 
return(n-1); 



void chaxun_xingming(Student stud[],int n) /*按姓名查找并显示一个记录*/ 
{ char s[20];                    
int i=0; 
printf("输入姓名:"); 
scanf("%s",s); 
while(strcmp(stu[i].name,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{printf("not find!\n"); /*输入失败信息*/ 
return;  }
printf("他的姓名、学号是:%s   %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/ 
printf("宿舍 QQ 电话号码是:%s,%s,%s\n",stu[i].dormitory,stu[i].QQ,stu[i].phone);               
}  


void chaxun_xuehao(Student stud[],int n) /*按姓名查找并显示一个记录*/ 
{ char s[20];                    
int i=0; 
printf("输入学号:"); 
scanf("%s",s); 
while(strcmp(stu[i].num,s)!=0&&i<n) i++; /*查找判断*/ 
if(i==n) 
{printf("not find!\n"); /*输入失败信息*/ 
return;  }
printf("他的姓名、学号是:%s   %s\n",stu[i].name,stu[i].num); /*输出该学生信息*/ 
printf("宿舍 QQ 电话号码是:%s,%s,%s\n",stu[i].dormitory,stu[i].QQ,stu[i].phone);               
}  

                                
void chaxun_dormitory(Student stud[],int n) /*按宿舍查找并显示一个记录*/ 
{ char s;                   
int i=0; 
printf("请输入宿舍:"); 
scanf("%s",&s); 
while(stu[i].dormitory!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/ 
return;                                        

printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/ 
printf("他的姓名是:%s\n",stu[i].name); 
printf("他的宿舍是:%s\n",stu[i].dormitory,); 
printf("他的QQ是:%s\n",stu[i].QQ);               
printf("他的电话号码是:%s\n",stu[i].phone);



void chaxun_QQ(Student stud[],int n) /*按QQ查找并显示一个记录*/ 
{ char s;                   
int i=0; 
printf("请输入QQ:"); 
scanf("%s",&s); 
while(stu[i].QQ!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/ 
return;                                        

printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/ 
printf("他的姓名是:%s\n",stu[i].name); 
printf("他的宿舍是:%s\n",stu[i].dormitory,); 
printf("他的QQ是:%s\n",stu[i].QQ);               
printf("他的电话号码是:%s\n",stu[i].phone);
}


void chaxun_phone(Student stud[],int n) /*按电话号码查找并显示一个记录*/ 
{ char s;                   
int i=0; 
printf("请输入phone:"); 
scanf("%s",&s); 
while(stu[i].phone!=s && i<n) i++;
if(i==n)
{ printf("not find!\n"); /*输入失败信息*/ 
return;                                        

printf("他的学号是:%s\n",stu[i].num); /*输出该学生信息*/ 
printf("他的姓名是:%s\n",stu[i].name); 
printf("他的宿舍是:%s\n",stu[i].dormitory,); 
printf("他的QQ是:%s\n",stu[i].QQ);               
printf("他的电话号码是:%s\n",stu[i].phone);
}

void paixu_xuehao(Student stud[],int n) /*按学号排序*/ 
{ int i,j,p,q;
  char y;
  char x[20],t[10];
 for(i=0;i<n-1;i++) /*冒泡法排序*/ 
for(j=0;j<n-1-i;j++) 
if(strcmp(stud[j].num,stud[j+1].num)>0) 
{ strcpy(t,stud[j].num); 
  strcpy(stud[j].num,stud[j+1].num); 
  strcpy(stud[j+1].num,t); 
  strcpy(x,stud[j].name); 
  strcpy(stud[j].name,stud[j+1].name); 
  strcpy(stud[j+1].name,x); 
  y=stu[j].dormitory;stu[j].dormitory=stu[j+1].dormitory;stu[j+1].dormitory=y;
  p=stu[j].QQ;stu[j].QQ=stu[j+1].QQ;stu[j+1].QQ=p;
  q=stu[j].phone;stu[j].phone=stu[j+1].phone;stu[j+1].phone=q;

return;
}

void paixu_xingming(Student stud{},int n) /*按姓名排序*/

int i,j,num;
 struct student stt;
for (i=1;i<=n;i++)
       for (j=i+1;j<=n;j++)
       if (strcmp((*stu)[i].name,(*stu)[j].name)>0)
    {
     stt=(*stu)[i];
     (*stu)[i]=(*stu)[j];
     (*stu)[j]=stt;
    };
    break;
  default:;
  };
 display(n,*stu);
}



int menu()          /*菜单函数*/ 

int c;                                                     
do{ 
   printf("\t\t**********班级同学信息管理程序********************\n");
   printf("\t\t  1. 编辑 \n");
   printf("\t\t  2. 显示 \n");
   printf("\t\t  3. 查询 \n"); 
   printf("\t\t  4. 排序\n"); 
   printf("\t\t  0. 退出 \n"); 
   printf("*******************************************************\n"); 
     printf("\t\t\t请选择(0-4):"); 
     scanf("%d",&c);
}while(c<0||c>4); 
return(c-0); /*返回选择*/ 

}   


int bianji()
{
 printf("\t\t 1. 加入\n"); 
 printf("\t\t 2 .修改\n"); 
 printf("\t\t 3. 删除 \n"); 
 printf("\t\t 按其它数字键退出 \n");
int i;
scanf("%d",&i);
return i;
}


int chaxun()
{
 printf("\t\t 1. 按姓名查询\n"); 
 printf("\t\t 2 .按学号查询\n"); 
 printf("\t\t 2 .按宿舍查询\n"); 
 printf("\t\t 2 .按QQ查询\n"); 
 printf("\t\t 2 .按电话号码查询\n"); 
 printf("\t\t  按其它数字键退出\n");
int i;
scanf("%d",&i);
return i;
}


int paixu()
{
     printf("\t\t 1. 按学号\n"); 
     printf("\t\t 2 .按姓名\n");
     printf("\t\t按其它数字键退出\n");
 
     int i;
      scanf("%d",&i);
      return i;
}



void main()    /*主函数*/ 

int n=0; 
for(;;)
{
     for(;;) 
    { 
        switch(menu()) 
        { 
  case 1:  switch(bianji())
            {
               case 1:n=shuru(stu,n);xianshi(stu,n); break;
                  
               case 2:xiugai(stu ,n);xianshi(stu,n); break;
               case 3:shanchu(stu ,n);xianshi(stu,n); break;
           } break; 
  case 2:xianshi(stu,n);break; 
  case 3: 
             switch(chaxun())
            {
               case 1:chaxun_xingming(stu,n);break;
               case 2:chaxun_xuehao(stu ,n);break;    
               case 3:chaxun_dormitory(stu ,n);break;
               case 4:chaxun_QQ(stu ,n);break;    
               case 5:chaxun_phone(stu ,n);break;     
           } break; 
  case 4:  switch(paixu())
            {
               case 1:paixu_xuehao(stu,n);xianshi(stu,n); break ;          
               case 2:paixu_xingming(stu ,n);xianshi(stu,n);break;
           } break; 
  
  case 0: 
              exit(0);   /*结束程序*/ 
        } 
     }
}
}[code=c]
请填写代码
[/code][code=c]
请填写代码
[/code]

回复列表 (共2个回复)

沙发

坐等大神降临。

板凳

加我QQ754634522,李老师,

我来回复

您尚未登录,请登录后再回复。点此登录或注册