学生成绩管理系统-MySQL版-Part3-自定义效果函数
本文已被浏览4537次
为了让整个程序在外观上尽可能的好看,减少开发过程中繁琐的代码编写,每一个大项目都会事先定义一些常用的函数,在后面会更方便使用某个固定的过程.
这个作品中只定义了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的那个
}
有了这些函数,程序写起来会更容易些.
评论
您需要 先登录 才可以回复.