CSC113 ca4

What are the differences between flat files and Relational Databases in Informational Systems Applications




  your assignment is about classes & objects, classes & functions, introspection, object & object orientation and a small database project.



  1. Read chapters 15, 16 from “Think Python: How to Think Like a Computer Scientist (Version 1.3.3)”, a reference in the background materials. Code all the examples and exercises into the Python IDLE and successfully run them. Save the final programs into Python files.
  2. Read chapters 4 & 5 from Dive into Python, a reference in the background materials. Code all the examples and exercises into the Python IDLE and successfully run them. Save the final programs into Python files.
  3. You’ve been going to work on a database project at work for sometime now. Your boss encourages you to program the database in Python. You disagree, arguing that Python is not a database language but your boss persists by providing the source code below for a sample telephone database. He asks you to do two things: 1. Evaluate the existing source code and extend it to make it useful for managers in the firm. (You do not need a GUI interface, just work on the database aspects: data entry and retrieval – of course you must get the program to run or properly work, and 2. He wants you to critically evaluate Python as a database tool.


Import the sample code below into the Python IDLE and enhance it, run it and debug it. Add features to make this a more realistic database tool by providing for easy data entry and retrieval. Export your successful program to a Python file for later upload to coursenet.


Here is the sample source code:


# An example from Sean Reifschneider’s Python Tutorial at Linux Expo 98.
# Copyright (c) 1998 Sean Reifschneider,, ltd.
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.

# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# GNU General Public License for more details.

# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place – Suite 330, Boston, MA 02111-1307, USA.
# You can contact Sean Reifschneider at
# P.O. Box 270624,
# Fort Collins, CO USA 80527-0624,
# or at [email protected]
# Simple phone-number database module

import shelve
import string

HOME = 1
WORK = 2
FAX = 3
CELL = 4

class phoneentry:
def __init__(self, name = ‘Unknown’, number = ‘Unknown’,
type = UNKNOWN): = name
self.number = number
self.type = type

# create string representation
def __repr__(self):
return(‘%s:%d’ % (, self.type ))

# fuzzy compare or two items
def __cmp__(self, that):
this = string.lower(str(self))
that = string.lower(that)

if string.find(this, that) >= 0:
return(cmp(this, that))

def showtype(self):
if self.type == UNKNOWN: return(‘Unknown’)
if self.type == HOME: return(‘Home’)
if self.type == WORK: return(‘Work’)
if self.type == FAX: return(‘Fax’)
if self.type == CELL: return(‘Cellular’)

class phonedb:
def __init__(self, dbname = ‘phonedata’):
self.dbname = dbname;
self.shelve =;

def __del__(self):
self.shelve = None

def add(self, name, number, type = HOME):
e = phoneentry(name, number, type)
self.shelve[str(e)] = e

def lookup(self, string):
list = []
for key in self.shelve.keys():
e = self.shelve[key]
if cmp(e, string) == 0:


# if not being loaded as a module, run a small test
if __name__ == ‘__main__’:
foo = phonedb()
foo.add(‘Sean Reifschneider’, ‘970-555-1111’, HOME)
foo.add(‘Sean Reifschneider’, ‘970-555-2222’, CELL)
foo.add(‘Evelyn Mitchell’, ‘970-555-1111’, HOME)

print ‘First lookup:’
for entry in foo.lookup(‘reifsch’):
print ‘%-40s %s (%s)’ % (, entry.number, entry.showtype() )

print ‘Second lookup:’
for entry in foo.lookup(‘e’):
print ‘%-40s %s (%s)’ % (, entry.number, entry.showtype() )


Add all your saved Python files from requirements 1 – 3 above into a zip file. Add to the zip file, a one page description of what you have accomplished and what benefits you have achieved.


Case assignment expectations:


  • Code all the required examples and exercises and successfully run them.
  • Provide a paper describing what you accomplished and what benefits you have achieved.

When your zip file is done, send it in to CourseNet.


"Is this question part of your assignment? We can help"