鱼C论坛

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

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

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

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

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

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

  9.         if (!fp)
  10.         {
  11.                 MessageBoxA(NULL,"D盘写入错误,请检查D盘是否被保护","抱歉",MB_OK);
  12.                 return 0;
  13.         }
  14.         fclose(fp);
  15.         printf("\n\t\t\n");
  16.         HANDLE mc = GetStdHandle(STD_OUTPUT_HANDLE);
  17.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
  18.         printf("欢迎使用");
  19.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  20.         printf("注册软件!\n");
  21.         printf("\n\n\n\n");
  22.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
  23.         printf("  PS:请注册务必观看");
  24.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  25.         printf("使用手册\n");
  26.         Sleep(4000);
  27.         system("cls");
  28.         MessageBoxA(NULL,msg1,"提示",MB_OK);
  29.         printf("请输入用户名:\n");
  30.         fopen_s(&fp,"D:\\Dateofresgistor.mce", "rb");

  31.         while (1)
  32.         {
  33.                 scanf_s("%s",st.name,7);
  34.                 for( m=1;m<100;m++)
  35.                 {
  36.                         fread(st2.x,6,1,fp);
  37.                         fseek(fp,7,1);
  38.                         if(strcmp(st.name,st2.x)==0)
  39.                         {
  40.                                 s=1;
  41.                                 printf_s("\n");
  42.                                 printf("该用户名已经注册,请重新输入");
  43.                                 SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
  44.                                 printf_s("(3秒后自动刷新)");
  45.                                 SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  46.                                 Sleep(3000);
  47.                                 system("cls");
  48.                                 printf_s("请输入用户名:\n");
  49.                                 break;
  50.                                 fseek(fp,0,SEEK_SET);
  51.                         }
  52.                         else
  53.                         {
  54.                                 s=0;
  55.                         }
  56.                 }
  57.                 if(strlen(st.name)!=6)
  58.                 {
  59.                         s=1;
  60.                         printf_s("\n");
  61.                         printf_s("用户名长度必须为6个字符");
  62.                         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
  63.                         printf_s("(3秒后自动刷新)");
  64.                         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  65.                         Sleep(3000);
  66.                         system("cls");
  67.                         printf_s("请输入用户名:\n");
  68.                 }
  69.                 if(!s)
  70.                 {
  71.                         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_GREEN);
  72.                         printf_s("用户名可用√\n");
  73.                         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  74.                         break;
  75.                 }
  76.         }
  77.         fclose(fp);
  78.         fopen_s(&fp,"D:\\Dateofresgistor.mce", "ab+");
  79.         fwrite(st.name, sizeof(st.name), 1, fp);
  80.         printf_s("请输入密码:\n");
  81.         while (1)
  82.         {
  83.                 scanf_s("%s", st1.password,7);
  84.                 if (strlen(st1.password)!=6)
  85.                 {
  86.                         printf_s("密码必须为六个字符!\n");
  87.                         Sleep(3200);
  88.                         system("cls");
  89.                         printf_s("请输入密码:\n");
  90.                 }
  91.                 else if (strcmp(st1.password, st.name) == 0)
  92.                 {
  93.                         printf_s("密码与用户名不能一样!\n");
  94.                         Sleep(3200);
  95.                         system("cls");
  96.                         printf_s("请输入密码:\n");
  97.                 }
  98.                 else break;
  99.         }

  100.         printf_s("\t\t请阅读用户协议");
  101.         k = Statement();
  102.         if (!k)
  103.         {
  104.                 return 0;
  105.         }
  106.         fwrite(st1.password, sizeof(st1.password), 1, fp);
  107.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  108.         printf_s("\n处");
  109.         Sleep(200);
  110.         printf_s("理");
  111.         Sleep(200);
  112.         printf_s("中");
  113.         Sleep(200);
  114.         printf_s(".");
  115.         Sleep(200);
  116.         printf_s(".");
  117.         Sleep(200);
  118.         printf_s(".\n");
  119.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED);
  120.         printf_s("恭喜你注册成功!\n");
  121.         SetConsoleTextAttribute(mc, FOREGROUND_INTENSITY | FOREGROUND_RED | FOREGROUND_BLUE | FOREGROUND_GREEN);
  122.         fclose(fp);
  123.         Sleep(1200);
  124.         system("cls");
  125.         printf_s("\n\t您的账号为:");
  126.         for (int i = 0; i<6; i++)
  127.         {
  128.                 printf_s("%c", st.name[i]);
  129.         }
  130.         printf_s("\n");
  131.         printf_s("\n\t您的密码为:");
  132.         printf_s("%s\n", st1.password);
  133.         printf_s("\n\t请务必牢记!感谢您的使用!\n");
  134.         system("pause");
  135.         return 0;
  136. }
  137. int Statement()
  138. {
  139.         char str[6];
  140.         int y;
  141.         MessageBoxA(NULL, msg, "用户协议", MB_YESNO);
  142.         printf_s("\n是否接受用户协议内容(是/否)");
  143.         scanf_s("%s", str, 4);
  144.         if (strcmp(str, "是") == 0||strcmp(str,"shi")==0)
  145.         {
  146.                 y = 1;
  147.                 printf_s("\n");
  148.         }
  149.         else
  150.         {
  151.                 y = 0;
  152.         }
  153.         return y;
  154. }
