0% found this document useful (0 votes)
8 views12 pages

Project Report

The project aims to develop an INTRANET university management system using object-oriented programming principles. It includes creating UML diagrams, implementing a console application in Java, and organizing team collaboration effectively. The system allows students and staff to manage courses, view information, and interact with teachers, while also addressing challenges faced during development.

Uploaded by

yeoxxly
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
8 views12 pages

Project Report

The project aims to develop an INTRANET university management system using object-oriented programming principles. It includes creating UML diagrams, implementing a console application in Java, and organizing team collaboration effectively. The system allows students and staff to manage courses, view information, and interact with teachers, while also addressing challenges faced during development.

Uploaded by

yeoxxly
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Project name: University system

Discipline: Object-Oriented programming

Team members:
Batyrbek Assel
Kassenova Dariga
Bayandina Nazerke
Taupai Ayazhan
The main goal of the project:
Create a project university system INTRANET. The university management
system is a form of distribution, coordination and implementation of
management activities within the structure of an educational institution, which
is determined by the specifics of its internal divisions, management bodies,
their interaction and interconnection this relationship between employees and
students of the university should be facilitated and of high quality. To do this,
our goal was to make a convenient console Java offer that will create the
simplest basic queries for students and university staff using the knowledge
gained in object-oriented programming courses.

Project description:
1. Create an architecture using Use Case and UML class Diagrams.

2. Working with Eclipse

3. Report, documentation, presentation

1. Diagrams:
We have created diagrams using GenMyModel UML tool. The UML divides into
two parts:

* Use-case diagram

* Class diagram
Use-Case diagram:

Here we have 6 actors – User, Employee, Student, Teacher, Manager, Admin.

Class-Diagram:
2. Working with Eclipse
Packages
We have divided the classes into 5 main packages :
• UsersOfDANA(users of our system, actors of USE-CASE: User, Student, etc..)
• System(the main classes on which our system is based: course, mark, etc..)
• Additional(library, SMS, book, canteen, food, etc..)
• Enums(all enumerations: ManagerTypes, TypeOfLesson, etc..)
• Database(package where our data is stored: Database)

