1. Trang chủ
  2. » Công Nghệ Thông Tin

Báo cáo lập trình hướng đối tượng

16 569 2

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 16
Dung lượng 277,64 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tài liệu là báo cáo bài tập lớn môn lập trình hướng đối tượng dành cho sinh viên đại học có thể tham khảo để làm bài tập lớn cho riêng minh. xin cảm ơn các bạn đã sử dụng tài liệu aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

Trang 1

BÀI TẬP LỚN Lập trình hướng đối tượng

Đề tài: Xây dựng chương trình quản lý sinh viên

Sinh viên thực hiện:

Nguyễn Tiến Mạnh SHSV:20091743

Trang 2

Chương trình có các chức năng sau:

1 Bổ sung sinh viên

2 Xóa một sinh viên

3 Sửa thông tin sinh viên

4 Xem thông tin một sinh viên

5 Danh sách sinh viên

6 Danh sách sinh viên một khoa

7 Danh sách sinh viên cùng khoa với một sinh viên

Chương trình xây dựng các lớp sau:

 Lớp ngày sinh

 Lớp sinh viên

 Lớp danh sách

I Lớp ngày sinh

Lớp ngày sinh dùng để nhập và in ngày sinh của mỗi sinh viên class ngaysinh

{

int ngay;

int thang;

int nam;

Trang 3

public:

ngaysinh(){ngay=thang=nam=0;};

ngaysinh(int x,int y,int z) {

ngay=x;

thang=y;

nam=z;

}

~ngaysinh() {

ngay=thang=nam=0;

} ngaysinh operator =(ngaysinh ns) {

ngay=ns.ngay;

thang=ns.thang;

nam=ns.nam;

} void nhapns();

void hienns();

};

Các hàm trong class:

1 Hàm tạo không tham số:

ngaysinh();

Dùng để khởi tạo giá trị cho đối tuợng

2 Hàm tạo có tham số:

3 Toán tử gán:

Dùng để gán thông tin của đối tượng ngaysinh này cho một đối tượng ngaysinh khác

4 Hàm nhập ngày sinh:

{

cout<<"\nnhap ngay thang nam sinh:";

cin>>ngay>>thang>>nam;

}

5 Hàm hiện ngày sinh:

void ngaysinh::hienns()

{

cout<<ngay<<"/"<<thang<<"/"<<nam<<endl;

}

II Lớp sinh viên

class sinhvien

{

Trang 4

int shsv;

char hoten[30];

ngaysinh ns;

char gioitinh[4];

char khoa[30];

public:

sinhvien() {

ngaysinh x;

shsv=0;

strcpy(hoten,"");

ns=x;

strcpy(gioitinh,"");

strcpy(khoa,"");

} sinhvien(int x,char ten[30],ngaysinh y,char gt[4],char tenkhoa[30]) {

shsv=x;

strcpy(hoten,ten);

ns=y;

strcpy(gioitinh,gt);

strcpy(khoa,tenkhoa);

} sinhvien operator =(sinhvien sv) {

shsv=sv.shsv;

strcpy(hoten,sv.hoten);

ns=sv.ns;

strcpy(gioitinh,sv.gioitinh);

strcpy(khoa,sv.khoa);

} friend void gotoxy(short x, short y);

void nhapsv(int x,char ten[30],ngaysinh y,char gt[4],char tenkhoa[30]);

void insv(int x,int y);

int cungkhoa(sinhvien sv);

int thuockhoa(char tenkhoa[30]);

int timshsv(int msv);

};

Các hàm trong class:

1 Hàm tạo không tham số và có tham số:

Trang 5

Khởi tạo các thông tin ban đầu cho 1 đối tượng sinhvien

2 Toán tử gán:

Dùng để gán thông tin của sinh viên này cho một sinh viên khác

3 Hàm nhập sinh viên:

Nhập thông tin cho một sinh viên

4 Hàm in sinh viên:

void sinhvien::insv(int x,int y)

{

gotoxy(x,++y);cout<<shsv;

gotoxy(x+10,y);cout<<hoten;

gotoxy(x+40,y);ns.hienns();

gotoxy(x+50,y);cout<<gioitinh;

gotoxy(x+54,y);cout<<khoa;

gotoxy(x,y+1);

}

Thực hiên in thông tin một sinh viên ra màn hình

5 Hàm cungkhoa(sinhvien sv):

int sinhvien::cungkhoa(sinhvien sv)

