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

📄 ebcsav.c

📁 这是一个使用 informix esql/c 技术开发的银行程序的部分代码。
💻 C
📖 第 1 页 / 共 3 页
字号:
#include </u/ebcsav/include/sav.h>
short menu();
short menusel();
void get_op();
void block();
void num_date();
void addspace();
void mess();
void query();
void data_in();
void abate();
short settl_op();
short statement();
short fix();
short demand();
short dated();
short large();
short call();
short house();
void adjust_inte();
void add_inte();
void carry();
void change();
char s[46];
char sp[7];
short year,month,day,op_num;
main()
  {
    FILE *pf;
    short i,j,num_c,num_c1,num_c2,m_c,flag=0;
    static char *title[8]={"0.  退出 ","1.操作员 ","2.用  户 ",
      "3.凭  证 ","4.利汇率 ","5.开  业 ","6.日  终 ","7.储  蓄 "};
    static char *remind[8]={"  退出本程序  ",
      "  对操作员的权限、操作方式等和对营业部门名称进行管理  ",
      "  处理用户的特殊业务,如查询信息、挂失、冻结、修改密码等  ",
      "  对发放的重要凭证进行登记  ",
      "  对各种储蓄利率、保值率、外汇汇率进行管理  ",
      "  做开始营业的初始准备工作  ","  做日终停业后的帐目整理工作  ",
      "  接待用户处理日常储蓄业务  "};
    static short menu_row[8]={1,1,1,1,1,1,1,1},
      menu_col[8]={4,13,22,31,40,49,58,67};
    static char *title1[7]={"0.  返  回  ","1.  增  加  ","2.  修  改  ",
      "3.  删  除  ","4.  列目录  ","5.  营业所  ","6.  重要更正"};
    static char *remind1[7]={"  返回主选择单  ","  增加新的操作员  ",
      "  修改操作员的名称、密码、操作方式、权限  ","  删除操作员  ",
      "  在屏幕上列出操作员的有关信息  ","  管理营业部门的名称、简称  ",
      "  对事后发现帐户的错误信息做重要更正(必须从主管部门索取密码)  "};
    static short menu_row1[11]={4,5,6,7,8,9,10,11,12,13,14},
      menu_col1[7]={10,10,10,10,10,10,10};
    static char *title2[10]={"0. 返    回 ","1. 查    询 ","2. 挂    失 ",
      "3. 解    挂 ","4. 冻    结 ","5. 解    冻 ","6. 修    改 ",
      "7. 冲    正 ","8. 转 存 户 ","9. 移    植"};
    static char *remind2[10]={"  返回主选择单  ","  查询储户的各项档案资料  ",
      "  储户存款凭证丢失,在此登记,停止该帐户支取  ",
      "  对已挂失的帐户,在此取销挂失状态,允许该帐户支取  ",
      "  暂时停止某帐户使用  ",
      "  对已冻结的帐户,在此取销冻结状态,恢复该帐户使用  ",
      "  按照储户的要求,为之修改姓名、地址、密码  ",
      "  冲销操作错误的业务  ","  管理人民币活期储蓄帐户转存业务的有关信息  ",
      "  将本系统以外的数据转入本系统  "};
    static short menu_col2[10]={19,19,19,19,19,19,19,19,19,19};
    static char *title3[6]={"0.  返  回  ","1.  发放凭证","2.  回收凭证",
      "3.  报废凭证","4.  显示清单","5.  凭证类型"};
    static char *remind3[6]={"  返回主选择单  ","  操作员领取凭证,在此登记  ",
      "  操作员交回凭证,在此登记  ","  凭证作废, 在此登记  ",
      "  显示输出凭证使用的情况  ","  定义凭证类型编号与名称的对照表  "};
    static short menu_col3[6]={28,28,28,28,28,28};
    static char *title4[5]={"0.  返  回  ","1.  利  率  ","2.  保值率  ",
      "3.  汇  率  ","4.  打  印  "};
    static char *remind4[5]={"  返回主选择单  ","  管理各种储蓄利率  ",
      "  管理储蓄保值率  ","  管理外汇汇率  ","  打印各种利、汇率  "};
    static short menu_col4[5]={37,37,37,37,37};
    static char *title5[3]={"0.  返  回  ","1. 日初始化 ","2. 开    业 "};
    static char *remind5[3]={"  返回主选择单  ",
      "  做开始营业的准备工作, 将有关表置成初始状态  ",
      "  允许操作员做储蓄业务  "};
    static short menu_col5[3]={46,46,46};
    static char *title6[11]={"0.  返  回  ","1.操作员结帐","2.  停止营业",
      "3.  轧  帐  ","4.  打印报表","5.  数据后备","6.  数据写盘",
      "7.  调整利息","8.  计  息  ","9.  手工入帐","a.  总帐结转"};
    static char *remind6[11]={"  返回主选择单  ","  操作员处理自己的结帐事务  ",
      "  停止普通操作员工作, 停止办理储蓄业务  ",
      "  日终停业后进行系统轧帐  ","  打印各种统计报表  ",
      "  将全部数据写到磁带或软盘上去, 或从磁带或软盘将全部数据装入  ",
      "  将有关数据写入软盘,转给事后监督  ",
      "  利率调整时, 将活期和零存整取储蓄的累计利息按新的利率折算  ",
      "  在计息日, 将活期储蓄的累计利息计入本金  ",
      "  从键盘将数据手工输入总帐  ","  月、季、年末时结转总帐余额  "};
    static short menu_col6[11]={55,55,55,55,55,55,55,55,55,55,55};
    static char *title7[9]={"0.  返  回  ","1.  整存整取","2.   活  期 ",
      "3.  零存整取","4.  存本取息","5.  定活两便","6.   大  额 ",
      "7.  通知存款","8.  住房基金"};
    static char *remind7[9]={"  返回主选择单  ","  办理整存整取储蓄业务  ",
      "  办理活期储蓄业务  ","  办理零存整取储蓄业务  ",
      "  办理存本取息储蓄业务  ","  办理定活两便储蓄业务  ",
      "  办理大额储蓄业务  ","  办理通知存款储蓄业务  ",
      "  办理住房基金业务  "};
    static short menu_col7[9]={64,64,64,64,64,64,64,64,64};
    static char *(*p_tit[7])={title1,title2,title3,title4,title5,title6,title7};
    static char *(*p_rem[7])={remind1,remind2,remind3,remind4,
      remind5,remind6,remind7};
    static short *p_col[7]={menu_col1,menu_col2,menu_col3,
      menu_col4,menu_col5,menu_col6,menu_col7};
    static short num[7]={6,9,5,4,2,10,8};
    num_c=num_c1=num_c2=m_c=0;
    num_date(&year,&month,&day);
    initscr();
    system("/u/ebcsav/bin/sav_clock");
    while((pf=fopen("/u/ebcsav/data/sav_op.dat","r"))==NULL);
    for(i=0;i<3;i++)
      {
        move(9,30);
        op.name[0]='\0';
        mess((short)7);
        clrtoeol();
        scanw("%hd",&op_num);
        fseek(pf,(op_num-1)*17,0);
        fread(&op,17,1,pf);
        move(22,30);
        if(op_num<1||feof(pf)||op.name[0]=='\0')
          {
            printw("代号输入错, ");
            mess((short)2);
            continue;
          }
        else clrtoeol();
        move(11,30);
        printw("操作员名称:       ");
        clrtoeol();
        for(j=0;j<6;j++) if(op.name[j]!='\0') s[j]=op.name[j]^0xff;
        else s[j]='\0';
        addstr(s);
        move(13,30);
        printw("请输入操作员密码: ");
        noecho();
        scanw("%s",sp);
        echo();
        for(j=0;j<6;j++) if(sp[j]!='\0') sp[j]^=0xff;
        move(22,30);
        if(strcmp(op.pass,sp)!=0)
          {
            move(22,30);
            printw("密码输入错, ");
            mess(2);
            continue;
          }
        i=10;
        break;
      }
    fclose(pf);
    if(i!=10)
      {
        clear();
        refresh();
        endwin();
        printf("                            输入出错太多, 停止运行!\n");
        return;
      }
    if((op.priv&0xc0)!=0)
      {
        if((op.priv&3)==0)
          {
            move(22,20);
            printw("未开业、或该操作员已经在工作, ");
            mess((short)3);
            getch();
            clear();
            refresh();
            endwin();
            return;
          }
        else
          {
            num[6]=0;
            if((op.priv&0x80)!=0) flag=2;
            else flag=1;
          }
      }
    op.priv|=0x40;
    while((pf=fopen("/u/ebcsav/data/sav_op.dat","r+"))==NULL);
    fseek(pf,(op_num-1)*17,0);
    fwrite(&op,17,1,pf);
    fclose(pf);
    if((op.type&(short)1)==0&&num[6]!=0) num[6]=2;
    for(i=1;i<7;i++)
      {
        if(((op.priv>>(6-i))&1)==0)
          {
            if(i==6)
              {
                num[5]=1;
                op.priv|=1;
              }
            else for(j=2;j<8;j++) title[i][j]=' ';
          }
      }
    while(1)
      {
        clear();
        block(0,2,3,76);
        num_c=menu(title,remind,menu_row,menu_col,7,num_c);
        if(m_c==0) num_c=menusel(title,remind,menu_row,menu_col,7,num_c,1);
        if(num_c==0)
          {
            while((pf=fopen("/u/ebcsav/data/sav_op.dat","r+"))==NULL);
            fseek(pf,(op_num-1)*17,0);
            fread(&op,17,1,pf);
            op.priv&=0xbf;
            fseek(pf,(op_num-1)*17,0);
            fwrite(&op,17,1,pf);
            fclose(pf);
            clear();
            refresh();
            endwin();
            break;
          }
        if(m_c==0) m_c=1;
        while(1)
          {
            block(3,num_c*9-1,num[num_c-1]+3,16);
            if(num_c1>num[num_c-1])num_c1=0;
            num_c1=menu(p_tit[num_c-1],p_rem[num_c-1],menu_row1,
              p_col[num_c-1],num[num_c-1],num_c1);
            if(m_c==1) num_c1=menusel(p_tit[num_c-1],p_rem[num_c-1],menu_row1,
              p_col[num_c-1],num[num_c-1],num_c1,0);
            if(num_c1==0)
              {
                move(3,0);
                clrtobot();
                m_c=0;
                break;
              }
            switch (num_c)
              {
                case 1:
                  switch (num_c1)
                    {
                      case 1:
                        sprintf(s,"/u/ebcsav/bin/op_add %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 2:
                        sprintf(s,"/u/ebcsav/bin/op_change %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 3:
                        sprintf(s,"/u/ebcsav/bin/op_delete %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 4:
                        sprintf(s,"/u/ebcsav/bin/op_list %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 5:
                        sprintf(s,"/u/ebcsav/bin/sections %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 6:
                        change();
                    }
                  break;
                case 2:
                  switch (num_c1)
                    {
                      case 1:
                        query();
                        break; 
                      case 2:
                        sprintf(s,"/u/ebcsav/bin/hang_on %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 3:
                        sprintf(s,"/u/ebcsav/bin/hang_off %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 4:
                        sprintf(s,"/u/ebcsav/bin/freeze_on %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 5:
                        sprintf(s,"/u/ebcsav/bin/freeze_off %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 6:
                        sprintf(s,"/u/ebcsav/bin/change_acc %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 7:
                        abate();
                        break; 
                      case 8:
                        sprintf(s,"/u/ebcsav/bin/tran_acc %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
/*
                      case 9:
                        data_in();
*/
                    }
                  break;
                case 3:
                  switch (num_c1)
                    {
                      case 1:
                        sprintf(s,"/u/ebcsav/bin/cred_issu %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break;
                      case 2:
                        sprintf(s,"/u/ebcsav/bin/cred_recov %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 3:
                        sprintf(s,"/u/ebcsav/bin/cred_canc %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 4:
                        sprintf(s,"/u/ebcsav/bin/cred_list %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 5:
                        sprintf(s,"/u/ebcsav/bin/cred_type %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                    }
                  break;
                case 4:
                  switch (num_c1)
                    {
                      case 1:
                        sprintf(s,"/u/ebcsav/bin/rate_inte %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 2:
                        sprintf(s,"/u/ebcsav/bin/rate_main %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 3:
                        sprintf(s,"/u/ebcsav/bin/rate_exch %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                        break; 
                      case 4:
                        sprintf(s,"/u/ebcsav/bin/rate_prt %c%c sys%c%c",
                          op_num/10+48,(op_num%10)+48,(month%10)+97,
                          (day%10)+97);
                        system(s);
                    }
                  break;
                case 5:
                  switch (num_c1)
                    {
                      case 1:

⌨️ 快捷键说明

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