Objectives Addressed
- Understand and apply complex data structures and algorithms.
- Use appropriate algorithms (and associated data structures) to solve
complex problems.
- Have a thorough understanding of the Standard Template Library.
- Be able to use data structures in software design and implementation.
- Be able to apply the STL in software design.
Overview
In this lab, you will write a program to allow advanced searches
through an email file.
Procedures
You are required to design, implement, and test a program that will
will read in one or more email files and perform advanced searches on
the email messages. You should be able to search based on any and/or all
of the following:
- Sender's email address
- Limit the date range (search only messages sent between XX-XX-XXXX and
YY-YY-YYYY
- Keyword phrase with support for boolean AND or OR, e.g.,
- "constructor" should return all messages with
constructor in the body of the message.
- ".cpp AND .h" should return all messages with both
.cpp and .h
somewhere in the body of the message.
- ".cpp OR .h" should return all messages with either
.cpp or .h
(or both) somewhere in the body of the message.
- Case sensitive or insensitive searches
The search results should be displayed using the "Message summary" format
from the Message class developed in
lab 2. The user should then be able to select one
of these messages and display the entire contents of the message.
Note: You may wish to take a look at the
last lab assignment since design decisions you make now may impact your
ability to complete the final lab in a timely manner.
Lab report (due 11:00pm, the day prior to week 8 lab)
Your report should include:
- A discussion of how you approached the problem. This should contain
a sufficient level of detail to convince your instructor that you
were thinking as you worked on this assignment.
- An annotated UML class diagram expressing your high level design.
The diagram should be included in your report as a .png image.
(Here is a simple
UML editor.) Accompanying the diagram should be a description of
how the class(es) interact(s) to accomplish the assigned tasks.
- The Documented source code
for your program.
- Sample program output.
- A brief description of any problems you encountered or questions
you have regarding the lab.
- A discussion of how you worked together as a team.
- A summary of your activity log indicating how much time you spent
on the assignment (following the template provided in the
lab4.xml template document).
Please use the following categories:
- Design
- Coding
- Debug (before you think it's working)
- Test (after you think it's working)
- Documentation
- Other
Note: You should be working together the entire time on this project
so your table should mainly contain "both" entries. If you both spent
one hour debugging your code together, your activity log should indicate
one hour (not two hours) was spent debugging.
- Any suggestions you have for how the lab could be improved.
As with any report you submit, correct spelling
and grammar are required. In addition, your report should be submitted
electronically following the
Electronic submission guidelines.
(You may wish to consult the sample
report before submitting your report.) Be sure to keep copies of all your
files, in case something gets lost. It may be wise to keep a diskette backup
as well.
IMPORTANT NOTE: Be sure to save your program for future
use. We will be using this assignment in next week's lab assignment.
Your grade will depend on quality of design, clarity of code and
documentation, as well as whether your program produces the correct
results. If you have any questions, consult your instructor.
|