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.
Required:
- 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.
- 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.
- 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:
#!/usr/bin/python## An example from Sean Reifschneider’s Python Tutorial at Linux Expo 98.## Copyright (c) 1998 Sean Reifschneider, tummy.com, 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# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the# 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 jafo-gpl@tummy.com## Simple phone-number database moduleimport shelveimport stringUNKNOWN = 0HOME = 1WORK = 2FAX = 3CELL = 4class phoneentry:def __init__(self, name = ‘Unknown’, number = ‘Unknown’,type = UNKNOWN):self.name = nameself.number = numberself.type = type# create string representationdef __repr__(self):return(‘%s:%d’ % ( self.name, self.type ))# fuzzy compare or two itemsdef __cmp__(self, that):this = string.lower(str(self))that = string.lower(that)if string.find(this, that) >= 0:return(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 = shelve.open(self.dbname);def __del__(self):self.shelve.close()self.shelve = Nonedef add(self, name, number, type = HOME):e = phoneentry(name, number, type)self.shelve[str(e)] = edef lookup(self, string):list = []for key in self.shelve.keys():e = self.shelve[key]if cmp(e, string) == 0:list.append(e)return(list)# if not being loaded as a module, run a small testif __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.name, entry.number, entry.showtype() )printprint ‘Second lookup:’for entry in foo.lookup(‘e’):print ‘%-40s %s (%s)’ % ( entry.name, 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.