📄 tran_acc.ec
字号:
#include </u/ebcsav/include/sav.h>$include sqlca;$include sqlda;short menu();short menusel();void addspace();void addspacef();void mess();char y_n();char readdv();char readst();void prt_inum();void prt_dnum();void prtf_inum();void prtf_dnum();#include </u/ebcsav/include/begin>$ char s_num[2],nam[9];$ long a_num;short num_c,i,j,l,sec_num,pa,t,bz;long d,d1,d2;double x,sum;char c;char s1[11],s2[11],s[36],sn[36];FILE *pf,*pf1,*pf2;static char *title[13]={"0. 退 出 ","1. 增加单位 ","2. 删除单位 ", "3. 列 单 位 ","4. 帐号磁盘输入 ","5. 键盘输入 ","6. 列 帐 户 ", "7. 打印帐户 ","8. 编码磁盘输入 ","9. 编码对照输入 ","a. 编码对照修改 ", "b. 编码对照删除 ","c. 列编码对照表 ",};static char *remind[13]={" 退出本程序 "," 增加转存储蓄的单位 ", " 删除转存储蓄的单位 "," 显示转存储蓄的单位 ", " 从软磁盘装入转存的帐户信息 "," 从键盘输入、或修改转存的帐户信息 ", " 显示转存的帐户信息 "," 打印转存的帐户信息 ", " 从软磁盘以编码方式装入转存的帐户信息 ", " 从键盘输入转存的编码帐户对照信息 ", " 从键盘修改转存的编码帐户对照信息 ", " 删除转存的编码帐户对照信息 ", " 显示转存的编码信息 "};static short menu_row[13]={3,3,3,3,4,4,4,4,5,5,5,6,6}, menu_col[13]={12,29,41,53,12,29,41,53,12,29,49,12,29};$ database saving;s_num[1]='\0';move(0,25);printw("转 存 帐 户 信 息 管 理");num_c=0;while(1) { move(2,0); clrtobot(); block(1,0,22,80); block(2,10,6,58); num_c=menu(title,remind,menu_row,menu_col,12,num_c); num_c=menusel(title,remind,menu_row,menu_col,12,num_c,0); move(2,0); clrtobot(); block(1,0,22,80); switch(num_c) { case 0: endwin(); $ close database; return; case 1: move(2,25); addstr("增 加 新 的 转 存 单 位"); move(3,25); addstr("=============================="); pf=fopen("/u/ebcsav/data/tran_sec.dat","r+"); i=0; while(1) { fread(s,24,1,pf); if(feof(pf)) break; i++; } while(1) { move(5,10); printw("请输入单位编号( ≤%3d , 0 返回) ",i+1); scanw("%d",&sec_num); move(20,30); if(sec_num<1) { fclose(pf); break; } if(sec_num>i+1) { printw("编号太大, "); mess((short)2); } else if(sec_num<=i) { fseek(pf,(sec_num-1)*24,0); fread(s,24,1,pf); if(s[0]!='\0') { printw("该单位已存在, "); mess(2); } else break; } else break; } if(sec_num==0) break; addspace(28); move(7,10); addstr("请输入单位名称(最多24个字节): "); readst(s,24); fseek(pf,(sec_num-1)*24,0); fwrite(s,24,1,pf); fclose(pf); strcpy(s,"/u/ebcsav/data/tran001.dat"); s[19]=sec_num/100+48; s[20]=(sec_num%100)/10+48; s[21]=(sec_num%10)+48; pf=fopen(s,"w"); d=0; fwrite(&d,4,1,pf); x=0.0; fwrite(&x,8,1,pf); fclose(pf); break; case 2: move(2,29); addstr("删 除 转 存 单 位"); move(3,29); addstr("======================"); pf=fopen("/u/ebcsav/data/tran_sec.dat","r+"); while(1) { move(5,10); addstr("请输入单位编号( 0 返回) "); scanw("%d",&sec_num); move(20,30); if(sec_num<1) { fclose(pf); break; } fseek(pf,(sec_num-1)*24,0); fread(s,24,1,pf); if(feof(pf)||s[0]=='\0') { printw("该单位不存在, "); mess(2); } else break; } if(sec_num==0) break; addspace(28); move(7,10); s[24]='\0'; printw("单位名称: %s",s); move(20,20); printw("是否删除 (Y/N)? "); c=y_n('Y','N','N'); if(c=='Y') { s[0]='\0'; fseek(pf,(sec_num-1)*24,0); fwrite(s,24,1,pf); strcpy(s,"rm /u/ebcsav/data/tran001.dat"); s[22]=sec_num/100+48; s[23]=(sec_num%100)/10+48; s[24]=(sec_num%10)+48; system(s); } fclose(pf); break; case 3: move(2,29); addstr("转 存 单 位 目 录"); move(3,29); addstr("======================"); pf=fopen("/u/ebcsav/data/tran_sec.dat","r"); i=0; l=5; j=4; move(4,4); printw("编号 单 位 名 称 编号 单 位 名 称"); while(1) { fread(s,24,1,pf); if(feof(pf)) break; i++; if(s[0]=='\0') continue; move(l,j); s[24]='\0'; printw("%3d %-24s",i,s); l++; if(j==4&&l==22) { j=40; l=5; } else if(j==40&&l==22) { move(23,30); addstr("暂停显示, "); mess((short)4); getch(); l=5; j=4; move(5,0); clrtobot(); block(1,0,22,80); } } move(23,30); printw("全部显示, "); mess((short)3); getch(); fclose(pf); break; case 4: move(2,19); addstr("从 软 盘 装 入 转 存 帐 户 信 息"); move(3,19); addstr("=========================================="); pf=fopen("/u/ebcsav/data/tran_sec.dat","r"); while(1) { move(5,10); addstr("请输入单位编号( 0 返回) "); scanw("%d",&sec_num); move(20,30); if(sec_num<1) break; fseek(pf,(sec_num-1)*24,0); fread(s,24,1,pf); if(feof(pf)||s[0]=='\0') { printw("该单位不存在, "); mess(2); } else break; } fclose(pf); if(sec_num==0) break; addspace(28); move(7,10); s[24]='\0'; printw("单位名称: %s",s); move(20,20); printw("是否装入 (Y/N)? "); c=y_n('Y','N','N'); if(c=='Y') { strcpy(s,"doscp b:tran001.txt /u/ebcsav/tmp"); s[12]=sec_num/100+48; s[13]=(sec_num%100)/10+48; s[14]=(sec_num%10)+48; move(20,20); addstr("请将软盘片插入 B: 驱动器, "); mess((short)4); getch(); move(20,20); addspace(40); if(system(s)!=0) { addstr("读软盘出错, "); mess((short)3); getch(); break; } strcpy(s,"/u/ebcsav/data/tran001.dat"); s[19]=sec_num/100+48; s[20]=(sec_num%100)/10+48; s[21]=(sec_num%10)+48; pf=fopen(s,"w"); strcpy(s,"/u/ebcsav/tmp/tran001.txt"); s[18]=sec_num/100+48; s[19]=(sec_num%100)/10+48; s[20]=(sec_num%10)+48; pf1=fopen(s,"r"); fseek(pf,12,0); i=0; sum=0.0; while(1) { fscanf(pf1,"%ld%lf",&d,&x); if(feof(pf1)) break; fwrite(&d,4,1,pf); fwrite(&x,8,1,pf); i++; sum+=x; } fseek(pf,4,0); fwrite(&sum,8,1,pf); fclose(pf); fclose(pf1); move(20,10); printw("装入完成, 共有%3d个帐户, 合计",i); prt_dnum(sum,16); addstr("元. "); mess((short)3); getch(); } break; case 5: move(2,19); addstr("从 键 盘 输 入 转 存 帐 户 信 息"); move(3,19); addstr("=========================================="); pf=fopen("/u/ebcsav/data/tran_sec.dat","r"); while(1) { move(5,10); addstr("请输入单位编号( 0 返回) "); scanw("%d",&sec_num); move(20,30); if(sec_num<1) break; fseek(pf,(sec_num-1)*24,0); fread(s,24,1,pf); if(feof(pf)||s[0]=='\0') { printw("该单位不存在, "); mess(2); } else break; } fclose(pf); if(sec_num==0) break; addspace(28); move(7,10); s[24]='\0'; printw("单位名称: %s",s); strcpy(s,"/u/ebcsav/data/tran001.dat"); s[19]=sec_num/100+48; s[20]=(sec_num%100)/10+48; s[21]=(sec_num%10)+48; pf=fopen(s,"r+"); i=0; while(1) { fread(&d,4,1,pf); fread(&x,8,1,pf); if(feof(pf)) break; i++; } while(1) { move(9,10); printw("请输入序号(≤%3d, 按 0 返回)",i);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -