You are on page 1of 11

TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH

BÁO CÁO ĐỒ ÁN THỰC HÀNH LẬP TRÌNH HƯỚNG ĐỐI


TƯỢNG

Lê Mỹ Khánh Quỳnh - 21127681


MỤC LỤC
I. GIỚI THIỆU ĐỒ ÁN: ................................................................................................2
1. NỘI DUNG ĐỒ ÁN:...............................................................................................2
2. CÔNG CỤ:..............................................................................................................2
3. NGÔN NGỮ LẬP TRÌNH:......................................................................................2
4. KỸ THUẬT:............................................................................................................2

II. MÔ TẢ HỆ THỐNG MÃ NGUỒN: ......................................................................3


III. UML CLASS:..........................................................................................................8
IV. LỜI KẾT:...............................................................................................................12

1
I. GIỚI THIỆU ĐỒ ÁN:

1. NỘI DUNG ĐỒ ÁN:


- Trong phần đồ án này ta sẽ phối hợp các kĩ thuật, cấu trúc dữ liệu cơ bản và
kiến thức lập trình hướng đối tượng để xây dựng một hệ thống moodle. Để thực
hiện được đồ án này ta cần các kiến thức cơ bản như: xử lý tập tin, tiểu trình,
handle, các cấu trúc dữ liệu cơ bản và kiến thức lập trình hướng đối tượng…

2. CÔNG CỤ:
- Microsoft Visual Studio.

3. NGÔN NGỮ LẬP TRÌNH:


- Ngôn ngữ: C++.

4. KỸ THUẬT:
- Lập trình theo hướng đối tượng.

2
II. YÊU CẦU ĐẠT ĐƯỢC:
1. Thêm khóa học vào hệ thống, thêm người dùng vào hệ thống,thêm sinh viên/
giảng viên vào khóa học

o Khi khởi động người dùng sẽ nhập vào type user cần đăng nhập vào:
 Ở đây, class NguoiDung (base class của class GiaoVu, SinhVien và GiangVien)
được xây dựng theo cấu trúc prototype design pattern. Giúp người dùng linh
hoạt trong thao tác và mở rộng mã nguồn.
o Sau khi người dùng nhập vào type user tương ứng, hệ thống sẽ tiến đến bước đăng nhập.
Tùy thuộc vào user type mà người dùng nhập vào, chương trình sẽ hỗ trợ các thao tác
chức năng tương ứng.
o Để thực hiện thao tác thêm khóa học / người dùng, ta phải đăng nhập dưới type là
GiaoVu. Khi đó hệ thống sẽ diễn hoạt chương trình các chức năng của GiaoVu.

o Chức năng thêm người dùng/ khóa học: được thiết kế mã nguồn khá tương đồng.
Người dùng sẽ phải nhập vào dữ liệu người dùng và khóa học cần add. Hệ thống sẽ
kiểm tra xem trong danh sách Người dùng và Khóa học của hệ thống đã tồn tại đối
tượng cần thêm chưa. Nếu đã tồn tại, chương trình sẽ trả về dòng warning : “người
dùng / khóa học đã tồn tại” và kết quả hàm ADD sẽ trả về false. Ngược lại, nếu trong hệ
thống chưa tồn tại sẽ thực hiện thêm người dùng / khóa học vào danh sách tương ứng
trong hệ thống và trả giá trị true.

3
o Thêm sinh viên / giảng viên vào khóa học: Ở chức năng này người dùng vẫn phải nhập
dữ liệu cho user và khóa học. Chương trình sẽ tìm xem khóa học đã tồn tại trong hệ
thống hay chưa ? Nếu chưa sẽ thực hiện thêm khóa học vào hệ thống rồi thêm người
dùng vào khóa học

o
2. Giảng viên tạo hoạt động và sinh viên tham gia hoạt động đó

o Để thực hiện tạ
3. Sinh viên nộp bài tập

4
4. Giáo viên chấm điểm bài tập
5. Nhập thông tin tài nguyên và hoạt động (thông qua file txt với cấu trúc tự xây dựng)
6. Mô phỏng sinh viên nộp bài
7. Mô phỏng giáo viên chấm bài
o Khi chạy chương trình, màn hình consol sẽ xuất hiện MENU CHÍNH của hệ
thống.

 Thêm khóa học vào hệ thống: Input dữ liệu cho một khóa học và push nó vào
