⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 zdemoa.c

📁 unix下的界面工具
💻 C
字号:
/*****************************************************************************/
/*                     DEMO PROGRAM FOR ZLIB VERSION 1.0                     */
/* ------------------------------------------------------------------------- */
/*  Author : Shih Ho ( 何  轼 )                                              */
/*  Date   : August 14, 1995                                                 */
/*****************************************************************************/

#include <stdio.h>
#include <string.h>
#include <zlib.h>
/*#include <applib.h>*/

/*===========================================================================*/
/* Constant Definition							     */
/*---------------------------------------------------------------------------*/

/*===========================================================================*/
/* Function Definition							     */
/*---------------------------------------------------------------------------*/

/*===========================================================================*/
/* Data Area								     */
/*---------------------------------------------------------------------------*/
static double dVar;
static long   lVar;
static int    iVar;
static char   cVar;
static char   sVar[9];
static ZWINDOW Window = {
  1, 2, 22, 30, ZW_BOX, " 填写请假单 "
};
static ZMTERM mTerm[] = {
  { "0.发烧",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "1.生病",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "2.家事",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "3.带孩子打针", ZM_HOTKEY | ZM_EXIT, 0 },
  { "4.义务执勤",   ZM_HOTKEY | ZM_EXIT, 0 },
  { "5.探亲",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "6.婚嫁",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "7.丧事",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "8.搬家",       ZM_HOTKEY | ZM_EXIT, 0 },
  { "9.计生手术",   ZM_HOTKEY | ZM_EXIT, 0 }
};
static ZMENU  mMenu = {
  4, 11, ZW_BOX, "事由选择", sizeof( mTerm ) / sizeof( ZMTERM ), 1, mTerm
};

/*===========================================================================*/
/* Local Function - Convert cVar					     */
/*---------------------------------------------------------------------------*/
static void ConvertCode()
{
  if( cVar < '0' || cVar > '9' )
    ZWprintf( 1, 10, "%12s", "" );
  else
    ZWprintf( 1, 10, "[%-10s]", mTerm[cVar - '0'].d + 2 );
}

/*===========================================================================*/
/* Local Function - Display Value				 	     */
/*---------------------------------------------------------------------------*/
static void DispValue( int n )
{
  int a = ZWattr( ZA_KEY );

  switch( n ){
  case 0:
    if( cVar == '0' )
      ZWprintf( 13, 17, "发烧%4.1lf℃", dVar );
    else if( cVar == '1' )
      ZWprintf( 13, 17, "患%-8s", sVar );
    else if( cVar >= '2' && cVar <= '9' )
      ZWprintf( 13, 17, "%-10s", mTerm[cVar - '0'].d + 2 );
    break;
  case 1:
    if( cVar == '0' )
      ZWprintf( 13, 17, "发烧%4.1lf℃", dVar );
    break;
  case 2:
    if( cVar == '1' )
      ZWprintf( 13, 17, "患%-8s", sVar );
    break;
  case 3:
/*
    DispDate( 16, 5, -1, lVar );
*/
    break;
  case 4:
    ZWprintf( 19, 2, "%d", iVar );
    break;
  }
  ZWattr( a );
}

/*===========================================================================*/
/* Local Function - Display Screen					     */
/*---------------------------------------------------------------------------*/
static void DispScreen()
{
  ZWprintf( 1, 2, "事由:" );
  ZWprintf( 3, 2, "度数:" );
  ZWprintf( 5, 2, "病种:" );
  ZWprintf( 7, 2, "日期:" );
  ZWprintf( 9, 2, "天数:" );
  ZWprintf( 11, 0, "───────────────" );
  ZWprintf( 13, 8, "本 人 因" );
  ZWprintf( 14, 17, "─────" );
  ZWprintf( 16, 2, "自%16s起 休 假", "" );
  ZWprintf( 17, 5, "───────" );
  ZWprintf( 19, 5, "天 盼 准" );
  ZWprintf( 20, 2, "─" );
}

/*===========================================================================*/
/* Local Function - Before Function For Edit				     */
/*---------------------------------------------------------------------------*/
static int Editable( int n )
{
  switch( n ){
  case 1:
    if( cVar == '0' )
      return( 0 );
    break;
  case 2:
    if( cVar == '1' )
      return( 0 );
    break;
  }
  return( -1 );
}

/*===========================================================================*/
/* Local Function - After Function For Edit				     */
/*---------------------------------------------------------------------------*/
static int CheckVar( int Key, int n )
{
  int r;

  if( Key == ESC )
    return( 0 );
  switch( n ){
  case 0:
    if( cVar < '0' || cVar > '9' ){
      if( ( r = Zmenu( &mMenu ) ) < 0 ){
        Zerror( 4, 11, "合法值为 0 - 9!" );
        return( -1 );
      }
      cVar = r + '0';
    }
    ConvertCode();
    break;
  case 1:
    if( dVar < 37 || dVar > 43 ){
      Zackmsg( 6, 11, 0, "您是不是烧糊涂了?" );
      return( -1 );
    }
    break;
  case 2:
    if( strlen( sVar ) == 0 ){
      Zackmsg( 8, 11, 0, "有什么\"难言之隐\"不可讲清楚的?" );
      return( -1 );
    }
    break;
  case 3:
/*
    if( DateCheck( lVar, 10, 11 ) < 0 )
*/
      return( -1 );
    break;
  case 4:
    if( iVar < 1 || iVar > 30 ){
      Zerror( 12, 11, "一次请假天数为 1 - 30 天!" );
      return( -1 );
    }
    break;
  }
  DispValue( n );
  return( 0 );
}

/*===========================================================================*/
/* Local Function - Edit Data						     */
/*---------------------------------------------------------------------------*/
static void EditData()
{
  ZBUTTON Button[] = {
    { 20, 20, 1, 8, "Esc 退出", ESC, 0, 0 }
  };
  ZFIELD Field[] = {
    { 1, 8, 'C', 1,  0, "N",              &cVar, 0,        CheckVar },
    { 3, 8, 'D', 6,  1, "99.0℃",         &dVar, Editable, CheckVar },
    { 5, 8, 'S', 8,  0, 0,                sVar,  Editable, CheckVar },
    { 7, 8, 'L', 14, 0, "0000年00月00日", &lVar, 0,        CheckVar },
    { 9, 8, 'I', 5,  0, 0,                &iVar, 0,        CheckVar }
  };
  ZSCREEN Screen = {
    sizeof( Button ) / sizeof( ZBUTTON ), Button,
    sizeof( Field ) / sizeof( ZFIELD ), Field, 0
  };
  int i;

  cVar = ' ';
  dVar = 0;
  strcpy( sVar, "" );
/*
  lVar = GetDate();
*/
  iVar = 1;
  ConvertCode();
  for( i = 0; i < sizeof( Field ) / sizeof( ZFIELD ); i ++ )
    DispValue( i );
  if( Zscreen( &Screen ) == 0 )
    Zwarning( 10, 31, "数据编辑失败!" );
}

/*===========================================================================*/
/* Main Program								     */
/*---------------------------------------------------------------------------*/
void main()
{
  if( Zinit() != 0 )
    printf( "Failed on initialize environment!\n" );
  else{
    if( ZWopen( &Window ) == 0 ){
      DispScreen();
      EditData();
      ZWclose();
    }
    Zexit();
  }
}

/*****************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -