学习C/C++两个月,自编青年大学习查询工具

学习C/C++两个月,自编青年大学习查询工具

青年大学习查询器

date文件样式

注意保存(.txt)文件编码方式ANSI(右下角)
注意保存编码为ANSI

new文件样式

直接复制青年大学习的查询页面即可
同上

注意事项

  1. 如果想命名为别的名称,可以直接修改代码中文件指针与读取检测。
//代码第43、44行
FILE* fp = fopen("new.txt","r"); // new  文件指针
FILE* fg = fopen("date.txt","r");// date 文件指针
//代码第54、55行
File_search(fp, "new.txt"); //检测文件“new.txt”是否存在
File_search(fg, "date.txt");//检测文件“date.txt”是否存在
  1. (.txt)文件必须保存在(.cpp)文件同一文件夹下。
  2. 注意文件一定要为(.txt)文件(ANSI编码),否则可能读取不了。
  3. 低版本打开出现的错误可能为scanf_s函数问题,将其改为scanf即可,gets_s函数随之变动。
  4. 详细使用教程:青年大学习自动名单核对程序(使用教程)
/*
Visual Studio 2019编译成功
版本号0.0.7-2
作者:吴浩泽
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <Windows.h>

#define MAX_LINE 80//全局常量

int Output(const char* a)//通用输出引擎
{
    char d[8] = { "是" };//是字符串
    char f[8] = { 0 };

    printf(a);
    gets_s(f, 3);

    if (strcmp(d, f) == 0)
        return 1;
    else
        return 0;
}

void File_search(FILE* n,const char* a)//尝试打开文件,注意文件保存格式为(ANSL)防止出现错漏(下同)
{
    if ((n = fopen(a, "r")) == NULL)
    {
        printf("fail to read & %s", a);
        exit(1);
    }
}

int main()
{
    char buf_1[MAX_LINE][25] = { 0 }; //学习情况名单数组
    char buf_11[MAX_LINE][25] = { 0 };//承接无用字符
    char buf_2[MAX_LINE][25] = { 0 }; //班级学生名单数组
    char buf_22[MAX_LINE][25] = { 0 };//承接组别字符

    FILE* fp = fopen("new.txt","r"); // new  文件指针
    FILE* fg = fopen("date.txt","r");// date 文件指针

    int Class_size = 80; //班级总人数
    int Output_1 = 0;    //输出设置1返回值
    int Output_2 = 0;    //输出设置2返回值
    int Unfinish = 0;    //未完成学生人数

    Output_1 = Output("请问是否需要只输出未完成(填写‘是’或‘否’):");//第一个输出设置返回值引入
    Output_2 = Output("请问是否需要输出组别(填写‘是’或‘否’):");    //第二个输出设置返回值引入

    File_search(fp, "new.txt"); //检测文件“new.txt”是否存在
    File_search(fg, "date.txt");//检测文件“date.txt”是否存在

    for (int i = 1; fscanf(fp, "%s%s", buf_1[i], buf_11[i]) != EOF; i++); //将学习名单写入数组buf_1
    for (int i = 1; fscanf(fg, "%s%s", buf_2[i], buf_22[i]) != EOF; i++); //将班级名单写入数组buf_2

    for (int i = 1; i < Class_size; i++)//进行判断
    {
        int m = 1;//循环变量
        while (strcmp(buf_2[i], buf_1[m]) != 0)
        {
            m++;
            if (m == MAX_LINE)
            {
                printf("[%d]%s\t未完成", i, buf_2[i]);
                if (Output_2 == 1)//是否输出组别
                    printf("\t%s", buf_22[i]);
                printf("\n");
                Unfinish++;//未完成人数统计
                break;
            }
        }
        if (strcmp(buf_2[i], buf_1[m]) == 0)
        {
            if (Output_1 == 0)
            {
                printf("[%d]%s\t已完成", i, buf_2[i]);
                if (Output_2 == 1)//是否输出组别
                    printf("\t%s", buf_22[i]);
                printf("\n");
            }
        }
    }
    printf("\n\t我班共有%d人未完成", Unfinish);//显示未完成人数
    Sleep(10000);
    return 0;
}

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值