Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 15 kết quả

Đề tài: Xử lí tập tin nhị phân để nhập xuất dữ liệu trong c++?????

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Mặc định Xử lí tập tin nhị phân để nhập xuất dữ liệu trong c++?????

    Code:
    // vl.cpp : Defines the entry point for the console application.
    //
    
    #include "stdafx.h"
    #include<conio.h>
    #include<stdlib.h>
    #include<stdio.h.>
    #include<iostream>
    #include<time.h>
    #include<Windows.h> 
    #include<string.h>
    using namespace std;
    #define MAX 100
    //Khai báo biến toàn cục
    FILE*f;
    //Khai báo cấu trúc Sinh Viên
    struct SinhVien
    {
    	char HoTen[MAX];
    	long MSSV;
    	float DiemTB;
    };
    //Khai báo cấu trúc INDEX_File
    struct IndexSV
    {
    	long MSSV;
    	long Pos;
    };
    
    SinhVien sv;
    
    //Hàm nhập thông tin sinh viên & thiết lập Index_file
    void NhapThongTin(int n)
    {
    	system("cls");
    	int i;
    	printf(" ____________________________________________________________________ \n"); 
        printf("|                                                                    |\n"); 
        printf("|                      NHAP THONG TIN SINH VIEN                      |\n"); 
        printf("|____________________________________________________________________|\n"); 
    	for(i=0;i<n;i++)
    	{
    		printf("Ban dang nhap thong tin cho sinh vien thu %d: \n",i+1);
    		Sleep(1000);
    		cout<<"	-Nhap MSSV: ";
    		scanf("%d",&sv.MSSV);
    		fflush(stdin);
    		cout<<"	-Nhap Ho va ten: ";
    		gets(sv.HoTen);
    		fflush(stdin);
    		cout<<"	-Nhap diem TB: ";
    		scanf("%f",&sv.DiemTB);
    		fflush(stdin);
    		fwrite(&sv,sizeof(SinhVien),1,f);
    	}
    	fclose(f);
    	cout<<"Nhan Enter de tiep tuc!!\n";
    	getch();
    };
    //Hàm xuất thông tin sinh viên
    void XuatThongTin()
    {
    	system("cls");
    	int i;
    	f=fopen("C:\\CTDL\\SinhVien.txt","rb");
    	printf(" ____________________________________________________________________ \n"); 
        printf("|                        THONG TIN SINH VIEN                         |\n"); 
        printf("|____________________________________________________________________|\n");
    	i=0;
    	fread(&sv,sizeof(SinhVien),1,f);
    	while(!feof(f))
    	{
    		printf("* Sinh vien thu %d: \n",i+1);
    		printf("|Ho va ten: ");
    		puts(sv.HoTen);
    		printf("|Ma so sinh vien: %l\n",sv.MSSV);
    		printf("|Diem trung binh: %2.2f\n",sv.DiemTB);
    		i++;
    		fread(&sv,sizeof(SinhVien),1,f);
    		cout<<endl;
    		cout<<endl;
    	}
    	fclose(f);
    	cout<<"Nhan Enter de tiep tuc!!\n";
    	getch();
    }
    int _tmain(int argc, _TCHAR* argv[])
    {
    	f=fopen("C:\\CTDL\\SinhVien.txt","ab");
    	int k,n;
    	for(;;)
    	{
    		printf("1.Nhap danh sach sinh vien\n");
    		printf("2.In danh sach sinh vien\n");
    		printf("3.Tim kiem\n");
    		printf("4.Thoat\n");
    		printf("Moi ban chon: ");
    		cin>>k;
    		if(k==1)
    		{
    			system("cls");
    			cout<<"Nhap vao so sinh vien can nhap: ";
    			scanf("%d",&n);
    			NhapThongTin(n);
    		}
    		else if(k==2)
    		{
    			system("cls");
    			XuatThongTin();
    		}
    		else 
    			break;
    	}
    	return 0;
    }
    Tại sao khi xuất thông tin không đúng với lúc mình nhập...mình mò 2 ngày mà không ra...bạn nào biết thì giúp mình vs...tks...

  2. #2
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    * code lai căng C và C++, lúc thì printf, lúc thì cout, lúc thì scanf. Bó tay.

    * Chương trình chạy bình thường, bị một lỗi hiển thị, mã sv.
    C Code:
    1. printf("|Ma so sinh vien: %l\n",sv.MSSV); // %d chứ không phải là %l

    * Đã chuyển toàn bộ sang C++:
    C++ Code:
    1. #include <Windows.h>
    2.  
    3. #include <iostream>
    4. #include <fstream>
    5. using namespace std;
    6. #define __PATH__DATABASE "F:\\test\\SinhVien.txt"
    7.  
    8. #define MAX 100
    9. //Khai báo cấu trúc Sinh Viên
    10. struct SinhVien
    11. {
    12.     char HoTen[MAX];
    13.     long MSSV;
    14.     float DiemTB;
    15. };
    16. //Khai báo cấu trúc INDEX_File
    17. struct IndexSV
    18. {
    19.     long MSSV;
    20.     long Pos;
    21. };
    22.  
    23. //Hàm nhập thông tin sinh viên & thiết lập Index_file
    24. void NhapThongTin(int n)
    25. {
    26.     system("cls");
    27.    
    28.     cout << " ____________________________________________________________________ " << endl;
    29.     cout << "|                                                                    |" << endl;
    30.     cout << "|                      NHAP THONG TIN SINH VIEN                      |" << endl;
    31.     cout << "|____________________________________________________________________|" << endl;
    32.  
    33.     ofstream fOutput(__PATH__DATABASE, ios::binary | ios::app);
    34.  
    35.  
    36.     if(!fOutput.is_open())
    37.     {
    38.         cout << "Khong the truy cap co so du lieu!!!";
    39.         return;
    40.     }
    41.  
    42.     SinhVien sv;
    43.     for(int i = 0; i < n; ++i)
    44.     {
    45.         cout << "Ban dang nhap thong tin cho sinh vien thu " << i + 1 << ':' << endl;
    46.         Sleep(1000);
    47.  
    48.         cout << "   -Nhap MSSV: ";
    49.         cin >> sv.MSSV;
    50.         cin.ignore();
    51.  
    52.         cout << "   -Nhap Ho va ten: ";
    53.         cin.getline(sv.HoTen, sizeof(sv.HoTen));
    54.  
    55.         cout << "   -Nhap diem TB: ";
    56.         cin >> sv.DiemTB;
    57.         cin.ignore();
    58.  
    59.         fOutput.write(reinterpret_cast<const char*>(&sv), sizeof(SinhVien));
    60.     }
    61.     fOutput.close();
    62.  
    63.     cout << "Nhan Enter de tiep tuc!!" << endl;
    64.     cin.get();
    65. };
    66. //Hàm xuất thông tin sinh viên
    67. void XuatThongTin()
    68. {
    69.     system("cls");
    70.    
    71.    
    72.     cout << " ____________________________________________________________________ " << endl;
    73.     cout << "|                        THONG TIN SINH VIEN                         |" << endl;
    74.     cout << "|____________________________________________________________________|" << endl;
    75.    
    76.     ifstream fInput(__PATH__DATABASE, ios::binary);
    77.    
    78.     if(!fInput.is_open())
    79.     {
    80.         cout << "Khong the truy cap co so du lieu!!!";
    81.         return;
    82.     }
    83.     SinhVien sv;
    84.     for(int i = 0; !fInput.eof(); ++i)
    85.     {
    86.         fInput.read(reinterpret_cast<char*>(&sv), sizeof(SinhVien));
    87.  
    88.         if(fInput.fail())
    89.             break;
    90.  
    91.         cout << "* Sinh vien thu  " << i + 1 << ":" << endl;
    92.         cout << "|Ho va ten: " << sv.HoTen << endl;
    93.         cout << "|Ma so sinh vien: " << sv.MSSV << endl;
    94.         cout << "|Diem trung binh: " << sv.DiemTB << endl;
    95.         cout << endl << endl;
    96.     }
    97.     fInput.close();
    98.     cout << "Nhan Enter de tiep tuc !!" << endl;
    99.     cin.get();
    100. }
    101. int _tmain(int argc, _TCHAR* argv[])
    102. {
    103.     for(int k = 0;;)
    104.     {
    105.         cout << "1.Nhap danh sach sinh vien" << endl;
    106.         cout << "2.In danh sach sinh vien" << endl;
    107.         cout << "3.Tim kiem" << endl;
    108.         cout << "4.Thoat" << endl;
    109.         cout << "Moi ban chon: " << endl;
    110.         cin >> k;
    111.         switch (k)
    112.         {
    113.         case 1:
    114.             {
    115.                 int n = 0;
    116.                 system("cls");
    117.                 cout << "Nhap vao so sinh vien can nhap: ";
    118.                 cin >> n;
    119.                 NhapThongTin(n);
    120.             }
    121.             break;
    122.         case 2:
    123.             system("cls");
    124.             XuatThongTin();
    125.             break;
    126.         case 4:
    127.             goto labs_end_program;
    128.         default:
    129.             break;
    130.         }
    131.     }
    132. labs_end_program:
    133.     return 0;
    134. }
    Đã được chỉnh sửa lần cuối bởi doicanhden : 03-05-2012 lúc 09:39 PM.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    Đã chuyển toàn bộ sang C++:
    ủa...nó có in đúng với lúc mình nhập đâu bạn???? hjx...

  4. #4
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Sai chỗ nào??? Tôi test thấy ok hết mà??
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  5. #5
    Ngày gia nhập
    04 2012
    Bài viết
    10

    #include "stdafx.h"
    cái thư viện này khai báo để sử dụng hàm nào vậy mấy bạn ? hàm đó có chức năng gì vậy ?

  6. #6
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Mặc định Xử lí tập tin nhị phân để nhập xuất dữ liệu trong c++?????

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    Sai chỗ nào??? Tôi test thấy ok hết mà??
    lúc in ra nó không ghi đúng giá trị...ví dụ nhập vào tên "Ho thai phong", mssv: 10110082, điểm 8.3..thì in ra:

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi billykun Xem bài viết
    #include "stdafx.h"
    cái thư viện này khai báo để sử dụng hàm nào vậy mấy bạn ? hàm đó có chức năng gì vậy ?
    bạn xem bài này nè: http://diendan.congdongcviet.com/showthread.php?t=38338

  8. #8
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Kì lạ, bạn dùng trình biên dịch nào? Chụp luôn cái ảnh lúc nhập tôi xem.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    21

    Trích dẫn Nguyên bản được gửi bởi doicanhden Xem bài viết
    Kì lạ, bạn dùng trình biên dịch nào? Chụp luôn cái ảnh lúc nhập tôi xem.

  10. #10
    Ngày gia nhập
    04 2010
    Nơi ở
    Binh Thanh, Hồ Chí Minh, Vietnam, Vietnam
    Bài viết
    504

    Ừhm... vs2010, windows 7...
    Tôi chạy code vẫn tốt. Tôi up cho bạn xem đây. Thử xóa cái tập tin sinhvien.txt xem, ko cần tạo lại, chương trình tự tạo.
    Hèm, hình như là bạn nhập mấy giá trị đó trực tiếp vào file sinhvien.txt thì phải. ~>"<~ :-|
    P/s: cái theme đẹp đấy, ko biết có dùng cho windows 8 đc ko nhỉ?
    Attached Thumbnails Attached Thumbnails post.png  
    Đã được chỉnh sửa lần cuối bởi doicanhden : 03-05-2012 lúc 09:14 PM.
    Kết bạn với tôi <3
    Skype: giautm
    Facebook:
    https://fb.com/giautm.duongntt
    Email:
    giau.tmg@gmail.com

Các đề tài tương tự

  1. Lập trình C++ Mình muốn hỏi về bài toán tìm số lần xuất hiện của ký tự nhiều nhất trong chuỗi và số lần xuất hiện
    Gửi bởi ducky trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 06-09-2013, 11:17 AM
  2. Nhập và xuất ký tự trong C
    Gửi bởi eddydn trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 18
    Bài viết cuối: 01-09-2013, 12:03 AM
  3. Lập trình C Xuất nhập file trong C kết quả xuất ra không đúng?
    Gửi bởi lamhoang100 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 5
    Bài viết cuối: 05-06-2013, 05:38 PM
  4. code nhập xuất học sinh trong c-free thì chạy dc ,còn trong visual thì ko
    Gửi bởi art_mu trong diễn đàn Thảo luận, góp ý code C/C++ của bạn
    Trả lời: 2
    Bài viết cuối: 08-02-2012, 10:37 PM
  5. Bài tập C Tìm các từ xuất hiện nhiều nhất trong câu với OOP, làm thế nào hay nhất?
    Gửi bởi j3amboo trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 14-10-2011, 08:19 PM

Tags của đề tài này

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn