Quản lý sinh viên C++ ppsx – Tài liệu text

Quản lý sinh viên C++ ppsx

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 (204.82 KB, 20 trang )

Quản lý sinh viên C++
Lớn | Vừa | Nhỏ
[ Tự viết | 2009/09/14 02:03 | by Administrators ]
Đề bài:
Thông tin về Sinh viên gồm: Mã sinh viên, Họ tên, Ngày sinh, Lớp, ĐTB Học tập, Điểm rèn
luyện, Điểm Tổng kết, và Học bổng.
Viết chương trình thực hiện các chức năng sau:
1.Nhập thêm sinh viên
Nhập thông tin về sinh viên (không nhập điểm tổng kết và Học bổng). Trong đó điểm rèn
luyện tính theo thang 100.
Nếu điểm rèn luyện từ 70 – 80, ĐTK = ĐTB Học tập + 0,2.
Nếu điểm rèn luyện từ 80 – 90, ĐTK = ĐTB Học tập + 0,5.
Nếu điểm rèn luyện từ 90 – 100, ĐTK = ĐTB Học tập + 0,8.
Học bổng: Nếu ĐTK >=7.0, Học bổng = 120000, ĐTK>=80, Học bổng = 180000, nếu ĐTK
>=90, Học bổng = 240000.
Có kiểm tra mã sinh viên khi nhập (không có hai sinh viên mã trùng nhau)
Code tham khảo
#include<conio.h>
#include<stdio.h>
#include<ctype.h>
#include<string.h>
#include<iostream.h>
#include<fstream.h>
#include<stdlib.h>
#include<iomanip.h>
using namespace std;
class SinhVien{
private:
char hoTen[50];
int maSV;
char ngaySinh[20];

char lop[20];
float diemTB;
float diemRenLuyen;
float diemTK;
int hocBong;
SinhVien *sv;
static const char *dataFile;
int sl;
public:
void nhapSV();
void hienThiSinhVien();
void sapXepTheoDTB();
void sapXepTheoHocBong();
void timTheoTen();
void timTheoDTK();
void ghiFile();
void docFile();
void khoiTaoFile();
SinhVien(){
sl= 0;
sv= NULL;
}
~SinhVien(){
delete sv;
}
};
const char *SinhVien::dataFile=”QuanLySinhVien.txt”;
//Nhap sinh vien
void SinhVien::nhapSV(){
int i= sl+1;

cout<<endl<<” Nhap ho va ten: “;
cin.getline(sv[i].hoTen,sizeof(sv[i].hoTen));
//Nhap ma sinh vien co kiem tra
int check;
do{
check= 1;
cout<<endl<<” Nhap ma sinh vien: “;
cin>>sv[i].maSV;
for(int j=1;j<i;j++){
if(sv[j].maSV== sv[i].maSV){
cout<<endl<<“Ban da nhap sai! Nhap lai”;
check= 0;
}
}
}while(check== 0);
//Nhap ngay thang nam sinh
cout<<endl<<” Nhap ngay sinh sinh vien (dd-mm-yy): “;
cin.ignore();
cin.getline(sv[i].ngaySinh,sizeof(sv[i].ngaySinh));
cout<<endl<<” Nhap lop: “;
cin.getline(sv[i].lop,sizeof(sv[i].lop));
cout<<endl<<” Nhap diem trung binh hoc tap (0->10): “;
cin>>sv[i].diemTB;
cout<<endl<<” Nhap diem ren luyen (0->100): “;
cin>>sv[i].diemRenLuyen;
//Tinh diem tong ket
if((sv[i].diemRenLuyen>=70)&&(sv[i].diemRenLuyen<80)){
sv[i].diemTK= sv[i].diemTB+ 0.2;
}
else if((sv[i].diemRenLuyen>=80)&&(sv[i].diemRenLuyen<90)){

sv[i].diemTK= sv[i].diemTB+ 0.5;
}
else if((sv[i].diemRenLuyen>=90)&&(sv[i].diemRenLuyen<=100)){
sv[i].diemTK= sv[i].diemTB+ 0.8;
}
/*Học bổng: Nếu ĐTK >=7.0,Học bổng = 120000,
ĐTK>=80, Học bổng = 180000, nếu ĐTK >=90, Học bổng = 240000*/
if((sv[i].diemTK>=7)&&(sv[i].diemTK<8)){
sv[i].hocBong= 120000;
}
else if((sv[i].diemTK>=8)&&(sv[i].diemTK<9)){
sv[i].hocBong= 180000;
}
else if((sv[i].diemTK>=9)&&(sv[i].diemTK<=10)){
sv[i].hocBong= 240000;
}
}
//Ham khoi tao file
void SinhVien::khoiTaoFile(){
fstream f(dataFile,ios::out|ios::app);
f.close();
}
//Ham ghi file
void SinhVien::ghiFile(){
fstream os(dataFile,ios::out|ios::app);
int i= sl+1;
os<<sv[i].hoTen<<endl;
os<<sv[i].maSV<<endl;
os<<sv[i].ngaySinh<<endl;
os<<sv[i].lop<<endl;

os<<setw(5)<<sv[i].diemTB
<<setw(5)<<sv[i].diemRenLuyen
<<setw(5)<<sv[i].diemTK
<<setw(10)<<sv[i].hocBong<<endl;
os.close();
}
//Ham doc file
void SinhVien::docFile(){
fstream s(dataFile,ios::in);
int dem=1;
string buffer;
while(1){
getline(s,buffer);
if(!s.eof()){
dem++;
}
else
break;
}
sl= dem/5;
s.close();
fstream f(dataFile,ios::in);
sv= new SinhVien[100];
for(int i=1;i<=sl;i++){
f.getline(sv[i].hoTen,sizeof(sv[i].hoTen));
f>>sv[i].maSV;
f.ignore(1);
f.getline(sv[i].ngaySinh,sizeof(sv[i].ngaySinh));
f.getline(sv[i].lop,sizeof(sv[i].lop));
f>>sv[i].diemTB>>sv[i].diemRenLuyen>>sv[i].diemTK>>sv[i].hocBong;

f.ignore();
}
f.close();
}
//Hien thi sinh vien
void SinhVien::hienThiSinhVien(){
cout<<endl;
cout<<endl<<“Ho va ten sinh vien: “<<hoTen;
cout<<endl<<“Ma sinh vien: “<<maSV;
cout<<endl<<“Ngay thang nam sinh: “<<ngaySinh;
cout<<endl<<“Lop: “<<lop;
cout<<endl<<“Diem trung binh: “<<diemTB;
cout<<endl<<“Diem ren luyen: “<<diemRenLuyen;
cout<<endl<<“Diem tong ket: “<<diemTK;
cout<<endl<<“Xep loai hoc bong: “<<hocBong;
}
//Sap xep SV theo diem trung binh
void SinhVien::sapXepTheoDTB(){
SinhVien s;
for(int i=1;i<=sl;i++){
for(int j=1;j<i;j++){
if(sv[j].diemTB>sv[i].diemTB){
s= sv[i];
sv[i]= sv[j];
sv[j]= s;
}
}
}
for(int i=1;i<=sl;i++){
sv[i].hienThiSinhVien();

}
}
//Sap xep SV theo hoc bong
void SinhVien::sapXepTheoHocBong(){
SinhVien s;
for(int i=1;i<=sl;i++){
for(int j=1;j<i;j++){
if(sv[j].hocBong>sv[i].hocBong){
s= sv[i];
sv[i]= sv[j];
sv[j]= s;
}
}
}
for(int i=1;i<=sl;i++){
sv[i].hienThiSinhVien();
}
}
//Tim kiem theo ten sinh vien
void SinhVien::timTheoTen(){
char tenSV[20];
char *strKiemTra;
char ten[20];
int count=0;
cout<<endl<<“Nhap ten sinh vien ma ban muon tim kiem: “;
cin.ignore();
cin.getline(tenSV,sizeof(tenSV));
char *token;
char str[20];
for(int i=1;i<=sl;i++){

strKiemTra= NULL;
//Tach ten sinh vien
//Gan ho ten vao bien str -> cat bien str ko cat ho ten
strcpy(str,sv[i].hoTen);
//su dung phan tich tu to tokenizing de cat xau str
token= strtok(str,” “);
while(token!=NULL){
strcpy(ten,token);
token= strtok(NULL,” “);
}
strKiemTra= strstr(ten, tenSV);
if(strKiemTra!= NULL){
cout<<endl<<“Sinh vien ma ban can tim la”;
sv[i].hienThiSinhVien();
count++;
}
}
cout<<endl<<endl<<“So ket qua phu hop la: “<<count;
}
//Tim kiem theo tong diem
void SinhVien::timTheoDTK(){
int diemTimKiem;
int count=0;
cout<<endl<<“Nhap diem tong ket muon tim kiem (0->10): “;
cin>>diemTimKiem;
cout<<endl<<“Cac sinh vien co diem tong ket >= “<<diemTimKiem<<” la: “;
for(int i=1;i<=sl;i++){
if(sv[i].diemTK>= diemTimKiem){
sv[i].hienThiSinhVien();
count++;

}
}
if(count> 0){
cout<<endl<<“So ket qua phu hop la: “<<count;
}
else
cout<<endl<<“Khong co ket qua nao phu hop”<<endl;
}
//Ham hien thi menu
void menu(){
cout<<endl<<“******Quan Ly Sinh Vien******”<<endl;
cout<<endl<<“1. Nhap sinh vien”<<endl;
cout<<endl<<“2. Sap xep SV theo diem TB “<<endl;
cout<<endl<<“3. Sap xep SV theo hoc bong”<<endl;
cout<<endl<<“4. Tim kiem theo ten sinh vien”<<endl;
cout<<endl<<“5. Tim kiem theo diem TK”<<endl;
cout<<endl<<“6. Thoat”<<endl;
}
main(){
system(“cls”);
SinhVien SV;
SV.khoiTaoFile();
do{
system(“cls”);
SV.docFile();
menu();
int input= getch();
//nhap vao so 6 thoat
if(input==’6′){
cout<<“Ban da chon thoat khoi chuong trinh! “;

break;
}
switch(input){
case (‘1’):{
system(“cls”);
cout<<endl<<“Nhap sinh vien”<<endl;
cin.ignore();
SV.nhapSV();
SV.ghiFile();
getch();
break;
}
case(‘2’):{
system(“cls”);
cout<<endl<<“Sap xep SV theo diem TB”;
SV.sapXepTheoDTB();
getch();
break;
}
case(‘3’):{
system(“cls”);
cout<<endl<<“Sap xep SV theo hoc bong”;
SV.sapXepTheoHocBong();
getch();
break;
}
case(‘4’):{
system(“cls”);
cout<<endl<<“Tim kiem theo ten sinh vie”;
SV.timTheoTen();

getch();
break;
}
case(‘5’):{
system(“cls”);
cout<<endl<<“Tim kiem theo diem TK”;
SV.timTheoDTK();
getch();
break;
}
default:{
cout<<“Hay nhap tu 1-6:”;
getch();
}
}
}while(1);
getch();
}
Lập trình C++ | Nhận xét(0) | Trích dẫn(0) | Đọc(159)
Viết nhận xét
Hình vui
Tên gọi Mật khẩu Khách không cần mật khẩu
Địa chỉ web Email [Đăng ký]

