鱼C论坛

 找回密码
 立即注册
查看: 1819|回复: 1

[技术交流] 用C写一个非常简单的注册程序

[复制链接]
发表于 2017-5-6 23:43:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
char Register()
{
        int m;
        system("mode con cols=50 lines=30");
        int Statement();
        int k,s;
        FILE * fp;
        fopen_s(&fp,"D:\\Dateofresgistor.mce", "ab+");

        if (!fp)
        {
                MessageBoxA(NULL,"D盘写入错误,请检查D盘是否被保护","抱歉",MB_OK);
                return 0;
        }
        fclose(fp);
        printf("\n\t\t\n");
        HANDLE mc = GetStdHandle(STD_OUTPUT_HANDLE);
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
        printf("欢迎使用");
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
        printf("注册软件!\n");
        printf("\n\n\n\n");
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
        printf("  PS:请注册务必观看");
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
        printf("使用手册\n");
        Sleep(4000);
        system("cls");
        MessageBoxA(NULL,msg1,"提示",MB_OK);
        printf("请输入用户名:\n");
        fopen_s(&fp,"D:\\Dateofresgistor.mce", "rb");

        while (1)
        {
                scanf_s("%s",st.name,7);
                for( m=1;m<100;m++)
                {
                        fread(st2.x,6,1,fp);
                        fseek(fp,7,1);
                        if(strcmp(st.name,st2.x)==0)
                        {
                                s=1;
                                printf_s("\n");
                                printf("该用户名已经注册,请重新输入");
                                SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
                                printf_s("(3秒后自动刷新)");
                                SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
                                Sleep(3000);
                                system("cls");
                                printf_s("请输入用户名:\n");
                                break;
                                fseek(fp,0,SEEK_SET);
                        }
                        else
                        {
                                s=0;
                        }
                }
                if(strlen(st.name)!=6)
                {
                        s=1;
                        printf_s("\n");
                        printf_s("用户名长度必须为6个字符");
                        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
                        printf_s("(3秒后自动刷新)");
                        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
                        Sleep(3000);
                        system("cls");
                        printf_s("请输入用户名:\n");
                }
                if(!s)
                {
                        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
                        printf_s("用户名可用√\n");
                        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
                        break;
                }
        }
        fclose(fp);
        fopen_s(&fp,"D:\\Dateofresgistor.mce", "ab+");
        fwrite(st.name, sizeof(st.name), 1, fp);
        printf_s("请输入密码:\n");
        while (1)
        {
                scanf_s("%s", st1.password,7);
                if (strlen(st1.password)!=6)
                {
                        printf_s("密码必须为六个字符!\n");
                        Sleep(3200);
                        system("cls");
                        printf_s("请输入密码:\n");
                }
                else if (strcmp(st1.password, st.name) == 0)
                {
                        printf_s("密码与用户名不能一样!\n");
                        Sleep(3200);
                        system("cls");
                        printf_s("请输入密码:\n");
                }
                else break;
        }

        printf_s("\t\t请阅读用户协议");
        k = Statement();
        if (!k)
        {
                return 0;
        }
        fwrite(st1.password, sizeof(st1.password), 1, fp);
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
        printf_s("\n处");
        Sleep(200);
        printf_s("理");
        Sleep(200);
        printf_s("中");
        Sleep(200);
        printf_s(".");
        Sleep(200);
        printf_s(".");
        Sleep(200);
        printf_s(".\n");
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
        printf_s("恭喜你注册成功!\n");
        SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
        fclose(fp);
        Sleep(1200);
        system("cls");
        printf_s("\n\t您的账号为:");
        for (int i = 0; i<6; i++)
        {
                printf_s("%c", st.name[i]);
        }
        printf_s("\n");
        printf_s("\n\t您的密码为:");
        printf_s("%s\n", st1.password);
        printf_s("\n\t请务必牢记!感谢您的使用!\n");
        system("pause");
        return 0;
}
int Statement()
{
        char str[6];
        int y;
        MessageBoxA(NULL, msg, "用户协议", MB_YESNO);
        printf_s("\n是否接受用户协议内容(是/否)");
        scanf_s("%s", str, 4);
        if (strcmp(str, "是") == 0||strcmp(str,"shi")==0)
        {
                y = 1;
                printf_s("\n");
        }
        else
        {
                y = 0;
        }
        return y;
}
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2017-5-6 23:46:22 | 显示全部楼层
对应的输入检测函数(实际上是一个简单的学籍管理23333)
char Insert()
{
        int Password();
        char _Print();
        float _Sort(struct Student * q);
        char _Ts(char x);
        char a;
        FILE * fp;
        q = s;
        MessageBoxA(NULL, MsgForBengin, "欢迎", MB_OK);
        fopen_s(&fp, "D:\\DateofInsert.mce", "ab+");
        if (!fp)
        {
                MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护","抱歉", MB_OK);
                exit(0);
        }
        if (!Password())
        {
                if(!Password())
                {
                        MessageBoxA(NULL, "账号不存在","关闭提醒", MB_OK);
                        exit(0);
                }
        }
        for (int i = 0; i<P; i++)
        {
                Sleep(250);
                printf("请输入第%d个学生的数据\n", i + 1);
                printf_s("学号:");
                scanf_s("%s", s[i].ID,5);
                printf_s("\n姓名:");
                scanf_s("%s", s[i].name, 6);
                printf_s("\n语文:");
                scanf_s("%f", &s[i].mark[0], 1);
                printf_s("\n数学:");
                scanf_s("%f", &s[i].mark[1], 1);
                printf_s("\n英语:");
                scanf_s("%f", &s[i].mark[2], 1);
        }
        printf("\n");
        printf("请输入将要进行的操作:\n");
        printf("\tA,将学生信息按总成绩高低来进行排列,并写入文件中\n\tB,计算机功能\n\tC,打印出所有已经处理的信息\n");

        while (1)
        {
                scanf_s("%c", &a,1);
                switch (_Ts(a))
                {
                case 'A':_Sort(q); break;
                case 'C':_Print(); break;
                }
        }
        fclose(fp);
        return 0;
}
char _Ts(char x)
{
        char y;
        if (x >= 97 && x <= 122)
        {
                y = x - 32;
        }
        else
        {
                y = x;
        }
        return y;
}
int Password()
{
        char a[7];
        char b[30];
        int s, k, y = 1;
        FILE * fp1;
        fopen_s(&fp1,"D:\\Dateofresgistor.mce", "rb");
        if (!fp1)
        {
                MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护", "抱歉", MB_OK);
                y = 0;
                exit(0);
        }

        int i, j = 0;
        printf("      请输入用户名:");
        scanf_s("%s", b,7);
        for (int m = 1; m<100; m++)
        {
                fread(sx.s, 7, 1, fp1);
                fseek(fp1, 7, SEEK_CUR);
                if (strcmp(b, sx.s) == 0)
                {
                        k = m;
                        s = 1;
                        break;
                }
                else
                {
                        s = 0;
                }
        }
        if (!s)
        {
                printf("      账号不存在!\n");
                y = 0;
                return y;
        }
        printf("\n");
        printf("      请输入密码:");
        while (1)
        {
                for (i = 0; i<10; i++)
                {
                        a[i] = _getch();
                        if (a[i] == '\r')
                        {
                                break;
                        }
                        if (a[i] != 8)
                        {
                                printf("*");
                        }
                }
                a[i] = '\0';
                getchar();
                fseek(fp1, 0, SEEK_SET);
                for (int e = 1; e<k + 1; e++)
                {
                        fread(sx.s, sizeof(sx.s), 1, fp1);
                        fread(sx1.x, sizeof(sx1.x), 1, fp1);
                }
                if ((strcmp(b, sx.s) == 0) && (strcmp(a, sx1.x) == 0))
                {
                        printf("\n\n\t用户名密码输入正确\n");
                        Sleep(100);
                        printf("     欢");
                        Sleep(100);
                        printf("迎");
                        Sleep(100);
                        printf("使");
                        Sleep(100);
                        printf("用");
                        Sleep(200);
                        printf(".");
                        Sleep(200);
                        printf(".");
                        Sleep(200);
                        printf(".\n");
                        y = 1;
                        system("cls"); break;
                }
                else
                {
                        y = 0;
                }
                if (!y)
                {
                        printf("\n密码错误!\n");
                        printf("密码:");
                }
        }
        fclose(fp1);

        return y;
}
float _Sort(struct Student *q)
{
        FILE * fp;
        int i, j, k;
        fopen_s(&fp,"D:\\Sort.mce", "wb");
        if (!fp)
        {
                MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护", "抱歉", MB_OK);
                exit(0);
        }
        for (int u = 0; u<3; u++)
        {
                s[u].sum = s[u].mark[0] + s[u].mark[1] + s[u].mark[2];
        }
        for (i = 0; i<P; i++)
        {
                k = i;
                for (j = i + 1; j<N; j++)
                {
                        if ((q+k)->sum<(q+j)->sum)
                        {
                                k = j;
                                t = *(q + k);
                                *(q + k) = *(q + i);
                                *(q + i) = t;
                        }
                }
        }
        for (int y = 0; y<3; y++)
        {
                fwrite(&s[y], sizeof(struct Student), 4, fp);
        }
        printf("请稍等");
        Sleep(100);
        printf(".");
        Sleep(100);
        printf(".");
        Sleep(100);
        printf(".\n");
        printf("\n");
        printf("操作成功!");
        Sleep(1500);
        system("cls");
        fclose(fp);
        printf("\tA,将学生信息按总成绩高低来进行排列,并写入文件中\n\tB,计算机功能\n\tC,打印出所有已经处理的信息\n");
        printf("\t请再次输入所求选项\n");
        return 0;
}
char _Print()
{
        FILE * fp;
        fopen_s(&fp, "D:\\Sort.mce", "rb");
        if (!fp)
        {
                MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护", "抱歉", MB_OK);
                exit(0);
        }
        printf_s("学号   姓名   语文  数学  英语\n");
        for (int w = 0; w < P; w++)
        {
                fread(&s[w], sizeof(struct Student),4, fp);
                printf_s("%s %s %f %f %f", s[w].ID, s[w].name, s[w].mark[0], s[w].mark[1], s[w].mark[2]);
                printf_s("\n");
        }
        fclose(fp);
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 06:21

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表