| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1538 人关注过本帖
标题:请问c语言如何实现按姓名查找?
只看楼主 加入收藏
samly24
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2008-9-21
收藏
 问题点数:0 回复次数:0 
请问c语言如何实现按姓名查找?
我现在做作业 一个小型系统
请问如何按姓名查找呢
不用用指针的
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<conio.h>
struct men
{
    char name[20];
    int income;
};
struct men input();
void display(struct men[],int);
char name(struct men[],char,char);
int fand(struct men stu[],int count,char name[20]);
void xmcz(struct men stu[],int count);
int find(struct men stu[],int count,int income);
void srcz(struct men[],int count);
void namesort(struct men[],int);
void insort(struct men[],int);
void grossincome(struct men stu[],int count);
int main(void)
{
    struct men stu[20];
    int count=0;
    char sel='1',flag;
    while(sel!='8')
    {
        system("cls");
        printf("--------2手房交易系统---------\n\n");
        printf("1.信息录入\n2.所有人信息\n3.按姓名查找\n4.按收入查找\n5.按收入排序\n6.按姓名排序\n7.统计收入总额\n8.退出\n");
        printf("\n请选择: ");
        sel=getchar();
        switch(sel)
        {
        case'1':
            system("cls");
            do{
                stu[count]=input();
                count++;
                printf("是否继续?(y/n):");
                fflush(stdin);
                flag=getchar();
            }while(flag=='y'||flag=='Y');break;
        case'2':
            display(stu,count);
            break;
        case'3':
            xmcz(stu,count);
            break;
        case'4':
            srcz(stu,count);
            break;
        case'5':
            insort(stu,count);
            break;
        case'6':
            namesort(stu,count);
            break;
        case'7':
            grossincome(stu,count);
            break;
        }
        
    }
    
}

struct men input()
{
    struct men stu;
    printf("输入姓名:\n");
    scanf("%s",&stu.name);
    printf("\n输入收入: ");
    scanf("%d",&stu.income);
    return stu;
}
void display(struct men stu[],int count)
{
    system("cls");
    int i;
    printf("姓名\t  收入\n");
    printf("====\t  ====\n");
    for(i=0;i<count;i++)
    {
        printf("%s\t  %d",stu[i].name,stu[i].income);
        //printf("%d",stu[i].income);
        printf("\n");
    }
    
    printf("按任意键返回主菜单:  ");
    getch();
}
int fand(struct men stu[],int count,char name[20])
{
    int i;
    for(i=0;i<count;i++)
    {
        if(stu[i].name==name[20])
            return i;
    }
    return -2;
}
void xmcz(struct men stu[],int count)
{
    int onename,i;
    system("cls");
    printf("请输入你要找的人姓名\n");
    scanf("%s",onename);
    i=fand(stu,count,onename);
    if(i==-2)
    {
        printf("你输入的姓名不存在!按任意键返回主菜单");
        getch();
        return;
    }
    printf("姓名\t  收入\n");
    printf("====\t  ====\n");
    printf("%s\t  %d",stu[i].name,stu[i].income);
    printf("按任意键返回主菜单: ");
    getch();
}


int find(struct men stu[],int count,int income)
{
    int i;
    for(i=0;i<count;i++)
    {
        if(stu[i].income==income)
            return i;
    }
    return -1;
}
void srcz(struct men stu[],int count)
{
    int oneincome,i;
    system("cls");
    printf("请输入您要查找人的收入\n");
    scanf("%d",&oneincome);
    i=find(stu,count,oneincome);
    if(i==-1)
    {
        printf("您输入的用户不存在,按任意键返回主菜单继续\n");
        getch();
        return;
    }
    printf("姓名\t  收入\n");
    printf("====\t  ====\n");
    printf("%s\t  %d",stu[i].name,stu[i].income);
    printf("按任意键返回主菜单: ");
    getch();
}

void namesort(struct men stu[],int count)
{
     system("cls");
     char temp[20];
     printf("\n按姓名排序:\n");
     for(int i=0;i<count;i++)
     {
             for(int j=i+1;j<count;j++)
             {
                 if(strcmp(stu[i].name,stu[j].name)>0)
                 {
                    strcpy(temp,stu[i].name);
                    strcpy(stu[i].name,stu[j].name);
                    strcpy(stu[j].name,temp);
                 }
             }
     }
     for(int i=0;i<count;i++)
     {
             printf("%s %d\n",stu[i].name,stu[i].income);
     }   
     printf("\n姓名排序已经完成,按任意键返回主菜单.");
     getch();
}                                                                  

void insort(struct men stu[],int count)
{
     system("cls");
     struct men temp;
     printf("\n按收入排序:\n");
     for(int i=0;i<count;i++)
     {
         for(int j=i+1;j<count;j++)
         {
             if(stu[i].income>stu[j].income)
             {
                temp=stu[i];
                stu[i]=stu[j];
                stu[j]=temp;
             }
         }
     }                                                                    
     for(int i=0;i<count;i++)
     {
             printf("%s %d\n",stu[i].name,stu[i].income);
     }   
     printf("\n收入排序已经完成,按任意键返回主菜单.");
     getch();
}
    
void grossincome(struct men stu[],int count)
{
    system("cls");
    int all=0;
    for(int i=0;i<count;i++)
    {
        all+=stu[i].income;
    }
    printf("收入总额为:");
    printf("%d\n",all);
    printf("收入总额已经计算好,按任意键返回主菜单!");
    getch();
}
    
    
    
    
    

    
    
    



就差一个按姓名查找功能没做了 到现在还没想到。。。
搜索更多相关主题的帖子: c语言 姓名 
2008-09-23 19:13
快速回复:请问c语言如何实现按姓名查找?
数据加载中...
 
   



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

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