PL/I 语言项目实战:通讯录管理系统的设计与实现
PL/I(Programming Language One)是一种高级程序设计语言,它结合了多种编程语言的特性,旨在提高编程效率和代码的可读性。本文将围绕PL/I语言,通过一个通讯录管理系统的设计与实现,展示PL/I语言在现实项目中的应用。
项目背景
随着信息技术的快速发展,个人和组织对通讯录管理的需求日益增长。一个功能完善的通讯录管理系统可以帮助用户方便地管理联系人信息,提高工作效率。本文将使用PL/I语言开发一个简单的通讯录管理系统,实现联系人的增删改查等功能。
系统需求分析
在开始设计通讯录管理系统之前,我们需要明确系统的需求。以下是本系统的主要需求:
1. 数据存储:系统能够存储联系人的基本信息,如姓名、电话、邮箱等。
2. 数据检索:用户可以通过姓名、电话或邮箱等关键字检索联系人信息。
3. 数据增删改:用户可以添加、删除和修改联系人信息。
4. 数据备份与恢复:系统能够对联系人数据进行备份和恢复。
系统设计
数据库设计
本系统采用文件存储方式来模拟数据库。每个联系人信息存储在一个记录中,记录格式如下:
RECORD FORMAT IS FILLER.
01 NAME PIC X(20).
01 PHONE PIC X(15).
01 EMAIL PIC X(30).
程序结构设计
系统主要由以下几个模块组成:
1. 主菜单模块:显示系统功能菜单,供用户选择操作。
2. 数据管理模块:实现联系人的增删改查功能。
3. 数据检索模块:根据关键字检索联系人信息。
4. 数据备份与恢复模块:实现数据的备份和恢复功能。
系统实现
主菜单模块
pl/i
IDENTIFICATION DIVISION.
PROGRAM-ID. MAIN-MENU.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT CONTACT-FILE ASSIGN TO "contacts.dat".
DATA DIVISION.
FILE SECTION.
FD CONTACT-FILE.
01 CONTACT-RECORD.
05 NAME PIC X(20).
05 PHONE PIC X(15).
05 EMAIL PIC X(30).
WORKING-STORAGE SECTION.
01 MENU-CHOICE PIC 9.
01 CONTINUE-PROGRAM PIC X(1).
PROCEDURE DIVISION.
PERFORM INITIALIZE-PROGRAM.
PERFORM MAIN-LOOP UNTIL CONTINUE-PROGRAM = 'N'.
DISPLAY "1. Add Contact".
DISPLAY "2. Delete Contact".
DISPLAY "3. Update Contact".
DISPLAY "4. Search Contact".
DISPLAY "5. Backup Data".
DISPLAY "6. Restore Data".
DISPLAY "0. Exit".
ACCEPT MENU-CHOICE.
PERFORM MENU-CHOICE-PROCESS.
END-PERFORM.
PERFORM TERMINATE-PROGRAM.
STOP RUN.
INITIALIZE-PROGRAM.
OPEN INPUT CONTACT-FILE.
PERFORM READ-NEXT-RECORD.
MAIN-LOOP.
IF MENU-CHOICE = 1
PERFORM ADD-CONTACT
ELSE IF MENU-CHOICE = 2
PERFORM DELETE-CONTACT
ELSE IF MENU-CHOICE = 3
PERFORM UPDATE-CONTACT
ELSE IF MENU-CHOICE = 4
PERFORM SEARCH-CONTACT
ELSE IF MENU-CHOICE = 5
PERFORM BACKUP-DATA
ELSE IF MENU-CHOICE = 6
PERFORM RESTORE-DATA
ELSE IF MENU-CHOICE = 0
SET CONTINUE-PROGRAM TO 'N'.
MENU-CHOICE-PROCESS.
IF MENU-CHOICE NOT = 0
PERFORM READ-NEXT-RECORD.
TERMINATE-PROGRAM.
CLOSE CONTACT-FILE.
数据管理模块
pl/i
PROCEDURE DIVISION.
...
ADD-CONTACT.
PERFORM CLEAR-SCREEN.
DISPLAY "Enter Name: ".
ACCEPT NAME.
DISPLAY "Enter Phone: ".
ACCEPT PHONE.
DISPLAY "Enter Email: ".
ACCEPT EMAIL.
WRITE CONTACT-RECORD FROM CONTACT-RECORD.
PERFORM CLEAR-SCREEN.
DISPLAY "Contact added successfully!".
DELETE-CONTACT.
PERFORM CLEAR-SCREEN.
DISPLAY "Enter Name to delete: ".
ACCEPT NAME.
PERFORM SEARCH-CONTACT-RECORD.
IF FOUND-CONTACT
DELETE CONTACT-RECORD
PERFORM CLEAR-SCREEN.
DISPLAY "Contact deleted successfully!".
ELSE
PERFORM CLEAR-SCREEN.
DISPLAY "Contact not found!".
UPDATE-CONTACT.
PERFORM CLEAR-SCREEN.
DISPLAY "Enter Name to update: ".
ACCEPT NAME.
PERFORM SEARCH-CONTACT-RECORD.
IF FOUND-CONTACT
DISPLAY "Enter new Phone: ".
ACCEPT PHONE.
DISPLAY "Enter new Email: ".
ACCEPT EMAIL.
REWRITE CONTACT-RECORD FROM CONTACT-RECORD.
PERFORM CLEAR-SCREEN.
DISPLAY "Contact updated successfully!".
ELSE
PERFORM CLEAR-SCREEN.
DISPLAY "Contact not found!".
...
数据检索模块
pl/i
PROCEDURE DIVISION.
...
SEARCH-CONTACT.
PERFORM CLEAR-SCREEN.
DISPLAY "Enter Name to search: ".
ACCEPT NAME.
PERFORM SEARCH-CONTACT-RECORD.
IF FOUND-CONTACT
DISPLAY "Name: " NAME.
DISPLAY "Phone: " PHONE.
DISPLAY "Email: " EMAIL.
ELSE
PERFORM CLEAR-SCREEN.
DISPLAY "Contact not found!".
SEARCH-CONTACT-RECORD.
SET FOUND-CONTACT TO FALSE.
PERFORM READ-NEXT-RECORD.
WHILE NOT END-OF-FILE
IF NAME = NAME
SET FOUND-CONTACT TO TRUE
EXIT PERFORM
END-IF
PERFORM READ-NEXT-RECORD
END-WHILE.
...
数据备份与恢复模块
pl/i
PROCEDURE DIVISION.
...
BACKUP-DATA.
PERFORM CLEAR-SCREEN.
DISPLAY "Backup data to: ".
ACCEPT FILENAME.
OPEN OUTPUT BACKUP-FILE.
PERFORM COPY-ALL-RECORDS.
CLOSE BACKUP-FILE.
PERFORM CLEAR-SCREEN.
DISPLAY "Backup completed!".
RESTORE-DATA.
PERFORM CLEAR-SCREEN.
DISPLAY "Restore data from: ".
ACCEPT FILENAME.
OPEN INPUT BACKUP-FILE.
PERFORM COPY-ALL-RECORDS.
CLOSE BACKUP-FILE.
PERFORM CLEAR-SCREEN.
DISPLAY "Restore completed!".
COPY-ALL-RECORDS.
PERFORM READ-NEXT-RECORD.
WHILE NOT END-OF-FILE
WRITE BACKUP-RECORD FROM CONTACT-RECORD
PERFORM READ-NEXT-RECORD
END-WHILE.
...
总结
本文通过PL/I语言实现了一个简单的通讯录管理系统,展示了PL/I语言在现实项目中的应用。在实际开发过程中,可以根据需求对系统进行扩展,如增加用户权限管理、数据加密等。通过这个项目,我们可以了解到PL/I语言在数据处理和文件操作方面的强大功能。
Comments NOTHING