欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語言實現(xiàn)點菜系統(tǒng)

 更新時間:2022年06月16日 16:39:43   作者:想吃讀研的苦  
這篇文章主要為大家詳細(xì)介紹了C語言實現(xiàn)點菜系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了C語言實現(xiàn)點菜系統(tǒng)的具體代碼,供大家參考,具體內(nèi)容如下

一、main.c

#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>//Sleep
#include"user.h"
#include"loginWin.h"http://登錄界面使用
#include"Admin.h"http://管理員界面使用
#include"Manager.h"http://經(jīng)理界面使用
#include"Waiter.h"http://服務(wù)員界面使用
#include"guanRen.h"http://人員管理窗口使用
#include"xinZeng.h"http://新增用戶窗口使用
#include"daYin.h"http://打印查詢窗口使用
#include"xiuGai.h"http://修改密碼窗口使用
?
int count =3; ?//初始化兩個用戶 ?全局變量
? ?//初始化用戶結(jié)構(gòu)體數(shù)組 ?做全局變量 其他.c中extern外部引用
?? ?USER_T userArr[10]={?? ?
?? ??? ?{1001,"admin","123456",1},//0 ADMIN
?? ??? ?{1002,"manager","123456",2},//1 ?MANAGER
?? ??? ?{1003,"waiter","123456",3}//2 ?WAITER
?? ?};
?
void proRun()
{
?? ?int(*win_funs[30])()={loginInit,adminInit,managerInit,waiterInit,guanrenInit,xinZengInit
?? ??? ?,daYinInit,xiuGaiInit};
?? ?int winIndex = 0; //0-loginInit 1-adminInit 2-managerInit 3-waiterInit
?? ?while(1)
?? ?{
? ? ? ? Sleep(1500);
?? ??? ?system("cls");
?? ??? ?winIndex=win_funs[winIndex]();?? ?
?? ?}
}?? ?
?
int main()
{
?? ?proRun();?? ??? ?
}

二、Ctool.h

#ifndef CTOOL_H
#define CTOOL_H
#define KEY_UP 72
#define KEY_DOWN 80
#define KEY_LEFT 75
#define KEY_RIGHT 77
#define KEY_ESC 27
#define KEY_ENTER 13
?
void paintWindow(int startX,int startY,int width,int height);//打印窗口
?
void gotoxy(int x,int y);//形參 ?光標(biāo)定位
?
/*
函數(shù)功能:字符串輸入控制
函數(shù)參數(shù):
int maxLen 允許輸入最大長度
int inputType 允許輸入的字符類型 ?0:數(shù)字 1:字母 2:字母+數(shù)字
int ips 數(shù)據(jù)顯示格式 ?0:密文 ?1:明文
char str[] 存儲輸入字符
函數(shù)返回值:無
char str[] ? ?char str[20] ? ?char*str
*/
void glb_string(int maxLen,int inputType,int ips,char str[]);?
?
/*
函數(shù)名:int getkey()
函數(shù)功能:獲取用戶輸入的任意鍵盤值
函數(shù)參數(shù):無
函數(shù)返回:ascii ?
*/
int getkey();
?
//打印用戶信息表格
void daYinBiao(int x,int y,int lie,int hang);
?
#endif

三、Ctool.c

#include "Ctool.h"
#include <windows.h>//gotoxy
#include<stdio.h>
#include<conio.h>
?
void gotoxy(int x,int y)//形參
{
?? ?HANDLE hOut;
?? ?COORD pos= {x,y};
?? ?// 光標(biāo)的起始位(第1列,第3行) 0是第1列 2是第3行
?? ?hOut = GetStdHandle(STD_OUTPUT_HANDLE);
?? ?SetConsoleCursorPosition(hOut, pos);
?? ?//printf("定位光標(biāo)位置搜索(%d,%d)\n",pos.X,pos.Y);
}
?
void paintWindow(int startX,int startY,int width,int height) ?
{
?? ?int i=0;
?? ?//打印頂部 ??
?? ?//光標(biāo)定位 找規(guī)律 ┗ ?┛ ┏ ┓ ┃ ━
?? ?//頂部 y不變 x 在變 (x-x+w)
?? ?gotoxy(startX,startY);
?? ?printf("┏");
?? ?for(i=0;i<width-2;i++) ?//控制循環(huán)次數(shù)width-2次
?? ?{?? ??? ?
?? ??? ?printf("━ ");
?? ?}
?? ?printf("┓");
?
?? ?//左邊 x不變 y在變 (y到y(tǒng)+height)?? ?
?? ?for(i=1;i<=height-1;i++)
?? ?{
?? ??? ?gotoxy(startX,startY+i);
?? ??? ?printf("┃");
?? ?}
?? ?//右邊 x不變 =startx+width-1 ?y在變 y 到 y+height
?? ?for(i=1;i<=height-1;i++)
?? ?{
?? ??? ?gotoxy(startX+width*2-3,startY+i);
?? ??? ?printf("┃");
?? ?}
?
?? ?//底部 x在變化 ? ?y不變 (x到x+width) ━?
?? ?gotoxy(startX,startY+height-1);
?? ?printf("┗");
?? ?for(i=0;i<width-2;i++)
?? ?{
?? ??? ?printf("━ ");
?? ?}
?? ?printf("┛");
?
?? ?gotoxy(startX,startX+height);?? ?
}
?
void glb_string(int maxLen,int inputType,int ips,char str[])
{
?? ? ? char ch=0;
?? ? ? int i=0;
?? ? ? while(1)
?? ? ? {
?? ??? ? ? ch=getch();
?? ??? ? ? if(ch=='\r'&&i>0)//換行結(jié)束輸入
?? ??? ? ? {
?? ??? ??? ? ? break;?? ??? ??? ? ??
?? ??? ? ? }
?? ??? ? ? switch(inputType)
?? ??? ? ? {
?? ??? ? ? case 0:
?? ??? ??? ? ? if(ch>='0'&&ch<='9'&&i<maxLen)
?? ??? ??? ? ? {
?? ??? ??? ??? ? ? if(ips==0)
?? ??? ??? ??? ? ? {
?? ??? ??? ??? ??? ? ? putch('*');?? ??? ??? ??? ? ??
?? ??? ??? ??? ? ? }
?? ??? ??? ??? ? ? else{?? ??? ??? ??? ? ??
?? ??? ??? ??? ??? ? ? putch(ch);
?? ??? ??? ??? ? ? }
?? ??? ??? ??? ? ? str[i++]=ch;?? ??? ??? ? ??
?? ??? ??? ? ? }
?? ??? ??? ? ? break;
?? ??? ? ? case 1:
?? ??? ??? ? ? if(i<maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
?? ??? ??? ? ? {
?? ??? ??? ??? ? ? if(ips==0)
?? ??? ??? ??? ? ? {
?? ??? ??? ??? ??? ? ? putch('*');?? ??? ? ??
?? ??? ??? ??? ? ? }
?? ??? ??? ??? ? ? else{?? ??? ? ??
?? ??? ??? ??? ??? ? ? putch(ch);
?? ??? ??? ??? ? ? }
?? ??? ??? ??? ? ? str[i++]=ch;?? ? ??
?? ??? ??? ? ? }
?? ??? ??? ? ? break;
?? ??? ? ?case 2:
?? ??? ??? ? ? if(i<maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?if(ips==0)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?putch('*');?? ??? ??? ??? ??? ??? ??? ??? ??
?? ??? ??? ??? ??? ?}
?? ??? ??? ? ? ?else{
?? ??? ??? ??? ? ? ?putch(ch);
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?str[i++]=ch;
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ?break;
?? ??? ?default:
?? ??? ??? ??? ? break;
?? ??? ??? ?} ??
?? ? ? }?? ? ? ?
}
?
/*
函數(shù)名:int getkey()
函數(shù)功能:獲取用戶輸入的任意鍵盤值
函數(shù)參數(shù):無
函數(shù)返回:ascii ?
*/
int getkey()
{
?? ?char key=0;
?? ?key=getch();
?? ?if(key==-32)//方向按鍵 第一個值都是32
?? ?{
?? ??? ?key=getch();
?? ??? ?switch(key){
?? ??? ?case 72:
?? ??? ??? ?return KEY_UP;
?? ??? ?case 80:
?? ??? ??? ?return KEY_DOWN;
?? ??? ?case 75:
?? ??? ??? ?return KEY_LEFT;
?? ??? ?case 77:
?? ??? ??? ?return KEY_RIGHT;?? ?
?? ??? ?}?? ?
?? ?}
?? ?else if(key==13)
?? ?{
?? ??? ?return KEY_ENTER;
?? ?}
?? ?else if(key==27)
?? ?{
?? ??? ?return KEY_ESC;
?? ?}
?? ?return key;?? ?
}
?
?
void daYinBiao(int x,int y,int lie,int hang) ?
{
?? ?//lie --表格列數(shù)-- 3--7
?? ?int i,j,m,z=0;
?? ?int count=0;
?? ?gotoxy(x,y);
?? ?for(i=0;i<2*hang+1;i++)
?? ?{
?? ??? ?if(i==0)//第一行
?? ??? ?{
?? ??? ??? ?printf("┌ "); ? //第一列
?? ??? ??? ?for(j=0;j<lie-1;j++)//2 - n-1列---┬
?? ??? ??? ?{
?? ??? ??? ??? ?for(m=0;m<7;m++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("━ ");?? ??? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?printf("┬ ");//每個單元格之間的分割?? ??? ?
?? ??? ??? ?}
?? ??? ??? ?for(m=0;m<7;m++)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("━ ");
?? ??? ??? ?}
?? ??? ??? ?printf("┐");
?? ??? ?}
?? ??? ?if(i>0&&i<2*hang)//1-6行
?? ??? ?{
?? ??? ??? ?if(i%2==1) ? //數(shù)據(jù)行
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,i+y);
?? ??? ??? ??? ?printf("┃");
?? ??? ??? ??? ?for(j=0;j<lie;j++) //0-3
?? ??? ??? ??? ?{
?? ??? ??? ??? ? ?for(m=0;m<7;m++)
?? ??? ??? ??? ? ?{
?? ??? ??? ??? ??? ? ?printf(" ?");?? ? ?
?? ??? ??? ??? ? ?}
?? ??? ??? ??? ? ?printf(" ┃");
?? ??? ??? ??? ?}?? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?else ?//單元格邊界
?? ??? ??? ?{
?? ??? ??? ??? ?gotoxy(x,i+y);
?? ??? ??? ??? ?printf("├ ");
?? ??? ??? ??? ?for(j=0;j<lie-1;j++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?for(m=0;m<7;m++)
?? ??? ??? ??? ??? ?{
?? ??? ??? ??? ??? ??? ?printf("━ ");
?? ??? ??? ??? ??? ?}
?? ??? ??? ??? ??? ?printf("┼ ");
?? ??? ??? ??? ?}
?? ??? ??? ??? ?for(m=0;m<7;m++)
?? ??? ??? ??? ?{
? ? ? ? ? ? ? ? ? ? printf("━ ");?? ?
?? ??? ??? ??? ?}
?? ??? ??? ??? ?printf("┤");?? ??? ??? ?
?? ??? ??? ?}?? ??? ?
?? ??? ?}
?? ??? ?//最后一行 ? ?// ┌ ━ ┬ ┐┃ ┼ ├ ┤ └ ┘ ┴
?? ??? ?if(i==2*hang)?
?? ??? ?{
?? ??? ??? ?gotoxy(x,y+2*hang);
?? ??? ??? ?printf("└ "); ? ? ?
?? ??? ??? ?for(j=0;j<lie-1;j++)//2 - n-1列---┴
?? ??? ??? ?{
?? ??? ??? ??? ?for(m=0;m<7;m++)
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?printf("━ ");
?? ??? ??? ??? ?}
?? ??? ??? ??? ?printf("┴ ");//每個單元格之間的分割
?? ??? ??? ?}
?? ??? ??? ?for(m=0;m<7;m++)
?? ??? ??? ?{
?? ??? ??? ??? ?printf("━ ");
?? ??? ??? ?}
?? ??? ??? ?printf("┘");?? ?
?? ??? ?}
?? ?}
}

四、Cwindow.h

