PL/I 语言 项目实战之简易通讯录备份

PL/I阿木 发布于 2 天前 4 次阅读


PL/I 语言项目实战:简易通讯录备份系统

PL/I(Programming Language One)是一种高级程序设计语言,它结合了多种编程语言的特性,旨在提高编程效率和代码的可读性。本文将围绕PL/I语言,通过一个简易通讯录备份系统的项目实战,展示如何使用PL/I语言进行实际编程。

项目背景

随着信息技术的快速发展,个人和组织对数据备份的需求日益增长。通讯录作为个人和组织的重要信息资源,其备份显得尤为重要。本项目的目标是利用PL/I语言开发一个简易的通讯录备份系统,实现通讯录数据的备份和恢复功能。

系统需求分析

在开始编写代码之前,我们需要对系统进行需求分析,明确系统的功能模块和性能要求。

功能模块

1. 通讯录数据录入:允许用户添加新的通讯录信息。
2. 通讯录数据查询:允许用户根据姓名、电话号码等关键字查询通讯录信息。
3. 通讯录数据备份:将通讯录数据备份到指定的文件中。
4. 通讯录数据恢复:从备份文件中恢复通讯录数据。

性能要求

1. 数据存储:通讯录数据应存储在文件中,便于备份和恢复。
2. 用户界面:提供简单的文本界面,方便用户操作。
3. 错误处理:对用户输入进行校验,防止非法输入。

系统设计

数据结构设计

通讯录数据包括以下字段:

- 姓名(Name)
- 电话号码(Phone Number)
- 邮箱地址(Email Address)

我们可以使用PL/I语言中的记录(Record)结构来表示通讯录数据。

pl/i
DCL DSN COMMUNICATIONS FILE (EXTENT(100));
01 COMMUNICATIONS-RECORD.
05 NAME PIC X(50).
05 PHONE-NUMBER PIC X(15).
05 EMAIL-ADDRESS PIC X(50).

备份和恢复模块设计

备份模块负责将通讯录数据写入到备份文件中,恢复模块负责从备份文件中读取数据并恢复到通讯录中。

pl/i
PROCEDURE BACKUP-TO-FILE;
DCL FILE-NAME PIC X(50) VALUE 'BACKUP.DAT';
DCL FILE-DESC FILE-CONTROL;
DCL FILE-RECORD COMMUNICATIONS-RECORD;
OPEN OUTPUT FILE-DESC FILE-NAME;
READ COMMUNICATIONS INTO FILE-RECORD UNTIL END-OF-FILE;
WRITE FILE-DESC FROM FILE-RECORD;
CLOSE FILE-DESC;
END BACKUP-TO-FILE;

PROCEDURE RESTORE-FROM-FILE;
DCL FILE-NAME PIC X(50) VALUE 'BACKUP.DAT';
DCL FILE-DESC FILE-CONTROL;
DCL FILE-RECORD COMMUNICATIONS-RECORD;
OPEN INPUT FILE-DESC FILE-NAME;
READ FILE-DESC INTO FILE-RECORD UNTIL END-OF-FILE;
WRITE COMMUNICATIONS FROM FILE-RECORD;
CLOSE FILE-DESC;
END RESTORE-FROM-FILE;

代码实现

以下是一个简易的通讯录备份系统的PL/I代码实现:

pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. COMMUNICATIONS-BACKUP.

ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT COMMUNICATIONS ASSIGN TO 'COMMUNICATIONS.DAT'
ORGANIZATION IS INDEXED
ACCESS MODE IS SEQUENTIAL
RECORD KEY IS NAME.

DATA DIVISION.
FILE SECTION.
FD COMMUNICATIONS.
01 COMMUNICATIONS-RECORD.
05 NAME PIC X(50).
05 PHONE-NUMBER PIC X(15).
05 EMAIL-ADDRESS PIC X(50).

WORKING-STORAGE SECTION.
01 WS-NAME PIC X(50).
01 WS-PHONE-NUMBER PIC X(15).
01 WS-EMAIL-ADDRESS PIC X(50).
01 WS-CHOICE PIC X(1).

PROCEDURE DIVISION.
PERFORM INITIALIZE-DATABASE.
PERFORM MAIN-LOOP UNTIL WS-CHOICE = 'Q'.
DISPLAY "1. Add Contact".
DISPLAY "2. Search Contact".
DISPLAY "3. Backup Contacts".
DISPLAY "4. Restore Contacts".
DISPLAY "Q. Quit".
ACCEPT WS-CHOICE.
EVALUATE WS-CHOICE
WHEN '1' PERFORM ADD-CONTACT
WHEN '2' PERFORM SEARCH-CONTACT
WHEN '3' PERFORM BACKUP-CONTACTS
WHEN '4' PERFORM RESTORE-CONTACTS
WHEN OTHERS DISPLAY "Invalid choice"
END-EVALUATE.
END-PERFORM.
PERFORM TERMINATE-DATABASE.
STOP RUN.

INITIALIZE-DATABASE.
OPEN I-O COMMUNICATIONS.
IF FILE-STATUS NOT = '00'
DISPLAY "Error opening file"
STOP RUN
END-IF.

ADD-CONTACT.
DISPLAY "Enter name: ".
ACCEPT WS-NAME.
DISPLAY "Enter phone number: ".
ACCEPT WS-PHONE-NUMBER.
DISPLAY "Enter email address: ".
ACCEPT WS-EMAIL-ADDRESS.
WRITE COMMUNICATIONS FROM COMMUNICATIONS-RECORD.

SEARCH-CONTACT.
DISPLAY "Enter name to search: ".
ACCEPT WS-NAME.
PERFORM SEARCH-RECORD.

BACKUP-CONTACTS.
PERFORM BACKUP-TO-FILE.

RESTORE-CONTACTS.
PERFORM RESTORE-FROM-FILE.

SEARCH-RECORD.
PERFORM VARYING COMMUNICATIONS-RECORD FROM HIGH VALUES OF COMMUNICATIONS-RECORD UNTIL NAME = WS-NAME OR NAME = SPACES
IF NAME = WS-NAME
DISPLAY "Name: ", NAME
DISPLAY "Phone Number: ", PHONE-NUMBER
DISPLAY "Email Address: ", EMAIL-ADDRESS
END-IF
END-PERFORM.

TERMINATE-DATABASE.
CLOSE COMMUNICATIONS.

总结

本文通过一个简易通讯录备份系统的项目实战,展示了如何使用PL/I语言进行实际编程。通过设计合理的数据结构和功能模块,实现了通讯录数据的录入、查询、备份和恢复功能。虽然PL/I语言在现代编程中不如其他语言流行,但了解和学习PL/I语言对于理解编程语言的发展和演变具有重要意义。