【发布时间】:2015-10-18 04:58:23
【问题描述】:
我正在学习基础编程作为我高中的课程。在学校开始编程之前,我已经学习了一些 C++。我正在编写一个TELEPHONE DIRECTORY 程序,将WRITES 或READS FROM "Records.dat" 文件。
当我运行程序并输入"Q" 以退出时,它工作正常。但是,如果我输入"E" 在APPEND MODE 中输入新记录或"O" 在OUTPUT 模式下输入记录或"V" 以查看记录,则程序不会执行任何操作。它会创建文件并且不会挂起,但不会显示任何输出。
代码如下:
10 CLS
20 Name$ = "0": Number$ = "0": Adrs$ = "0": Choice$ = "0": Mode$ = "0": Records = 0: Space = 0
30 PRINT "Telephone Directory Program."; "Press 'E' to Enter new records in Existing File"; "Press 'V' to View existing records"; "Press 'Q' to Exit"; "IF THERE ARE NO RECORDS PRESS O";
40 INPUT Mode$
50 IF Mode$ = "Q" THEN
END
ELSEIF Mode$ = "E" THEN
CLS
OPEN "Records.dat" FOR APPEND AS #1
ON ERROR GOTO 30
PRINT "Enter Records when prompted.";
WHILE Choice$ = "Y" OR Choice$ = "y"
INPUT "Enter Name: ", Name$
INPUT "Enter Phone Number: ", Number$
INPUT "Enter Address: ", Adrs$
WRITE #1, Name$, Number$, Adrs$
INPUT "IF you want to enter new records, enter Y or y. Otherwise, press any other letter. ", Choice$
WEND
CLOSE #1
GOTO 10
ELSEIF Mode$ = "O" THEN
CLS
OPEN "Records.dat" FOR OUTPUT AS #2
PRINT "Enter Records when prompted.";
WHILE Choice$ = "Y" OR Choice$ = "y"
INPUT "Enter Name: ", Name$
INPUT "Enter Phone Number: ", Number$
INPUT "Enter Address: ", Adrs$
WRITE #1, Name$, Number$, Adrs$
INPUT "IF you want to enter new records, enter Y or y. Otherwise, press any other letter. ", Choice$
WEND
CLOSE #2
GOTO 10
ELSEIF Mode$ = "V" THEN
CLS
OPEN "Records.dat" FOR INPUT AS #3
PRINT SPC(24), "Directory Listing";
WHILE NOT EOF(3)
Records = Records + 1
WEND
IF Records = 0 THEN
PRINT "NO RECORDS FOUND. ENTER O AT THE NEXT SCREEN";
GOTO 10
ELSE
PRINT "Names", SPC(5), "Phone Numbers ", SPC(6), "Addresses";
WHILE NOT EOF(3)
INPUT #3, Name$, Number$, Adrs$
PRINT Name$
Space = (10 - (LEN(Name$)))
PRINT SPC(Space)
PRINT Number$
Space = (20 - (LEN(Number$)))
PRINT SPC(Space)
PRINT Adrs$;
WEND
PRINT ;
PRINT Records, " Records found";
CLOSE #3
GOTO 10
END IF
END IF
【问题讨论】:
-
请下次使用四个空格格式化您的代码
-
Choice$ 变量未设置,因此未进入 WHILE 循环。
标签: windows basic qbasic data-files gw-basic