$29
CSE 241 Homework Assignment 7
Description • If you think that this document does not clearly describe the assignment, ask questions before it’s too late. You won’t be given a chance to correct any mistakes. Scope: University Management System You are expected to develop university management system. Main Problem: Personal Management This HW is extended version of HW5 and HW6. That is to say, this homework is also storyteller, but it tells stories of education systems which are under 3 different philosophies. Actors of the stories are changeable according to types of education system. There are three types of education systems; namely LiberalEducation, CommunistEducation, CapitalistEducation. Each Education system has got different university founded, employee given job and different story told. User of the program will enter one of them and the program tells its story. Requirements: 1. Your program will expect an input which is the option of one of three-story types; L (liberal), Com (communist), and Cap(capitalist). When it begins, it will process and prints all story. 2. Program should read txt file, personnellist.txt. It indicates Employee. 3. There is a University data type in program. It employs Employee and it expects that personnel contributes. 4. University has a template for contribution. 5. Actions should be managed with enumeration. 6. You should separate compilation into header files and implementation files. Use Cases: Story of Liberals Story of Kapitalist Story of Communist Program tells three different story. Story of liberalist is told in first person narration. Others are told in third person narration. In story of liberalist, there are 14 actions coming and one employee who do its best is selected. Story is told in the mouth of the employee selected. Selected employee should bring max contribution and have best happiness. S/he complete action as far as possible. In story of communist, there are 12 actions coming. All jobs is distributed equally to employees. Style of telling story is like assignments before. Story is told while action is processing. In story of capitalist, situation is different. 15 actions are in process here. University employs 4 brokers ( one for each type of employee) for commission. They give job to 2 workers for each segment. While keeping actions, brokers assign tasks to worker and worked complete action. The effect of assignment is distributed to worker and broker. Broker gains money and happiness of worker is affected. Unless broker makes money more than a threshold of money, it fires worker. If happiness of worker is under threshold of happiness, s/he resigns. New worker will be found. All of these will be told in story. General Concept: Start Liberal Education System Capitalist Education System Communist Education System Communist Liberal Capitalist Employ an Lecturer Employ an ResearchAssista n t Employ an Officer Determination Of Actions Need is ResearchAssistant Actor Desicion Need is Officer Need is Lecturer Employ an Secretary Need is Secretary Start Story of Actor Tell story while taking actions Print Summary End User Selection Employ Personnels Select Best Personnel for Action Tell Story Capitalist Education System Determination Of Actions Employ Broker Employ Worker Finish Job Contribute University Broker make money Effect Happines of worker Tell Story Print Summary Print Summary In Liberal Education System; - Liberal University is founded. It determines actions before employing process. - Liberal employee is decided according to actions. - It does all actions in loop as much as it can do. If it cannot do an action, there will be an exception which say that. - Story is told in first person narration. - Summarization of effects. Communist system and capitalist system will be done as shown in figure. UML Class Diagram: abstract Employee -pid: int -name: string +work(Action) Lecturer ResearchAssistant Secretary Officer -happiness:int -surname:string abstract University +contribute() abstract EducationSystem +foundUni(UniType):University +giveJob(name,surname,empType):Empl oyee founds LiberalEducation +foundUni(UniType):University +giveJob(name,surname,empType):Empl oyee CommunistEducation +foundUni(UniType):University +giveJob(name,surname,empType):Empl oyee CapitalistEducation +foundUni(UniType):University +giveJob(name,surname,empType):Empl oyee Provide occupation +start() University ComUni LibUni CapUni ComLec LibLec BrokerLecturer WorkerLecturer ComResAssist LibResAssist ComSec BrokerResAssist LibSec WorkerResAssist BrokerSecretary WorkerSecretary ComOff LibOff BrokerOfficer WorkerOfficer +employ() Capitalist employees are kept by a structure like linked list. Root object will be pointed in university and employees can point other employees. Employee of liberal university will point the university like assignment 5. University give money related to contribution. In communist system, money is distributed equally for each job of action. In liberal system, money is equal to contribution. In capitalist system, money = contribution * 3/2 -1 . Start function will start the story of education. It will be overridden different by universities. Trick: Abstract Factorial Pattern Test Scenarios In liberal system, story is told like below: (output) I see that there is an opportunity for being … (Employee type) in the university. So I am … (Employee Type). (output) University has … (Action). I did … (work) . My happiness is … and my money is … . I contribute … to university. (output) University has … (Action). I cannot do that. … (output) After all, my happiness is … . My money is … . Contribution of university is … . In capitalist system, story is told like assignment 6. In communist system, story is told like assignment 5. Remarks • Do not use any elements which is not covered in class. • Do not submit your code without testing it with several different scenarios. • Write comments in your code. • Prepare a Makefile for your programme. • You are free to define your functions or classes. Turn in: • Source code of a complete C++ program. Name of the file should be in this format: _.cpp. • Example: gokhan_kaya_000000.cpp. Please do not use any Turkish special characters. • You don’t need to use an IDE for this assignment. Your code will be compiled and run in a command window. • Your code will be compiled and tested on a Linux machine(Ubuntu). GCC will be used • Make sure you don’t get compile errors when you issue this command : g++ _.cpp. • A script will be used in order to check the correctness of your results. So, be careful not to violate the expected output format. • Provide comments unless you are not interested in partial credit. (If I cannot easily understand your design, you may loose points.) • You may not get full credit if your implementation contradicts with the statements in this document. Late Submission • (0,24] hours: -20% • (24,48] hours: -40% • (48,72] hours: -60% • (72,-) hours: -100% Grading (Tentative) • Max Grade : 100. • Multiple tests(at least 5) will be performed. All of the followings are possible deductions from Max Grade. • #define HARD_CODED_VALUES -10. • No submission: -100. (be consistent in doing this and your overall grade will converge to N/A) (To be specific: if you miss 3 assignments you’ll get N/A) • Compile errors: -100. • Irrelevant code: -100. • Major parts are missing: -100. • Unnecessarily long code: -30. • Using language elements and libraries which are not allowed: -100. • Not caring about the structure and efficiency: -30. (avoid using hard-coded values, avoid hard-to-follow expressions, avoid code repetition, avoid unnecessary loops). • Significant number of compiler warnings: -10. • Not commented enough: -5. (Comments are in English). • Source code encoding is not UTF-8 and characters are not properly displayed: -5. (You can use ‘Visual Studio Code’, ‘Sublime Text’, ‘Atom’ etc. . . Check the character encoding of your text editor and set it to UTF-8). • Missing or wrong output values: Fails the test. • Output format is wrong: -30. • Infinite loop: Fails the test. • Segmentation fault: Fails the test. • Fails 5 or more random tests: -100. • Fails the test: deduction up to 20. • Prints anything extra: -30. • Unwanted chars and spaces in output.txt: -30. • Submission includes files other than the expected: -10. • Submission does not follow the file naming convention: -10. • Sharing or inheriting code: -200