SOFTWARE DESIGN: FROM WORDS INTO CODES PART II
In the last article I wrote which is the “SOFTWARE DESIGN: FROM WRITTEN REQUIREMENTS INTO CODES PART I”, I discuss making an Entity-Relationship diagram or ER diagram which is for easier analyzation and visualization of our software we are working at. In this article, I’m going to discuss how to code it in a CLI type of app using Python
.
The first method I do before jumping on my IDE and starting in any part of it is I make a pseudocode
of it, making it more clear and easier to think how it should be implemented in a programming language. I guess you heard about that already. I decided to make each Object a Class and its features are its attributes. To identify where to start to make pseudocode, I try thinking about how this app will work and how it flows. We’re using the same ER diagram and requirements from the last article:
requirements.md:
ER diagram:
I. Professor
class pseudocode:
<span>class</span> <span>Professor</span><span>:</span><span># for adding a new professor in Professor-list </span> <span>def</span> <span>create</span><span>-</span><span>prof</span><span>(</span><span>personal</span><span>-</span><span>info</span><span>,</span><span>salary</span><span>):</span><span>professor</span> <span>=</span> <span>personal</span><span>-</span><span>info</span><span>,</span><span>salary</span><span>professor</span><span>.</span><span>save</span><span>()</span> <span>in</span> <span>'</span><span>Professors-list</span><span>'</span><span># adding subject's prof in case it don't have </span> <span>def</span> <span>add</span><span>-</span><span>subject</span><span>'</span><span>s-prof(subject,prof-name): if subject and prof-name didn</span><span>'</span><span>t</span> <span>really</span> <span>exist</span><span>:</span><span>return</span> <span>invalid</span><span>if</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> not None: return has prof already else save subject in prof-name</span><span>'</span><span>s</span> <span>'</span><span>subject-list</span><span>'</span> <span>&</span> <span>prof</span><span>-</span><span>name</span> <span>in</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> # for computing the professor</span><span>'</span><span>s</span> <span>salary</span><span>def</span> <span>prof</span><span>'</span><span>s-salary(prof-name): each-subject = 5000 subject-list-length = prof-name</span><span>'</span><span>s</span> <span>subjects</span><span>-</span><span>list</span> <span>length</span><span>return</span> <span>eachsubject</span> <span>*</span> <span>subject</span><span>-</span><span>list</span><span>-</span><span>length</span><span>class</span> <span>Professor</span><span>:</span> <span># for adding a new professor in Professor-list </span> <span>def</span> <span>create</span><span>-</span><span>prof</span><span>(</span><span>personal</span><span>-</span><span>info</span><span>,</span><span>salary</span><span>):</span> <span>professor</span> <span>=</span> <span>personal</span><span>-</span><span>info</span><span>,</span><span>salary</span> <span>professor</span><span>.</span><span>save</span><span>()</span> <span>in</span> <span>'</span><span>Professors-list</span><span>'</span> <span># adding subject's prof in case it don't have </span> <span>def</span> <span>add</span><span>-</span><span>subject</span><span>'</span><span>s-prof(subject,prof-name): if subject and prof-name didn</span><span>'</span><span>t</span> <span>really</span> <span>exist</span><span>:</span> <span>return</span> <span>invalid</span> <span>if</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> not None: return has prof already else save subject in prof-name</span><span>'</span><span>s</span> <span>'</span><span>subject-list</span><span>'</span> <span>&</span> <span>prof</span><span>-</span><span>name</span> <span>in</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> # for computing the professor</span><span>'</span><span>s</span> <span>salary</span> <span>def</span> <span>prof</span><span>'</span><span>s-salary(prof-name): each-subject = 5000 subject-list-length = prof-name</span><span>'</span><span>s</span> <span>subjects</span><span>-</span><span>list</span> <span>length</span> <span>return</span> <span>eachsubject</span> <span>*</span> <span>subject</span><span>-</span><span>list</span><span>-</span><span>length</span>class Professor: # for adding a new professor in Professor-list def create-prof(personal-info,salary): professor = personal-info,salary professor.save() in 'Professors-list' # adding subject's prof in case it don't have def add-subject's-prof(subject,prof-name): if subject and prof-name didn't really exist: return invalid if subject's 'professor' not None: return has prof already else save subject in prof-name's 'subject-list' & prof-name in subject's 'professor' # for computing the professor's salary def prof's-salary(prof-name): each-subject = 5000 subject-list-length = prof-name's subjects-list length return eachsubject * subject-list-length
Enter fullscreen mode Exit fullscreen mode
II. Subject
class pseudocode:
<span>class</span> <span>Subject</span><span>:</span><span># for creating a new subject to Subject-list </span> <span>def</span> <span>create</span><span>-</span><span>subject</span><span>(</span><span>name</span><span>):</span><span>subject</span> <span>=</span> <span>name</span><span>subject</span><span>.</span><span>save</span><span>()</span> <span>in</span> <span>'</span><span>Subject-list</span><span>'</span><span># adding subject's prof in case it don't have </span> <span>def</span> <span>add</span><span>-</span><span>subject</span><span>'</span><span>s-prof(subject,prof-name): if subject and prof-name didn</span><span>'</span><span>t</span> <span>really</span> <span>exist</span><span>:</span><span>return</span> <span>invalid</span><span>if</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> not None: return has prof already else save subject in prof-name</span><span>'</span><span>s</span> <span>'</span><span>subject-list</span><span>'</span> <span>&</span> <span>prof</span><span>-</span><span>name</span> <span>in</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> # add courses related to subject def add-courses-related(subject,course-&-year): if subject and course-&-year didn</span><span>'</span><span>t</span> <span>really</span> <span>exist</span><span>:</span><span>return</span> <span>invalid</span><span>else</span> <span>save</span> <span>subject</span> <span>in</span> <span>prof</span><span>-</span><span>name</span><span>'</span><span>s </span><span>'</span><span>subject</span><span>-</span><span>list</span><span>'</span><span> & prof-name in subject</span><span>'</span><span>s</span> <span>'</span><span>professor</span><span>'</span><span>class</span> <span>Subject</span><span>:</span> <span># for creating a new subject to Subject-list </span> <span>def</span> <span>create</span><span>-</span><span>subject</span><span>(</span><span>name</span><span>):</span> <span>subject</span> <span>=</span> <span>name</span> <span>subject</span><span>.</span><span>save</span><span>()</span> <span>in</span> <span>'</span><span>Subject-list</span><span>'</span> <span># adding subject's prof in case it don't have </span> <span>def</span> <span>add</span><span>-</span><span>subject</span><span>'</span><span>s-prof(subject,prof-name): if subject and prof-name didn</span><span>'</span><span>t</span> <span>really</span> <span>exist</span><span>:</span> <span>return</span> <span>invalid</span> <span>if</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> not None: return has prof already else save subject in prof-name</span><span>'</span><span>s</span> <span>'</span><span>subject-list</span><span>'</span> <span>&</span> <span>prof</span><span>-</span><span>name</span> <span>in</span> <span>subject</span><span>'</span><span>s </span><span>'</span><span>professor</span><span>'</span><span> # add courses related to subject def add-courses-related(subject,course-&-year): if subject and course-&-year didn</span><span>'</span><span>t</span> <span>really</span> <span>exist</span><span>:</span> <span>return</span> <span>invalid</span> <span>else</span> <span>save</span> <span>subject</span> <span>in</span> <span>prof</span><span>-</span><span>name</span><span>'</span><span>s </span><span>'</span><span>subject</span><span>-</span><span>list</span><span>'</span><span> & prof-name in subject</span><span>'</span><span>s</span> <span>'</span><span>professor</span><span>'</span>class Subject: # for creating a new subject to Subject-list def create-subject(name): subject = name subject.save() in 'Subject-list' # adding subject's prof in case it don't have def add-subject's-prof(subject,prof-name): if subject and prof-name didn't really exist: return invalid if subject's 'professor' not None: return has prof already else save subject in prof-name's 'subject-list' & prof-name in subject's 'professor' # add courses related to subject def add-courses-related(subject,course-&-year): if subject and course-&-year didn't really exist: return invalid else save subject in prof-name's 'subject-list' & prof-name in subject's 'professor'
Enter fullscreen mode Exit fullscreen mode
III. Course
class pseudocode:
class Course:# making a new coursedef create-course(name,for-year):course-name = name,for-yearcourse.save() in 'Course-list'# add courses related to subjectdef add-courses-related(subject,course-&-year):if subject and course-&-year didn't really exist:return invalidelse save subject in prof-name's 'subject-list' & prof-name in subject's 'professor'# enrolling studentsdef add-student(student,year-&-course):if student and year-&-course didn't really exist:return invalidif student's course not none:return already enrolledelse save student in course's student-list and course in student's courseclass Course: # making a new course def create-course(name,for-year): course-name = name,for-year course.save() in 'Course-list' # add courses related to subject def add-courses-related(subject,course-&-year): if subject and course-&-year didn't really exist: return invalid else save subject in prof-name's 'subject-list' & prof-name in subject's 'professor' # enrolling students def add-student(student,year-&-course): if student and year-&-course didn't really exist: return invalid if student's course not none: return already enrolled else save student in course's student-list and course in student's courseclass Course: # making a new course def create-course(name,for-year): course-name = name,for-year course.save() in 'Course-list' # add courses related to subject def add-courses-related(subject,course-&-year): if subject and course-&-year didn't really exist: return invalid else save subject in prof-name's 'subject-list' & prof-name in subject's 'professor' # enrolling students def add-student(student,year-&-course): if student and year-&-course didn't really exist: return invalid if student's course not none: return already enrolled else save student in course's student-list and course in student's course
Enter fullscreen mode Exit fullscreen mode
IV. Student
class pseudocode:
class Student:# add a new studentdef create-course(personal-info,course-&-year):if course-&-year didn't really exist:return invalidelse:course-name = name,for-yearcourse.save() in 'Course-list'class Student: # add a new student def create-course(personal-info,course-&-year): if course-&-year didn't really exist: return invalid else: course-name = name,for-year course.save() in 'Course-list'class Student: # add a new student def create-course(personal-info,course-&-year): if course-&-year didn't really exist: return invalid else: course-name = name,for-year course.save() in 'Course-list'
Enter fullscreen mode Exit fullscreen mode
Here are some snapshots of my code. I’m not posting the whole picture of it here because it can’t fit on my screen. If you want to look at my code, you can visit it here in my github.
暂无评论内容