Tải bản đầy đủ (.docx) (34 trang)

Đồ án Quản Lý Sinh Viên viết bằng ngôn ngữ lập trình CC++

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (420.34 KB, 34 trang )

TRƯỜNG ĐẠI HỌC DUY TÂN
KHOA CÔNG NGHỆ THÔNG TIN

ĐỒ ÁN CƠ SỞ
NGÀNH KHOA HỌC MÁY TÍNH

ĐỀ TÀI: QUẢN LÝ SINH VIÊN

Giảng viên hướng dẫn: PHẠM KHÁNH LINH
Sinh viên thực hiện:

Nguyễn Văn Th???

Lớp:

K19TPM3

Mã sinh viên:

1921123???

Đà Nẵng, tháng 04/2016


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

MỤC LỤC

PHẦN MỞ ĐẦU:


1. LÝ DO CHỌN ĐỀ TÀI

Công nghệ thông tin là một trong những ngành phát triển vượt bậc trong những năm gần
đây. Ngày nay với sự phát triển nhanh chóng của xã hội thì công nghệ thông tin được ứng dụng
rộng rãi ở hầu hết tất cả các lĩnh vực và ngày càng đóng vai trò quan trọng, trở thành một phần
thiết yếu trong đời sống hằng ngày. Công nghệ thông tin là một ngành đòi hỏi ở người học một
nền tảng kiến thức vững chắc, sự tư duy logic cao, hiểu biết sâu rộng trên nhiều lĩnh vực. Với
em hiện đang là sinh viên công nghệ phần mềm cần có sự đầu tư, không ngừng học hỏi để
nâng cao kiến thức. Do đó để củng cố kiến thức đã học, đề tài mà em chọn là: Bài toán quản lý
sinh viên bằng ngôn ngữ C/C++.

2. MỤC TIÊU ĐỀ TÀI
Xây dựng một chương trình quản lý sinh viên bằng ngôn ngữ lập trình C/C++ đơn giản,
dễ sử dụng cho người quản lý.
Giải quyết các vấn đề: quản lý sinh viên trong một năm học, số tính chỉ đăng ký, số điểm
đạt được, môn học, nhập liệu, tìm kiếm và sửa thông tin…

3. PHẠM VI NGHIÊN CỨU
Nghiên cứu, phân tích và xây dựng hệ thống quản lý sinh viên.

4. PHƯƠNG PHÁP NGHIÊN CỨU
Thực hiện đề tài này, em đã ứng dụng các kiến thức đã học về lập trình, tham khảo một
số tài liệu về ngôn ngữ C/C++.
Tham khảo, nghiên cứu việc quản lý sinh trong cửa hàng để xây dựng phần mềm thích
hợp.
Nguyễn Văn Th? – K19TPM3
Page 2


GVHD: Phạm Khánh Linh


QUẢN LÝ SINH VIÊN

Nguyễn Văn Th? – K19TPM3
Page 3


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

CHƯƠNG 1: CƠ SỞ LÝ THUYẾT
1.1. GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH C/C++
Ngôn ngữ lập trình C do Brain W.Kernighan và Dennis Ritchie phát minh vào năm
1972 tại phòng thí nghiệm Bell Telephone với mục đích tạo ngôn ngữ để viết hệ điều hành
UNIX, nhưng do tính ưu việt cũng như tính mềm dẻo của nó, cho nên giới tin học nhanh chóng
chấp nhận như một ngôn ngữ nhà nghề.
Năm 1978, bản in đầu tiên được in thành sách, đó là cuốn “The C Programming
Language” do chính hai tác giả của ngôn ngữ biên soạn. Viện chuẩn quốc gia Mỹ ANSI
(American National Standard Institute) công bố chuẩn ngôn ngữ C vào năm 1983 với tên
“ANSI C”.
Ngôn ngữ C rất tiện dụng trong việc viết các phần mềm hệ thống (hệ điều hành, chương
trình dịch, soạn thảo văn bản, cơ sở dữ liệu, bản tính…)
Là ngôn ngữ có ít từ khoá, có cấu trúc modun, dễ thích nghi cho các hệ thống máy tính
khác nhau.
Cuối năm 1980, cũng tại phòng thí nghiệm Bell Telephone, Bjrane Stroustrup phát triển
ngôn ngữ C để tạo thành một phiên bản mới, phiên bản mới này có tên là C++. C++ thực hiện
được hết các khả năng của C, bao trùm lên C, ngoài ra còn bổ sung thêm nhiều khái niệm và
khả năng mới và mạnh mẽ hơn. Những bổ sung của C++ so với C chia thành hai nhóm sau:
• Nhóm một là các kiểu dữ liệu mới, các dòng dữ liệu mới, các hàm mới.. làm cho