Mở HTML
Mở UBB
Mở hình vui
Ẩn giấu
Hãy nhớ

Làm l?i
Phân loại
• Phân loại mặc định [7]
• Assembly ( Lập trình hợp ngữ ) [2]
• Lập trình C++ [10]
• Lập trình java [5]
• Hệ điều hành [3]
Lịch
< 2010 > < 10 >
Năm Canh Dần(Hổ)
CN T2 T3 T4 T5 T6 T7
1
24
2
25
3
26
4
27
5
28
6
29
7
30
8
9Tháng
9
mồng 2
10

mồng 3
11
mồng 4
12
mồng 5
13
mồng 6
14
mồng 7
15
mồng 8
16
mồng 9
17
mồng 10
18
11
19
12
20
13
21
14
22
15
23
16
24
17
25

18
26
19
27
20
28
21
29
22
30
23
31
24
Thống kê
Số lượt khách 4330
Khách hôm nay 6
Số bài 27
Số nhận xét 12
Số trích dẫn 0
Số lưu bút 2
Thành viên 5
Số có mặt 3
Tìm kiếm
Tìm ki?m
Bài viết mới nhất
• Bài 2: OOP,C
• Bài 2: OOP,C
• Sửa vị trí b
• Crack Win 7
• Coding Conve

