Online System for Managing
MSE Projects
Software Design Description
2
Revision Record
Date
Revision
Version
Sec No. Change Description Author
09/16/11 0.7 Create Tianqi Cai
10/05/11 0.71 3-6 Narratives, Diagrams Tianqi Cai
10/12/11 0.7.11 4, 6.3 Modify Class Diagram
Add Pictures
Tianqi Cai
10/18/11 0.7.2 4, 6 Modify Class Diagram
Update Narratives
Tianqi Cai
01/12/12 0.8 4, 6 Class Diagram, Narratives, and Data
Entity Update
Tianqi Cai
01/22/12 0.9 4, 6 Class Diagram, Narratives, and Data
Entity Update
Tianqi Cai
3
Catalogue
Revision Record.............................................................................................................. 2
1. Introduction ............................................................................................................... 4
1.1 Purpose .......................................................................................................... 4
1.2 Scope.............................................................................................................. 4
1.3 Definitions and acronyms .................................................................................. 4
2. References ................................................................................................................. 5
3. Decomposition description .......................................................................................... 6
3.1 Administrator module description ...................................................................... 6
3.2 Transaction manager module description ............................................................ 6
3.3 Faculty member module description................................................................... 6
3.4 Student module description............................................................................... 6
4. Dependency description .............................................................................................. 7
5. Detailed design......................................................................................................... 11
5.1 Module detailed design ........................................................................................ 11
5.1.1 Class UserManager detail............................................................................ 11
5.1.2 Class DocumentManager detail ................................................................... 17
5.1.3 Class ProjectManager detail ........................................................................ 22
5.1.4 Class PresentationManager detail ................................................................ 25
5.1.5 Class StatusManager detail.......................................................................... 31
5.2 Data detailed design ............................................................................................ 33
5.2.1 Data entity USER detail ............................................................................... 33
5.2.2 Data entity ROLES detail.............................................................................. 33
5.2.3 Data entity PROJECT detail .......................................................................... 33
5.2.4 Data entity PRESENTATION detail ................................................................. 34
5.2.5 Data entity COMMITTEE detail..................................................................... 34
5.2.6 Data entity DOCUMENTINFO detail .............................................................. 34
5.2.7 Data entity TYPE detail................................................................................ 35
5.3 User Interface Design ........................................................................................... 36
5.3.1 Login ........................................................................................................ 36
5.3.2 Administrator module ................................................................................ 36
5.3.3 Transaction manager module ...................................................................... 36
5.3.4 Faculty member module ............................................................................. 37
5.3.5 Student module ......................................................................................... 38
5.4 database tables ................................................................................................... 38
4
1. Introduction
1.1 Purpose
This document is organized according to the IEEE 1016 Standard to generate the system
design which provides the structure for the upcoming coding, testing and maintaining work.
1.2 Scope
This document mainly includes preliminary design and detailed design.
1.3 Definitions and acronyms
Abbreviation Full Spelling
MSE Master of Software Engineering
UI User Interface
JSP Java Server Page
B/S Browser/Server
PC Personal Computer
HTTP Hyper Text Transport Protocol
5
2. References
[1] IEEE STD 1016-1998. IEEE Recommended Practice for Software Design Descriptions.
[2] Tianqi CAI. Online System for Managing MSE Projects Requirements Analysis Report .
6
3. Decomposition description
The system is divided into four modules according to the different roles of users. Different
users share the same login page. After login the system, users are able to accomplish work
according to their roles.
3.1 Administrator module description
An administrator is able to:
See the list of all the users after login successfully.
Operate on user records.
3.2 Transaction manager module description
A transaction manager is able to:
See the list of statuses of all the MSE students after login successfully.
Operate on room reservation of presentation.
Submit notice about presentation to school office.
3.3 Faculty member module description
A faculty member is able to:
See the list of students after login successfully.
Check/approve requests of being an advisor.
Check/approve capstone title.
Check/download students’ documents.
Operate on presentation dates.
Operate on committee list.
Check presentation information
Approve presentation.
3.4 Student module description
A MSE student is able to:
See one own status list after login successfully.
Send a request to a faculty user to be advisor.
Operate on a capstone title.
Operate on documents’ information.
Upload/delete documents.
7
4. Dependency description
Figure 4.1 System Class Diagram I
User
+userID
+username
+password
+lastname
+firstname
+email
+emailPwd
+exist
Role
+roleID
+userID
+type
+role
+exist
StatusReport
+userID
+studentID
+studentname
+email
+advisor
+projecttitle
+documentstage
+committee
+documentid
StudentStatuse
+studentname
+studentID
+advisor
+email
+projecttitle
+approvedterm
+completecredit
+ingcredit
+remaincredit
+examiner
+grc799
+committee
Database
+getUser()
+getProject()
+getDocumentInfo()
+getPresentation()
+getCommittee()
+addUser()
+addProject()
+addDocumentInfo()
+addPresentation()
+addCommittee()
+deleteUser()
+deleteProject()
+deleteDocumentInfo()
+deletePresentation()
+deleteCommittee()
+updateUser()
+updateProject()
+updatePresentation()
+updateCommittee()
+updateDocumentInfo()
Committee
+cmtID
+projectID
+userID
+exist
Project
+projectID
+userID
+studentID
+advisorID
+projectTitle
+approvedTerm
+completeCredit
+inCredit
+remainCredit
+grc799
+exist
DocumentInfo
+documentID
+userID
+title
+type
+version
+date
+address
+exist
Presentation
+pstID
+projectID
+date
+time
+roomNo
+exist
Type
+typeID
+type
PresentationList
+projectID
+date
+time
+roomNo
+projectTitle
+advisor
+studentname
+committee
+finished
8
Figure 4.2 System Class Diagram II
User
+userID: int
+lastname: String
+firstname: String
+email: String
+username: String
+password: String
+emailPwd: String
+exist: bool
+getUserId()
+setUserId()
+getLastname()
+setLastname()
+getFirstname()
+setFirstname()
+getEmail()
+setEmail()
+getPassword()
+setPassword()
+getExist()
+setExist()
StatusReport
+advisor: String
+approvedTerm: String
+committee: String
+date: Date
+time: Time
+roomNo: String
+firstname: String
+lastname: String
+email: String
+studentId: int
+completeCredit: int
+inCredit: int
+remainCredit: int
+files: String
+userId: int
+grc799: Boolean
+finished: Boolean
+getters()
+setters()
StudentStatus
+advisor: String
+approvedTerm: String
+email: String
+completeCredit: int
+inCredit: int
+remainCredit: int
+firstname: String
+lastname: String
+projectId: int
+projectTitle: String
+studentId: int
+userId: int
+getters()
+setters()
Committee
+cmtID: int
+projectID: int
+userID: int
+exist: bool
+getCmtID()
+setCmtID()
+getProjectID()
+setProjectID()
+getUserID()
+setUserID()
+getExist()
+setExist()
Project
+projectID: int
+studentID: int
+projectTitle: String
+userID: int
+advisor: int
+approvedTerm: String
+completeCredit: int
+ingCredit: int
+remainCredit: int
+grc799: bool
+exist: bool
+getProjectID()
+setProjectID()
+getStudentID()
+setStudentID()
+getProjectTitle()
+setProjectTitle()
+getUserID()
+setUserID()
+getAdvisor()
+setAdvisor()
+getApprovedTerm()
+setApprovedTerm()
+getCompleteCredit()
+setCompleteCredit()
+getInCredt()
+setInCredit()
+getRemainCredit()
+setRemainCredit()
+getGrc799()
+setGrc799()
+getExist()
+setExist()
DocumentInfo
+documentID: int
+userID: int
+title: String
+type: String
+version: float
+date: Date
+address: String
+exist: bool
+getDocumentID()
+setDocumentID()
+getUserID()
+setUserID()
+getTitle()
+setTitle()
+getType()
+setType()
+getVersion()
+setVersion()
+getDate()
+setDate()
+getAddress()
+setAddress()
+getExist()
+setExist()
Presentation
+pstID: int
+projectID: int
+date: Date
+time: Time
+roomNo: String
+exist: bool
+getPstID()
+setPstID()
+getProjectID()
+setProjectID()
+getDate()
+setDate()
+getTime()
+setTime()
+getRoomNo()
+setRoomNo()
+getExist()
+setExist()
View
View
create
Role
+roleID: int
+userID: int
+type: int
+role: String
+exist: bool
+getRoleID()
+setRoleID()
+getUserID()
+setUserID()
+getType()
+setType()
+getRole()
+setRole()
+getExist()
+setExist()
UserDAO
+save(User)
+update(User)
+delete(User)
+findAll()
+findAllFaculty()
+findAllStudents()
+findById()
+findPagedAll(int, int)
+getListForPage(String, int, int)
+getTotal()
ProjectDAO
+save(Project)
+update(Project)
+delete(Project)
+findAll()
+findByAdvisorId(Object)
+findByUserId(Object)
+findNewAdvisorApplications(int)
+findQualifiedProjects(int)
RoleDAO
+save(Role)
+delete(Role)
+update(Role)
+findRoleById(int)
PresentationDAO
+save(Presentation)
+update(Presentation)
+delete(Presentation)
+findByProjectId(Object)
CommitteeDAO
+save(Committee)
+delete(Committee)
+findByProjectId(Object)
+findByUserId(Object)
DocumentInfoDAO
+save(Documentinfo)
+update(Documentinfo)
+delete(Documentinfo)
+findByTypeAndVersion(int, String, float)
+findByUserId(Object)
+findLatestDocumentsByUserId(int)
StudentStatusDAO
+projectDAO: ProjectDAO
+userDAO: UserDAO
+findAllStudents()
+getProjectDAO()
+getUserDAO()
+setProjectDAO(ProjectDAO)
+setUserDAO(UserDAO)
StatusReportDAO
+docunInfoDAO: DocumentinfoDAO
+projectDAO: ProjectDAO
+pstlistDAO: PresentationListDAO
+userDAO: UserDAO
+findStatusByUserId(int)
+hasAdvisor(int)
+hasProject(int)
+getDocuInfoDAO()
+getProjectDAO()
+getPstlistDAO()
+getUserDAO()
+setDocuInfoDAO(DocumentinfoDAO)
+setProjectDAO(ProjectDAO)
+setPstlistDAO(PresentationListDAO)
+setUserDAO(UserDAO)
Type
+typeID: int
+type: String
+getTypeID()
+setTypeID()
+getType()
+setType()
TypeDAO
+save(Type)
+delete(Type)
+findAll()
PresentationList
+projectID: int
+date: Date
+time: Time
+roomNo: String
+projectTtile: String
+advisor: String
+studentname: String
+committee: String
+finished: Boolean
+getProjectID()
+setProjectID()
+getDate()
+setDate()
+getTime()
+setTime()
+getRoomNo()
+setRoomNo()
+getProjectTitle()
+setProjectTitle()
+getAdvisor()
+setAdvisor()
+getStudentname()
+setStudentname()
+getCommittee()
+setCommittee()
+getFinished()
+setFinished()
PresentationListDAO
+cmtDAO: CommitteeDAO
+projectDAO: ProjectDAO
+pstDAO: PresentationDAO
+userDAO: UserDAO
+save(Presentation)
+save(Committee)
+update(Presentation)
+deleteCommittee(Committee)
+deletePresentation(Presentation)
+deleteSingleCommitteeMember()
+findAllFaculty()
+findAllPresentations()
+findByProjectId(int)
+findCommittee(int)
+findCommitteeList(int)
+findPstByProjectId(int)
+findPstByUserId(int)
+findQualifiedPresentations(int)
+hasPresentations()
+newByProjectId(int)
+getCmtDAO()
+getProjectDAO()
+getPstDAO()
+getUserDAO()
+setCmtDAO(CommitteeDAO)
+setProjectDAO(ProjectDAO)
+setPstDAO(PresentationDAO)
+setUserDAO(UserDAO)
View
Manage
9
Figure 4.3 System Class Diagram III
DocumentManager
+diDAO: DocumentinfoDAO
+typeDAO: TypeDAO
+save(Documentinfo)
+save(Type)
+delete(Documentinfo)
+delete(Type)
+update(Documentinfo)
+findAllPropsals()
+findAllTypes()
+findById(int)
+findDocumentsByUserId(int)
+findProposalByUserId(int)
+findTypeById(int)
+getDiDAO()
+getTypeDAO()
+setDiDAO(DocumentinfoDAO)
+setTypeDAO(TypeDAO)
UserManager
+userDAO: UserDAO
+roleDAO: RoleDAO
+checkLogin(String, String)
+checkRoles(String, String)
+checkUserExist(User)
+save(User)
+save(Role)
+delete(User)
+delete(Role)
+update(User)
+update(Role)
+findAllStudents()
+findRoles()
+findRolesById()
+findUser()
+findUserByUsername()
+save(List
)
+findById(int)
+findPagedAll(int, int)
+findgetTotalCount()
+getTotalPage(int)
+getRoleDAO()
+getUserDAO()
+setRoleDAO(RoleDAO)
+setUserDAO(UserDAO)
StatusManager
+ssDAO: StudentStatusDAO
+srDAO: StatusReportDAO
+findAllStudents()
+findStatusByUserId(int)
+hasProject(int)
+hasAdvisor(int)
+getSsDAO()
+getSrDAO()
+setSsDAO(StudentStatusDAO)
+setSrDAO(StatusReportDAO)
ProjectManager
+projectDAO: ProjectDAO
+checkAdvisor(int)
+findProjectByUserId(int)
+findProjectById(int)
+update(Project)
+findNewAdvisorApplications(int)
+findStudentsByAdvior(int)
+checkProjectTtile(int)
+findNewTitleApplications(int)
+getProjectDAO()
+setProjectDAO(ProjectDAO)
PresentationManager
+pstlistDAO: PresentationListDAO
+findAllPresentations()
+findQualifiedPresentations(int)
+findByProjectId(int)
+findCommitteeList(int)
+save(Committee)
+update(Presentation)
+findAllFaculty()
+save(Presentation)
+findPstByProjectId(int)
+deleteSingleCommitteeMember()
+deleteCommittee(Committee)
+deletePresentation(Presentation)
+findCommittee(int)
+newByProjectId(int)
+findPstByUserId(int)
+getPstlistDAO()
+setPstlistDAO(PresentationListDAO)
EmailManager
DocumentinfoDAO
+save(Documentinfo)
+update(Documentinfo)
+delete(Documentinfo)
+findById(Integer)
+findAll()
+findLatestDocumentsByUserId(int)
+findByTypeAndVersion(int, String, float)
TypeDAO
+save(Type)
+delete(Type)
+delete(Type)
+findById(Integer)
+findAll()
UserDAO
+save(User)
+delete(User)
+update(User)
+findById(Integer)
+findByUsername(Object)
+findAll()
+getListForPage(String, int, int)
+getTotalCount()
+findPagedAll(int, int)
+findAllStudents()
+findAllFaculty()
RoleDAO
+save(Role)
+delete(Role)
+update(Role)
+findById(Short)
+findAll()
ProjectDAO
+save(Project)
+delete(Project)
+update(Project)
+findById(Integer)
+findAll()
+findQualifiedProjects(int)
+findNewAdvisorApplications(int)
+findNewTitleApplications(int)
PresentationDAO
+save(Presentation)
+update(Presentation)
+findAll()
+delete(Presentation)
+findById(Integer)
CommitteeDAO
+save(Committee)
+delete(Committee)
+findById(short)
+findByProjectId(Object)
+findByUserId(Object)
+findAll()
+findExistedCMT()
StudentStatusDAO
+userDAO: UserDAO
+projectDAO: ProjectDAO
+findAllStudents()
StatusReportDAO
+userDAO: UserDAO
+projectDAO: ProjectDAO
+docuInfoDAO: DocumentinfoDAO
+pstlistDAO: PresentationListDAO
+getUserDAO()
+getProjectDAO()
+getDocuInfoDAO()
+getPstlistDAO()
+setUserDAO(UserDAO)
+setProjectDAO(ProjectDAO)
+setDocuInfoDAO(DocumentinfoDAO)
+setPstlistDAO(PresentationListDAO)
+findStatusByUserId(int)
+hasAdvisor(int)
+hasProject(int)
PresentationListDAO
+pstDAO: PresentationDAO
+projectDAO: ProjectDAO
+userDAO: UserDAO
+cmtDAO: CommitteeDAO
+findAllPresentations()
+findQualifiedPresentations(int)
+findByProjectId(int)
+findCommitteeList(int)
+newByProjectId(int)
+findPstByUserId(int)
+findPstByProjectId(int)
+hasPresentations()
+save(Committee)
+update(Presentation)
+findAllFaculty()
+save(Presentation)
+deleteCommittee(Committee)
+deletePresentation(Presentation)
+findCommittee(int)
+getPstDAO()
+getProjectDAO()
+getUserDAO()
+getCmtDAO()
+setPstDAO(PresentationDAO)
+setProjectDAO(ProjectDAO)
+setUserDAO(UserDAO)
+setCmtDAO(CommitteeDAO)
10
Figure 4.4 Entity Relation Diagram
Has
Checked through a
Evaluated byContains
Has a
manage
Inheritance_1
Inheritance_2
Inheritance_3
Inheritance_4
Conduct a
Direct
Communicate with
Keep track of
Operate
Check
ManageDocumentTypes
USER
userID
username
password
firstname
lastname
email
exist
Integer
Variable characters (12)
Variable characters (12)
Variable characters (20)
Variable characters (20)
Variable characters (20)
Boolean
userID
ROLES
roleID
userID
type
role
exist
Integer
Integer
Variable characters (50)
Variable characters (20)
Boolean
roleID
userID
PROJECT
projectID
userID
studentID
advisorID
projectTitle
approvedTerm
completeCredit
inCredit
remainCredit
grc799
exist
Integer
Integer
Integer
Integer
Variable characters (300)
Variable characters (20)
Integer
Integer
Integer
Boolean
Boolean
projectID
userID
advisorID
PRESENTATION
pstID
projectID
date
time
roomNo
exist
Integer
Integer
Date
Date & Time
Variable characters (50)
Boolean
pstID
projectID
COMMITTEE
cmtID
projectID
userID
exist
Integer
Integer
Integer
Boolean
cmtID
projectID
userID
DOCUMENTINFO
documentID
userID
type
title
version
date
address
exist
Integer
Variable characters (50)
Variable characters (300)
Float
Date
Variable characters (300)
Boolean
documentID
DOCUMENT
ADMINISTRATOR
FACULTY MEMBER TRANSACTION MANAGERMSE STUDENT
TYPE
typeID
type
Integer
Variable characters (50)
typeID
11
5. Detailed design
5.1 Module detailed design
5.1.1 Class UserManager detail
Figure 5.1 Class UserManager Diagram
Name checkLogin
Prototype public boolean checkLogin(String username, String password)
Description Check the validity of user name and password
Calls None
Called By action.UserLoginAction execute()
Input Parameter(s) String username, String password
Output Parameter(s) None
Return boolean: check log in successfully or not
UserManager
+userDAO: UserDAO
+roleDAO: RoleDAO
+checkLogin(String, String)
+checkRoles(String, String)
+checkUserExist(User)
+save(User)
+save(Role)
+delete(User)
+delete(Role)
+update(User)
+update(Role)
+findAllStudents()
+findRoles()
+findRolesById()
+findUser()
+findUserByUsername()
+save(List)
+findById(int)
+findPagedAll(int, int)
+findgetTotalCount()
+getTotalPage(int)
+getRoleDAO()
+getUserDAO()
+setRoleDAO(RoleDAO)
+setUserDAO(UserDAO)
UserDAO
+save(User)
+delete(User)
+update(User)
+findById(Integer)
+findByUsername(Object)
+findAll()
+getListForPage(String, int, int)
+getTotalCount()
+findPagedAll(int, int)
+findAllStudents()
+findAllFaculty()
RoleDAO
+save(Role)
+delete(Role)
+update(Role)
+findById(Short)
+findAll()
12
Exception Exception e
Name checkRoles
Prototype public List checkRoles(String username, String
password)
Description Get the userID (Foreign Key) according to the user name and
password
Calls None
Called B