学生成绩管理系统-MySQL版-Part3-自定义效果函数
本文已被浏览4189次
为了让整个程序在外观上尽可能的好看,减少开发过程中繁琐的代码编写,每一个大项目都会事先定义一些常用的函数,在后面会更方便使用某个固定的过程.
这个作品中只定义了12个自定义函数,分了两个文件:Console.c和Myfunc.c.第一个文件是主要和控制台窗口相关的内容,第二个是一些其他的小函数.
首先这是第一个Console.c
#include <stdio.h> #include <stdlib.h> //只添加这俩就够了 //控制台格式操作 //更改窗体标题 void ChangeWindowTitle(const char *title){ char cmdline[50]; sprintf(cmdline,"title 学生成绩管理系统(MySQL)-%s",title); system(cmdline); } //更改窗体大小 void ChangeWindowSize(int Width,int Height){ char cmdline[50]; sprintf(cmdline,"mode con: cols=%d lines=%d",Width,Height); system(cmdline); } //暂停按任意键继续,0为不提示字,非0为提示字 void Pause(int mode){ if(mode==0){ system("pause>nul"); }else{ system("pause"); } } //清屏 void CS(){ system("cls"); } //改屏幕颜色 void ChangeColorScreen(const char *color){ char cmd[9]; sprintf(cmd,"color %s",color); system(cmd); } //这个是从网上搜的按照块更改颜色,具体咋整的不太清楚,会用就行... #include "JR_Color.h" //按块更改颜色 static int isInitColor = 0; HANDLE Handle_Color; //输出窗口句柄 void initColor(){ if(isInitColor) return ; isInitColor = 1; Handle_Color = GetStdHandle(STD_OUTPUT_HANDLE); } /* 0 = 黑色 1 = 白色 2 = 军绿色 3 = 蓝绿色 4 = 深红色 5 = 紫色 6 = 黄绿色 7 = 灰色 8 = 深灰色 9 = 蓝色 10 = 绿色 11 = 亮蓝色 12 = 红色 13 = 粉紫色 14 = 黄色 15 = 白色 */ void JR_SetColor(int textcolor, int bgcolor){ int color = textcolor + bgcolor * 16; initColor(); SetConsoleTextAttribute(Handle_Color, color); }
这一个文件是从晚上扒拉来的,具体怎么个工作原理不太清楚了
/* * JR_Color.h (1.0) * 字条界面颜色控制函数定义 * * By Eric-JR Chen * diamont1001@163.com * 2011-6-1 */ #ifndef JR_COLOR_H #define JR_COLOR_H #include <windows.h> #define BLACK 0 //黑色 #define WHITE 1 //白色 #define ARMY_GREEN 2 //军绿色 #define BLUE_GREEN 3 //蓝绿色 #define DEEP_RED 4 //深红色 #define PURPLE 5 //紫色 #define YELLOW_GREEN 6 //黄绿色 #define GREY 7 //灰色 #define DARK_GREY 8 //深灰色 #define BLUE 9 //蓝色 #define GREEN 10 //绿色 #define BRIGHT_BLUE 11 //亮蓝色 #define RED 12 //红色 #define LIGHT_PURPLE 13 //粉紫色 #define YELLOW 14 //黄色 #define OFF_WHITE 15 //米白色 /* 设置输出颜色 */ void JR_SetColor(int textcolor, int bgcolor); #endif
这是第二个文件MyFunc.c
#include <stdio.h> #include <stdlib.h> #include <conio.h> #include <windows.h> #include <string.h> void ChangeColorScreen(const char *color); void ChangeWindowSize(int Width,int Height); void ChangeWindowTitle(const char *title); void CS(); //读取密码,屏幕不回显 void scanPass(char *p) { int i=0; while((p[i]=getch())) { if(p[i]==13) break; if(p[i]!='b') { printf("*"); i++; } else { if(i>0) { printf("b b"); i--; } } } p[i]='\0'; } //计算int长度 int Sum_ints(int number) { int a=0; if(number==0) { return 1; } while(number>0) { a++; number=number/10; } return a; } //退出部分 void Exit() { char select; printf(""); ChangeColorScreen("4f"); ChangeWindowSize(63,12); ChangeWindowTitle("退出"); CS(); printf("╔═════════════════════════════╗n"); printf("║ 学生成绩管理系统 ║n"); printf("║ 基于MySQL ║n"); printf("╟─────────────────────────────╢n"); printf("║ 确定要退出本系统么? ║n"); printf("║ 确定请按[Y] 否则请按[N] ║n"); printf("╟─────────────────────────────╢n"); printf("║ JerrySoft Copyright. ║n"); printf("╚═════════════════════════════╝n"); select=getch(); switch(select) { case 'y': case 'Y': ChangeColorScreen("2f"); ChangeWindowSize(63,11); ChangeWindowTitle("退出"); CS(); printf("╔═════════════════════════════╗n"); printf("║ 学生成绩管理系统 ║n"); printf("║ MySQL版 ║n"); printf("╟─────────────────────────────╢n"); printf("║ 欢迎再次使用! ║n"); printf("╟─────────────────────────────╢n"); printf("║ JerrySoft Copyright. ║n"); printf("╚═════════════════════════════╝n"); Sleep(3000); ChangeColorScreen("07"); CS(); exit(0); case 'n': case 'N': break; default: printf(""); Exit(); break; } } //替换字符串 void strrpl(char* pDstOut, char* pSrcIn, const char* pSrcRpl, const char* pDstRpl) { char* pi = pSrcIn; char* po = pDstOut; int nSrcRplLen = strlen(pSrcRpl); int nDstRplLen = strlen(pDstRpl); char *p = NULL; int nLen = 0; do { p = strstr(pi, pSrcRpl); if(p != NULL) { nLen = p - pi; memcpy(po, pi, nLen); memcpy(po + nLen, pDstRpl, nDstRplLen); } else { strcpy(po, pi); break; } pi = p + nSrcRplLen; po = po + nLen + nDstRplLen; } while (p != NULL); } //bing~~发出声响 void Ring(){ printf(""); //这个地方里面写的是ASCII对应为BELL的那个 }
有了这些函数,程序写起来会更容易些.
评论
您需要 先登录 才可以回复.