danh sách các khóa học của hệ thống. Trong trường hợp khóa học đã tồn tại (xét
dựa vào tên của khóa học) thì hệ thống sẽ hiện warning: “khoa hoc da ton tai.” Và
không thực hiện việc thêm khóa học vào hệ thống. Tương tự như vậy với chức
năng thêm người dùng.
 Thêm user vào khóa học: Hệ thống sẽ yêu cầu người dùng nhập dữ liệu khóa học
và người dùng cần thêm vào khóa học đó. Nếu khóa học chưa tồn tại trong hệ
thống, chương trình sẽ thực hiện thêm khóa học vào hệ thống rồi thực hiện thêm
người dùng vào khóa học.
o
III. PSEUDOCODE:
Function NewGame()
if not loaded
create defaullt Map ;
draw Map;
InitNewState();
draw Player;
while game is over
if not pause
RandomNextState();
else
draw Menu Pausing;
switch pos :
case 1 : SaveGameMenu();
case 2 : LoadGameMenu();
case 3 : out;
switch key :
case p : clean Menu Pausing;
case w : go up;
case d : go down;
case a : go left;
case s : go right;
if not end and win
if print level up -> choose true

5
next level;
draw map;
InitNewState();
draw player;

Function InitNewState()
create Player;
create Rows;
randomi Rows -> init random Enemy with different features;
speed up Rows[random];
sleep;
MoveToNextState()

Function MoveToNextState()
random int -> draw Traffic Light;
random Rows -> push Enemy;

Function RandomNextState()
random Rows -> add new Enemy;
MoveToNextState();
draw Map;

Function ContinueGame()
Print Map;
Print “Game Over”; //cout bằng UTF8
switch(key)
case a:
{
pos--;
if(!isMute1 && !isMuteAll) PlaySound();
}
case s:
{
pos++;
if(!isMute1 && !isMuteAll) PlaySound();
}
case 13:
return !pos;

Function GameSetting()
Print Menu;
switch(key)

6
case w: pos--;
case s: pos++;
case 13:
switch(pos)
case 0: Mode Setting;
case 1: Sound1 Setting;
case 2: Sound2 Setting;
case 3: Out;

Function GameMenu()
Print Menu;
switch(key)
case d: pos++;
case a: pos--;
case 13:
switch(pos)
case 1: New Game;
case 2: Load Game;
case 3: Setting;
case 4: Exit;

Function SaveGame()
Open file
Writefile -> level x,y
vector <OneRow*> rows(rowsData.ListRow())
i=0
while(i < 6)
writefile rows[i]->CurrentRow, Direction, Speed, Redlight
vector <Enemy*> enemy(rows[i]-> Enemy)
writefile enemy size
j=0
while(j < enemy size)
writefile enemy[j]->X,Y,type
Close file

Function LoadGame(string s)
open file
if file is not open
return false
readfile lv,playerX,playerY
~Level()
new(&level) nLevel(lv, 0)
~player()

7
new(&player) pPlayer(pPosition(playerX, playerY))
nEnemy = 0
~qRows()
new(&rowsData) qRows()
i=0
While ( i < 6 )
readfile CurrentRow,Direction,Speed,Redlight
Push row on road data

readfile enemysize
Enemy += enemysize
j=0
while( j < enemysize )
readfile eX,eY,eType
Push enemy on road data
Close file
return true

8
9
IV. LỜI KẾT:
- Mặc dù đã cố gắng hết sức, các thành viên đã rất cố gắng để hoàn thành tốt
nhiệm vụ của mình được giao nhưng chắc chắn không thể tránh khỏi những thiếu
sót như code chưa tối ưu, trình bày chưa đẹp, … Nhưng chúng em đã cố gắng hết
sức để hoàn thành tốt nhất có thể đồ án này.
- Chúng em xin cảm ơn thầy Trương Toàn Thịnh đã đưa ra những hướng dẫn,
hướng đi cụ thể để chúng em có thể hoàn thành tốt đồ án này. Chúng em xin cảm
ơn thầy !

10

You might also like