Từ 1 tới 7 trên tổng số 7 kết quả

Đề tài: Giúp bài tập đọc ghi file nhị phân.

  1. #1
    Ngày gia nhập
    01 2007
    Bài viết
    5

    Mặc định Giúp bài tập đọc ghi file nhị phân.

    Bài 1 :
    Viết chương trình tạo tập dữ liệu HoSo.dta gồm những dữ liệu có dạng cấu trúc
    Struct NhanVien{
    String HoTen;
    Int Tuoi;
    String GioiTinh;
    double HeSoLuong;
    Int ThamNien;
    }
    Viết chương trình nhập từ bàn phím danh sách nhân viên và ghi vào hồ sơ:
    - Nhập số nhân viên
    - Nhập thông tin của từng nhân viên
    Tự tổ chức định dạng ghi file nhị phân danh sách nhân viên và ghi vào tập tin HoSo.dta

    Bài 2 :
    Viết chương trình đọc tập tinh HoSo.dta và xuất ra màn hình có dạng như sau

    DANH SACH NHAN VIEN
    STT Ho va Ten Gioi Tinh Tuoi HeSoLuong ThamNien
    1 Nguyen Van A Nam 45 1.5 18
    2 Le Thi B Nu 56 1.3 26
    3 Ly Van C Nam 37 1.6 6

    Bảng Danh Sách Sinh Viên có kẻ bảng.

  2. #2
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Cậu phải nói là khó khăn chỗ nào chứ chỉ là chỗ đọc file và xuất file thôi hay sao ! Nếu như vậy thì tớ nghĩ cậu nên thử đọc qua tài liệu về các hàm xuất nhập file là được . Đơn giản thì cậu có thể sử dụng các hàm để đọc và ghi chuẩn như fscan fprint còn để đọc ghi file nhị phân thì dùng ở định dạng nào đấy xem và điền vào tớ không nhớ rõ nhưng hình như là wb và rb thì phải ? THử xem nào ?

    Hix thật là bậy bạ cái này nằm ở phần C# mà tớ tưởng là cậu chơi console . Không biết cậu có lộn không nữa hay là tớ đã nhầm
    Đã được chỉnh sửa lần cuối bởi kidkid : 29-05-2007 lúc 01:05 PM.

  3. #3
    Ngày gia nhập
    05 2007
    Bài viết
    6

    Mặc định Bạn tham khảo.

    Ở đây mình dùng class thay cho struct của bạn, và thay kiểu dữ liệu giới tính string thành bool

    Class NhanVien
    Visual C# Code:
    1. public class NhanVien
    2.     {
    3.         #region fields
    4.         string _hoTen;
    5.         int _tuoi;
    6.         bool _gioiTinh;
    7.         double _heSoLuong;
    8.         int _thamNien;
    9.         #endregion
    10.  
    11.         #region properties
    12.         public int ThamNien
    13.         {
    14.             get { return _thamNien; }
    15.             set { _thamNien = value; }
    16.         }
    17.         public double HeSoLuong
    18.         {
    19.             get { return _heSoLuong; }
    20.             set { _heSoLuong = value; }
    21.         }
    22.         public bool GioiTinh
    23.         {
    24.             get { return _gioiTinh; }
    25.             set { _gioiTinh = value; }
    26.         }
    27.         public int Tuoi
    28.         {
    29.             get { return _tuoi; }
    30.             set { _tuoi = value; }
    31.         }
    32.         public string HoTen
    33.         {
    34.             get { return _hoTen; }
    35.             set { _hoTen = value; }
    36.         }
    37.         #endregion
    38.  
    39.         #region constructor
    40.  
    41.         public NhanVien() { }
    42.         public NhanVien(string hoTen, int tuoi, bool gioiTinh, double hsl, int thamNien)
    43.         {
    44.             KhoiTaoDuLieu(hoTen, tuoi, gioiTinh, hsl, thamNien);
    45.         }
    46.         #endregion
    47.  
    48.         #region method
    49.         private void KhoiTaoDuLieu(string hoTen, int tuoi, bool gioiTinh, double hsl, int thamNien)
    50.         {
    51.             _hoTen = hoTen;
    52.             _tuoi = tuoi;
    53.             _gioiTinh = gioiTinh;
    54.             _heSoLuong = hsl;
    55.             _thamNien = thamNien;
    56.         }
    57.  
    58.         /// <summary>
    59.         /// ghi dữ liệu của nhân viên vào file
    60.         /// </summary>
    61.         /// <param name="writer"></param>
    62.         public void GhiDuLieu(BinaryWriter writer)
    63.         {
    64.             writer.Write(_hoTen);
    65.             writer.Write(_tuoi);
    66.             writer.Write(_gioiTinh);
    67.             writer.Write(_heSoLuong);
    68.             writer.Write(_thamNien);
    69.         }
    70.  
    71.         /// <summary>
    72.         /// đọc dữ liệu của nhân viên từ file
    73.         /// </summary>
    74.         /// <param name="reader"></param>
    75.         /// <returns></returns>
    76.         public static NhanVien DocDuLieu(BinaryReader reader)
    77.         {
    78.             NhanVien nhanVien;
    79.  
    80.             nhanVien = new NhanVien();
    81.  
    82.             try
    83.             {
    84.                 nhanVien.HoTen = reader.ReadString();
    85.             }
    86.             catch (IOException)
    87.             {
    88.                 return null;
    89.             }
    90.             nhanVien.Tuoi = reader.ReadInt32();
    91.             nhanVien.GioiTinh = reader.ReadBoolean();
    92.             nhanVien.HeSoLuong = reader.ReadDouble();
    93.             nhanVien.ThamNien = reader.ReadInt32();
    94.  
    95.             return nhanVien;
    96.         }
    97.         #endregion
    98.     }

    Class HoSo:
    Visual C# Code:
    1. public class HoSo : ArrayList
    2.     {
    3.         private string _tenFile;
    4.  
    5.         public string TenFile
    6.         {
    7.             get { return _tenFile; }
    8.             set { _tenFile = value; }
    9.         }
    10.  
    11.         #region constructor
    12.         public HoSo() { }
    13.         public HoSo(string tenFile)
    14.         {
    15.             _tenFile = tenFile;
    16.         }
    17.         #endregion
    18.  
    19.         #region methods
    20.        
    21.         public void Save(string tenFile)
    22.         {
    23.             TenFile = tenFile;
    24.  
    25.             using (FileStream fs = new FileStream(tenFile, FileMode.Create, FileAccess.ReadWrite))
    26.             {
    27.                 BinaryWriter writer = new BinaryWriter(fs);
    28.                
    29.                 foreach (NhanVien nhanVien in this)
    30.                 {
    31.                     try
    32.                     {
    33.                         nhanVien.GhiDuLieu(writer);
    34.                     }
    35.                     catch (IOException ex)
    36.                     {
    37.                         System.Windows.Forms.MessageBox.Show("Có lỗi đọc file", "Lỗi");
    38.                     }
    39.                 }
    40.             }
    41.         }
    42.         public void Save()
    43.         {
    44.             Save(TenFile);
    45.         }
    46.  
    47.         public void Open(string tenFile)
    48.         {
    49.  
    50.             //xóa các phần tử trong list này đã
    51.             //rồi mới add vô
    52.             this.Clear();
    53.  
    54.             using (FileStream fs = new FileStream(tenFile, FileMode.Open, FileAccess.Read))
    55.             {
    56.                 BinaryReader reader = new BinaryReader(fs);
    57.                 NhanVien nhanVien = null;
    58.  
    59.                 try
    60.                 {
    61.                     nhanVien = NhanVien.DocDuLieu(reader);
    62.                     while (nhanVien != null)
    63.                     {
    64.                         this.Add(nhanVien);
    65.                         nhanVien = NhanVien.DocDuLieu(reader);
    66.                     }
    67.                 }
    68.                 catch (IOException ex)
    69.                 {
    70.                     System.Windows.Forms.MessageBox.Show("Có lỗi đọc file", "Lỗi");
    71.                 }
    72.                    
    73.             }
    74.         }
    75.        
    76.         #endregion

    Mình kô viết trên console.
    Bạn download về coi thử: http://files.myopera.com/bindirt/Program/QLNhanVien.rar

  4. #4
    Ngày gia nhập
    11 2007
    Bài viết
    40

    Hi bạn bindirt.
    Mình có đọc qua cách làm của bạn. Nhưng có 1 thắc mắc chưa thể giải đáp được.
    Giả sử như bạn xuất thông tin ra DataGridView nhưng bạn lại đặt chế độ không cho Edit. Nhưng nếu mình muốn cho người ta Edit sau đó lưu thông tin lại thì sao.
    Việc cho Edit thì dễ nhưng quan trọng là lúc ghi lại vào File binary có cấu trúc kìa. Mình nghĩ hoài chưa biết làm sao có thể lấy được dữ liệu theo từng dòng áh.
    Bạn có cách nào không? Mình đang làm chưa được.

    Àh, chỉ thao tác trên File nhị phân có cấu trúc nhe. chứ không bàn đến việc sử dụng các loại database khác.

  5. #5
    Ngày gia nhập
    03 2007
    Bài viết
    179

    cho mình hỏi tí, sao không ghi file text ?

  6. #6
    Ngày gia nhập
    11 2007
    Bài viết
    40

    Mặc định Giúp bài tập đọc ghi file nhị phân.

    Ghi file text là sao? Thực ra khi thao tác trên file nhị phân có cấu trúc thì chỉ có chương trình mình viết mới có thể xử lý chính xác được dữ  liệu của nó. Mọi sự can thiệp khác vào trong File đều không được phép --> nếu làm thì hư mất cấu trúc File rồi

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

    Trích dẫn Nguyên bản được gửi bởi bindirt Xem bài viết
    Ở đây mình dùng class thay cho struct của bạn, và thay kiểu dữ liệu giới tính string thành bool

    Class NhanVien
    Visual C# Code:
    1. public class NhanVien
    2.     {
    3.         #region fields
    4.         string _hoTen;
    5.         int _tuoi;
    6.         bool _gioiTinh;
    7.         double _heSoLuong;
    8.         int _thamNien;
    9.         #endregion
    10.  
    11.         #region properties
    12.         public int ThamNien
    13.         {
    14.             get { return _thamNien; }
    15.             set { _thamNien = value; }
    16.         }
    17.         public double HeSoLuong
    18.         {
    19.             get { return _heSoLuong; }
    20.             set { _heSoLuong = value; }
    21.         }
    22.         public bool GioiTinh
    23.         {
    24.             get { return _gioiTinh; }
    25.             set { _gioiTinh = value; }
    26.         }
    27.         public int Tuoi
    28.         {
    29.             get { return _tuoi; }
    30.             set { _tuoi = value; }
    31.         }
    32.         public string HoTen
    33.         {
    34.             get { return _hoTen; }
    35.             set { _hoTen = value; }
    36.         }
    37.         #endregion
    38.  
    39.         #region constructor
    40.  
    41.         public NhanVien() { }
    42.         public NhanVien(string hoTen, int tuoi, bool gioiTinh, double hsl, int thamNien)
    43.         {
    44.             KhoiTaoDuLieu(hoTen, tuoi, gioiTinh, hsl, thamNien);
    45.         }
    46.         #endregion
    47.  
    48.         #region method
    49.         private void KhoiTaoDuLieu(string hoTen, int tuoi, bool gioiTinh, double hsl, int thamNien)
    50.         {
    51.             _hoTen = hoTen;
    52.             _tuoi = tuoi;
    53.             _gioiTinh = gioiTinh;
    54.             _heSoLuong = hsl;
    55.             _thamNien = thamNien;
    56.         }
    57.  
    58.         /// <summary>
    59.         /// ghi dữ liệu của nhân viên vào file
    60.         /// </summary>
    61.         /// <param name="writer"></param>
    62.         public void GhiDuLieu(BinaryWriter writer)
    63.         {
    64.             writer.Write(_hoTen);
    65.             writer.Write(_tuoi);
    66.             writer.Write(_gioiTinh);
    67.             writer.Write(_heSoLuong);
    68.             writer.Write(_thamNien);
    69.         }
    70.  
    71.         /// <summary>
    72.         /// đọc dữ liệu của nhân viên từ file
    73.         /// </summary>
    74.         /// <param name="reader"></param>
    75.         /// <returns></returns>
    76.         public static NhanVien DocDuLieu(BinaryReader reader)
    77.         {
    78.             NhanVien nhanVien;
    79.  
    80.             nhanVien = new NhanVien();
    81.  
    82.             try
    83.             {
    84.                 nhanVien.HoTen = reader.ReadString();
    85.             }
    86.             catch (IOException)
    87.             {
    88.                 return null;
    89.             }
    90.             nhanVien.Tuoi = reader.ReadInt32();
    91.             nhanVien.GioiTinh = reader.ReadBoolean();
    92.             nhanVien.HeSoLuong = reader.ReadDouble();
    93.             nhanVien.ThamNien = reader.ReadInt32();
    94.  
    95.             return nhanVien;
    96.         }
    97.         #endregion
    98.     }

    Class HoSo:
    Visual C# Code:
    1. public class HoSo : ArrayList
    2.     {
    3.         private string _tenFile;
    4.  
    5.         public string TenFile
    6.         {
    7.             get { return _tenFile; }
    8.             set { _tenFile = value; }
    9.         }
    10.  
    11.         #region constructor
    12.         public HoSo() { }
    13.         public HoSo(string tenFile)
    14.         {
    15.             _tenFile = tenFile;
    16.         }
    17.         #endregion
    18.  
    19.         #region methods
    20.        
    21.         public void Save(string tenFile)
    22.         {
    23.             TenFile = tenFile;
    24.  
    25.             using (FileStream fs = new FileStream(tenFile, FileMode.Create, FileAccess.ReadWrite))
    26.             {
    27.                 BinaryWriter writer = new BinaryWriter(fs);
    28.                
    29.                 foreach (NhanVien nhanVien in this)
    30.                 {
    31.                     try
    32.                     {
    33.                         nhanVien.GhiDuLieu(writer);
    34.                     }
    35.                     catch (IOException ex)
    36.                     {
    37.                         System.Windows.Forms.MessageBox.Show("Có lỗi đọc file", "Lỗi");
    38.                     }
    39.                 }
    40.             }
    41.         }
    42.         public void Save()
    43.         {
    44.             Save(TenFile);
    45.         }
    46.  
    47.         public void Open(string tenFile)
    48.         {
    49.  
    50.             //xóa các phần tử trong list này đã
    51.             //rồi mới add vô
    52.             this.Clear();
    53.  
    54.             using (FileStream fs = new FileStream(tenFile, FileMode.Open, FileAccess.Read))
    55.             {
    56.                 BinaryReader reader = new BinaryReader(fs);
    57.                 NhanVien nhanVien = null;
    58.  
    59.                 try
    60.                 {
    61.                     nhanVien = NhanVien.DocDuLieu(reader);
    62.                     while (nhanVien != null)
    63.                     {
    64.                         this.Add(nhanVien);
    65.                         nhanVien = NhanVien.DocDuLieu(reader);
    66.                     }
    67.                 }
    68.                 catch (IOException ex)
    69.                 {
    70.                     System.Windows.Forms.MessageBox.Show("Có lỗi đọc file", "Lỗi");
    71.                 }
    72.                    
    73.             }
    74.         }
    75.        
    76.         #endregion

    Mình kô viết trên console.
    Bạn download về coi thử: http://files.myopera.com/bindirt/Program/QLNhanVien.rar
    không tải được file trên bạn có thể gửi lại cái link, thank

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

  1. Bài tập C++ giúp e bài nối nội dung từ file này sang file khác vs
    Gửi bởi acer5750 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 08-09-2012, 01:51 AM
  2. Mã nguồn C Lỗi move data từ file to new file qua stack,các bạn giúp mình nha.
    Gửi bởi manta trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 08-10-2011, 05:16 PM
  3. lỗi đọc dữ liệu từ file! Giúp mình sửa?
    Gửi bởi Sayuri0903 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 18-09-2010, 09:25 AM
  4. Giúp em hàm ghi dữ liệu trong dslkd vào file và đọc dữ liệu từ file
    Gửi bởi chuong01 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 18-10-2009, 09:42 AM
  5. Lập trình C++ Đọc file và ghi file trong lập trình C++. Giúp em sửa
    Gửi bởi thangit trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 20-10-2008, 09:57 AM

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