复制代码

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

  43.         while (1)
  44.         {
  45.                 scanf_s("%c", &a,1);
  46.                 switch (_Ts(a))
  47.                 {
  48.                 case 'A':_Sort(q); break;
  49.                 case 'C':_Print(); break;
  50.                 }
  51.         }
  52.         fclose(fp);
  53.         return 0;
  54. }
  55. char _Ts(char x)
  56. {
  57.         char y;
  58.         if (x >= 97 && x <= 122)
  59.         {
  60.                 y = x - 32;
  61.         }
  62.         else
  63.         {
  64.                 y = x;
  65.         }
  66.         return y;
  67. }
  68. int Password()
  69. {
  70.         char a[7];
  71.         char b[30];
  72.         int s, k, y = 1;
  73.         FILE * fp1;
  74.         fopen_s(&fp1,"D:\\Dateofresgistor.mce", "rb");
  75.         if (!fp1)
  76.         {
  77.                 MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护", "抱歉", MB_OK);
  78.                 y = 0;
  79.                 exit(0);
  80.         }

  81.         int i, j = 0;
  82.         printf("      请输入用户名:");
  83.         scanf_s("%s", b,7);
  84.         for (int m = 1; m<100; m++)
  85.         {
  86.                 fread(sx.s, 7, 1, fp1);
  87.                 fseek(fp1, 7, SEEK_CUR);
  88.                 if (strcmp(b, sx.s) == 0)
  89.                 {
  90.                         k = m;
  91.                         s = 1;
  92.                         break;
  93.                 }
  94.                 else
  95.                 {
  96.                         s = 0;
  97.                 }
  98.         }
  99.         if (!s)
  100.         {
  101.                 printf("      账号不存在!\n");
  102.                 y = 0;
  103.                 return y;
  104.         }
  105.         printf("\n");
  106.         printf("      请输入密码:");
  107.         while (1)
  108.         {
  109.                 for (i = 0; i<10; i++)
  110.                 {
  111.                         a[i] = _getch();
  112.                         if (a[i] == '\r')
  113.                         {
  114.                                 break;
  115.                         }
  116.                         if (a[i] != 8)
  117.                         {
  118.                                 printf("*");
  119.                         }
  120.                 }
  121.                 a[i] = '\0';
  122.                 getchar();
  123.                 fseek(fp1, 0, SEEK_SET);
  124.                 for (int e = 1; e<k + 1; e++)
  125.                 {
  126.                         fread(sx.s, sizeof(sx.s), 1, fp1);
  127.                         fread(sx1.x, sizeof(sx1.x), 1, fp1);
  128.                 }
  129.                 if ((strcmp(b, sx.s) == 0) && (strcmp(a, sx1.x) == 0))
  130.                 {
  131.                         printf("\n\n\t用户名密码输入正确\n");
  132.                         Sleep(100);
  133.                         printf("     欢");
  134.                         Sleep(100);
  135.                         printf("迎");
  136.                         Sleep(100);
  137.                         printf("使");
  138.                         Sleep(100);
  139.                         printf("用");
  140.                         Sleep(200);
  141.                         printf(".");
  142.                         Sleep(200);
  143.                         printf(".");
  144.                         Sleep(200);
  145.                         printf(".\n");
  146.                         y = 1;
  147.                         system("cls"); break;
  148.                 }
  149.                 else
  150.                 {
  151.                         y = 0;
  152.                 }
  153.                 if (!y)
  154.                 {
  155.                         printf("\n密码错误!\n");
  156.                         printf("密码:");
  157.                 }
  158.         }
  159.         fclose(fp1);

  160.         return y;
  161. }
  162. float _Sort(struct Student *q)
  163. {
  164.         FILE * fp;
  165.         int i, j, k;
  166.         fopen_s(&fp,"D:\\Sort.mce", "wb");
  167.         if (!fp)
  168.         {
  169.                 MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护", "抱歉", MB_OK);
  170.                 exit(0);
  171.         }
  172.         for (int u = 0; u<3; u++)
  173.         {
  174.                 s[u].sum = s[u].mark[0] + s[u].mark[1] + s[u].mark[2];
  175.         }
  176.         for (i = 0; i<P; i++)
  177.         {
  178.                 k = i;
  179.                 for (j = i + 1; j<N; j++)
  180.                 {
  181.                         if ((q+k)->sum<(q+j)->sum)
  182.                         {
  183.                                 k = j;
  184.                                 t = *(q + k);
  185.                                 *(q + k) = *(q + i);
  186.                                 *(q + i) = t;
  187.                         }
  188.                 }
  189.         }
  190.         for (int y = 0; y<3; y++)
  191.         {
  192.                 fwrite(&s[y], sizeof(struct Student), 4, fp);
  193.         }
  194.         printf("请稍等");
  195.         Sleep(100);
  196.         printf(".");
  197.         Sleep(100);
  198.         printf(".");
  199.         Sleep(100);
  200.         printf(".\n");
  201.         printf("\n");
  202.         printf("操作成功!");
  203.         Sleep(1500);
  204.         system("cls");
  205.         fclose(fp);
  206.         printf("\tA,将学生信息按总成绩高低来进行排列,并写入文件中\n\tB,计算机功能\n\tC,打印出所有已经处理的信息\n");
  207.         printf("\t请再次输入所求选项\n");
  208.         return 0;
  209. }
  210. char _Print()
  211. {
  212.         FILE * fp;
  213.         fopen_s(&fp, "D:\\Sort.mce", "rb");
  214.         if (!fp)
  215.         {
  216.                 MessageBoxA(NULL, "D盘写入错误,请检查D盘是否被保护", "抱歉", MB_OK);
  217.                 exit(0);
  218.         }
  219.         printf_s("学号   姓名   语文  数学  英语\n");
  220.         for (int w = 0; w < P; w++)
  221.         {
  222.                 fread(&s[w], sizeof(struct Student),4, fp);
  223.                 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]);
  224.                 printf_s("\n");
  225.         }
  226.         fclose(fp);
  227.         return 0;
  228. }
复制代码

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-25 06:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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