{

if (strcmp(khoa,sv.khoa)==0) return 1;

else return 0;

}

Hàm trả về giá trị 1 nếu khoa của sinh viên gọi hàm trùng với khoa của sv ngược lại hàm trả về giá trị 0

6 Hàm thuockhoa(char tenkhoa[30]):

int sinhvien::thuockhoa(char tenkhoa[30])

{

if(strcmp(khoa,tenkhoa)==0) return 1;

else return 0;

}

Hàm trả về giá trị 1 nếu khoa của sinh viên trùng với tên khoa ngược lại hàm trả về giá trị 0

7 Hàm timshsv(int msv):

int sinhvien::timshsv(int msv)

{

if(shsv==msv) return 1;

else return 0;

}

Hàm trả về giá trị 1 nếu shsv của đối tượng sinhvien gọi hàm bằng với msv ngược lại hàm trả về giá trị 0

III Lớp danh sách:

class danhsach

{

Trang 6

sinhvien *sv;

int sosv;

void inkhung(int x,int y);

public:

danhsach(int max=50,int soluong=0) {

sv=new sinhvien[max];

sosv=soluong;

} friend void gotoxy(short x, short y);

void indanhsach(int x,int y);

void xemsv();

void svkhoa();

void svcungkhoa();

void bosung();

void suachua();

void xoa();

};

Các hàm trong class:

1 Hàm in danh sách:

void danhsach::indanhsach(int x,int y)

{

int i;

inkhung(x,y);

for(i=0;i<sosv;i++) sv[i].insv(x,y+i);

}

In ra màn hình thông tin về các sinh viên có trong danh sách

2 Hàm xemsv:

void danhsach::xemsv()

{

int mssv,i;

cout<<"\nNhap so hieu sinh vien can xem thong tin:";

cin>>mssv;

system("cls");

for(i=0;i<sosv;i++) if(sv[i].timshsv(mssv)==1) {

cout<<"Thong tin ve sinh vien:";

inkhung(1,2);

sv[i].insv(1,2);

} if(i>sosv) cout<<"\nKhong co sinh vien nay trong danh sach\n";

Trang 7

}

Thực hiên xem thông tin của một sinh viên với shsv được nhập từ bàn phím Đầu tiên duyệt danh sách để tìm sinh viên có shsv giống với shsv vừa nhập, nếu tìm thấy thì in ra màn hình thông tin của sinh viên

đó, ngược lại thông báo không có sinh viên này trong danh sách

3 Ham svkhoa:

void danhsach::svkhoa()

{

char tenkhoa[30];

int i,k,x,y;

x=1;y=2;

cout<<"Nhap ten khoa muon xem danh sach sinh vien:";

fflush(stdin);gets(tenkhoa);

system("cls");

cout<<"Danh sach sinh vien cua khoa "<<tenkhoa<<":";

inkhung(1,2);

for(i=0;i<sosv;i++) if(sv[i].thuockhoa(tenkhoa)==1) {

sv[i].insv(x,y);

y++;

} cout<<"\n";

}

Thực hiên in ra màn hình danh sách sinh viên của một khoa với tên khoa được nhập từ bàn phím Tiến hành duyệt danh sách, nếu sinh viên nào có khoa trùng với tên khoa thì in thông tin của sinh viên đó ra màn hình

4 Hàm svcungkhoa:

void danhsach::svcungkhoa()

{

sinhvien s;

int mssv;

int i,kt=0,x=1,y=2;

cout<<"Nhap so hieu sinh vien can xem danh sach sinh vien cung khoa voi minh:";

cin>>mssv;

for(i=0;i<sosv;i++) if(sv[i].timshsv(mssv)==1) {

s=sv[i];

kt=1;

break;

Trang 8

} if(kt==0) cout<<"\nKhong co sinh vien nay trong danh sach"; else

{

system("cls");

cout<<"Danh sach sinh vien cung khoa voi sinh vien co SHHV "<<mssv<<":";

inkhung(1,2);

for(i=0;i<sosv;i++) if(sv[i].cungkhoa(s)==1) {

sv[i].insv(x,y);

y++;

} }

cout<<"\n";

}

Thực hiên in ra màn hình danh sách những sinh viên cùng khoa với một sinh viên co shsv được nhập từ bàn phím

5 Hàm bosung:

void danhsach::bosung()

