PL/I 语言学生信息管理系统全流程开发实战
PL/I(Programming Language One)是一种高级程序设计语言,它结合了多种编程语言的特性,旨在提高编程效率和代码的可读性。本文将围绕PL/I语言开发一个学生信息管理系统,通过全流程的实战,展示如何使用PL/I语言实现一个完整的信息管理系统。
1. 系统需求分析
在开始编码之前,我们需要明确学生信息管理系统的需求。以下是我们需要实现的功能:
- 学生信息录入
- 学生信息查询
- 学生信息修改
- 学生信息删除
- 学生信息统计
2. 系统设计
2.1 数据库设计
为了存储学生信息,我们需要设计一个数据库。以下是学生信息表的结构:
sql
CREATE TABLE Student (
ID INT PRIMARY KEY,
Name VARCHAR(50),
Age INT,
Gender CHAR(1),
Class VARCHAR(50)
);
2.2 系统模块设计
根据需求分析,我们可以将系统分为以下几个模块:
- 数据库连接模块
- 学生信息录入模块
- 学生信息查询模块
- 学生信息修改模块
- 学生信息删除模块
- 学生信息统计模块
3. PL/I 语言编程实战
3.1 数据库连接模块
我们需要创建一个数据库连接模块,用于连接到数据库。
pl1
IDENTIFICATION DIVISION.
PROGRAM-ID. DB-CONNECT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO "STUDENT.DAT"
ORGANIZATION IS SEQUENTIAL
ACCESS MODE IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE.
01 STUDENT-RECORD.
05 STUDENT-ID PIC 9(5).
05 STUDENT-NAME PIC X(50).
05 STUDENT-AGE PIC 9(2).
05 STUDENT-GENDER PIC X(1).
05 STUDENT-CLASS PIC X(50).
3.2 学生信息录入模块
接下来,我们实现学生信息录入模块。
pl1
IDENTIFICATION DIVISION.
PROGRAM-ID. STUDENT-ADD.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO "STUDENT.DAT".
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE.
01 STUDENT-RECORD.
05 STUDENT-ID PIC 9(5).
05 STUDENT-NAME PIC X(50).
05 STUDENT-AGE PIC 9(2).
05 STUDENT-GENDER PIC X(1).
05 STUDENT-CLASS PIC X(50).
WORKING-STORAGE SECTION.
01 WS-NEW-RECORD.
05 WS-NEW-ID PIC 9(5).
05 WS-NEW-NAME PIC X(50).
05 WS-NEW-AGE PIC 9(2).
05 WS-NEW-GENDER PIC X(1).
05 WS-NEW-CLASS PIC X(50).
PROCEDURE DIVISION.
PERFORM DB-CONNECT.
DISPLAY "Enter student ID: ".
ACCEPT WS-NEW-ID.
DISPLAY "Enter student name: ".
ACCEPT WS-NEW-NAME.
DISPLAY "Enter student age: ".
ACCEPT WS-NEW-AGE.
DISPLAY "Enter student gender (M/F): ".
ACCEPT WS-NEW-GENDER.
DISPLAY "Enter student class: ".
ACCEPT WS-NEW-CLASS.
WRITE STUDENT-RECORD FROM WS-NEW-RECORD.
STOP RUN.
3.3 学生信息查询模块
学生信息查询模块的实现如下:
pl1
IDENTIFICATION DIVISION.
PROGRAM-ID. STUDENT-QUERY.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO "STUDENT.DAT".
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE.
01 STUDENT-RECORD.
05 STUDENT-ID PIC 9(5).
05 STUDENT-NAME PIC X(50).
05 STUDENT-AGE PIC 9(2).
05 STUDENT-GENDER PIC X(1).
05 STUDENT-CLASS PIC X(50).
WORKING-STORAGE SECTION.
01 WS-QUERY-ID PIC 9(5).
01 WS-FOUND PIC X.
PROCEDURE DIVISION.
PERFORM DB-CONNECT.
DISPLAY "Enter student ID to query: ".
ACCEPT WS-QUERY-ID.
OPEN INPUT STUDENT-FILE.
READ STUDENT-FILE AT END SET WS-FOUND TO 'N'.
IF WS-FOUND = 'Y' THEN
DISPLAY "Student ID: ", STUDENT-ID
DISPLAY "Name: ", STUDENT-NAME
DISPLAY "Age: ", STUDENT-AGE
DISPLAY "Gender: ", STUDENT-GENDER
DISPLAY "Class: ", STUDENT-CLASS
ELSE
DISPLAY "Student not found."
END-IF.
CLOSE STUDENT-FILE.
STOP RUN.
3.4 学生信息修改模块
学生信息修改模块的实现如下:
pl1
IDENTIFICATION DIVISION.
PROGRAM-ID. STUDENT-UPDATE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO "STUDENT.DAT".
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE.
01 STUDENT-RECORD.
05 STUDENT-ID PIC 9(5).
05 STUDENT-NAME PIC X(50).
05 STUDENT-AGE PIC 9(2).
05 STUDENT-GENDER PIC X(1).
05 STUDENT-CLASS PIC X(50).
WORKING-STORAGE SECTION.
01 WS-UPDATE-ID PIC 9(5).
01 WS-NEW-NAME PIC X(50).
01 WS-NEW-AGE PIC 9(2).
01 WS-NEW-GENDER PIC X(1).
01 WS-NEW-CLASS PIC X(50).
PROCEDURE DIVISION.
PERFORM DB-CONNECT.
DISPLAY "Enter student ID to update: ".
ACCEPT WS-UPDATE-ID.
OPEN INPUT STUDENT-FILE.
READ STUDENT-FILE AT END SET WS-FOUND TO 'N'.
IF WS-FOUND = 'Y' THEN
DISPLAY "Enter new name: ".
ACCEPT WS-NEW-NAME.
DISPLAY "Enter new age: ".
ACCEPT WS-NEW-AGE.
DISPLAY "Enter new gender (M/F): ".
ACCEPT WS-NEW-GENDER.
DISPLAY "Enter new class: ".
ACCEPT WS-NEW-CLASS.
REWRITE STUDENT-RECORD FROM STUDENT-RECORD.
ELSE
DISPLAY "Student not found."
END-IF.
CLOSE STUDENT-FILE.
STOP RUN.
3.5 学生信息删除模块
学生信息删除模块的实现如下:
pl1
IDENTIFICATION DIVISION.
PROGRAM-ID. STUDENT-DELETE.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO "STUDENT.DAT".
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE.
01 STUDENT-RECORD.
05 STUDENT-ID PIC 9(5).
05 STUDENT-NAME PIC X(50).
05 STUDENT-AGE PIC 9(2).
05 STUDENT-GENDER PIC X(1).
05 STUDENT-CLASS PIC X(50).
WORKING-STORAGE SECTION.
01 WS-DELETE-ID PIC 9(5).
PROCEDURE DIVISION.
PERFORM DB-CONNECT.
DISPLAY "Enter student ID to delete: ".
ACCEPT WS-DELETE-ID.
OPEN INPUT STUDENT-FILE.
DELETE STUDENT-FILE RECORD KEY IS WS-DELETE-ID.
CLOSE STUDENT-FILE.
STOP RUN.
3.6 学生信息统计模块
学生信息统计模块的实现如下:
pl1
IDENTIFICATION DIVISION.
PROGRAM-ID. STUDENT-STAT.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT STUDENT-FILE ASSIGN TO "STUDENT.DAT".
DATA DIVISION.
FILE SECTION.
FD STUDENT-FILE.
01 STUDENT-RECORD.
05 STUDENT-ID PIC 9(5).
05 STUDENT-NAME PIC X(50).
05 STUDENT-AGE PIC 9(2).
05 STUDENT-GENDER PIC X(1).
05 STUDENT-CLASS PIC X(50).
WORKING-STORAGE SECTION.
01 WS-MALE-COUNT PIC 9(2).
01 WS-FEMALE-COUNT PIC 9(2).
PROCEDURE DIVISION.
PERFORM DB-CONNECT.
OPEN INPUT STUDENT-FILE.
PERFORM VARYING WS-MALE-COUNT FROM 0 BY 1
UNTIL STUDENT-FILE AT END
IF STUDENT-GENDER = 'M' THEN
ADD 1 TO WS-MALE-COUNT
END-IF
END-PERFORM.
PERFORM VARYING WS-FEMALE-COUNT FROM 0 BY 1
UNTIL STUDENT-FILE AT END
IF STUDENT-GENDER = 'F' THEN
ADD 1 TO WS-FEMALE-COUNT
END-IF
END-PERFORM.
CLOSE STUDENT-FILE.
DISPLAY "Male students: ", WS-MALE-COUNT.
DISPLAY "Female students: ", WS-FEMALE-COUNT.
STOP RUN.
4. 总结
通过以上实战,我们使用PL/I语言开发了一个学生信息管理系统。这个系统包含了学生信息的录入、查询、修改、删除和统计等功能。通过这个实战,我们可以了解到PL/I语言在数据库编程方面的强大能力。在实际应用中,我们可以根据需求对系统进行扩展和优化。
Comments NOTHING