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ố 14 kết quả

Đề tài: Chương trình quản lý nhân sự

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

    Angry Chương trình quản lý nhân sự

    Chào các pro c# của diễn đàn!!!
    Lời đầu tiên mình gửi lời cám ơn đến tất cả các thành viên trong diễn đàn cộng đồng c việt, vì trong thời gian làm đề tài này tụi mình đã thực sự học hỏi được từ diễn đàn được rất nhiều.

    Mình đã hoàn thành được đề tài tốt nghiệp nên bây giờ mình gửi source code này lên cho các bạn tham khảo thêm .Đây là đề tài quản lý nhân sự và tiền lương tại một công ty may mặc trong thành phố.
    Tuy đã hoàn thành nhưng đề tài còn rất rất nhiều thiếu sót, xin các bạn xem qua và giúp mình tìm ra được những thiếu sót để mình có thể hoàn thiện hơn nữa.

    Chân thành cám ơn các bạn đã đọc qua. Cuối cùng mình xin chúc sức khỏe đến tất cả các thành viên trong diễn đàn và hy vọng chúng ta sẽ đồng lòng xây dựng diễn đàn ngày càng lớn mạnh.
    Attached Files Attached Files

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    Mới xài chưa biết trong trình bày như thế nào nhưng xin góp ý mấy cái nhỏ như sau:

    1 - Tổ chức file trong source của bạn tùm lum quá
    2 - code gặp bug khi không có database --- Chết ko kịp ngáp nếu giáo viên phản biện bắt được





    Xin lỗi mình nói thẳng nhé

    Mới cài SQl vào chạy thử rùi chương trình của bạn còn gặp quá nhiều vấn đề (đứng trên góc độ người sử dụng).
    Mình thường đi coi các anh chị khóa trước bảo vệ luận văn thấy các lỗi của bạn rất dễ dàng bị bắt khi gặp giáo viên phản biện khó tính .

    Chắc bạn chưa đưa bài này cho giáo viên hướng dẫn nhỉ
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 09-11-2008 lúc 03:59 AM.

  3. #3
    Ngày gia nhập
    11 2006
    Bài viết
    633

    Làm cách nào để tránh chuyện bị bug khi ko có database nhỉ, zkday hướng dẫn giúp bạn ấy luôn đi

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

    Ok đang cao hứng nói luôn
    cách mà bvKim dùng là một trong những cách mà zkday thường dùng nhưng thường chặn lại không Exception ra ngoài mà ghi nó vào một file log nào đó, đến khi cần bug lỗi thì chép file đó về (ngồi cầu trời cho họ không format ổ cứng )

    còn cách khác nữa là dùng câu lệnh sau:
    SQL Code:
    1. SELECT *
    2.   FROM   master..sysdatabases
    3.   WHERE  name = N'My_DATABASE'

    Để kiểm tra xem trong hệ thống có database với tên muốn test chưa chưa
    lưu ý là dùng bảng master cách này chuối nãi là khi ko có quyền dùng master thì đuối.



    Xin góp ý với bạn như sau:
    - Đối với các thông tin mà bạn để trần chuồng như thía này thì chẳng ai dám xài chương trình của bạn chép đâu.
    server:localhost
    database:nhansu_luong
    username:sa
    pass:zkday
    s:123
    Úi chít em rùi, nếu mà lộ file này thì coi như cái sql của em đi đời (thông tin hệ thống bị lộ rất nguy hiểm)

    có một cách mình thường làm là không ghi lại các thông tin nhạy cảm một cách trần chuồng như thía mà ghi các thông tin nhạy cảm thì kiếm cách "chặt" nó ra (cái thuật toán đơn giản thôi).

    - Khi người dùng nhập các thông tin cấu hình này rùi mà vẫn bắt người ta cấu hình mỗi khi chạy chương trình --- vậy thì làm cái cấu hình làm gì cho mệt.
    - Còn vấn đề tổ chức giao diện thiệt tình là chưa tốt.

    - Nói thiệt giờ đang bận làm mấy cái project nên mới test được cho bạn khoảng 5 phút thui nên chỉ nói được sơ qua như vậy.


    Chúc bạn thành công.

    ps: hàng em út mà nói vậy có quá không ta
    Đã được chỉnh sửa lần cuối bởi zkday2686 : 09-11-2008 lúc 11:55 AM.

  5. #5
    Ngày gia nhập
    01 2008
    Nơi ở
    Gameloft Studio
    Bài viết
    294

    Trích dẫn Nguyên bản được gửi bởi zkday2686 Xem bài viết
    Xin góp ý với bạn như sau:
    - Đối với các thông tin mà bạn để trần chuồng như thía này thì chẳng ai dám xài chương trình của bạn chép đâu.

    Úi chít em rùi, nếu mà lộ file này thì coi như cái sql của em đi đời (thông tin hệ thống bị lộ rất nguy hiểm)

    có một cách mình thường làm là không ghi lại các thông tin nhạy cảm một cách trần chuồng như thía mà ghi các thông tin nhạy cảm thì kiếm cách "chặt" nó ra (cái thuật toán đơn giản thôi).
    Hehe dấu đi đâu. Dù không để "trần chuồng" như vậy hacker nó dùng Reflector cũng xem được password thôi.

    Do đó .NET chỉ thực sự tốt khi chương trình của nó chạy trên Server.

    Mấy phần mềm quản lý mà tui thấy trên CodeProject.com toàn chơi kiểu này. Phần code truy xuất DL hay các kết nối luôn đặt trên Server. Rồi Client chỉ có việc lấy kết quả từ Server theo dạng XML. Làm cách này thì Server cũng có thể kiểm tra được quyền của user có cho phép thực hiện tác vụ đó hay không?

    Còn thấy bí quá thì viết phần mềm quản lý bằng ASP.NET cũng bảo mật chán.
    Đã được chỉnh sửa lần cuối bởi ZCoder87 : 09-11-2008 lúc 12:17 PM.

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

    Mặc định Chương trình quản lý nhân sự

    Hehe dấu đi đâu. Dù không để "trần chuồng" như vậy hacker nó dùng Reflector cũng xem được password thôi.

    Do đó .NET chỉ thực sự tốt khi chương trình của nó chạy trên Server.

    Mấy phần mềm quản lý mà tui thấy trên CodeProject.com toàn chơi kiểu này. Phần code truy xuất DL hay các kết nối luôn đặt trên Server. Rồi Client chỉ có việc lấy kết quả từ Server theo dạng XML. Làm cách này thì Server cũng có thể kiểm tra được quyền của user có cho phép thực hiện tác vụ đó hay không?

    Còn thấy bí quá thì viết phần mềm quản lý bằng ASP.NET cũng bảo mật chán.
    hì ASP.NET mình làm chưa nhiều nên chưa biết nó tốt tới cỡ nào.

    còn về phần "trần chuồng" đó. Thì là để trong file config, một người "mù máy tính như zk" nhìn vô cũng biết ---> chỉ cần lấy được cái file config này là OK hết.(file này có tên là book.txt).

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

    Thực ra vấn đề bảo mật được khắc phục rất là đơn giản.

    DB chỉ lộ khi client được phép chui hẳn vào trong DB. Bi giờ chúng ta cấm ko cho client vào trực tiếp DB nữa thì các bạn Hacker khóc bằng tiếng mán ^^!(trừ 1 số trường hợp các bạn ý dùng sniff,cái đó thì chúng ta sẽ khắc phục kiểu khác,có thể bàn ở 1 topic khác ^^!).

    Vấn đề không cho client chui vào DB thì xử lý rất đơn giản, đó là dùng thêm 1 cái app server. Để connect vào appserver ta có thể dùng remoting,soap/webservice.
    Còn cái app server có thể là 1 soft do bạn viết, hoặc là 1 app server như IIS(cái này thì thành giống với ASP.NET của ZC ^^!).

    Trên codeproject thì lâu lắm zồi Dark chưa có vào xem, tuy nhiên cấu trúc kiểu đó là ntier, cái này thì là chuẩn zồi, đa số các prj thực tế đều làm theo mô hình đó ^^!
    Hôm nào rỗi chắc Dark sẽ viết 1 cái hướng dẫn dùng ntier với remoting, không biết có ai ủng hộ ko ^^!

    Cheers!
    Đã được chỉnh sửa lần cuối bởi darkan : 09-11-2008 lúc 03:46 PM. Lý do: sửa cục gạch đặt từ trưa ^^!
    Is the moon rising...

  8. #8
    Ngày gia nhập
    10 2008
    Bài viết
    14

    cám ơn các bạn đã góp ý kiến
    @zkday :
    1.về phần cấu hình bạn chỉ cần khai báo cấu hình 1 lần thôi và lần sao khi đăng nhập vào thì nó sẽ lưu cấu hình đó lại không cần phải cấu hình lại nữa.
    2.Mình còn yếu về phần mã hóa dữ liệu lắm.Lúc đầu thì mình định sẽ mã hóa file txt lưu cấu hình nhưng mình không biết giải mã và đưa vào C# thì nó sẽ đọc như thế nào nên mình đành để vậy.Mình đang nghiên cứu thêm về vấn đề này.
    3. Đúng mình nhận xét là phần thiết kế giao diện của mình chưa được, mình không có thời gian dài lắm để làm đề án này nên đành làm cho nó gọn nhẹ thôi.
    4.Trong project này còn phần sơ xuất nữa là phần tạo mã tự động cho nhân viên còn bị lỗi tràn số vì đây chỉ là project chưa hoàn chỉnh.
    Nói chung là còn rất nhiều thiếu sót xin các bác test giúp.Mình sẽ hoàn chỉnh lại và gửi lại cho các bạn.
    Bạn nào biết dấu thông tin cấu hình bằng cách nào thì hay nhất xin chỉ giáo giúp với.
    Gửi lời chào đoàn kết đến tất cả các thành viên trong cộng đồng

  9. #9
    Ngày gia nhập
    11 2008
    Bài viết
    186

    Trích dẫn Nguyên bản được gửi bởi vf6.0 Xem bài viết
    cám ơn các bạn đã góp ý kiến
    @zkday :
    1.về phần cấu hình bạn chỉ cần khai báo cấu hình 1 lần thôi và lần sao khi đăng nhập vào thì nó sẽ lưu cấu hình đó lại không cần phải cấu hình lại nữa.
    2.Mình còn yếu về phần mã hóa dữ liệu lắm.Lúc đầu thì mình định sẽ mã hóa file txt lưu cấu hình nhưng mình không biết giải mã và đưa vào C# thì nó sẽ đọc như thế nào nên mình đành để vậy.Mình đang nghiên cứu thêm về vấn đề này.
    3. Đúng mình nhận xét là phần thiết kế giao diện của mình chưa được, mình không có thời gian dài lắm để làm đề án này nên đành làm cho nó gọn nhẹ thôi.
    4.Trong project này còn phần sơ xuất nữa là phần tạo mã tự động cho nhân viên còn bị lỗi tràn số vì đây chỉ là project chưa hoàn chỉnh.
    Nói chung là còn rất nhiều thiếu sót xin các bác test giúp.Mình sẽ hoàn chỉnh lại và gửi lại cho các bạn.
    Bạn nào biết dấu thông tin cấu hình bằng cách nào thì hay nhất xin chỉ giáo giúp với.
    Gửi lời chào đoàn kết đến tất cả các thành viên trong cộng đồng
    giúp bạn 1 ít:

    1. có nhiều cách:
    a. tạo cấu trúc riêng
    b. tạo thêm 1 table để log
    c. Sử dụng xml (cũng 1 kiểu lightweight db )

    2. Đâu cần phải giải mã , quá trình bảo mật thế này:
    a. Khi mới vào user đăng nhập -> lấy thông tin đem mã hóa password (thích mã hóa cả cũng được nhưng chả cần thiết ).. sử dụng MD5 hoặc SHA-1 rồi lưu vào đâu đó , lưu theo ở 1
    b. Lần sau user lại đăng nhập -> lần này ta cũng đem mã hóa tương ứng rồi lấy thông tin lưu lần trước đem so sánh với thông tin mã hóa vừa nhập, nếu khít thì OK , còn không thì té

    demo cho dễ hiểu nè:

    Lần 1: user_pass = "mật_mã_thật" => mã hóa gì gì đó ra ví dụ: mã_hóa(user_pass) = "mật_mã_đã_mã_hóa" rồi đem lưu lại vào 1 file
    Lần 2: user nhập vào : user_pass = "mật_mã_giả" => đem mã hóa thành
    "mật_mã_giả_đã_mã_hóa", mật mã lưu của user là : "mật_mã_đã_mã_hóa"
    đem so sánh thấy khác nhau ==> té đi cưng.
    Như vậy mật mã thật của user sẽ không bao giờ bị lộ trừ khi bị attack (nhiều kiểu) thì sẽ bị lộ ra.


    3.4. tự xử

  10. #10
    Ngày gia nhập
    11 2006
    Bài viết
    633

    2.Mình còn yếu về phần mã hóa dữ liệu lắm.Lúc đầu thì mình định sẽ mã hóa file txt lưu cấu hình nhưng mình không biết giải mã và đưa vào C# thì nó sẽ đọc như thế nào nên mình đành để vậy.Mình đang nghiên cứu thêm về vấn đề này.
    File cấu hình thường là ini hoặc là xml, dotNET có cơ chế để đọc 2 loại file này. ini thì dễ viết hơn là xml.
    Đây là cách làm hồi mình còn làm đồ án tốt nghiệp:
    Có 1 file setting.ini như sau:
    Code:
    [Connection]
    Server=.\SQLEXPRESS;
    Database=dbStudy.mdf;
    ID=sa;
    PW=sa
    Đây là class CIni để đọc và ghi file ini:
    Visual C# Code:
    1. using System;
    2. using System.Runtime.InteropServices;
    3. using System.Text;
    4.  
    5. namespace ProgStudy
    6. {
    7.     class CIni
    8.     {
    9.         private string path;
    10.  
    11.         [DllImport("kernel32")]
    12.         private static extern long WritePrivateProfileString
    13.             (string section, string key, string val, string filePath);
    14.  
    15.         [DllImport("kernel32")]
    16.         private static extern int GetPrivateProfileString
    17.             (string section, string key, string def, StringBuilder retVal, int size, string filePath);
    18.  
    19.         public CIni()
    20.         {
    21.             path = AppDomain.CurrentDomain.BaseDirectory.ToString() + "setting.ini";
    22.         }
    23.  
    24.         public void IniWriteValue(string Section, string Key, string Value)
    25.         {
    26.             WritePrivateProfileString(Section, Key, Value, path);
    27.         }
    28.  
    29.         public string IniReadValue(string Section, string Key)
    30.         {
    31.             StringBuilder temp = new StringBuilder(255);
    32.             int i = GetPrivateProfileString(Section, Key, "", temp, 255, path);
    33.             return temp.ToString();
    34.         }
    35.     }
    36. }
    Trong class connect mình sẽ có 1 phương thức tạo chuỗi connect như sau:
    Visual C# Code:
    1. private string GetConn()
    2.         {
    3.             CIni ini = new CIni();
    4.             string sConn;
    5.             sConn = "server=" + ini.IniReadValue("Connection", "Server");
    6.             sConn += "database=" + AppDomain.CurrentDomain.BaseDirectory.ToString() + ini.IniReadValue("Connection", "Database");
    7.             sConn += "uid=" + ini.IniReadValue("Connection", "ID");
    8.             sConn += "pwd=" + ini.IniReadValue("Connection", "PW");
    9.             return sConn;
    10.         }
    Vậy là xong.

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

  1. Trả lời: 0
    Bài viết cuối: 22-06-2012, 08:57 PM
  2. Trả lời: 0
    Bài viết cuối: 22-06-2012, 08:50 PM
  3. Trả lời: 0
    Bài viết cuối: 22-06-2012, 07:52 PM
  4. Trả lời: 0
    Bài viết cuối: 22-06-2012, 07:50 PM
  5. Trả lời: 0
    Bài viết cuối: 22-06-2012, 07:49 PM

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