{

int mssv,i,kt=0,x;

char ten[30],gt[4],tenkhoa[30];

ngaysinh y;

while(1) {

x=0;kt=0;

system("cls");

cout<<"\nSo hieu sinh vien:";

cin>>mssv;

for(i=0;i<sosv;i++) if(sv[i].timshsv(mssv)==1) {

cout<<"sinh vien nay da co";

kt=1;

} if(kt==0) {

cout<<"\nHo ten:";

fflush(stdin);gets(ten);

y.nhapns();

cout<<"\nGioi tinh:";

Trang 9

fflush(stdin);gets(gt);

cout<<"\nKhoa:";

fflush(stdin);gets(tenkhoa);

sv[sosv].nhapsv(mssv,ten,y,gt,tenkhoa);

sosv++;

} cout<<"\nBan co muon bo sung tiep khong(1/0)?";

cin>>x;

if(x==0) break;

} }

Thêm một sinh viên vào danh sách Đầu tiên nhập shsv của sinh viên mới, kiểm tra xem sinh viên này đã có trong danh sách chưa nếu chưa

có thì bắt đầu nhập thông tin cho sinh viên này và lưu vào danh sách, ngược lại thông báo đã có sinh viên này trong danh sách

6 Hàm suachua:

void danhsach::suachua()

{

int mssv,i,k=0;

char hoten[30],gioitinh[4],khoa[30];

ngaysinh ns;

cout<<"\nnhap so hieu sinh vien can sua:";

cin>>mssv;

for(i=0;i<sosv;i++) if(sv[i].timshsv(mssv)==1) {

k=1;

break;

} if(k==1) {

cout<<"\nnhap thong tin moi cho sinh vien";

cout<<"\nho ten:";

fflush(stdin);gets(hoten);

ns.nhapns();

cout<<"\ngioi tinh:";

fflush(stdin);gets(gioitinh);

cout<<"\nkhoa:";

fflush(stdin);gets(khoa);

sv[i].nhapsv(mssv,hoten,ns,gioitinh,khoa);

} else cout<<"khong tim thay sinh vien trong danh sach\n";

}

Trang 10

Thay đổi thông tin của một sinh viên có shsv được nhập từ bàn phím Duyệt danh sách để tìm sinh viên co shsv như đã nhập, nếu không tìm thấy thì thông báo không có sinh viên này trong danh sách, ngược lại nhập thông tin mới cho sinh viên này

7 Hàm xoa:

void danhsach::xoa()

{

int i,k,mssv;

cout<<"\nnhap so hieu sinh vien muon xoa:";

cin>>mssv;

for(i=0;i<sosv;i++) if(sv[i].timshsv(mssv)==1) {

k=i;

break;

} if(i>sosv) cout<<"\nkhong co sinh vien can xoa trong danh sach\n";

else {

for(i=k;i<sosv;i++) sv[i]=sv[i+1];

sosv=sosv-1;

cout<<"\nDa xoa\n";

} }

Xóa một sinh viên trong danh sách có shsv được nhập từ bàn phím Duyệt danh sách để tìm sinh viên co shsv đã nhập nếu tìm thấy thì xóa sinh viên khỏi danh sách và giảm sosv đi 1 đơn vị, ngược lại thông báo không có sinh viên cần xóa trong danh sách

IV Các hàm khác trong chương trình

1 Hàm textcolor:

void textcolor(WORD color)

{

HANDLE hConsoleOutput;

hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

Trang 11

CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info; GetConsoleScreenBufferInfo(hConsoleOutput,

&screen_buffer_info);

WORD wAttributes = screen_buffer_info.wAttributes;

color &= 0x000f;

wAttributes &= 0xfff0;

wAttributes |= color;

SetConsoleTextAttribute(hConsoleOutput, wAttributes);

}

Dùng để đổi màu chữ

2 Hàm textbackground:

void textbackground(WORD color)

{

HANDLE hConsoleOutput;

hConsoleOutput = GetStdHandle(STD_OUTPUT_HANDLE);

CONSOLE_SCREEN_BUFFER_INFO screen_buffer_info; GetConsoleScreenBufferInfo(hConsoleOutput,

&screen_buffer_info);

WORD wAttributes = screen_buffer_info.wAttributes;

color &= 0x000f;

color <<= 4;

wAttributes &= 0xff0f;

wAttributes |= color;

SetConsoleTextAttribute(hConsoleOutput, wAttributes);

}

Dùng để đổi màu nền

3 Hàm gotoxy:

void gotoxy(short x, short y)