#ifndef CWINDOW_H
#define CWINDOW_H
//描述窗口相關(guān)的
#define LABEL 1 //控件使用宏定義 ?標(biāo)簽文本
#define EDIT 2 ?// ? ? ? ? ? ? ? ?編輯框
#define BUTTON 3// ? ? ? ? ? ? ? ?按鈕 ??
?
//標(biāo)簽結(jié)構(gòu)體的聲明
typedef struct label_t
{
?? ?int startx; //標(biāo)簽文本所放位置
?? ?int starty;
?? ?int width;//標(biāo)簽文本自身寬高
?? ?int height;
?? ?char content[20];//標(biāo)簽文本中輸入對應(yīng)的內(nèi)容 字符數(shù)組
};
?
//編輯框結(jié)構(gòu)體的聲明
typedef struct edit_t
{
?? ?int startx;//編輯框所放位置
?? ?int starty;
?? ?int width;//編輯框自身寬高
?? ?int height;
?? ?char content[20];//編輯框中輸入的內(nèi)容 ?字符數(shù)組的使用
?? ?int inputType;//輸入類型 0-數(shù)字 1-字母 2-數(shù)字+字母
?? ?int ips;//顯示類型 0-密文 1-明文
?? ?int maxLen; ?//最大長度?? ?
};
?
//按鈕結(jié)構(gòu)體的聲明
typedef struct button_t
{
?? ?int startx;//按鈕所放位置
?? ?int starty;
?? ?int width;//按鈕自身寬高
?? ?int height;
?? ?char content[20];//按鈕中輸入的內(nèi)容?? ?
};
?
//以編輯框為標(biāo)準(zhǔn)統(tǒng)一管控(編輯框要求最多)?
//控件結(jié)構(gòu)體的聲明--編輯框 標(biāo)簽 按鈕
typedef struct control_t
{
?? ?int startx;//控件所放位置
?? ?int starty;
?? ?int width;//控件自身寬高
?? ?int height;
?? ?int maxLen;//最大長度
?? ?int inputType;//輸入類型 0-數(shù)字 1-字母 2-數(shù)字+字母
?? ?int ips;//顯示類型 0-密文 1-明文
?? ?int ctrlType; ?//控件類型 1-label 2-edit 3-button ?區(qū)分控件的使用
?? ?char content[20];//控件中輸入的內(nèi)容?? ?
}CONTROL_T;//typedef重命名
?
//窗口結(jié)構(gòu)體的聲明 控件是要放入窗口當(dāng)中的
typedef struct win_t
{
? ? int startx;//窗口所放位置
?? ?int starty;
?? ?int width;//窗口對應(yīng)寬高
?? ?int height;
?? ?CONTROL_T ctrlArr[20];//存放控件結(jié)構(gòu)體數(shù)組 ?窗口中有多個控件
? ? int ctrlCount; ? //記錄控件總個數(shù) 初始化為0 用于添加控件函數(shù)中
?? ?int foucsIndex; ?//winRun在按鈕回車時記錄當(dāng)前控件的下標(biāo)
}WIN_T;
?
//添加控件 void addControl(參數(shù)1:控件結(jié)構(gòu)體 參數(shù)2:控件結(jié)構(gòu)體數(shù)組 參數(shù)3:控件個數(shù));
//把控件放進(jìn)控件結(jié)構(gòu)體數(shù)組中 ctrlCount控件個數(shù) 預(yù)留出下一個控件結(jié)構(gòu)體下標(biāo)
//int addControl(CONTROL_T ctrl,CONTROL_T ctrlArr[20] , int ctrlCount);//添加控件到對應(yīng)窗口中
void addControl(CONTROL_T ctrl,CONTROL_T ctrlArr[20] , int *ctrlCount);
?
//窗口顯示函數(shù)可以繪制整個窗口以及每一個控件 而paintWindow只能畫大框 不能顯示里面的內(nèi)容?? ?
void showWindow(WIN_T win);
?
/*
函數(shù)名稱:void winRun(WIN_T *win);
函數(shù)作用:窗口運行函數(shù) 光標(biāo)定位 找到edit(輸入) button控件(回車,做對應(yīng)操作)
函數(shù)參數(shù):參數(shù) WIN_T *win ?窗口結(jié)構(gòu)體指針
函數(shù)返回:無
*/
void winRun(WIN_T *win);
?
/*
函數(shù)名稱:void editKeyListen()
函數(shù)作用:編輯框輸入控制函數(shù)
函數(shù)參數(shù):參數(shù)1:CONTROL_T ctrl 監(jiān)聽的控件
? ? ? ? ? 參數(shù)2:char ch 輸入的字符
?? ??? ? ?參數(shù)3:char content[] 存儲的字符串
函數(shù)返回:無
*/
void editKeyListen(CONTROL_T ctrl,char ch,char content[]);
?
#endif

五、Cwindow.c