• [Assembly] N
• [Assembly] T
• Không vào đư
Nhận xét mới nhất
• killloveshua
• co the hoan
• smile
• thankok
• Tks!grin
Kết nối
• Nhóm Kết nối mặc định
• svptit
• dantri
• dqt’blog
• blackdiamond’sblog
Hồ sơ
• 2010/10
• 2010/09
• 2010/08
• 2010/07
• 2010/06
Khác
Đăng nhập
Đăng ký
Xin kết nối
RSS Bài viết | Nhận xét
MãUTF-8
XHTML 1.0
Powered by Bo-Blog 2.1.1 Release |Skin by bluebee
Run in 223 ms, 6 Queries

char lop[20];float diemTB;float diemRenLuyen;float diemTK;int hocBong;SinhVien *sv;static const char *dataFile;int sl;public:void nhapSV();void hienThiSinhVien();void sapXepTheoDTB();void sapXepTheoHocBong();void timTheoTen();void timTheoDTK();void ghiFile();void docFile();void khoiTaoFile();SinhVien(){sl= 0;sv= NULL;~SinhVien(){delete sv;};const char *SinhVien::dataFile=”QuanLySinhVien.txt”;//Nhap sinh vienvoid SinhVien::nhapSV(){int i= sl+1;cout<>sv[i].maSV;for(int j=1;j10): “;cin>>sv[i].diemTB;cout<100): “;cin>>sv[i].diemRenLuyen;//Tinh diem tong ketif((sv[i].diemRenLuyen>=70)&&(sv[i].diemRenLuyen<80)){sv[i].diemTK= sv[i].diemTB+ 0.2;else if((sv[i].diemRenLuyen>=80)&&(sv[i].diemRenLuyen<90)){sv[i].diemTK= sv[i].diemTB+ 0.5;else if((sv[i].diemRenLuyen>=90)&&(sv[i].diemRenLuyen<=100)){sv[i].diemTK= sv[i].diemTB+ 0.8;/*Học bổng: Nếu ĐTK >=7.0,Học bổng = 120000,ĐTK>=80, Học bổng = 180000, nếu ĐTK >=90, Học bổng = 240000*/if((sv[i].diemTK>=7)&&(sv[i].diemTK<8)){sv[i].hocBong= 120000;else if((sv[i].diemTK>=8)&&(sv[i].diemTK<9)){sv[i].hocBong= 180000;else if((sv[i].diemTK>=9)&&(sv[i].diemTK<=10)){sv[i].hocBong= 240000;//Ham khoi tao filevoid SinhVien::khoiTaoFile(){fstream f(dataFile,ios::out|ios::app);f.close();//Ham ghi filevoid SinhVien::ghiFile(){fstream os(dataFile,ios::out|ios::app);int i= sl+1;os<>sv[i].maSV;f.ignore(1);f.getline(sv[i].ngaySinh,sizeof(sv[i].ngaySinh));f.getline(sv[i].lop,sizeof(sv[i].lop));f>>sv[i].diemTB>>sv[i].diemRenLuyen>>sv[i].diemTK>>sv[i].hocBong;f.ignore();f.close();//Hien thi sinh vienvoid SinhVien::hienThiSinhVien(){cout<sv[i].diemTB){s= sv[i];sv[i]= sv[j];sv[j]= s;for(int i=1;i<=sl;i++){sv[i].hienThiSinhVien();//Sap xep SV theo hoc bongvoid SinhVien::sapXepTheoHocBong(){SinhVien s;for(int i=1;i<=sl;i++){for(int j=1;jsv[i].hocBong){s= sv[i];sv[i]= sv[j];sv[j]= s;for(int i=1;i<=sl;i++){sv[i].hienThiSinhVien();//Tim kiem theo ten sinh vienvoid SinhVien::timTheoTen(){char tenSV[20];char *strKiemTra;char ten[20];int count=0;cout< cat bien str ko cat ho tenstrcpy(str,sv[i].hoTen);//su dung phan tich tu to tokenizing de cat xau strtoken= strtok(str,” “);while(token!=NULL){strcpy(ten,token);token= strtok(NULL,” “);strKiemTra= strstr(ten, tenSV);if(strKiemTra!= NULL){cout<10): “;cin>>diemTimKiem;cout<= “<= diemTimKiem){sv[i].hienThiSinhVien();count++;if(count> 0){cout< < 10 >Năm Canh Dần(Hổ)CN T2 T3 T4 T5 T6 T7242526272829309Thángmồng 210mồng 311mồng 412mồng 513mồng 614mồng 715mồng 816mồng 917mồng 1018111912201321142215231624172518261927202821292230233124Thống kêSố lượt khách 4330Khách hôm nay 6Số bài 27Số nhận xét 12Số trích dẫn 0Số lưu bút 2Thành viên 5Số có mặt 3Tìm kiếmTìm ki?mBài viết mới nhất• Bài 2: OOP,C• Bài 2: OOP,C• Sửa vị trí b• Crack Win 7• Coding Conve• [Assembly] N• [Assembly] T• Không vào đưNhận xét mới nhất• killloveshua• co the hoan• smile• thankok• Tks!grinKết nối• Nhóm Kết nối mặc định• svptit• dantri• dqt’blog• blackdiamond’sblogHồ sơ• 2010/10• 2010/09• 2010/08• 2010/07• 2010/06KhácĐăng nhậpĐăng kýXin kết nốiRSS Bài viết | Nhận xétMãUTF-8XHTML 1.0Powered by Bo-Blog 2.1.1 Release |Skin by bluebeeRun in 223 ms, 6 Queries