{

HANDLE hCon = GetStdHandle(STD_OUTPUT_HANDLE); COORD pos;

pos.X = x-1;

pos.Y = y-1;

SetConsoleCursorPosition(hCon, pos);

}

Dùng để di chuyển con trỏ dến vi trí có tọa độ (x,y) trên màn hình

V Hàm menu

1 Hàm menu :

Trang 12

void menu(int x,int y)

{

textbackground(1);

textcolor(15);

gotoxy(x,y+1); cout<<"HAY CHON MOT CHUC NANG:";

textcolor(12);

gotoxy(x,y+3); cout<<"1.BO SUNG SINH VIEN "; gotoxy(x,y+5); cout<<"2.XOA MOT SINH VIEN "; gotoxy(x,y+7); cout<<"3.SUA THONG TIN SINH VIEN "; gotoxy(x,y+9); cout<<"4.XEM THONG TIN MOT SINH VIEN "; gotoxy(x,y+11);cout<<"5.DANH SACH SINH VIEN "; gotoxy(x,y+13);cout<<"6.DANH SACH SINH VIEN MOT KHOA"; gotoxy(x,y+15);cout<<"7.DANH SACH SINH VIEN CUNG KHOA VOI MOT SINH VIEN";

gotoxy(x,y+17);cout<<"8.THOAT";

}

In ra màn hình các chức năng của chương trình

2 Hàm menuchon :

Hàm có chức năng thay đổi màu nền của dòng tên chức năng của chương trình khi con trỏ ở dòng đó

void menuchon(int x,int y,int chon)

{

switch(chon) {

case 1:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+3);cout<<"1.BO SUNG SINH VIEN"; }break;

case 2:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+5);cout<<"2.XOA MOT SINH VIEN"; }break;

case 3:

{

menu(x,y);

textbackground(6);

textcolor(14);

Trang 13

gotoxy(x,y+7);cout<<"3.SUA THONG TIN SINH VIEN";

}break;

case 4:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+9);cout<<"4.XEM THONG TIN MOT SINH VIEN";

}break;

case 5:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+11);cout<<"5.DANH SACH SINH VIEN";

}break;

case 6:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+13);cout<<"6.DANH SACH SINH VIEN MOT KHOA";

}break;

case 7:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+15);cout<<"7.DANH SACH SINH VIEN CUNG KHOA VOI MOT SINH VIEN";

}break;

case 8:

{

menu(x,y);

textbackground(6);

textcolor(14);

gotoxy(x,y+17);cout<<"8.THOAT";

}break;

}

Trang 14

}

3 Hàm luachon :

Hàm trả về giá trị là vị trí hiện tại của con trỏ khi ấn phím enter.Khi sử dụng mũi tên lên xuống giá trị của biến i cung sẽ tăng giảm theo, và khi

ấn phím enter hàm sẽ trả về giá trị của biến i lúc đó

int luachon(int x,int y)

{

int thoat=0;

int i=1;

while(!thoat) {

menuchon(x,y,i);

char c=getch();

if(c==1) c=getch();

switch(c) {

case 13:

{

thoat=1;

return i;

} case 80:

{

if(i==8) i=1;

else i++;

menuchon(x,y,i);

}break;

case 72:

{

if(i==1) i=8;

else i ;

menuchon(x,y,i);

}break;

} }

}

VI Một số hình ảnh về chương trình

Trang 15

Hình 1 : Giao diện của chương trình

Hình 2 : Chức năng thêm 1 sinh viên vào danh sách

Hình 3 : Danh sách sinh viên

Hình 4 : Xóa sinh viên

Trang 16

Hình 5 : Danh sách sinh viên sau khi xóa

Hình 6: Sửa thông tin của sinh viên

Hình 7: Danh sách sinh viên khoa toán tin

Hình 8: Danh sách sinh viên cùng khoa với sinh viên có shsv 20091743

Ngày đăng: 20/03/2015, 15:24

HÌNH ẢNH LIÊN QUAN

Hình 3 : Danh sách sinh viên - Báo cáo lập trình hướng đối tượng
Hình 3 Danh sách sinh viên (Trang 15)
Hình 4 : Xóa sinh viên. - Báo cáo lập trình hướng đối tượng
Hình 4 Xóa sinh viên (Trang 15)
Hình 7: Danh sách sinh viên khoa toán tin. - Báo cáo lập trình hướng đối tượng
Hình 7 Danh sách sinh viên khoa toán tin (Trang 16)

TỪ KHÓA LIÊN QUAN

w