Ch-9:File Handling
Meaning : File
handling is the process of managing data file(s). It organizes the files
by storing and retrieving data to and from the data file.
File : File is the collection of related data and information in a computer. There are two types of file.
(i)
Program file : It is the collection of commands
and keywords sequentially, in order to solve a particular problem. Program file
is developed in programming language. It has an extension .BAS, .PRG,. CPP etc.
(ii)
Data file : It the collection of data under
different fields of a particular topic stored in computer It is linked
with program file. There are two types of data file. They are
(a)
Sequential access data file : The data file where
data are organized in form of records sequentially, one after another. It
access the records from top to bottom orderly unless end of file.
Advantages:
*. It is simple and natural way of managing data.
Disadvantages:
*. It is very slow and very difficult to update the data
(b)
Random Access data file : The data file where data
are accessed randomly without any sequence of record is called random access
data file. The address of each record is derived from the key field called
record pointer.
Advantages:
*. Direct access of record is possible, thus faster.
*. Files can be easily maintained up to date.
Disadvantages:
*.There is danger of data corruption and deletion.
Modes of opening
data file :
The way or purpose of the file to be opened is called file
mode. Data file are opened to carry out the following activities.
*.To write /store data
*.To retrieve/read data
*.To append/add data
There are three modes of opening data file. They are
(i)
Output mode : Data file is opened in this mode, in order to write or store data to the sequential data file
(ii)
Append mode :
Data file is opened in this mode, to add/append data at the end of
existing data file.
(iii)
Input mode : Data file is opened in this mode, to
read or retrieve data from sequential data file.
Keywords related to
data file:
(i) OPEN: This statement is used to open the data
file for reading or writing or adding data to the data file. It creates buffer
to the memory for I/O operation.
Syntax: OPEN<file$> FOR MODE AS #<FILE NUM>
(ii) CLOSE : It terminates or closes all open data
files
and devices.
Syntax : CLOSE #<FILE NUM>,#<FILENUM>,…
(iii) WRITE # : This statement is used to
write/store data to the sequential data file.
Syntax: WRITE#<FILE NUM>,data,……
(iv) PRINT #: : It is also used to write/store
data to the sequential data file.
Syntax: PRINT#<FILE NUM>,data,……
1. WRITE A PROGRAM TO CREATE A SEQUENTIAL DATA FILE NAMED "RECORD.TXT" AND STORE ROLL NUMBER, NAME, ADDRESS AND CLASS OF A STUDENT.
OPEN “RECORD.TXT” FOR OUTPUT AS #1
CLS
INPUT “ENTER ROLL, NAME, ADDRESS AND CLASS OF A STUDENT”; R, N$, A$, C
WRITE #1, R, N$, A$, C
CLOSE #1
END
2. WRITE A PROGRAM TO CREATE A SEQUENTIAL DATA FILE NAMED "RECORD.TXT" AND STORE ROLL NUMBER, NAME, ADDRESS AND CLASS OF FEW STUDENTS.
OPEN “RECORD.TXT” FOR OUTPUT AS #1
CLS
DO
INPUT “ENTER ROLL, NAME, ADDRESS AND CLASS OF A STUDENT”; R, N$, A$, C
WRITE #1, R, N$, A$, C
INPUT “DO YOU WANT TO CONTINUE”; X$
LOOP WHILE UCASE$(X$) = “Y”
CLOSE #1
END
3. WRITE A PROGRAM TO READ ALL THE DATA OF THE DATA FILE NAMED “SALES.DAT”, WHERE FIELDS ARE ITEM NAME , SOLD_QTY , AMOUNT , SALES NAME. DISPLAY THE RESULT ON THE SCREEN.
OPEN “SALES.DAT” FOR INPUT AS #1
WHILE NOT EOF(1)
INPUT #1, ITEMNAME$ , SOLDQTY , AMOUNT , SALES NAME$
PRINT ITEMNAME$ , SOLDQTY , AMOUNT , SALES NAME$
WEND
CLOSE #1
END
4. WRITE A PROGRAM TO DISPLAY ONLY THOSE RECORDS WHOSE NAME STARTS WITH "K" FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
CLS
PRINT "ROLL NO.", "NAME", "ADDRESS", "CLASS"
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
Z$ = LEFT$(N$,1)
IF UCASE$(Z$) = "K" THEN
PRINT R, N$, A$, C
END IF
WEND
CLOSE #1
END
5. WRITE A PROGRAM TO DISPLAY ONLY THOSE RECORDS WHO LIVES IN "POKHARA" FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
A$ = UCASE$(A$)
IF A$ = "POKHARA" THEN
PRINT R, N$, A$, C
END IF
WEND
CLOSE #1
END
6. WRITE A PROGRAM TO COUNT AND DISPLAY ONLY THOSE RECORDS WHO READS IN CLASS 10 FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
IF C = 10 THEN
PRINT R, N$, A$, C
X= X+1
END IF
WEND
PRINT "TOTAL STUDENTS WHO READS IN CLASS 10 ARE"; X
CLOSE #1
END
7. WRITE A PROGRAM TO DISPLAY ONLY THOSE RECORDS WHOSE ROLL NUMBER IS IN FROM 20 TO 30 FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
IF R>=20 AND R<=30 THEN
PRINT R, N$, A$, C
END IF
WEND
CLOSE #1
END
8. WRITE A PROGRAM TO COUNT ONLY THOSE RECORDS WHO DOESN'T LIVES IN "POKHARA" FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
A$ = UCASE$(A$)
IF A$ <> "POKHARA" THEN
X=X+1
END IF
WEND
PRINT "TOTAL STUDENTS WHO DOESNOT LIVE IN POKHARA ARE"; X
CLOSE #1
END
9. WRITE A PROGRAM TO ADD FEW MORE RECORD IN A DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF FEW STUDENTS.
OPEN “RECORD.TXT” FOR APPEND AS #1
CLS
DO
INPUT “ENTER ROLL, NAME, ADDRESS AND CLASS OF A STUDENT”; R, N$, A$, C
WRITE #1, R, N$, A$, C
INPUT “DO YOU WANT TO ADD MORE”; X$
LOOP WHILE UCASE$(X$) = “Y”
CLOSE #1
END
10. WRITE A PROGRAM TO DISPLAY ALL THE RECORDS FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
PRINT R, N$, A$, C
WEND
CLOSE #1
END
11. WRITE A PROGRAM TO DELETE ALL THOSE RECORDS WHOSE ADDRESS IS "KATHMANDU"FROM DATA FILE NAMED "RECORD.TXT" WHICH CONTAINS ROLL NUMBER, NAME, ADDRESS AND CLASS OF SEVERAL STUDENTS.
OPEN “RECORD.TXT” FOR INPUT AS #1
OPEN "TEMP.TXT" FOR OUTPUT AS #2
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, A$, C
A$ = UCASE$(A$)
IF A$ <> "KATHMANDU" THEN
WRITE #2, R, N$, A$, C
END IF
WEND
KILL "RECORD.TXT"
NAME "TEMP.TXT" AS "RECORD.TXT"
CLOSE #1
CLOSE #2
END
12. WRITE A PROGRAM TO DISPLAY ALL THE NAME OF STUDENTS WHO FAILED IN ANY ONE OR MORE OF THE SUBJECT.
OPEN “RESULT.DOC” FOR INPUT AS #1
CLS
PRINT "NAME"
WHILE NOT EOF(1)
INPUT #1, R, N$, C, M, S, E, N, CO
IF M<40 OR S<40 OR E<40 OR N<40 OR CO<40 THEN
PRINT N$
END IF
WEND
CLOSE #1
END
13. WRITE A PROGRAM TO COUNT TOTAL NUMBER OF STUDENTS WHO PASSED IN ALL THE SUBJECT.
OPEN “RESULT.DOC” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, C, M, S, E, N, CO
IF M>=40 AND S>=40 AND E>=40 AND N>=40 AND CO>=40 THEN
X=X+1
END IF
WEND
PRINT "TOTAL PASS STUDENTS ARE"; X
CLOSE #1
END
14. WRITE A PROGRAM TO CALCULATE AND DISPLAY PERCENTAGE OF ALL THE STUDENTS ALONG WITH THE ROLL NUMBER AND NAME.
OPEN “RESULT.DOC” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, C, M, S, E, N, CO
T=M+S+E+N+CO
P=T/5
PRINT R, N$, P
WEND
CLOSE #1
END
15. WRITE A PROGRAM TO DISPLAY NAME OF THE STUDENTS WHO FAILED ONLY IN ENGLISH AND NEPALI.
OPEN “RESULT.DOC” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, C, M, S, E, N, CO
IF E<40 AND N<40 THEN
PRINT N$
END IF
WEND
CLOSE #1
END
16. WRITE A PROGRAM TO DELETE ALL THE RECORDS OF STUDENTS WHO FAILED IN ANY ONE OR MORE OF THE SUBJECT.
OPEN “RESULT.DOC” FOR INPUT AS #1
OPEN "TEMP.DOC" FOR OUTPUT AS #2
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, C, M, S, E, N, CO
IF M<40 OR S<40 OR E<40 OR N<40 OR CO<40 THEN
ELSE
WRITE #2, R, N$, C, M, S, E, N, CO
END IF
WEND
KILL "RESULT.DOC"
NAME "TEMP.DOC" AS "RESULT.DOC"
CLOSE #1,#2
END
17. WRITE A QBASIC PROGRAM TO READ ALL THE RECORDS FROM THE DATA FILE "SCHOOL.TXT" CONTAINING NAME, ROLL AND SCORE. THEN FIND AND DISPLAY THE AVERAGE SCORE OF THE CLASS.
OPEN “SCHOOL.TXT” FOR INPUT AS #1
CLS
WHILE NOT EOF(1)
INPUT #1, R, N$, S
PRINT R, N$, S
X=X+1
SUM=SUM+S
WEND
A=SUM/X
PRINT "AVERAGE SCORE"; A
CLOSE #1
END
18. WRITE A QBASIC PROGRAM TO READ ALL THE RECORDS FROM THE DATA FILE "RECORD.TXT" CONTAINING NAME AND SALARY. THEN FIND AND DISPLAY THE LOWEST, HIGHEST AND AVERAGE SALARY OF THE COMPANY.
OPEN "RECORD.TXT" FOR INPUT AS #1
INPUT #1, N$, SAL
S = SAL
H = SAL
CLOSE #1
OPEN "RECORD.TXT" FOR INPUT AS #1
WHILE NOT EOF(1)
INPUT #1, N$, SAL
PRINT N$, SAL
IF S > SAL THEN
S = SAL
END IF
IF H < SAL THEN
H = SAL
END IF
SUM = SUM + SAL
N = N + 1
WEND
AVE = SUM / N
PRINT AVE
PRINT S
PRINT H
CLOSE #1
END