学习型 ASP/PHP/ASP.NET 主机 30元/年全能 ASP/PHP/ASP.NET 主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付
 16 12
发新话题
打印

菜菜鸟..复杂问题 查询删除修改指定数组元素...!

菜菜鸟..复杂问题 查询删除修改指定数组元素...!

我想大家提供一个思路给我 谢谢了!

假设
我输入多个工程师资料 保存在数组里面 相同的数组标示符储存同一个工程师的资料

然后我想通过编号 查询或者修改或者删除指定删除一个或者或者多个工程师资料

当然删除全部 我用for循环就能搞定

我的思路也是做个循环..首先循环一次所有工程师编号 每个工程师编号 都返回自己的编号

当我输入的编号 等于 返回的编号 就认为找到了想要查询的信息了.. 可是循环没办法做 因为 return 带值返回只能用一次

循环不成立..

我想实现这个功能 但是不知道改怎么做 希望大家能指点一二

代码如下:
引用:
/********************************************************
** Highlight software by yzfy(雨中飞燕) http://yzfy.org *
*********************************************************/
#include <stdio.h>
#include <stdlib.h>

#define N 10

void Menu(void);

int EngineerNo[N],EngineerSex[N],EngineerBirth,EngineerEducation[N],EngineerWorkYears[N],
    yes,year[N],month[N],day[N],i,no;
char EngineerName[N][20],EngineerHometown[N][10],EngineerAddress[N][30],EngineerPhone[N][15],yesno;
float EngineerBaseSalary[N];



void main(void)
{
    while(1)
    {
        int menu=0;

        printf("\t-----------------------------------------------------\n");
        printf("\t|               软件测试工程师管理系统              |\n");
        printf("\t-----------------------------------------------------\n");
        printf("\t1.输入软件测试工程师资料\n");
        printf("\t2.删除指定测试工程师资料\n");
        printf("\t3.查询软件测试工程师资料\n");
        printf("\t4.修改软件测试工程师资料\n");
        printf("\t5.计算测试工程师的月薪水\n");
        printf("\t6.保存新添加的工程师资料\n");
        printf("\t7.对测试工程师信排序(1编号升序,2姓名升序, 3工龄升序)\n");
        printf("\t8.输出所有测试工程师信息\n");
        printf("\t9.清空所有测试工程师数据\n");
        printf("\t10.打印软件测试工程师 数据报表\n");
        printf("\t11.从文件重新导入测试工程师数据\n");
        printf("\t0.结束(编辑工程师信息后提示保存)\n");
        printf("\n\n");
   
   
        printf("\t请输入你的选择:",menu);
        scanf("%d",&menu);
        fflush(stdin);
        {
        switch(menu)
        {
            case    1:
                    Menu();
                    break;

            case     2:
                    /*我就想实现这个!查询指定编号的工程师信息*/
                    
break;

            default:
                    printf("\t您输入错误,系统进入主菜单\n");
                    break;
        }
        }
    }
}

/*********工程师输入信息*********/
void Menu(void)
{
    printf("\t确定输入工程师资料?(y/n)");
        while(1)
        {
            scanf("%c",&yesno);
            fflush(stdin);
            
            switch(yesno)    
            {
            case    'y':
                    for (i=0;i<N;i++)
                    {
                    printf("\t请输入工程师编号(1-2000):");
                    EngineerNo[i] = number();
                    fflush(stdin);

                    printf("\t请输入工程师姓名:");
                    scanf("%s",EngineerName[i]);
                    fflush(stdin);

                    printf("\t请输入工程师性别(0为男,1为女):");
                    EngineerSex[i] = engineerSex();
                    fflush(stdin);
                           
                    printf("\t请输入工程师生日(格式1988-06-18):");
                    while(1)
                    {
                    scanf("%d-%d-%d",&year[i],&month[i],&day[i]);
                    yes = engineerBirth(year[i],month[i],day[i]);
                        if (yes==0)
                            break;
                    }
                    fflush(stdin);


                    printf("\t请输入工程师籍贯:");
                    scanf("%s",EngineerHometown[i]);
                    fflush(stdin);

                    printf("\t请输入工程师学历(高中0.学士1.硕士2.博士3.其它为4):");
                    EngineerEducation[i] = engineerEducation();
                    fflush(stdin);

                    printf("\t请输入工程师地址:");
                    scanf("%s",EngineerAddress[i]);
                    fflush(stdin);

                    printf("\t请输入工程师电话:");
                    scanf("%s",EngineerPhone[i]);
                    fflush(stdin);

                    printf("\t请输入工程师工龄(0-50):");
                    EngineerWorkYears[i] = engineerWorkYears(EngineerWorkYears);
                    fflush(stdin);

                    printf("\t请输入工程师基本薪水:");
                    EngineerBaseSalary[i] = engineerBaseSalary();
                    fflush(stdin);

                    printf("\n");
                    printf("\t第%d工程师资料输入完毕,是否输入下一个工程师资料(y/n)?",i+1);
                    scanf("%c",&yesno);
                    fflush(stdin);
                        switch(yesno)    
                        {
                        case    'y':
                                break;
                        case    'n':
                                return;
                        }
                        printf("\n");
                    }        
                    break;

            case    'n':
                    printf("\t返回主菜单\n\n");
                    break;

            default:
                    printf("\t你输入错误请重新输入(y/n):");
            }
            break;
        }
}
[ 本帖最后由 剁吧剁吧 于 2008-5-7 17:14 编辑 ]

TOP

还有些函数就没贴出来了  大概意思就是我现在要实现第菜单2的功能
   能够查询单个的

TOP

Orz没听懂
LZ的思维不是一般的混乱啊……
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

写一个函数
Delete(int id)
函数里面用循环遍历数组,如果找到工程师编号等于id的,就删除这个工程师

如果要删除多个工程师,就多次调用这个函数
本帖最近评分记录
从BFS(Breadth First Study)到DFS(Depth First Study)

严重鄙视一切把论坛当成作业生成器和人肉搜索引擎的人

TOP

明白了。
留给广陵解决。这种问题麻烦不讨好……
专心编程………
飞燕算法初级群:3996098
我的Blog

TOP

我也觉得好乱.. 我就是想查询不同数组 同一小标的单个工程师信息而已...

TOP

引用:
以下是引用 永夜的极光 在 2008-5-7 17:17 的发言:

写一个函数
Delete(int id)
函数里面用循环遍历数组,如果找到工程师编号等于id的,就删除这个工程师

如果要删除多个工程师,就多次调用这个函数
送个版主一个铜板 这个思路不错..研究中

TOP

一个铜板少是少了点,不过蚊子腿也是肉

其实哦,这种题肯定是要用结构体的,你弄这么多个数组,太麻烦了
从BFS(Breadth First Study)到DFS(Depth First Study)

严重鄙视一切把论坛当成作业生成器和人肉搜索引擎的人

TOP

  我穷... 我看了同学的代码 明白是什么意思了
      我结构体还没学呢 最基础的学起 没办法..

TOP

回复 9# 的帖子

楼主,你是不是长沙的彭方成啊
你别把作业丢这里啊
o(∩_∩)o...
我秀我自己

TOP

 16 12
发新话题