ngôn ngữ mạnh mẽ hơn va dễ lập trình hơn.
Nhóm hai là các khái niệm lớp, đối tượng va những khái niệm liên quan tạo cơ
sở cho lập trình hướng đối tượng và làm cho C++ trở thành ngôn ngữ lập trình
hướng đối tượng.

1.2 MỘT SỐ KIẾN THỨC CƠ BẢN VỀ C++
1.2.1

CÁC KIỂU DỮ LIỆU CƠ SỞ

1.2.1.1 KIỂU KÝ TỰ
Ký tự là một chữ cái, chữ số hoặc ký tự đặc biệt và được định nghĩa bằng từ khoá char.
Một ký tự chiếm 1 byte, biểu diễn 1 ký tự trong bảng mã ASCII (American Standard
Code for Information Interchangre) và nằm cặp nháy đơn.
Bảng mã của một số ký tự biễu diễn được:
Nguyễn Văn Th? – K19TPM3
Page 4


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

Ký tự

Mã ASCII

Các ký tự điều khiển(enter, esc,tab…)


0..31

Space bar(‘ ‘)

32

!”#$%&…

33..47

0..9

48..57

A..Z

65..90

a..z

97..122

1.2.1.2 KIỂU SỐ NGUYÊN

Một số dữ liệu kiểu số nguyên:
Từ khoá

Số byte


Miền giá trị

int

2

-215 → 215 – 1 (-32768..32767)

short

2

-215 → 215 – 1

long

4

-231 → 231 – 1 (-2.1 tỷ..2.1 tỷ)

unsigned int

2

0 →216 – 1 (0..65535)

unsigned short

2


0 →216 – 1

unsigned long

2

1

→232 – 1 (0..4.2 tỷ)

1.2.1.3 KIỂU SỐ THỰC
Từ khoá

Số byte

Miền giá trị

Độ chính xác

Float

4

±2*10-38 → ±3.4*1038

7 chữ số

Double

8


±2.2*10-308 → ±8*10308

15 chữ số

Long double

10

±3.4*10-4932 → ±3.4*104932

15 chữ số

Một số dữ liệu kiểu số thực:

Nguyễn Văn Th? – K19TPM3
Page 5


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

1.2.2 CÁC CẤU TRÚC ĐIỀU KHIỂN
1.2.2.1 Cấu trúc rẽ nhánh
• Cấu trúc if

Cú pháp:
if(biểu thức)
[Lệnh 1];

else



Lệnh switch

Nguyễn Văn Th? – K19TPM3
Page 6


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