Student is a subclass of the User, the User class has such fields as:
public class User implements Comparable<User>,Serializable {
private static final long serialVersionUID = 1L;
private String name;
private String surname;
private String address;
private String email;
private int IIN;
private int phoneNumber;
Gender gender;
private String login;
private String password;

And the Student class itself has fields such as:


private String id;
private int yearOfStudy;
private int fullCredit;
private StudentStatus status;
private Faculty faculty;
private EducationType educationType;
public static HashMap<Course, Mark>courses=new HashMap<>();
private double GPA;

viewCourses() method:
public String viewCourses() {
String c="";
for(HashMap.Entry<Course,Mark> cur :Student.courses.entrySet()) {
c+="Course name: "+cur.getKey().courseName+" CourseID:
"+cur.getKey().courseID+"\n";
}
return c;
}
Add/dropCourses() methods:
public boolean addCourse(int courseID) {
Course c = new Course();
for (Course cur : Database.instanse.courses) {
if(cur.courseID==courseID) {
c=cur;
}
}
for(HashMap.Entry<Course,Mark> cur :courses.entrySet()) {
if(cur.getKey().equals(c)) {
return false;
}
}
courses.put(c, null);
return true;
}
public boolean dropCourse(int courseID) {
Course c = new Course();
for (Course cur : Database.instanse.courses) {
if(cur.courseID==courseID) {
c=cur;
}
}
for(HashMap.Entry<Course,Mark> cur :courses.entrySet()) {
if(cur.getKey().equals(c)) {
courses.remove(c);
return true;
}
}
return false;
}

Also Student can get information about Teacher, first of all we check if this
teacher exists or not from DataBase, if teacher doesn’t exist method return us
“No such teacher exists”.
public String getInfoAboutTeacher(String name,String surname) {
for(Teacher cur:Database.instanse.teachers) {
if(cur.getName().equals(name) && cur.getSurname().equals(surname)) {
return cur.toString();
}
}
return "No such teacher exists";
}
And Student can rate Teacher :
public void rateTeachers(String name,String surname,int rating) {
Teacher t=new Teacher();
for(Teacher cur:Database.instanse.teachers) {
if(cur.getName().equals(name) && cur.getSurname().equals(surname)) {
t=cur;
}
}
for(HashMap.Entry<Teacher,Vector<Integer>>
cur:Database.instanse.ratings.entrySet()) {
if(cur.getKey().equals(t)) {
cur.getValue().add(rating);
}
}
}

We also wrote methods like: joinOrganization(), viewTranscript(), all getters,


setters, compareTo(), equals(), toString(), hashCode().

Student mode:

if(u instanceof Student) {


boolean ok=true;
while(ok) {
Student s=(Student)u;
System.out.print("----------------------Student--------
---------------\n"
+ "1. View courses\n"+
"2. Add course\n"+
"3. Drop course\n"+
"4. View news\n"+
"5. View menu of canteen\n"+
"6. View marks\n"+
"7. View transcript\n"+
"8. Info about teacher\n"+
"9. Rate teacher\n"+
"10. Search Book\n"+
"11. Return Book\n"+
"12. Lend book\n"+
"13. Change Password\n"+
"14. Delete account\n"+
"15. Exit\n");
int pr = Integer.parseInt(reader.readLine());
switch(pr) {
case 1:
System.out.println(s.viewCourses());
case 2:
System.out.println("Enter a course id for add: ");
int cId=Integer.parseInt(reader.readLine());
s.addCourse(cId);
case 3:
System.out.println("Enter a course id for drop: ");
int cId1=Integer.parseInt(reader.readLine());
s.dropCourse(cId1);
case 4:
System.out.print(s.viewNews());
case 5:
System.out.println(s.viewMenu());
case 6:
System.out.print(s.viewMarks());
case 7:
System.out.print(s.viewTranscript());
case 8:
System.out.print("Enter a teacher name: ");
String name=reader.readLine();
System.out.print("Enter a teacher surname: ");
String surname=reader.readLine();
System.out.print(s.getInfoAboutTeacher(name,
surname));
case 9:
System.out.print("Let's rating the teachers");
System.out.print("Enter name teacher: ");
String name1=reader.readLine();
System.out.print("Enter a teacher surname: ");
String surname1=reader.readLine();
System.out.print("Enter a rating: ");
int rating=Integer.parseInt(reader.readLine());
s.rateTeachers(name1, surname1, rating);
case 10:
System.out.print("What book do you want to find?
Enter a name book: ");
String book=reader.readLine();
System.out.println(lib.searchBook(book));
case 11:
System.out.print("Enter a name book for return: ");
String book1=reader.readLine();
System.out.println(lib.returnBook(s,book1));
case 12:
System.out.print("What book do you want to lend?
Enter a name book: ");
String book3=reader.readLine();
System.out.println(lib.lendBook(s, book3));
case 13:
System.out.print("Print new password: ");
String newpassword=reader.readLine();
if(s.changePassword(newpassword)) {
System.out.print("Success!");
}
else {
System.out.print("WRONG!!!");
}
case 14:
System.out.print("Are u sure?");
s.deleteAccount();
System.out.print("Bye Bye!");
case 15:
System.exit(0);
}
}
}

We have class Mark and has fields like:


public class Mark implements Serializable{
private static final long serialVersionUID = 1L;
private HashMap<Date,Double>att1=new HashMap<>();
private HashMap<Date,Double>att2=new HashMap<>();
private double finalExam;
private String Grade;
It was convenient for us to use HashMap for att1 and att2, we could connect
types Date and Double.
After all getters and setters we wrote the method overallGrade() where we
calculated overall grade for semester, it contains sum of att1, att2 and
finalExam:
public double overallGrade() {
double sum=0;
for (Map.Entry<Date, Double> cur: att1.entrySet()){
sum+=cur.getValue();
}
for (Map.Entry<Date, Double> cur: att2.entrySet()){
sum+=cur.getValue();
}
sum+=finalExam;
if(sum>=0 && sum<50) {
Grade="F";
}
else if(sum>=50 && sum<55) {
Grade="D";
}
else if(sum>=55 && sum<60) {
Grade="D+";
}
else if(sum>=60 && sum<65) {
Grade="C";
}
else if(sum>=65 && sum<70) {
Grade="C+";
}
else if(sum>=70 && sum<75) {
Grade="B-";
}
else if(sum>=75 && sum<80) {
Grade="B";
}
else if(sum>=85 && sum<80) {
Grade="B+";
}
else if(sum>=90 && sum<95) {
Grade="A-";
}
else if(sum>=95 && sum<=100) {
Grade="A";
}
return sum;
}

3. Documentation
Project Management:

Since the our team were initially well acquainted, it was easy and fun for us to work
together, we immediately created a common chat in telegram and created a channel in
teams, after the first general meeting we divided one work into several parts so we quickly
completed the task and it was clear to everyone what was going on and who was doing
what. Our work process continued in this spirit and everyone helped each other.
Problems:
At each stage, we had certain problems, for example,
1. In diagrams: TopCoder did not work at first, and in GenMyModel we could
not create a collaboration and had to do everything from one account. When
we were at home, everyone logged into this account at once and the site often
did not work correctly.
2. At the second stage, in writing code we didn't fully understand the essence of
serialization and patterns, this was the main problem.
3. At the third stage we couldn't create documentation, but we completely
figured it out.

You might also like