#include "Cwindow.h"
#include "Ctool.h"
#include<conio.h>// getch()
#include<string.h>//strlen
?
//添加控件 void addControl(參數(shù)1:控件結(jié)構(gòu)體 參數(shù)2:控件結(jié)構(gòu)體數(shù)組 參數(shù)3:控件個數(shù));
//把控件放進(jìn)控件結(jié)構(gòu)體數(shù)組中 ctrlCount控件個數(shù) 預(yù)留出下一個控件結(jié)構(gòu)體下標(biāo)
void addControl(CONTROL_T ctrl,CONTROL_T ctrlArr[20] , int *ctrlCount)
{
?? ?ctrlArr[(*ctrlCount)++]=ctrl;//按地址傳遞
}
?
//窗口顯示函數(shù) 繪制整個窗口以及每一個控件
void showWindow(WIN_T win)
{
?? ?int i=0;
?? ?//首先顯示大框
?? ?paintWindow(win.startx,win.starty,win.width,win.height);//結(jié)構(gòu)體變量名.屬性
?? ?//顯示每一個控件
?? ?for(i=0;i<win.ctrlCount;i++)//遍歷ctrlArr[]數(shù)組 長度ctrlCount一個一個獲取 控件在窗口里
?? ?{
?? ??? ?//類型 label ?edit ? button
?? ??? ?//如果是label ? ?直接顯示內(nèi)容即可
?? ??? ?//如果是edit ? ? 畫框(paintWindow) 顯示內(nèi)容
?? ??? ?//如果是button ? ? 畫框 顯示內(nèi)容
?? ??? ?if(win.ctrlArr[i].ctrlType==LABEL)
?? ??? ?{
?? ??? ??? ?gotoxy(win.ctrlArr[i].startx,win.ctrlArr[i].starty);//光標(biāo)定位放入內(nèi)容
?? ??? ??? ?puts(win.ctrlArr[i].content);
?? ??? ?}
?? ??? ?else
?? ??? ?{
?? ??? ??? ?//畫編輯框 按鈕框(小框) ?避免小框和放入的內(nèi)容鑲嵌
?? ??? ??? ?paintWindow(win.ctrlArr[i].startx-2,win.ctrlArr[i].starty-1,win.ctrlArr[i].width,win.ctrlArr[i].height);
?? ??? ??? ?gotoxy(win.ctrlArr[i].startx,win.ctrlArr[i].starty);//光標(biāo)定位放入內(nèi)容
?? ??? ??? ?puts(win.ctrlArr[i].content);?
?? ??? ?}?? ?
?? ?}
?? ?gotoxy(0,29);//優(yōu)化顯示
}
?
/*
函數(shù)名稱:void winRun(WIN_T *win);
函數(shù)作用:窗口運行函數(shù) 光標(biāo)定位 找到edit(輸入) button控件(回車,做對應(yīng)操作)
函數(shù)參數(shù):參數(shù) WIN_T *win ?窗口結(jié)構(gòu)體指針
函數(shù)返回:無
*/
void winRun(WIN_T *win)
{
?? ?int i=0,key=0;
?? ?for(i=0;i<win->ctrlCount;i++)
?? ?{
?? ??? ?if(win->ctrlArr[i].ctrlType==EDIT||win->ctrlArr[i].ctrlType==BUTTON)
?? ??? ?{
?? ??? ??? ?gotoxy(win->ctrlArr[i].startx,win->ctrlArr[i].starty);
?? ??? ??? ?break;
?? ??? ?}
?? ?}
?? ?while(1)
?? ?{
?? ??? ?key=getkey();
?? ??? ?switch(key){
?? ??? ?case KEY_DOWN://向下按鍵 ?查找下一個編輯框 按鈕
?? ??? ??? ?i++;//按鍵數(shù)組下標(biāo)越界
?? ??? ??? ?if(i==win->ctrlCount)
?? ??? ??? ?{
?? ??? ??? ??? ?i=0;//為了避免下標(biāo)越界 從頭開始對控件結(jié)構(gòu)體數(shù)組找編輯框 按鈕
?? ??? ??? ?}
?? ??? ??? ?for(;i<win->ctrlCount;i++)
?? ??? ??? ?{
?? ??? ??? ??? ?if(win->ctrlArr[i].ctrlType==EDIT||win->ctrlArr[i].ctrlType==BUTTON)//如果找到編輯框 按鈕
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(win->ctrlArr[i].startx,win->ctrlArr[i].starty);//光標(biāo)目標(biāo)定位
?? ??? ??? ??? ??? ?break;//停止
?? ??? ??? ??? ?}
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?case KEY_UP:
?? ??? ??? ?i--;
?? ??? ??? ?if(i==-1) ?//從后往前找 數(shù)組起始0 i--為-1 數(shù)組下標(biāo)由大到小 (控件數(shù)組下標(biāo)0位置)
?? ??? ??? ?{
?? ??? ??? ??? ?i=win->ctrlCount-1; ?//控件個數(shù)(控件結(jié)構(gòu)體數(shù)組下標(biāo)最大)-1 (控件數(shù)組下標(biāo)ctrlCount位置)
?? ??? ??? ?}
?? ??? ??? ?for(;i>0;i--)
?? ??? ??? ?{
?? ??? ??? ??? ?if(win->ctrlArr[i].ctrlType==EDIT||win->ctrlArr[i].ctrlType==BUTTON)//如果找到編輯框 按鈕
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?gotoxy(win->ctrlArr[i].startx,win->ctrlArr[i].starty);//光標(biāo)目標(biāo)定位
?? ??? ??? ??? ??? ?break;//停止
?? ??? ??? ??? ?}
?? ??? ??? ??? ?if(i==0) ?//第一個 若第一個不是編輯框 按鈕
?? ??? ??? ??? ?{
?? ??? ??? ??? ??? ?i=win->ctrlCount; ?//就從最后一個往前查找 for循環(huán)中有i--,不用再-1?? ??? ??? ?
?? ??? ??? ??? ?}?? ??? ?
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?case KEY_ENTER:
?? ??? ??? ?if(win->ctrlArr[i].ctrlType==BUTTON)
?? ??? ??? ?{
?? ??? ??? ??? ?win->foucsIndex=i;
?? ??? ??? ??? ?return ;//獲取winRun中輸入的編輯框的值
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?default: ? //其他字符(不是按鍵)并且當(dāng)前控件是編輯框
?? ??? ??? ?if(win->ctrlArr[i].ctrlType==EDIT)
?? ??? ??? ?{
?? ??? ??? ??? ?editKeyListen(win->ctrlArr[i],key,win->ctrlArr[i].content);?? ??? ?
?? ??? ??? ?}
?? ??? ??? ?break;
?? ??? ?}
?? ?}
}
?
/*
函數(shù)名稱:void editKeyListen()
函數(shù)作用:編輯框輸入控制函數(shù)
函數(shù)參數(shù):參數(shù)1:CONTROL_T ctrl 監(jiān)聽的控件
? ? ? ? ? 參數(shù)2:char ch 輸入的字符
? ? ? ? ? 參數(shù)3:char content[] 存儲的字符串
函數(shù)返回:無
*/
void editKeyListen(CONTROL_T ctrl,char ch,char content[])
{
?? ?int i=strlen(content);//從字符串原來的長度開始存儲
?? ?switch(ctrl.inputType)
?? ?{
?? ?case 0: //數(shù)字
?? ??? ?if(ch>='0'&&ch<='9'&&i<ctrl.maxLen)
?? ??? ?{
?? ??? ??? ?if(ctrl.ips==0)
?? ??? ??? ?{
?? ??? ??? ??? ?putch('*');?? ??? ??? ?
?? ??? ??? ?}
?? ??? ??? ?else{?? ??? ??? ?
?? ??? ??? ??? ?putch(ch);
?? ??? ??? ?}
?? ??? ??? ?content[i++]=ch;?? ?
?? ??? ?}
?? ??? ?break;
?? ?case 1:
?? ??? ?if(i<ctrl.maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z'))
?? ??? ?{
?? ??? ??? ?if(ctrl.ips==0)
?? ??? ??? ?{
?? ??? ??? ??? ?putch('*');?? ?
?? ??? ??? ?}
?? ??? ??? ?else{?? ??? ?
?? ??? ??? ??? ?putch(ch);
?? ??? ??? ?}
?? ??? ??? ?content[i++]=ch;?? ?
?? ??? ?}
?? ??? ?break;
?? ?case 2:
?? ??? ?if(i<ctrl.maxLen&&(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')||(ch>='0'&&ch<='9'))
?? ??? ?{
?? ??? ??? ?if(ctrl.ips==0)
?? ??? ??? ?{
?? ??? ??? ??? ?putch('*');?? ?
?? ??? ??? ?}
?? ??? ??? ?else{?? ?
?? ??? ??? ??? ?putch(ch);
?? ??? ??? ?}
?? ??? ??? ?content[i++]=ch;?? ?
?? ??? ?}
?? ??? ?break;
?? ?default:
?? ??? ?break;?? ?
?? ?}
}

六、user.h

#ifndef USER_H
#define USER_H
#define ADMIN 1
#define MANAGER 2
#define WAITER 3
?
//用戶結(jié)構(gòu)體聲明
typedef struct user_t
{
?? ?int ID;
?? ?char name[20];
?? ?char pwd[20];
?? ?int role; ?//數(shù)字表示角色 1是admin ?2是 manager 3 是waiter
}USER_T;
?
//打印用戶信息 ? ? 三種寫法 userArr[10] ?userArr[ ] ? userArr*
void printUserInfo(USER_T userArr[10]);
?
//用戶添加 用戶結(jié)構(gòu)體添加到用戶結(jié)構(gòu)體數(shù)組
void addUser(USER_T newuser , USER_T userArr[10]);//把新用戶添加到userArr[10]數(shù)組當(dāng)中
?
/*
函數(shù)作用:查看用戶名是否存在
函數(shù)參數(shù):用戶名 用戶結(jié)構(gòu)體數(shù)組
函數(shù)返回 返回下標(biāo) ?不存在返回-1
*/
int userCheck(char name[],USER_T userArr[10]);
?
#endif

七、user.c

#include"user.h"
#include<stdio.h>
#include<string.h>//memcpy
?
extern count; ?//外部引用 引入main.c中的count(全局變量)
?
//打印用戶信息
void printUserInfo(USER_T userArr[10])
{
?? ?int i=0;
?? ?printf("%d\n",count);
?? ?for(i=0;i<count;i++)
?? ?{
?? ??? ?printf("%d\t%s\t%s\t",userArr[i].ID,userArr[i].name,userArr[i].pwd);
?? ??? ?switch(userArr[i].role)
?? ??? ?{
?? ??? ?case ADMIN:
?? ??? ??? ?printf("管理員\n");
?? ??? ??? ?break;
?? ??? ?case MANAGER:
?? ??? ??? ?printf("經(jīng)理\n");
?? ??? ??? ?break;
?? ??? ?case WAITER:
?? ??? ??? ?printf("服務(wù)員\n");
?? ??? ??? ?break;
?? ??? ?default :
?? ??? ??? ?break;?? ??? ??? ?
?? ??? ?}?? ?
?? ?}?? ?
}
?
//用戶添加 用戶結(jié)構(gòu)體添加到用戶結(jié)構(gòu)體數(shù)組
void addUser(USER_T newuser , USER_T userArr[10])
{
?? ?//userArr[count++]=newuser;
?? ?memcpy(&userArr[count++],&newuser,sizeof(USER_T));//地址內(nèi)存拷貝賦值 取地址 數(shù)組 變量名 長度
}
?
/*
函數(shù)作用:查看用戶名是否存在
函數(shù)參數(shù):用戶名 用戶結(jié)構(gòu)體數(shù)組
函數(shù)返回:返回下標(biāo) ?不存在返回-1
*/
int userCheck(char name[],USER_T userArr[10])
{
?? ?int i=0;
?? ?for(i=0;i<count;i++)
?? ?{
?? ??? ?if(strcmp(userArr[i].name,name)==0)
?? ??? ?{
?? ??? ??? ?return i;?? ?
?? ??? ?}?? ?
?? ?}
?? ?return -1;
}

八、loginWin.h

#ifndef LOGINWIN_H
#define LOGINWIN_H
#include"user.h"
?
//登錄的初始化--登錄窗口的展示
int loginInit();
?
/* ?
函數(shù)名:doLogin()
函數(shù)作用:執(zhí)行登錄操作
函數(shù)參數(shù):參數(shù)1:char name[]用戶名
? ? ? ? ? 參數(shù)2:char pwd[7]密碼
函數(shù)返回:角色 1是admin ?2是 manager 3 是waiter -1表示沒登錄成功
*/
int doLogin(char name[],char pwd[]);//登錄輸入用戶名密碼 ?函數(shù)返回:角色role是int?
?
/* ?
函數(shù)名:Jude( )
函數(shù)作用:執(zhí)行登錄操作
函數(shù)參數(shù):參數(shù)1:char name[]用戶名
? ? ? ? ? 參數(shù)2:char pwd[7]密碼
?? ??? ? ?參數(shù)3:USER_T userArr[] 用戶結(jié)構(gòu)體數(shù)組
函數(shù)返回:角色 1是admin ?2是 manager 3 是waiter ? ? ?-1表示沒登錄成功
*/
int Jude(char *name,char *pwd,USER_T userArr[]);
?
#endif

九、loginWin.c

#include"loginWin.h"
#include"Cwindow.h"
#include "Ctool.h"
#include"user.h"http://userArr[10] 1是admin ?2是 manager 3 是waiter
#include<stdio.h>//printf
#include<string.h>//strcmp
#include<windows.h>?
#include<stdlib.h>
?
extern USER_T userArr[10];//引入外部變量 結(jié)構(gòu)體數(shù)組定義時做全局變量
extern count;//count在main.c中是全局變量
?
int loginInit()
{
?? ?char name[9]={0};//定義用戶名
?? ?char pwd[7]={0};//定義密碼
?? ?int role= -2;//初始化登錄返回的結(jié)果 不能0 1 2 -1(有含義)
?
/* ?int startx;//窗口所放位置
?? ?int starty;
?? ?int width;//窗口對應(yīng)寬高
?? ?int height;
?? ?CONTROL_T ctrlArr[20];//存放控件結(jié)構(gòu)體數(shù)組 ?窗口中有多個控件
? ? int ctrlCount; ? //記錄控件總個數(shù) 初始化為0 用于添加控件函數(shù)中 */
?? ?WIN_T loginWin={5,5,24,16};//有兩個沒填 部分初始化 控件結(jié)構(gòu)體數(shù)組{0} ?ctrlCount=0
?? ?
/*?? ?int maxLen;//最大長度
?? ?int inputType;//輸入類型 0-數(shù)字 1-字母 2-數(shù)字+字母
?? ?int ips;//顯示類型 0-密文 1-明文 ? ? ??
?? ?int ctrlType; ?//控件類型 1-label 2-edit 3-button ?區(qū)分控件的使用
?? ?char content[20];//控件中輸入的內(nèi)容 ? ? ?共填9個參數(shù)*/
?? ?//標(biāo)簽文本控件
?? ?CONTROL_T title={19,7,10,2,0,0,0,LABEL,"點菜系統(tǒng)"};
?? ?CONTROL_T labName={10,9,10,3,0,0,0,LABEL,"請輸入賬號:"};
?? ?CONTROL_T labPwd={10,12,10,3,0,0,0,LABEL,"請輸入密碼:"};
?? ?//編輯器控件
?? ?CONTROL_T editName={25,9,10,3,10,2,1,EDIT,""};
?? ?CONTROL_T editPwd={25,12,10,3,8,0,0,EDIT,""};
?? ?//按鈕控件
?? ?CONTROL_T btnok={10,15,8,3,0,0,0,BUTTON,"登錄"};
?? ?CONTROL_T btncancle={26,15,8,3,0,0,0,BUTTON,"返回"};
?? ?
?? ?//添加控件 void addControl(參數(shù)1:控件結(jié)構(gòu)體(控件) 參數(shù)2:控件數(shù)組 參數(shù)3:控件個數(shù));?? ?
?? ?//通過下標(biāo)將控件ctrl放到控件數(shù)組ctrlArr[20]當(dāng)中 ?在登錄窗口界面中添加控件
? ? //數(shù)組作為實參時直接寫數(shù)組名ctrlArr即可,數(shù)組名(起始地址)
?? ?addControl(title,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?addControl(labName,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?addControl(labPwd,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?addControl(editName,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?addControl(editPwd,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?addControl(btnok,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?addControl(btncancle,loginWin.ctrlArr,&loginWin.ctrlCount);
?? ?
?? ?printf("控件個數(shù),%d\n",loginWin.ctrlCount);//ctrlCount控件個數(shù)
?? ?
?? ?//展示窗口和每一個控件?
? ? showWindow(loginWin);
? ??
?? ?//窗口執(zhí)行函數(shù) 告知當(dāng)前回車的按鈕的下標(biāo)是多少
?? ?winRun(&loginWin);?? ?
?
?? ?switch(loginWin.foucsIndex){
?? ?case 5:
?? ??? ?role ?= ?Jude(loginWin.ctrlArr[3].content,loginWin.ctrlArr[4].content,userArr);
?? ??? ?gotoxy(27,17);
?? ??? ?if(role==-1)//失敗
?? ??? ?{
?? ??? ??? ?printf("登錄失敗\n");
?? ??? ??? ?// return 0;//0 -- 登錄界面?? ? 有bug登錄失敗第二次的才正常
?? ??? ??? ?Sleep(2000);
?? ??? ??? ?system("cls");
? ? ? ? ? ? loginInit();
?? ??? ?}
?? ??? ?else{
?? ??? ??? ?printf("登錄成功\n");
?? ??? ??? ?Sleep(1000);
?? ??? ??? ?system("cls");
?? ??? ??? ?
?? ??? ??? ?switch(role){
?? ??? ??? ?case ADMIN:
?? ??? ??? ??? ??? ?adminInit();
?? ??? ??? ??? ??? ?return 1;//ADMIN?? ??? ?
?? ??? ??? ?case MANAGER:
?? ??? ??? ??? ??? ?managerInit();
? ? ? ? ? ? ? ? ? ? ?return 2;//MANAGER?? ??? ??? ?
?? ??? ??? ?case WAITER:
?? ??? ??? ??? ??? ?waiterInit();
? ? ? ? ? ? ? ? ? ? ? return 3;//WAITER?? ??? ?
?? ??? ??? ?} ??? ??? ?
?? ??? ?}
?? ??? ?break;
?? ?case 6:
?? ??? ?printf("返回\n");
? ? ? ? ? ?return -1;
?? ?default:
?? ??? ?break;?? ??? ?
?? ?}
}
?
/* ?
函數(shù)名:Jude( )
函數(shù)作用:執(zhí)行登錄操作
函數(shù)參數(shù):參數(shù)1:char name[]用戶名
? ? ? ? ? 參數(shù)2:char pwd[7]密碼
? ? ? ? ? 參數(shù)3:USER_T userArr[] 用戶結(jié)構(gòu)體數(shù)組
函數(shù)返回:角色 1是admin ?2是 manager 3 是waiter ? ? ?-1表示沒登錄成功
*/
int Jude(char *name,char *pwd,USER_T userArr[])
{
?? ?int i=0;
?? ?for(;i<count;i++)?
?? ?{
?? ??? ?//對比用戶名和密碼都要相等 ?
?? ??? ?if(strcmp(name,userArr[i].name)==0&&strcmp(pwd,userArr[i].pwd)==0)
?? ??? ?{
?? ??? ??? ?// 用戶名密碼相等表示登錄成功 登錄成功返回角色?
?? ??? ??? ?return userArr[i].role;
?? ??? ?}?? ?
?? ?}
?? ?//登錄失敗
?? ?return -1;?? ?
}

十、Admin.h

#ifndef ADMIN_H
#define ADMIN_H
?
//管理員窗口的初始化
int adminInit();
?
#endif

十一、Admin.c

#include"Admin.h"
#include"Cwindow.h"
#include "Ctool.h"
#include<stdio.h>
#include<stdlib.h>
?
int adminInit()
{?? ?
/* ?int startx;//窗口所放位置
?? ?int starty;
?? ?int width;//窗口對應(yīng)寬高
?? ?int height;
?? ?CONTROL_T ctrlArr[20];//存放控件結(jié)構(gòu)體數(shù)組 ?窗口中有多個控件
? ? int ctrlCount; ? //記錄控件總個數(shù) 初始化為0 用于添加控件函數(shù)中 */
?? ?WIN_T Admin={3,3,25,23};
?? ?
/*?? ?int maxLen;//最大長度
?? ?int inputType;//輸入類型 0-數(shù)字 1-字母 2-數(shù)字+字母
?? ?int ips;//顯示類型 0-密文 1-明文 ? ? ??
?? ?int ctrlType; ?//控件類型 1-label 2-edit 3-button ?區(qū)分控件的使用
?? ?char content[20];//控件中輸入的內(nèi)容 ? ? ?共填9個參數(shù) ?*/
?? ?CONTROL_T titleguan={19,5,10,2,0,0,0,LABEL,"管理員界面"};
?? ?
?? ?CONTROL_T btntaizhuo={19,9,8,3,0,0,0,BUTTON,"臺桌管理"};
?? ?CONTROL_T btncaipu={19,12,8,3,0,0,0,BUTTON,"菜譜管理"};
?? ?CONTROL_T btnrenyuan={19,15,8,3,0,0,0,BUTTON,"人員管理"};
?? ?CONTROL_T btnzhuxiao={19,18,8,3,0,0,0,BUTTON,"注銷"};
?? ?CONTROL_T btntuichu={19,21,8,3,0,0,0,BUTTON,"退出"};
?? ?
//添加控件 void addControl(參數(shù)1:控件結(jié)構(gòu)體(控件) 參數(shù)2:控件數(shù)組 參數(shù)3:控件個數(shù));?? ?
?? ?addControl(titleguan,Admin.ctrlArr,&Admin.ctrlCount);
? ? addControl(btntaizhuo,Admin.ctrlArr,&Admin.ctrlCount);
?? ?addControl(btncaipu,Admin.ctrlArr,&Admin.ctrlCount);
?? ?addControl(btnrenyuan,Admin.ctrlArr,&Admin.ctrlCount);
?? ?addControl(btnzhuxiao,Admin.ctrlArr,&Admin.ctrlCount);
?? ?addControl(btntuichu,Admin.ctrlArr,&Admin.ctrlCount);
?? ?
?? ?printf("控件個數(shù),%d\n",Admin.ctrlCount);
? ? showWindow(Admin);
?
?? ?winRun(&Admin);
?
?? ?switch(Admin.foucsIndex){
?? ?case 3:
? ? ? ? ? ?? ?system("cls");
?? ??? ? ? ?guanrenInit();
?? ??? ??? ?//return 4; ?bug 刷新第二次才可以
?? ??? ?break;
?? ?case 5:
? ? ? ? ? ?? ?system("cls");
?? ??? ? ? ?loginInit();
??? ??? ?break;
?? ?default:
?? ??? ?break;?? ??? ?
?? ?}?? ??? ?
}

十二、Manager.h

#ifndef MANAGER_H
#define MANAGER_H
?
//經(jīng)理窗口的初始化
int managerInit();
?
#endif

十三、Manager.c

#include"Manager.h"
#include"Cwindow.h"
#include "Ctool.h"
#include<stdio.h>
#include<stdlib.h>
?
int managerInit()
{
/* ?int startx;//窗口所放位置
?? ?int starty;
?? ?int width;//窗口對應(yīng)寬高
?? ?int height;
?? ?CONTROL_T ctrlArr[20];//存放控件結(jié)構(gòu)體數(shù)組 ?窗口中有多個控件
? ? int ctrlCount; ? //記錄控件總個數(shù) 初始化為0 用于添加控件函數(shù)中 */
?? ?WIN_T Manager={3,3,25,23};//部分初始化 控件結(jié)構(gòu)體數(shù)組{0} ?ctrlCount=0
?? ?
/* ?int maxLen;//最大長度
?? ?int inputType;//輸入類型 0-數(shù)字 1-字母 2-數(shù)字+字母
?? ?int ips;//顯示類型 0-密文 1-明文 ? ? ??
?? ?int ctrlType; ?//控件類型 1-label 2-edit 3-button ?區(qū)分控件的使用
?? ?char content[20];//控件中輸入的內(nèi)容 ? ? ?共填9個參數(shù)*/
?? ?CONTROL_T titlejingli={19,5,10,2,0,0,0,LABEL,"經(jīng)理功能界面"};
?? ?
?? ?CONTROL_T btnyingshou={19,9,8,3,0,0,0,BUTTON,"營收匯總"};
?? ?CONTROL_T btnzhuxiao={19,12,8,3,0,0,0,BUTTON,"注銷"};
?? ?CONTROL_T btntuichu={19,15,8,3,0,0,0,BUTTON,"退出"};
?
?? ?//添加控件 void addControl(參數(shù)1:控件結(jié)構(gòu)體(控件) 參數(shù)2:控件數(shù)組 參數(shù)3:控件個數(shù));?? ?
? ? addControl(titlejingli,Manager.ctrlArr,&Manager.ctrlCount);?? ?
?? ?addControl(btnyingshou,Manager.ctrlArr,&Manager.ctrlCount);
?? ?addControl(btnzhuxiao,Manager.ctrlArr,&Manager.ctrlCount);
?? ?addControl(btntuichu,Manager.ctrlArr,&Manager.ctrlCount);
?? ?
?? ?printf("控件個數(shù),%d\n",Manager.ctrlCount);
? ??
?? ?showWindow(Manager);
?
?? ?winRun(&Manager);?? ?
?
?? ?switch(Manager.foucsIndex){
? ? ?case 3:
? ? ? ? ? ?? ?system("cls");
?? ??? ? ? ?loginInit();
?? ??? ?break;
?? ?default:
?? ??? ?break;?? ?
?? ?}
}

十四、Waiter.h

#ifndef WAITER_H
#define WAITER_H
?
//服務(wù)員窗口的初始化
int waiterInit();
?
#endif

十五、Waiter.c

#include"Waiter.h"
#include"Cwindow.h"
#include "Ctool.h"
#include<stdio.h>
?
int waiterInit()
{
/* ?int startx;//窗口所放位置
?? ?int starty;
?? ?int width;//窗口對應(yīng)寬高
?? ?int height;
?? ?CONTROL_T ctrlArr[20];//存放控件結(jié)構(gòu)體數(shù)組 ?窗口中有多個控件
? ? int ctrlCount; ? //記錄控件總個數(shù) 初始化為0 用于添加控件函數(shù)中 */
?? ?WIN_T Waiter={3,3,25,25};//部分初始化 控件結(jié)構(gòu)體數(shù)組{0} ?ctrlCount=0
?
/*?? ?int maxLen;//最大長度
?? ?int inputType;//輸入類型 0-數(shù)字 1-字母 2-數(shù)字+字母
?? ?int ips;//顯示類型 0-密文 1-明文 ? ? ??
?? ?int ctrlType; ?//控件類型 1-label 2-edit 3-button ?區(qū)分控件的使用
?? ?char content[20];//控件中輸入的內(nèi)容 ? ? ?共填9個參數(shù)*/
?? ?CONTROL_T titlefuwu={19,5,10,2,0,0,0,LABEL,"服務(wù)員功能界面"};
?? ?
?? ?CONTROL_T btnkaizhuo={19,9,10,3,0,0,0,BUTTON,"開桌"};
?? ?CONTROL_T btndiancai={19,12,10,3,0,0,0,BUTTON,"點菜"};
?? ?CONTROL_T btnyingyee={19,15,10,3,0,0,0,BUTTON,"營業(yè)額查詢"};
?? ?CONTROL_T btnyi={19,18,10,3,0,0,0,BUTTON,"已買/未買單查詢"};
?? ?CONTROL_T btnzhuxiao={19,21,10,3,0,0,0,BUTTON,"注銷"};
?? ?CONTROL_T btntuichu={19,24,10,3,0,0,0,BUTTON,"退出"};
?
//添加控件 void addControl(參數(shù)1:控件結(jié)構(gòu)體(控件) 參數(shù)2:控件數(shù)組 參數(shù)3:控件個數(shù));?? ?
?? ?addControl(titlefuwu,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?addControl(btnkaizhuo,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?addControl(btndiancai,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?addControl(btnyingyee,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?addControl(btnyi,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?addControl(btnzhuxiao,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?addControl(btntuichu,Waiter.ctrlArr,&Waiter.ctrlCount);
?? ?
?? ?printf("控件個數(shù),%d\n",Waiter.ctrlCount);
? ? showWindow(Waiter);
?? ?
?? ?winRun(&Waiter);
?
? ? switch(Waiter.foucsIndex){
?? ?case 6:
? ? ? ? ? ?? ?system("cls");
?? ??? ? ? ?loginInit();
?? ??? ?break;
?? ?default:
?? ??? ?break;?? ??? ?
?? ?}
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • 輕松實現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換

    輕松實現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換

    這篇文章主要介紹了輕松實現(xiàn)C/C++各種常見進(jìn)制相互轉(zhuǎn)換,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-11-11
  • C語言實現(xiàn)三子棋游戲的示例代碼

    C語言實現(xiàn)三子棋游戲的示例代碼

    今天我們將會用C語言實現(xiàn)三子棋。所謂三子棋,就是三行三列的棋盤,玩家可以和電腦下棋,率先連成三個的獲勝。話不多說,我們開始吧
    2022-10-10
  • 哈夫曼的c語言實現(xiàn)代碼

    哈夫曼的c語言實現(xiàn)代碼

    著先通過 HuffmanTree() 函數(shù)構(gòu)造哈夫曼樹,然后在主函數(shù) main()中自底向上開始(也就是從數(shù)組序號為零的結(jié)點開始)向上層層判斷,若在父結(jié)點左側(cè),則置碼為 0,若在右側(cè),則置碼為 1。最后輸出生成的編碼
    2013-07-07
  • C語言詳解用char實現(xiàn)大小寫字母的轉(zhuǎn)換

    C語言詳解用char實現(xiàn)大小寫字母的轉(zhuǎn)換

    這篇文章主要給大家介紹了關(guān)于C語言實現(xiàn)大小寫字母轉(zhuǎn)換的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-05-05
  • 淺談哈希表存儲效率一般不超過50%的原因

    淺談哈希表存儲效率一般不超過50%的原因

    下面小編就為大家?guī)硪黄獪\談哈希表存儲效率一般不超過50%的原因。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-01-01
  • C語言實現(xiàn)單元測試的示例詳解

    C語言實現(xiàn)單元測試的示例詳解

    單元測試(unit testing),是指對軟件中的最小可測試單元進(jìn)行檢查和驗證。這篇文章主要為大家介紹了C語言實現(xiàn)單元測試的方法,需要的可以參考一下
    2022-09-09
  • C++類中隱藏的幾個默認(rèn)函數(shù)你知道嗎

    C++類中隱藏的幾個默認(rèn)函數(shù)你知道嗎

    這篇文章主要為大家詳細(xì)介紹了C++類中隱藏的幾個默認(rèn)函數(shù),使用數(shù)據(jù)庫,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • C++示例講解vector容器

    C++示例講解vector容器

    這篇文章主要介紹了C++?容器?Vector?的使用方法,Vector?是一個能夠存放任意類型的動態(tài)數(shù)組,有點類似數(shù)組,是一個連續(xù)地址空間,下文更多詳細(xì)內(nèi)容的介紹,需要的小伙伴可以參考一下
    2022-07-07
  • 解析C++編程中異常相關(guān)的堆棧展開和throw()異常規(guī)范

    解析C++編程中異常相關(guān)的堆棧展開和throw()異常規(guī)范

    這篇文章主要介紹了C++編程中異常相關(guān)的堆棧展開和throw()異常規(guī)范,throw()規(guī)范部分文中結(jié)合了C++11標(biāo)準(zhǔn)的新特性來講,需要的朋友可以參考下
    2016-01-01
  • C++中的不規(guī)則二維數(shù)組實現(xiàn)代碼

    C++中的不規(guī)則二維數(shù)組實現(xiàn)代碼

    本文介紹了一個在C++中保存不定長二維數(shù)組的數(shù)據(jù)結(jié)構(gòu),在這個結(jié)構(gòu)中,我們使用了一個含有指針和數(shù)組長度的結(jié)構(gòu)體,用這樣的一個結(jié)構(gòu)體構(gòu)造一個結(jié)構(gòu)體數(shù)組,用于存儲每一個不定長的數(shù)組,感興趣的朋友一起看看吧
    2024-03-03

最新評論