Cú pháp:
switch(biểu thức nguyên)
{
case hằng_1: [Lệnh 1];
case hằng_2: [Lệnh 2];

case hằng_n: [Lệnh n];
[default: lệnh n+1;

Nguyễn Văn Th? – K19TPM3
Page 7


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN


Các lệnh vòng lặp

1.2.2.2


Vòng lặp for

Cú pháp:
for([bt1]; [bt2]; [bt1])
[Lệnh];

Nguyễn Văn Th? – K19TPM3
Page 8


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN



Lệnh while

Cú pháp:
while(biểu thức)
[Lệnh];

Cú pháp:




Lệnh do..while

Nguyễn Văn Th? – K19TPM3
Page 9


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

do{
[Lệnh];
}while(biểu thức)

Nguyễn Văn Th? – K19TPM3
Page 10


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

1.2.3 HÀM

Cú pháp:
[kiểu trả về | void] < Tên hàm([danh_sách_tham_số_hình_thức])>
<{


[khai báo biến cục bộ]
[các câu lệnh]
[return giá_trị_trả_về;]
[các câu lệnh]
[return giá_trị_trả_về;]

} >
1.2.4 MẢNG
1.2.4.1 KHÁI NIỆM MẢNG

Mảng là một tập hợp hữu hạn các phần tử (biến) cùng kiểu dữu liệu liên tục trong bộ
nhớ và có chung một tên. Mỗi phần tử trong mảng được xác định qua chỉ số (vị trí trong mảng)
của nó.
Các phần tử của mảng nằm trong các ô nhớ liên tục nhau, địa chỉ thấp nhất của ô nhớ
tương ứng với phần tử thú nhất và địa chỉ cao nhất của ô nhớ tương ứng với phần tử cuối cùng.
Số phần tử của mảng được xác định ngay khi khai báo mảng. Mỗi phần tử của mảng được truy
cập trực tiếp thông qua tên mảng và chỉ số của nó.
Có nhiều loại mảng, mảng một chiều (vecto), mảng 2 chiều (ma trận), mảng nhiều
chiều.
1.2.4.2 MẢNG MỘT CHIỀU
• Khai báo:

Kiểu_dữ_liệu Tên _mảng[Số_phần_tử];
• Truy cập:

Tên_mảng[Chỉ_số];
Trong đó:
0 ≤ Chỉ_số ≤ Số_phần_tử -1
Chỉ_số có thể là hằng số, biến kiểu nguyên, biểu thức nguyên.
Nguyễn Văn Th? – K19TPM3

Page 11


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN
1.2.5 KIỂU DỮ LIỆU TỰ ĐỊNH NGHĨA STRUCT

struct kiểu_struct{
kiểu_đã_có_1: danh sách các trường cùng kểu;
kiểu_đã_có_2: danh sách các trường cùng kểu;
kiểu_đã_có_n: danh sách các trường cùng kểu;
};
1.2.6 KIỂU DỮ LIỆU TỆP (FILE)
• Khái niệm

Tệp là một tập hợp dữ liệu có liên quan với nhau được nhóm lại lưu trữ trên bộ nhớ
ngoài hoặc các thiết bị và tồn tại ngay cả khi chương trình kết thúc hoặc mất điện.
Có hai loại tệp: tệp văn bản và tệp nhị phân. Trong chương trình này sử dụng tệp nhị
phân.
Sử dụng thư viện fstream.


Tệp nhị phân

Tệp nhị phân là tệp mà các phần tử của nó chỉ biểu diễn một kiểu dữ liệu. Một tệp tin
dù được xây dựng bằng cách nào thì bản chất của nó cũng chỉ là dãy các byte (0..255) ghi tren
đĩa, với cách quan niệm này người ta gọi là tệp nhị phân.
Một số thao tác trên tệp:
+ Khai báo con trỏ file: fstream f;

+ Mở file để ghi: f.open(tên_tệp, ios::out | ios::binary);

Ghi file: f.write((char*) & x, sizeof(x));
+ Mở file để đọc: f.open(ten_tệp, ios::in | ios::binary);
+ Đóng file: f.close();

1.2.7 CÁC PHÉP TOÁN TRÊN DANH SÁCH ĐẶC
1.2.7.1 Duyệt danh sách
Giải thuật duyệt mảng và in ra màn hình tất cả các giá trị của mảng chứa n số nguyên
như sau:
void duyet(int a[],int n )
{
for(int i=1; iCout<<””<getch();
}
1.2.7.2 Chèn một phần tử vào danh sách
Muốn chèn một phần tử X vào mảng A tại vị trí k trong mảng có n phẩn tử (0ta theo giải thuật như sau:
Bước 1: Dời các phần tử của mảng A ra sau một vị trí kể từ vị trí k
for (int i=n;i>k;i--) a[i+1] = a[i];
Nguyễn Văn Th? – K19TPM3
Page 12


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

Bước 2: Đưa giá trị X vào vị trí số k

a[k-1] = X;
Bước 3: Tăng kích thước mảng lên 1 đơn vị
n++;
Bước 4: Duyệt mảng từ đầu đến cuối và in ra giá trị của mỗi phần tử của mảng ra màn hình
for (i=1; igetch();
Bước 5: Kết thúc thuật toán
Mô tả giải thuật bằng ngôn ngữ C:
void in(int a[], int n)
{
for(int i=0; icout<}
void chen(int a[], int x, int k, int n)
{
k--;
for(int i=n;i>=k;i--)
a[i+1] = a[i];
a[k]=x;
n++;
in(a,n);
}
1.2.7.3 Xóa 1 phần tử ra khỏi danh sách (mô tả bằng giải thuật C)
void in(int a[], int n)
{
for(int i=0;iCout<}
void xoa(int a[], int k, int n)
{

k--;
for (int i=k; iA[i] = a[i+1];
n--;
in(a,n);
}
1.3

MÔ TẢ BÀI TOÁN QUẢN LÍ SINH VIÊN:
Trong quá trình quản lý sinh viên sẽ có nhiều sinh viên với tên, tuổi, quên quán
giống nhau, để tránh nhầm lẫn chúng ta gán mã sinh viên cho từng sinh viên (mã sinh
viên không trùng nhau). Chương trình sẽ quản lý hồ sơ, điểm học tập của sinh viên
trong quá trình theo học tại trưởng. Chương trình có thể thực hiện các công việc thêm
mới sinh viên, tìm sinh viên theo điều kiện nào đó, xóa sinh viên…

Nguyễn Văn Th? – K19TPM3
Page 13


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

CHƯƠNG 2: PHÂN TÍCH XÂY DỰNG CHƯƠNG TRÌNH
2.1GIỚI THIỆU THUẬT TOÁN
Chương trình quản lý sinh viên quản lý các vấn đề:
• Masv (mã sinh viên) có kiểu dữ liệu char, độ dài 20 ký tự, mỗi sinh viên có một mã số
riêng, không trùng lặp.
• Hoten (họ tên) kiểu dữ liệu char, độ dài 20 ký tự, họ tên sinh viên có thể trùng nhau.
• Lop (lớp) có kiểu dữ liệu char, độ dài 15 ký tự, một sinh viên chỉ được xếp vào một

lớp với một mã lớp tương ứng.
• Gt (giới tính), quequan (quê quán), diachi (địa chỉ) có kiểu dữ liệu char, độ dài 20 ký
tự.

2.2CÁC MODUL CHÍNH TRONG CHƯƠNG TRÌNH
2.2.1 SƠ ĐỒ TỔNG QUÁT

2.2.2 CÁC THUẬT TOÁN
2.2.2.1 Hàm nhập sinh viên

B1: Khởi tạo gán cho i=0,n
B2: Kiểm tra iB3: Nhập thông tin sinh viên
B4: Kết thúc
2.2.2.2 Hàm in thông tin sinh viên
B1: Khởi tạo gán cho i=0,n
B2: Kiểm tra iB3: In thông tin sinh viên
B4: Kết thúc
2.2.2.3 Hàm tìm kiếm sinh viên( theo mã sinh viên)
B1: Nhập mã sinh viên
B2: Khởi tạo gán cho i=0,n
B3: Kiểm tra iB4: In thông tin khách hàng
Nguyễn Văn Th? – K19TPM3
Page 14


GVHD: Phạm Khánh Linh


QUẢN LÝ SINH VIÊN
B5: Kết thúc
2.2.2.4 Hàm xóa sinh viên (theo mã sinh viên)

B1: Nhập mã sinh viên
B2: Khởi tạo i=0,j=0;
B3: Kiểm tra iB4: Xóa sinh viên
B5: Kết thúc

Nguyễn Văn Th? – K19TPM3
Page 15


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

2.2.3

MỘT SỐ MODUL CHÍNH CỦA CHƯƠNG TRÌNH
2.2.3.1 Hàm nhập sinh viên:

Nguyễn Văn Th? – K19TPM3
Page 16


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

2.2.3.2 Hàm in thông tin sinh viên

Nguyễn Văn Th? – K19TPM3
Page 17


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

2.2.3.3 Hàm tìm kiếm sinh viên (theo mã sinh viên)

Nguyễn Văn Th? – K19TPM3
Page 18


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN
2.2.3.4 Hàm xóa sinh viên

Nguyễn Văn Th? – K19TPM3
Page 19


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

CHƯƠNG 3: CÀI ĐẶT CHƯƠNG TRÌNH

2.1 TỔNG THỂ CHƯƠNG TRÌNH
2.1.1

CÁC HÀM KHAI BÁO

Code

#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<string.h>
#include "windows.h"
using namespace std;
struct sinhvien
{
char
Hoten[20],
GT[20],
Lop[20],
Ngaysinh[20],
MSSV[20], Quequan[20], Diachi[20], email[20], SDT[20];
};

Nguyễn Văn Th? – K19TPM3
Page 20


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN


2.1.2

HÀM MAIN

Code

sinhvien a[100];
int n,ch; char tt;
do
{
system("cls");
cout<<"=======CHUONG TRINH QUAN LY SINH VIEN======= \n";
cout<<"\n \t1. Nhap danh sach";
cout<<"\n \t2. Xuat danh sach";
cout<<"\n \t3. Tim kiem";
cout<<"\n \t4. Xoa";
cout<<"\nChon 1 trong 4 chuc nang: "; cin>>ch;
switch(ch)
{
case 1 : Nhap(a,n); break;
case 2 : Xuat(a,n); break;
case 3:
{
timkiem(a,n);
break;
}
case 4 :
{
xoa_mssv(a,n);

break;
}
default: cout<<"Khong co chuc nang nay \n";
}
cout<<"\n \t \t Ban co muon tiep tuc chuong trinh khong
(Y/N)?";
Nguyễn Văn Th? – K19TPM3
Page 21


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

cin>>tt;
}while(tt=='y' || tt == 'Y');
return 0;

Nguyễn Văn Th? – K19TPM3
Page 22


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

2.1.3

MỘT SỐ HÀM CHÍNH


+ Nhập danh sách sinh viên:
Code

void Nhap(sinhvien a[],int &n)
{
system("cls");
char file[20];
cout<<"Nhap so sinh vien: "; cin>>n;
for(int i=0;i{
cout<<"\nNhap sinh vien thu: "<fflush(stdin);
cout<<"\nMSSV: "; gets(a[i].MSSV);
cout<<"Ho ten: "; gets(a[i].Hoten);
cout<<"Gioi tinh: "; gets(a[i].GT);
cout<<"Ngay sinh: "; gets(a[i].Ngaysinh);
cout<<"Que quan: "; gets(a[i].Quequan);
cout<<"Dia chi: "; gets(a[i].Diachi);
cout<<"Email: "; gets(a[i].email);
cout<<"So dien thoai: "; gets(a[i].SDT);
fflush(stdin);
}
cout<getch();
}

Nguyễn Văn Th? – K19TPM3
Page 23



GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

+Nhập in danh sách sinh viên:
Code

void Xuat(sinhvien a[],int &n)
{
system("cls");
printf("MSSV
DiaChi
email

Ho va Ten
SDT

NgSinh

QueQuan

\n");

for(int i=0;i{
printf("%-6s %-16s %-9s %-14s %-11s %-11s %20d",a[i].MSSV,a[i].Hoten,a[i].Ngaysinh,a[i].Quequan,a[i].Diac
hi,a[i].email,a[i].SDT);
cout<}
cout<

getch();
}

+Hàm xóa sinh viên theo mã sinh viên:
Code

void xoa_mssv(sinhvien a[],int &n)
{
system("cls");
Xuat(a,n);
char s[20];
int d=0,k;
k=n;
fflush(stdin);
Nguyễn Văn Th? – K19TPM3
Page 24


GVHD: Phạm Khánh Linh

QUẢN LÝ SINH VIÊN

cout<<"Nhap MSSV can xoa: "; gets(s);
for(int i=0;i{
if(strcmp(a[i].MSSV,s)==0)
{
for(int j=i;j{
a[j]=a[j+1];

}
i--;
n--;
}
else d++;
}
if(d==k)
{
cout<<"MSSV khong ton tai";
}
getch();
}

+Hàm tìm kiếm sinh viên:
Code

Nguyễn Văn Th? – K19TPM3
Page 25


×