Quản lý đoàn viên viết bằng C++
Đồ án môn học Lập trình hướng đối tượng. Chương trình quản lý đoàn viên viết bằng C++.
Chương trình đáp ứng tốt các yêu cầu đã đặt ra. Bạn sẽ vui vì đồ án này cung cấp cho bạn các kỹ năng và củng cố kiến thức.
13 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 4512 | Lượt tải: 2
Bạn đang xem nội dung tài liệu Quản lý đoàn viên viết bằng C++, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
TRƯỜNG ĐẠI HỌC CẦN THƠ
KHOA CNTT & TT
{
Bài tập nhóm
QUẢN LÝ ĐOÀN VIÊN
Giáo Viên Hướng Dẫn:
Thầy THÁI MINH TUẤN
Nhóm Thực Hiện:
BÀNH HUỲNH HUY (1063271)
TRƯƠNG CAO HỒNG VẬN (1063322)
- 04/2008 -
LỜI NÓI ĐẦU
Lập trình hướng đối tượng - OOP - là một phương pháp mới trên bước đường tiến hóa của lập trình máy tính, nó làm cho chương trình linh hoạt, dễ phát triển hơn. Với những lợi thế của lập trình hướng đối tượng mang lại ta dễ dàng thấy được tính ưu việt của nó so với phương pháp lập trình cấu trúc cổ điển.
Hầu hết các ngôn ngữ lập trình hiện nay được giới chuyên môn sử dụng đều hổ trợ hướng đối tượng, ví dụ: C++, C#, Java, Visual Basic, Delphi… Trong đó ngôn ngữ đáng quan tâm là C++ vì hiện nay nó là ngôn ngữ rất phổ thông và thịnh hành bởi đặc điểm mềm dẻo vốn có. Đó cũng chính là ngôn ngữ mà nhóm chúng tôi sử dụng để thực hiện đề tài của mình.
Do đây là lần đầu tiên tiếp cận với phương pháp lập trình hướng đối tượng nên không tránh khỏi những sai xót, và vẫn còn nhiều kiến thức mơ hồ. Chương trình chỉ mang tính tập sự, chưa thể sử dụng trong thực tế do giao diện chưa được đẹp và chưa xử lý được các ngoại lệ.
Mong các bạn có thể đóng góp ý kiến quý báu của mình để nhóm của chúng tôi có thể hoàn thiện chương trình hơn.
Cần Thơ, ngày 15 tháng 04 năm 2008
Nhóm thực hiện
MỤC LỤC
MÔ TẢ & PHÂN TÍCH
MÔ TẢ BÀI TOÁN
Trong tất cả các tổ chức, Đoàn viên là một lực lượng nồng cốt không thể thiếu. Bên cạnh đó, do số lượng Đoàn viên là một con số không nhỏ, đòi hỏi phải có sự quản lý chặt chẽ. Mặt khác, lĩnh vực CNTT ngày càng phát triển và con người đã từng bước áp dụng vào cuộc sống, công việc, đặc biệt là trong vấn đề lưu trữ và quản lý thông tin. Vì thế, để giải quyết được vấn đề nan giải đó là làm sao để quản lý Đoàn viên được chặt chẽ và dễ dàng, nhóm của chúng tôi đã thực hiện một đề án quản lý Đoàn viên và các Chi Đoàn trực thuộc của một tổ chức và cụ thể đó là Đoàn Khoa CNTT&TT- ĐH Cần Thơ.
PHÂN TÍCH BÀI TOÁN
Các đối tượng trong hệ thống
Trong quá trình phân tích, hệ thống quản lý Đoàn viên xuất hiện các đối tượng sau:
Đối tượng là ngày tháng
Đối tượng là Đoàn viên: Có sử dụng đối tượng ngày tháng như là thành viên
Đối tượng là Chi Đoàn: Có sử dụng đối tượng Đoàn viên như là thành viên
Đối tượng là Đoàn Khoa: Có sử dụng đối tượng Chi Đoàn như là thành viên
Các chức năng cần đạt của hệ thống
Chia là ba phần lớn:
Phần 1: Liệt kê danh sách
Phải liệt kê được một số danh sách cơ bản như
Danh sách một Chi Đoàn
Danh sách tất cả Chi Đoàn
Danh sách các Cán bộ Đoàn
Danh sách các Chi Đoàn còn thiếu Đoàn phí
Phải cho người dùng xuất thông tin của Chi Đoàn và Đoàn Khoa ra tập tin
Phần 2: Tìm kiếm thông tin Đoàn viên
Phải tìm kiếm được thông tin Đoàn viên dưới một vài dạng thức cơ bản như
Theo mã số
Theo họ tên
Phải cho người dùng xuất thông tin của Đoàn viên được tìm thấy ra tập tin
Phần 3: Thay đổi thông tin Đoàn viên
Phải có đủ các chức năng cơ bản để thay đổi nội dung của Đoàn viên như
Thêm Đoàn viên vào một Chi Đoàn
Xóa Đoàn viên khỏi một Chi Đoàn
Sửa thông tin của một Đoàn viên
Phân chia công việc
1.
Bành Huỳnh Huy
Thiết kế lớp ngày tháng, lớp Đoàn viên
2.
Trương Cao Hồng Vận
Thiết kế lớp Chi Đoàn, lớp Đoàn Khoa và Demo
THIẾT KẾ CHƯƠNG TRÌNH
SƠ ĐỒ LỚP
MÔ TẢ CÁC LỚP
Lớp ngày tháng classDMY
Kiểu
Tên
Mô tả
Biến
int
date, month, year
Biến thành viên lưu ngày, tháng, năm
Phương thức
dmy()
dmy(char*)
Hàm khởi tạo không đối số
Hàm khởi tạo ngày từ chuổi (dd/mm/yyyy)
void
setdmy(char*)
Hàm thay đổi ngày từ chuổi (dd/mm/yyyy)
bool
operator >
So sánh "lớn hơn" giữa 2 ngày
ostream&
operator <<
Xuất ra luồng xuất
Lớp Đoàn viên classDoanVien
Kiểu
Tên
Mô tả
Biến thành viên
char *
name
Tên Đoàn viên
esex
sex
Giới tính
dmy
birthday
Ngày sinh
char *
home
Quê quán
dmy
joindate
Ngày vào Đoàn
char *
joinplace
Nơi vào Đoàn
char *
post
Chức vụ
long
code
Mã số
char*
offcode
Mã đơn vị
char*
offname
Tên đơn vị
int
course
Khóa học
int
staff
Có phải là cán bộ không
Phương Thức
doanvien()
Hàm khởi tạo
~doanvien()
Hàm hủy
void
setName(char*)
Đặt tên qua tham số truyền vào
char*
getName()
Nhận lại tên
void
setBirday(dmy)
Đặt ngày sinh qua ngày tháng truyền vào
void
setBirday(char*)
Đặt ngày sinh qua chuỗi truyền vào (dd/mm/yyyy)
dmy
getBirday()
Nhận lại ngày sinh
void
setSex(char)
Đặt giới tính bằng ký tự M hoặc F
void
setSex(char*)
Đặt giới tính bằng chuỗi "Nam" hoặc "Nu"
char
getSex()
Nhận lại giới tính
void
setHome(char*)
Đặt quê quán qua chuỗi truyền vào
char*
getHome()
Nhận lại quê quán
void
setJoinDate(dmy)
Đặt ngày vào Đoàn bằng ngày tháng truyền vào
void
setJoinDate(char*)
Đặt ngày vào Đoàn bằng chuỗi (dd/mm/yyyy)
dmy
getJoinDate()
Nhận lại ngày vào Đoàn
void
setJoinPlace(char*)
Đặt nơi vào Đoàn bằng chuỗi
char*
getJoinPlace()
Nhận lại nơi vào Đoàn
void
setPost(char*)
Đặt chức vụ bằng chuõi truyền vào
char*
getPost()
Nhận lại chức vụ
void
setCode(long)
Đặt mã số bằng số truyền vào
void
setCode(char*)
Đặt mã số bằng chuỗi truyền vào
long
getCode()
Nhận lại mã số
void
setCourse(int)
Đặt Khóa học bằng số truyền vào
void
setCourse(char*)
Đặt Khóa học bằng chuỗi truyền vào
int
getCourse()
Nhận lại Khóa học
void
setOffName(char*)
Đặt tên đơn vị bằng chuỗi truyền vào
void
setOffCode(char*)
Đặt mã đơn vị bằng chuỗi truyền vào
void
newdoanvien(char*)
Cập nhật lại thông tin bằng chuỗi truyền vào có định dạng như sau:
++++++++
void
repair()
Sửa nội dung
void
showinfo()
Hiển thị mọi thông tin chi tiết
void
save(ofstream&)
Lưu thông tin ra file
void
out()
Hỏi người dùng muốn xuất thông tin ra file không
doanvien&
operator =
Gán một Đoàn viên cho một Đoàn viên
ostream&
operator <<
Xuất ra luồng xuất
istream&
operator >>
Nhận vào từ luồng nhập
Lớp Chi Đoàn classChiDoan
Kiểu
Tên
Mô tả
Biến thành viên
doanvien *
list
Con trỏ lưu thông tin các Đoàn viên
int
num
Số lượng Đoàn viên trong chi Đoàn
int
course
Khóa học
char *
name
Tên Chi Đoàn
char *
code
Mã Chi Đoàn
dmy
expire
Đã đóng Đoàn phí đến ngày này
Phương Thức
chidoan()
Hàm khởi tạo
~chidoan()
Hàm hủy
void
showinfo()
Xuất thông tin Chi Đoàn ra màn hình
void
load(ifstream &)
Nạp một Chi Đoàn từ file
void
save(ofstream &)
Xuất một Chi Đoàn ra file
void
sort()
Sắp xếp các Đoàn viên theo thứ tự Mã số
void
swapdoanvien(int,int)
Đổi chỗ 2 Đoàn viên với nhau
void
add()
Thêm một Đoàn viên
void
sub()
Xóa một Đoàn viên
void
repair()
Sửa một Đoàn viên
void
out()
Hỏi người dùng có muốn xuất thông tin Chi Đoàn này ra file không
int
size()
Trả về số lượng Đoàn viên
dmy
getExp()
Trả về ngày hết hạn Đoàn phí
char*
getName()
Trả về tên Chi Đoàn
doanvien&
operator [](int)
Trả về Đoàn viên thứ i trong danh sách
ostream&
operator <<
Xuất Chi Đoàn ra luồng xuất
Lớp Đoàn Khoa classDoanKhoa
Kiểu
Tên
Mô tả
Biến
int
num
Số Chi Đoàn trong Đoàn Khoa
chidoan*
data
Dữ liệu về các Chi Đoàn
char
filename[30]
Tên file lưu dữ liệu
Phương Thức
doankhoa(char*)
Hàm khởi tạo
~doankhoa()
Hàm hủy
int
size()
Trả về số Chi Đoàn
void
out()
Hỏi người dùng muốn xuất thông tin ra file không
bool
print(char*,int&)
In chuỗi truyền vào như là lời nhắn (message).
Tham chiếu kiểu int truyền vào đề nhận về chỉ số của Chi Đoàn cần in. Hàm trả về kết quả người dùng có muốn xuất thông tin không
chidoan&
operator[](int)
Trả về Chi Đoàn thứ i trong danh sách
void
timtheoten()
Tìm một Đoàn viên theo tên
void
timtheomaso()
Tìm một Đoàn viên theo mã số
void
showStaff()
Tìm kiếm và hiển thị các cán bộ Đoàn
void
printMoney()
Tìm kiếm và hiển thị Chi Đoàn còn thiếu Đoàn phí
ostream&
operator <<
Xuất Đoàn Khoa ra luồng xuất
CẤU TRÚC FILE
Dòng đầu tiên là số n lưu số Chi Đoàn
Sau đó là n khối tiếp theo, mỗi khối có cấu trúc sau:
Dòng đầu tiên của khối là header, sau mỗi thông tin là một dấu CỘNG (+) :
Tên Chi Đoàn
Khóa học
Mã Chi Đòan
Ngày hết hạn Đoàn phí (dd/mm/yyyy)
Số m lưu số lượng thành viên trong Chi Đoàn
Sau đó là m dòng, mỗi dòng lưu thông tin của một Đoàn viên, sau mỗi thông tin là một dấu CỘNG (+):
Họ và tên
Ngày sinh (dd/mm/yyyy)
Giới tính (M/F)
Quê quán
Ngày vào Đoàn (dd/mm/yyyy)
Nơi vào Đoàn
Chức vụ (là khoảng trống nếu như không có)
Mã số (một số nguyên dương)
Ví dụ:
Cách lấy dữ liệu: + Đọc từng dòng, gán vào một chuỗi
+ Chuyễn chuỗi trên vào hàm gán (phương thức newdoanvien)
+ Dùng các hàm đặt để gán các thuộc tính tương ứng (set)
GIỚI THIỆU DEMO
MÔI TRƯỜNG CÀI ĐẶT:
Ngôn ngữ sử dụng: C++
IDE: Visual C++ 6.0
CÁC FILES NGUỒN:
STT
Tên file
Mô tả
1.
Header.h
Khai báo các tiền xử lý #include
Khái báo thủ tục clrscr() và panel()
Kiểu liệt kê sex và các tác tử nhập xuất của nó
2.
classDMY.hpp
Khai báo lớp Ngày tháng
3.
classDMY.cpp
Cài đặt lớp Ngày tháng
4.
classDoanVien.hpp
Khai báo lớp Đoàn viên
5.
classDoanVien.cpp
Cài đặt lớp Đoàn viên
6.
classChiDoan.hpp
Khai báo lớp Chi Đoàn
7.
classChiDoan.cpp
Cài đặt lớp Chi Đoàn
8.
classDoanKhoa.hpp
Khai báo lớp Đoàn Khoa
9.
classDoanKhoa.cpp
Cài đặt lớp Đoàn Khoa
10.
Demo.cpp
Chương trình chạy Demo các lớp đã cài đặt
GIỚI THIỆU MỘT VÀI GIAO DIỆN
Main menu:
Liệt kê toàn bộ các Chi Đoàn:
Tìm kiếm theo mã số:
CÁCH THỰC THI DEMO:
Các menu được đánh số từ 1 -> 9, lựa chọn bằng cách nhấn phím số tương ứng với chỉ số của menu.
Nhấn ESC để thoát, chương trình sẽ xuất hiện một thông điệp:”Bạn có muốn lưu lại những thay đổi không ? (Nhấn ‘c’ để đồng ý)”Khi đó, nếu muốn lưu lại thì nhấn ‘c’ ngược lại thì nhấn phím bất kỳ.
Liệt kê toàn bộ:
Liệt kê tất cả các Đoàn viên được phân chia rõ ràng theo từng Chi Đoàn.
Liệt kê một Chi Đoàn:
Muốn liệt kê Chi Đoàn nào thì nhấn phím số tương ứng với chỉ số của Chi Đoàn đó.
Liệt kê cán bộ Đoàn:
Liệt kê tất cả các Đoàn viên là cán bộ.
Liệt kê Chi Đoàn còn thiếu phí:
Liệt kê tất cả các Chi Đoàn chưa đóng đủ phí Đoàn tính đến thời điểm đang xét.
Tìm theo mã số:
Hiển thị thông tin của Đoàn viên có mã số cần tìm. Mã số phải được nhập chính xác.
Tìm theo họ tên:
Hiển thị thông tin của Đoàn viên có họ tên cần tìm. Chương trình sẽ liệt kê tất cả các Đoàn viên có họ tên chứa chuỗi họ tên vừa nhập.
Thêm Đoàn viên:
Thêm một Đoàn viên vào một Chi Đoàn được chỉ định, nhập tất cả các thông tin của Đoàn viên cần thêm.
Xóa Đoàn viên:
Xóa một Đoàn viên trong Chi Đoàn được chỉ định với cách xác định là chỉ số của Đoàn viên đó trong Chi Đoàn.
Sửa Đoàn viên:
Cập nhật lại thông tin của một Đoàn viên trong Chi Đoàn được chỉ định với cách xác định là số thứ tự của Đoàn viên đó trong Chi Đoàn.
Lưu ý chung: khi được hỏi là có muốn xuất thông tin ra file không, nhấn 'C' để chấp nhận hoặc phím bất kỳ để hủy. Nếu chấp nhận xuất thông tin, sẽ có dòng nhắc nhập tên file muốn xuất ra hoặc nhấn Enter để chấp nhận tên mặc định. Tên mặc định là tên của Chi Đoàn hoặc tên Đoàn viên tương ứng.
KẾT QUẢ ĐẠT ĐƯỢC
TÍNH NĂNG - HẠN CHẾ - NGUYÊN NHÂN
Tính năng:
Hoàn thành cơ bản yêu cầu của hệ thống quản lý Đoàn viên.
Demo có giao diện đơn giản dễ sử dụng.
Hạn chế:
Giao diện còn thô sơ.
Có thể sẽ còn nhiều lỗi phát sinh trong quá trình nhập liệu do không xử lý các tình huống ngoại lệ.
Nguyên nhân:
Do đây là lần đầu tiếp cận với một project tương đối lớn và do kiến thức về lập trình nói chung và lập trình hướng đối tượng nói riêng còn hạn hẹp.
Thời gian thực hiện tương đối hạn chế.
HƯỚNG PHÁT TRIỂN – THAY CHO LỜI KẾT
Với xu thế ngày nay, việc trình ứng dụng sử dụng cửa sổ Console đã lạc hậu nên chương trình sẽ không thể đem ra sử dụng được ngay. Tuy nhiên, với sự hổ trợ đắt lực của các ngữ trình hướng đối tượng cùng với việc tạo cửa sổ Winform một cách tự động sẽ dể dàng giúp chúng ta thiết kế chương trình trong một diện mạo thân thiện và thiết thực một cách nhanh chóng.
Dù sao thì đây cũng là một bài tập lớn giúp cho chúng tôi, những người còn trong giai đoạn tập sự đủ hình dung ra việc thiết kế một chương trình lớn với sự hổ trợ của hướng đối tượng là như thế nào và đó là điều kiện tiên quyết trong con đường tiến bộ của thế giới nói chung và toàn thể sinh viên nghiên cứu chuyên ngành tin học nói riêng.