实用编程——高级筛选
2018-06-18 04:08:28来源:未知 阅读 ()
在上学期的办公室工作中,其实很多次都需要用到高级筛选:比如,这里有一份系里同学正确的名字学号等信息,交上去后上面发下来一个总表,要你在几千个人中找出这些同学并核对他们的信息是否有误。往往这个时候我们就需要用到Excel中的高级筛选了,但是我在之前很多尝试中,发现WPS的高级筛选是没法使用的,后来换成Office2013也是如此,所以对工作造成了很大的困扰,每次都要百度很久,想各种办法才能找出所有的数据,如果数据量不大还好,可以通过查找等方式进行一一核对,但是这样始终不好,时间就是金钱,谁他丫花这么多时间去做这种低效率的事啊。
在有的时候,我们是通过学号找的人,但是学号万一错了就可能丢失了一个人。如果通过名字找,又有可能出现同名的人(高级筛选如果同名会出问题),导致工作量进一步增加。
之前写了一个勤工俭学核对的程序,能够比较高效得实现数据的核对。这里把它做了修改,可实现两种核对方式,结合使用,目前没发现有问题,以后的工作也会轻松些了。
/*代码在VC 6.0 cpp程序中编译通过*/
#include <stdio.h>
#include <string.h>
#include <Windows.h>
void BiduiXuehao();
void BiduiName();
int main(void)
{
char xuanze[2];
printf("请在程序正式工作前,将正确数据放入E:\\正确数据.txt中,将总表(需要核对的数据)放入E:\\核对数据.txt中,格式:名字 学号。准备好后请继续!\n");
system("pause");
while(1)
{
system("cls");
printf("请输入相应的序号,选择筛选模式:\n1、通过名字核对(若名字有错误可能会导致找不到人)\n2、通过学号核对(若学号有错误可能会导致找不到人)\n");
printf("请输入选择:");
while(1)
{
scanf("%s",xuanze);
if(strlen(xuanze) > 1)
printf("请重新选择:");
else
break;
}
switch(xuanze[0])
{
case '1':BiduiName();break;
case '2':BiduiXuehao();break;
default:printf("输入错误!");system("cls");break;
}
}
return 0;
}
void BiduiName(void)
{
int hang = 0,flag = 0;
FILE *pRight = fopen("E:\\正确数据.txt","r");
char RightName[20],HeduiName[20],RightNum[20],HeduiNum[20];
system("cls");
while(fscanf(pRight,"%s%s",RightName,RightNum) != EOF) //如果正确版本里的人没结束,那就继续
{
hang = 0;
flag = 0;
FILE *pHedui = fopen("E:\\核对数据.txt","r"); //重新打开文件查找
while(fscanf(pHedui,"%s%s",HeduiName,HeduiNum) != EOF)
{
hang++;
if(strcmp(RightName,HeduiName) == 0) //如果名字相同,则表示在总表中找到了这个同学,所以比较他们的学号是不是相同的
{
printf("总表中第%d行找到%s.",hang,RightName);
if(strcmp(RightNum,HeduiNum) == 0) //学号正确,则输出信息。
{
if(flag == 2)
printf("找到同名的%s,总表中此行的学号正确\n",RightName);
else
printf("Ta的学号正确。\n");
flag = 1;
break;
}
else
{
printf("Ta的学号有问题。正确的为:%s.此处为:%s 这里将继续检索是不是有同名的现象。\t",RightNum,HeduiNum);
flag = 2;
continue;
}
}
}
if(flag == 1) //已经找到正确的了
{
continue;
}
else if(flag == 2)
printf("总表中没有找到其他的%s。所以他的学号错误。\n\n",RightName);
else //到文件最后没找到这个同学
{
printf("总表中没有找到%s同学,建议通过Ta的学号看一下总表中名字是否有误\n",RightName);
}
fclose(pHedui);
}
fclose(pRight);
system("pause");
}
void BiduiXuehao(void)
{
int flag = 0;
FILE *pRight = fopen("E:\\正确数据.txt","r");
char RightName[20],HeduiName[20],RightNum[20],HeduiNum[20];
system("cls");
while(fscanf(pRight,"%s%s",RightName,RightNum) != EOF) //如果正确版本里的人没结束,那就继续
{
flag = 0;
FILE *pHedui = fopen("E:\\核对数据.txt","r"); //重新打开文件查找
while(fscanf(pHedui,"%s%s",HeduiName,HeduiNum) != EOF)
{
if(strcmp(RightNum,HeduiNum) == 0) //如果学号相同,则表示在总表中找到了这个同学,所以比较他们的名字是不是相同的
{
if(strcmp(RightName,HeduiName) == 0) //姓名正确,则输出信息。
{
printf("%sTa的学号正确。\n",RightName);
flag = 1;
break;
}
else
{
printf("学号为:%s的同学总表中名字有问题。正确的为:%s.总表为:%s",RightNum,RightName,HeduiName);
flag = 1;
}
}
}
if(flag == 1) //已经找到了
{
continue;
}
else //到文件最后没找到这个同学
{
printf("%s同学学号为%s,但是在总表中没有检索到相同学号的人\n",RightName,RightNum);
}
fclose(pHedui);
}
fclose(pRight);
system("pause");
}
这里就不附上截图了,因为试验用的都是同学的信息。有兴趣的可自作尝试。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- C代做 C++代做 C++编程代做 C++程序代做 2020-04-29
- 第七章 2.泛型编程(模板) 2020-04-04
- linux环境下的时间编程 2020-03-27
- C、C++ 标准输入重定向 & 万能头 - 编程技巧 2020-03-20
- C++ 常用编程--Swap函数有几种写法? 2020-02-26
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash