|
Something about my assignment
1. Student Database
In this assignment you will design a simple file based database. All the files are in
the simplest form of CSV (Comma Separated Values) where every pair of adjacent fields
are sperated by a comma and the fields do not contain any commas, not even escaped.
Every line contains a single record and every record contains several fields. A set of files
will be provided and your code will be tested against these files as well as a few more that
you will not know in advance. You can use either ash or bash. You can use any stan-
dard utility we discussed in class but you cannot write a program in any other program-
ming environment. Your programs do not create any file (other than a possible temporary
file in the /tmp/ directory) anywhere and print everything in the standard output.
2. Files in the Database
The database will have three types of files. The first, of which there is only one
instance, is the Accounts file. It contains records that have three fields. The first field is
an account number, the second is the last name of the student and the third is the first
name. Please note that some students have names with non letter characters like space,
dot or hyphen.
The second type of file is the enrollemnt file, one for each course and they are
named CSExxxx where the x’s are digits, very much like our own courses. They contain
a series of records, each one with a single field, an account number. If a student has regis-
tered for a course, his account number appears in the corresponding file.
The third type of file is the marks file, the one submitted by course instructors one
for each course, are named MARKSxxxx and are associated with the corresponding
CSExxxx course. The files contain several records, one for each student in the course
that received a mark. Every record contains two fields: the account number and the stu-
dent mark from 0 to 100. If a student is in the CSExxxx but has no record in the corre-
sponding MARKSxxxx gets a zero. If the file CSExxxx exists but the file MARKSxxxx
does not, all students get IP (that is In Progress).
There is one more file in the database and this resides in the home directory of the
user, is named .std_dbrc and contains exactly one statement
STD_DBROOT=<blahblah>
and this is used by your scripts to find where is the directory of the database.
1
3. Scripts
You have to write four scripts. All scripts follow the specification regarding the
startup file .std_dbrc and provide reasonable error reporting. All missing files should
be reported. The output should be exactly as in the specification without anything extra.
They will be tested both by hand and by automarking.
3.1. Find the Name
Write a script std_db_acc2name that given the account number of a student as a
command line argument returns the name as comma separated values.
3.2. Find the Courses
Write a script std_db_acc2courses that given the account number of a student
as a command line argument returns the comma separated list of courses the student is
registered.
3.3. Find the Marks
Write a script std_db_acc2marks that given the account number of a student as
a command line argument returns the comma separated list of courses and marks the stu-
dent has received.
3.4. Create the Table
Write a script std_db_acc2table that returns a CSV file with the following
structure. All records in the file contain the same number of fields. The first record, is the
header record and its first field is just the string “Std. Name”. The rest of the fields are the
4 digit codes for the all the courses. All the subsequent records have as their first field the
student name (first name first, then last name and no comma) and the rest of the fields are
the corresponding marks, blank if the student is not registered in the course and the regu-
lar mark or IP if the student is registered. Students that are registered in no course do not
have a record in this table.
|