飘云阁

 找回密码
 加入我们

QQ登录

只需一步,快速开始

查看: 2197|回复: 3

[C/C++] [原]联系人管理

[复制链接]
  • TA的每日心情
    开心
    2022-11-16 14:28
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    发表于 2010-1-31 02:34:27 | 显示全部楼层 |阅读模式

    1. ; 联系人管理
    2. ; 作者: 小奇
    3. ; 日期: 2010-1-31
    4. ; 备注: 今天写的代码,基本框架,有需要的就拿去吧!
    5. ; 只写了打开文件,关闭文件,创建文件,还有一个switch

    6. .model small
    7. .stack 200h

    8. .data
    9.   szFileName       db 'data.dat', 0
    10.   strOpenFileSuc   db 'Open File Success', 13,10, '
    11.   strOpenFileFail  db 'Open File Failed' , 13, 10, '
    12.   strCreateFileSuc db 'Create File Success', 13,10, '
    13.   strCrateFileFail db 'Create File Failed' , 13, 10, '
    14.   strCloseFileSuc  db 'Close File Success', 13,10, '
    15.   strCloseFileFail db 'Close File Failed' , 13, 10, '
    16.   strMenuTips      db 13,'**************************************************************',13,10
    17.                    db '                        linkman manage',13, 10,13, 10
    18.                    db 9,'1.Add linkman', 13, 10
    19.                    db 9,'2.Search linkman', 13, 10
    20.                    db 9,'3.Modification linkman information', 13, 10
    21.                    db 9,'4.Delete linkman', 13, 10
    22.                    db 9,'5.Show all linkman list', 13, 10
    23.                    db 9,'0.Exit', 13, 10
    24.                    db 13,10, '**************************************************************'
    25.                    db 13,10, 'Please input: ', "$"
    26.   strReenter       db 13, 10, 'input error,Please Reenter: ', '
    27.   
    28. .code
    29. ; 函数名: CreateFile
    30. ; 参  数: 文件类型
    31. ; 作  用: 通过文件类型
    32. ; 返回值: 如果AX为FFFFh的话,说明文件创建失败了
    33. CreateFile proc
    34. Argv = 4
    35.         push bp
    36.         mov  bp, sp
    37.         push dx
    38.         mov dx, offset szFileName
    39.         push cx
    40.         mov cx, [bp+Argv]
    41.         jb  CREATEFAIL          ; 如果创建失败,将ax置为全FFFF
    42.         mov dx, offset strCreateFileSuc
    43.         jmp CREATEDISPLAY
    44. CREATEFAIL:
    45.         mov ax, 0ffffh
    46.         mov dx, offset strCrateFileFail
    47. CREATEDISPLAY:
    48.         mov cx, ax
    49.         mov ah, 9h
    50.         int 21h
    51.         mov ax, cx
    52.         pop cx
    53.         pop dx
    54.         pop bp
    55.         ret 2
    56. CreateFile endp

    57. ; 函数名: OpenFile
    58. ; 参  数: 打开方式
    59. ; 作  用: 通过打开方式,打开联系人数据文件
    60. OpenFile proc
    61. Argv = 4
    62.         push bp
    63.         mov  bp, sp
    64.         ;保存原来的寄存器
    65.         mov  dx, offset szFileName
    66.         mov  ax, [bp+argv]
    67.         ; 将ah清零,因为打开方式只用到了al
    68.         mov  ah, 3dh
    69.         int  21h
    70.         push ax                         ; 将文件句柄保存起来
    71.         jb   OPENFAIL
    72. OPENSUC:
    73.         ; 如果打开成功,不提示
    74.         ; mov dx, offset strOpenFileSuc
    75.         jmp OPENDISPLAY
    76. OPENFAIL:
    77.         mov  dx, offset strOpenFileFail
    78. OPENDISPLAY:
    79.         mov  ah, 9
    80.         int 21h
    81. OPENEXIT:
    82.         pop  ax
    83.         pop  bp
    84.         ret  2
    85. OpenFile endp

    86. ; 函数名: CloseFile
    87. ; 参  数: 文件句柄
    88. ; 作  用: 通过文件句柄,关闭已经打开的文件
    89. CloseFile proc
    90. Argv = 4
    91.         push bp
    92.         mov  bp, sp
    93.         push ax
    94.         push bx
    95.         push dx

    96.         mov  ah, 3eh
    97.         mov  bx, [bp + Argv]
    98.         int  21h
    99.         jb   CLOSEFAIL
    100. CLOSESUC:
    101.         mov  dx, offset strCloseFileSuc
    102.         jmp  CLOSEDISPLAY
    103. CLOSEFAIL:
    104.         mov dx, offset strCloseFileFail
    105. CLOSEDISPLAY:
    106.         mov  ah, 9
    107.         int  21h
    108. CLOSEEXIT:
    109.         ; 恢复寄存器
    110.         pop  dx
    111.         pop  bx
    112.         pop  ax
    113.         pop  bp
    114.         ret  2
    115. CloseFile endp

    116. ; 函数名: ClearScreen
    117. ; 参  数: 无
    118. ; 作  用: 清屏
    119. ClearScreen proc
    120.         ; 保存寄存器
    121.         push bp
    122.         mov bp, sp
    123.         push ax
    124.         push bx
    125.         push cx
    126.         push dx
    127.         
    128.         ; 清屏
    129.         xor  cx, cx
    130.         
    131.         mov  dh, 32h             ; 列数
    132.         mov  dl, 6eh             ; 行数
    133.         mov  bh, 07              ; 清屏
    134.         xor  cx, cx
    135.         ; 清除整个屏幕
    136.         mov  ax, 600h
    137.         int  10h
    138.         
    139.         mov  bh, 0
    140.         mov  dh, 0
    141.         mov  dl, 0
    142.         mov  ah, 2
    143.         int  10h
    144.         ; 恢复
    145.         pop dx
    146.         pop cx
    147.         pop bx
    148.         pop ax
    149.         pop bp
    150.         ret
    151. ClearScreen endp

    152. ; 函数名: ShowMenu
    153. ; 参  数: 无
    154. ; 作  用: 显示操作界面
    155. ShowMenu proc
    156.         call ClearScreen
    157.         mov dx, offset strMenuTips
    158.         mov ah, 9
    159.         int 21h
    160.         ret
    161. ShowMenu endp

    162. ; 函数名: ShowAll
    163. ; 参  数: 文件句柄
    164. ; 作  用: 显示操作界面
    165. ShowAll proc
    166.         mov dx, offset strReenter
    167.         mov ax, 09h
    168.         int 21h
    169.         ret 2
    170. ShowAll endp

    171. ; 函数名: ParseRequest
    172. ; 参  数: 无
    173. ; 作  用: 处理用户选项界面
    174. ParseRequest proc
    175.         ; 局部变量
    176.         ; 这里不能这么申请,要改直接放到栈里去
    177.         push bp
    178.         mov  bp, sp
    179.         push ax         ; 变量 保存文件句柄
    180.         push bx
    181.         push cx
    182.         push dx
    183.         
    184.         ; 打开文件
    185.         mov  ax, 2h     ; 2是打开文件的方式
    186.         push ax
    187.         Call OpenFile
    188.         jb   CREATE       ; 如果打开文件失败,则跳去创建文件      
    189. PARSE:                  
    190.         call ShowMenu
    191. INPUT:                          ; 用户输入
    192.         xor ax, ax
    193.         int 16h
    194.         ; 输入回显
    195.         mov ah, 6
    196.         mov dl, al
    197.         int 21h
    198.         
    199.         cmp al, '0'       ; 如果用户输入0的话结束
    200.         jz  PARSEEXIT
    201.         sub al, '1'
    202.         sub al, 4         ; 如果大于5的话
    203.         jg  REINPUT
    204.         ;-------------------------- 这里处理用户的请求了
    205.         mov ax, ss:[bp-2]
    206.         ; 把参数压进栈
    207.         push ax
    208.         mov bx, offset ParseTable
    209.         shl ax, 1
    210.         add bx, ax
    211.         mov ax, cs:[bx]
    212.         call ax
    213.         ;; 处理完请求跳回去继续等待用户输入
    214.         jmp PARSE

    215. CREATE:                 ; 创建文件
    216.         xor ax, ax
    217.         push ax
    218.         call CreateFile
    219.         cmp ax, 0ffffh
    220.         jnz  PARSE
    221. PARSEEXIT:     
    222.         pop dx
    223.         pop cx
    224.         pop bx
    225.         pop bp          ; 变量
    226.         pop bp
    227.         ret
    228. REINPUT:
    229.         mov dx, offset strReenter
    230.         mov ah, 09h
    231.         int 21h
    232.         jmp INPUT

    233.         ; 还没有加函数
    234. ParseTable      dw offset PARSEEXIT;
    235.                 dw offset PARSEEXIT;
    236.                 dw offset PARSEEXIT;
    237.                 dw offset PARSEEXIT;
    238.                 dw offset ShowAll;
    239. ParseRequest endp

    240. ; 程序入口函数
    241. main:
    242.         mov ax, @data
    243.         mov ds, ax
    244.         mov es, ax
    245.         call ParseRequest
    246.         mov ah, 4ch
    247.         int 21h
    248. end main
    复制代码
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-1-31 11:49:33 | 显示全部楼层
    拿走代码,留下脚印!~
    你就是偶们的偶像:kiss: !~~
    PYG19周年生日快乐!
  • TA的每日心情
    开心
    2023-8-23 14:44
  • 签到天数: 1 天

    [LV.1]初来乍到

    发表于 2010-2-11 00:23:32 | 显示全部楼层
    我承认我是来偷代码的..../:11
    PYG19周年生日快乐!

    该用户从未签到

    发表于 2010-2-11 10:08:04 | 显示全部楼层
    只能膜拜,无法学习
    PYG19周年生日快乐!
    您需要登录后才可以回帖 登录 | 加入我们

    本版积分规则

    快速回复 返回顶部 返回列表