SOFTWARE DESIGN: FROM WORDS INTO CODES PART II

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:
图片[1]-SOFTWARE DESIGN: FROM WORDS INTO CODES PART II - 拾光赋-拾光赋
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 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
class 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
class 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 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'
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.

原文链接:SOFTWARE DESIGN: FROM WORDS INTO CODES PART II

© 版权声明
THE END
喜欢就支持一下吧
点赞11 分享
Pain changes people. However, love will finally guide them back.
伤痛会改变一个人,但爱最终总会让你找回最初的自己
评论 抢沙发

请登录后发表评论

    暂无评论内容