Quản lý lương

Check list

Checklist được áp dụng cho tất cả đồ án

  • Fullsource
  • Dump DB data
  • Description
  • Images
  • Documentation
  • Origin information
  • Video
  • Github private
  • Sharecode
  • Deploy
  • Setup

Fullsource

📎 PRIVATE Github salary-manager

Sql file

📎 PRIVATE Github salary-manager

Description

Quản lý tiền lương là một chương trình quản lí nhằm mục đích chính là quản lí tiền lương cho công ty. Gồm rất nhiều những thao tác từ chấm công cho nhân viên giám đốc hàng tháng đến việc tính tiền công , tiền thưởng .Từ những khó khăn trong quy trình xử lí đó nên em đã chọn đề tài quản lí lương để giúp cho công việc trở nên dễ dàng hơn và tránh những sự cố sai sót trong việc tính sai tính nhầm lương. Chương trình này được ứng dụng cho công ty và có thể mở rộng cho các công ty tập đoàn khác ….

Hệ thống Quản lý tiền lương bao gồm các chức năng chính sau:
2.5.1. Chức năng quản lý nhân sự
Thông tin về hồ sơ lý lịch:
• Quản lý chi tiết thông tin về người lao động như: Mã số nhân viên, ngày sinh, nơi sinh, giới tính, sổ bảo hiểm, địa chỉ, điện thoại, chỗ ở hiện nay, đơn vị công tác, chức danh công tác, chức danh nghề….
• Theo dõi quá trình khen thưởng, kỷ luật.
2.5.2. Chức năng quản lý tiền lương
• Áp dụng tính lương cho các nhân viên văn phòng làm việc theo giờ hành chính.
• Cập nhật ngày công thực tế làm việc, ngày nghỉ phép, nghỉ ốm, đi học
• Chương trình tự động tính các khoản lương, thưởng …
2.5.3. Chức năng quản lý hệ thống
a) Quản lý danh mục dùng chung:
• Danh mục được cập nhật một lần và dùng chung xuyên suốt cho toàn hệ thống.
• Danh mục dùng chung được phân quyền cập nhật tùy theo chức năng, vai trò của từng bộ phận nhằm thống nhất bộ mã danh mục dùng chung cho các đơn vị.
• Các danh mục về quản lý nhân sự bao gồm: Danh mục phòng ban, chức vụ, quan hệ gia đình, dân tộc, trình độ chuyên môn, loại hợp đồng, đơn giá tiền lương…
b) Quản lý phân quyền bảo mật hệ thống:
• Quản lý người dùng đăng nhập hệ thống và thay đổi mật khẩu người sử dụng
• Phân quyền cập nhật dữ liệu cho từng nhóm, từng người sử dụng và phân quyền khai thác chức năng chương trình cho từng nhóm, từng người sử dụng.
2.5.4. Chức năng báo cáo
a) Báo cáo quản lý nhân sự:
• Sơ yếu lý lịch
• Danh sách trích ngang nhân viên hiện tại
• Danh sách nhân viên vào làm việc tại công ty
• Danh sách nhân viên được khen thưởng, bị kỷ luật
• Danh sách các ứng viên dự tuyển
• Báo cáo chi tiết diễn biến lương của từng nhân viên.
• Thống kê nhân viên theo phòng ban.
• Thống kê nhân viên theo chức vụ.
b) Báo cáo quản lý tiền lương:
• Bảng thanh toán tiền lương
• Bảng các khoản phụ cấp.
• Bảng trích nộp bảo hiểm xã hội, bảo hiểm y tế.
• Báo cáo tổng hợp thanh toán tiền lương cho toàn công ty.

Images

Documentation

📎 PRIVATE Github salary-manager

Origin information

🔗 facebook luantm96
🔗 linkedin luantm
🔗 gmail ngoalongtb001@gmail.com
🔗 gmail luantm96@gmail.com

Video

No video

Github private

🔗 PRIVATE Github karaoke-manager

Sharecode

🔗 Share code

Google drive

PRIVATE Google Drive

Deploy

No deploy

Setup

Hướng dẫn cài đặt:

  1. Chạy file sql Dump DB/20180704.sql
  2. Mở project với Visual Studio
  3. Chỉnh sửa chuỗi kết nối
  4. Chạy chương trình

Hỗ trợ đến khi chạy được

Recusing the cute baby cats

Đề bài

Trên màn hình đang hiện n con mèo (n là số nguyên dương). Có 2 cái nút 1 trắng 1 đen. Nếu click vào nút trắng thì số mèo sẽ được nhân đôi. Nếu click vào nút đen thì số mèo sẽ bị giảm đi 1.

Nếu số mèo giảm xuống dưới 0 thì thế giới sẽ bị hủy diệt. Nếu số mèo bằng m con thì thế giới sẽ được cứu.

Tìm số lần click ít nhất để cứu lấy thế giới.

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Đáp án

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import sys

input_str = ""

for line in sys.stdin:
n = int(line.split()[0])
m = int(line.split()[1])

count = 0
while (n != m):
if n > m:
count += n - m
n = m
else:
if m%2==1:
count += 1
m+=1
else:
count += 1
m//=2

print(count)

Phần mềm quản lý quán cà phê

Check list

Checklist được áp dụng cho tất cả đồ án

  • Fullsource
  • Dump DB data
  • Description
  • Images
  • Documentation
  • Origin information
  • Video
  • Github private
  • Sharecode
  • Deploy
  • Setup

Fullsource

📎 PRIVATE Github karaoke-manager

Sql file

📎 PRIVATE Github karaoke-manager

Description

Việc tính tiền trong các shop, nhà hàng, quán… luôn là việc khó khăn và dễ nhầm lẫn nhất nếu nhân viên không có kinh nghiệm làm việc. Mà quán karaoke không chỉ cung cấp dịch vụ karaoke mà còn đi kèm với nhiều mặt hàng khác như đồ ăn, thức uống, phòng hát… Vậy nên từ việc quản lý nhân viên, gọi đồ từng phòng, giờ hát đến việc đặt phòng trước luôn là việc cần chú ý. Vì tính chất phức tạp của các quán Karaoke, việc tạo hóa đơn sai hoặc không chính xác thường khiến khách hàng ức chế và đôi khi có thể có những phản ứng tiêu cực đối với nhân viên của quán, hơn thế nữa, hóa đơn tính tiền của các quán Karaoke thường rất dễ có sai sót do kê khai nhầm số lượng hàng hóa khách hàng đã sử dụng. Cùng với đó là sự thống kê cho từng tháng hay quý khá mất thời gian. Do đó việc có một phần mềm quản lý cho quán karaoke là một việc làm thiết thực và cần thiết. Với lý do đó cộng thêm sự hướng dẫn tận tình của thầy cô giáo…, em đã chọn đề tài “Xây dựng phần mềm quản lý quán karaoke” sử dụng ngôn ngữ lập trình C#, hệ quản trị cơ sở dữ liệu SQL Server làm đề tài chuyên đề tốt nghiệp của mình

-Nhân viên:
+ Đăng nhập, đăng xuất
+ Cập nhật thông tin
+ Tìm kiếm phòng
+ Thêm, sửa, xóa dịch vụ
+ Xuất hóa đơn
-Người quản lý ( admin ):
+ Đăng nhập, Đăng xuất.
+ Quản lý loại tài khoản
+ Quản lý tài khoản
+ Quản lý nhân viên
+ Quản lý danh mục
+ Quản lý sản phẩm
+ Quản lý phòng
+ Quản lý tài chính
+ Thêm, sửa, xóa, thông số sản phẩm

Images

Documentation

📎 PRIVATE Github karaoke-manager

Origin information

🔗 facebook luantm96
🔗 linkedin luantm
🔗 gmail ngoalongtb001@gmail.com
🔗 gmail luantm96@gmail.com

Video

No video

Github private

🔗 PRIVATE Github karaoke-manager

Sharecode

🔗 Share code

Google drive

PRIVATE Google Drive

Deploy

No deploy

Setup

Hướng dẫn cài đặt:

  1. Chạy file sql DumpDB/20190326.sql
  2. Mở project với Visual Studio
  3. Chỉnh sửa chuỗi kết nối
  4. Chạy chương trình

Hỗ trợ đến khi chạy được

Solving

Đề bài

Hồi nhỏ, trong một lần nghịch ngợm, Bình đã phải chịu hình phạt giải toán như sau: Hãy tìm tất cả các số nguyên x (0 < x < 10^9) là nghiệm của phương trình sau:

x = b * s(x) ^ a + c

với a, b, c là các hằng số cho trước. s(x) là hàm trả về tổng của tất cả các chữ số của x.

Bạn có thể giải bài toán này ?

Input
Ba số nguyên a, b, c (1 ≤ a ≤ 5; 1 ≤ b ≤ 10000;  - 10000 ≤ c ≤ 10000).

Output
Dòng đầu tiên là số nguyên n, số nghiệm của phương trình. Dòng tiếp theo là n số nguyên theo thứ tự tăng dần - là các nghiệm của phương trình. Chỉ in các số nguyên lớn hơn 0 và nhỏ hơn 10^9.

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Đáp án

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys

input_str = ""

for line in sys.stdin:
arr = line.split()
a = int(arr[0])
b = int(arr[1])
c = int(arr[2])
result = []
for i in range(82):
x = b * i ** a + c
if x <= 0 or x > 10 ** 9:
continue
n = x

sumx = 0
while n > 0:
sumx += n % 10
n //= 10
if sumx == i:
result.append(x)
print(len(result))
print( ' '.join([str(i) for i in sorted(result)]))

The linux programming interface Part 2

Fundamental Concept

Operasystem được sử dụng với 2 nghĩa:

  1. Để denote tất cả các gói bao gồm của một phần mềm trung tâm quản lý các tài nguyên của máy tính tất cả các công cụ ddi kèm như là command line interpreters, graphical user interfaces, file utilities and editors
  2. Nghĩa hẹp hơn là nói tới phần mềm trung tâm quản lý và cấp phpes nguồn tài nguyên của máy tính (CPU, RAM and devices)

Thuật ngữ Kernel thường được sử dụng như từ đồng nghĩa với operating system cái mà chúng ta nói tới trong cuốn sách này
Mặc dù nó có thể chạy các chương trình trên một máy tính mà không cần kernel, Sự hiện diện của kernel đơn giản hóa việc viết và sử dụng các chương trình khác, và tăng tính mạnh mẽ và khả chuyển có sẵn phục vụ các lập trình viên. The kernel đã làm điều này để cung cấp một lớp phần mềm để quản lý các giới hạn tài nguyên của một máy tính

The Linux kernel excutable có thể tìm thấy ở /boot/vmlinuz, hoặc đâu đó tương tự, Nói về lịch sử, Trước UNIX, the kernel được gọi là unix, Sau UNIX, cái mà đã có virtual memory, được đổi tên thành vmunix, Trên Linux tên này là ánh xạ của tên hệ thống với z thay thế x để nói rằng kernel là một bản compressed executable

Các nhiệm vụ được thực thi bởi kernel:
Process scheduling: Lập lịch tiến trình: Một máy tính có nhiều CPU cái mà thực thi các chỉ thị của các chương trình. Giống UNIX systems, Linux là hệ điều hành preemptive multitasking, Đa tác vụ nghĩa là đa tiến trình (running programs) có thể đồng thời chạy trên bộ nhớ và mỗi các có thể nhận sử dụng CPU. Preemptive nghĩa là các luật để quản lý việc các tiến trình nào được sử dụng CPU và trong bao lâu .

Memory management: Trong khi bộ nhớ máy tính là rất lớn so với 1 2 thế kỉ trước đây, kích cỡ của phần mềm cũng lớn lên tương ứng, vì thế bộ nhớ vật lý (RAM) vẫn là giới hạn và kernel phải chia sẻ chúng cho các tiến trình như một cách công bằng và hiệu quả. Gióng như hầu hết các hệ điều hành hiện đại , Linux sử dụng virtual memory management, một kĩ thuật:

  • Các tiến trình là độc lập với các tiến trình khác và kernel, vì thế một tiến trình không thể đọc và sửa được bộ nhớ của các tiến trình khác hoặc trong kernel
  • Chỉ một phần tiến trình cần giữ memory, hạ thấp bộ nhớ giới hạn của mỗi tiến trình và cho phép nhiều tiến trình cùng giữ trong bộ nhớ RAM. Điều này giúp việc sử dụng dụng CPU,bất kì thời điểm nào cũng có ít nhất một process có mà CPU có thể thực thi
  • Cung cấp một file system: The kernel cung cấp một file system trên đĩa cho phép các file có thể đợc tạo ra, lấy ra, cập nhật và chỉnh sửa trên chúng
  • Tạo và hủy các tiến trình: The kernel có thể tải một chương trình mới vào bộ nhớ, cung cấp cho nó các tài nguyên (như CPU, memory, và access tới các tập tin) cung cấp thứ tự để chạy. Mỗi một tiến trình thực thi xong, kernel sẽ đảm bảo các nguồn tài nguyên nó sử dụng được giải phóng.
  • Truy cập tới thiết bị: Các thiết bị như chuột, màn hình, bàm phím, đĩa cứng, đĩa mềm được đính kèm tới một máy tính cho phép giao tiếp giữa máy tính với các phần khác của thế giới, cho phép vào ra, hoặc cả hai. The kernel cung cấp các chương trình với các interface để chuẩn hóa và đơn giản hóa truy cập tới các thiết bị, trong khi điều chỉnh việc truy cập bởi nhiều tiến trình trên một thiết bị
  • Mạng: The kernel chuyển và nhận các gói tin. Các tác vụ bao gồm việc định tuyến các gói tin tới hệ thống mục tiêu
  • Cung cấp một system call application programming interface (API): Tiến trình có thể yêu cầu kernel thực thi một vài tác vụ bằng cách sử dụng một vài kernel entry points được biến tới như là system calls. The linux system call API là chủ đề chính của cuốn sách này Mục 3.1 sẽ chi tiết các bowsc thực thi khi một tiến trình được thực thi một system call

Ngoài ra thì một hệ điều hành đa người dùng như Linux sẽ cung cấp một vài người dùng trừu tượng như một virtual private computer;
Ví dụ mỗi user có một home directory.

Kernel mode and user mode

Các kiến trúc bộ xử lý điển hình cho phép CPU tổ chức ít nhất 2 mode: user mode và kernel mode (supervisor mode). Chỉ thị phần cứng cho phép chuyển đổi giữa 2 cái. Tương ứng, vùng bộ nhớ ảo có thể đánh dấu một phần user space hoặc kernel space. Khi chạy với user mode, CPU có thể truy cập chỉ bộ nhớ được đánh dấu là user space; Khi chạy trên kernel mode, CPU có thể truy cập tới cả 2 user và kernel memory space.

Một số hành động có thể được thực thi trong kernel mode. Ví dụ việc thực thi dừng hệ thống, truy cập vào …

Process vs kernel views of the system

Trong nhiều công việc lập trình ngày nay, chúng ta đã quen với việc nghĩ về chương trình như cách hướng tiến trình. Tuy nhiên, khi xem nhiều chủ đề tỏng cuốn sách này, nó có thể là hữu dụng khi có một cái nhìn khác, cái nhìn từ kernel. Để làm rõ hơn, chúng ta từ bây giờ sẽ xem xét mọi thư từ cách nhìn process viewpoint và sau đó là kernel viewpoint.

Một chương trình điển hình có rất nhiều tiến trình. Với mỗi tiến có rất nhiều thứ xuất hiện bất đồng bộ. Mỗi một tiến trình thực thi không biết khi nào nó sẽ được làm việc tiếp, vì nó được lập lịch CPU.

Viết tiếp vào đây

Users and Groups

Mỗi user trên hệ thống có một định danh và người dùng phải thuộc về một groups

Tìm thấy trên /etc/passwd
VD: root:x:0:0:root:/root:/bin/bash
Format: username : encrypted pasword : user id number : user group id: name : home directory : login shell

-rw-r–r– 1 root root 4564 Feb 14 14:08 access.conf
-/d: File hay thư mục
r: read
w: write
x: execute
Owner Group Other

File IO Model

Viết tiếp

Code Viblo 2-1=0???

Đề bài

An đang chơi một trò chơi với các con số.

An có n số nguyên dương: x_1,x_2,..,x_n, Anh ấy có thể thực hiện hành động dưới đây bao nhiêu lần tùy thích: Chọn hai vị trí i và j sao cho x_j < x_ix và thực hiện phép toán x_i = x_i - x_j . Mục tiêu là để cho tổng tất cả các số nhỏ nhất có thể. Hãy giúp An tìm tổng nhỏ nhất đó.

Input
Dòng đầu là số n (2 ≤ n ≤ 100). Dòng thứ hai là n số nguyên: x_1,x_2,…,x_n(1 ≤ x_i ≤ 100).

Output
Tổng nhỏ nhất sau khi thực hiện các hành động

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Đáp án

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import sys

input_str = ""
first = True
for line in sys.stdin:
if first:
first = False
else:
arr = list(map(int, line.split()))
min_store = arr[0]

checker = True
while checker:
checker = False
for index, item in enumerate(arr):
if item != 0:
if item != min_store:
checker = True
if item < min_store:
min_store = item
if item % min_store != 0:
arr[index] = item % min_store
min_store = arr[index]
else:
arr[index] = min_store
print(sum(arr))

Code Viblo The Cross

Đề bài

Đáp án

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys

count_line = 0
arr = []
for line in sys.stdin:
count_line += 1
if count_line == 1:
n = int(line)
else:
arr.append(list(line))

for i in range(1,n-1):
for j in range(1,n-1):
if arr[i][j] == '#' and arr[i - 1][j] == '#' and arr[i + 1][j] == '#' and arr[i][j-1] == '#' and arr[i][j+1] == '#':
arr[i][j] = '.'
arr[i + 1][j] = '.'
arr[i - 1][j] = '.'
arr[i][j + 1] = '.'
arr[i][j - 1] = '.'
for i in range(n):
for j in range(n):
if arr[i][j] == '#':
print('NO')
exit()
print("YES")

Free time Free Time

Đề bài

Nhàn rỗi không có việc gì, An viết một mảng gồm n số được sắp xếp theo thứ tự không giảm, ngồi nhìn chằm chằm, rồi mệt quá, ngủ quên lúc nào ko biết.

Tỉnh dậy, anh đột nhiên phát hiện ra mảng của mình đã bị thay đổi: 2 phần tử của dãy đã bị đổi chỗ cho nhau. Nghi ngờ do bàn tay của người khác hay là do lúc mộng du anh đã tự mình đổi, An muốn tự mình kiểm tra trước. Nếu ta có thể dùng nhiều nhất 1 lần đổi chỗ 2 phần tử để thu được 1 dãy đã được sắp xếp thì đó là do An đã vô tình thay đổi.

Input
Dòng đầu tiên là n (2 ≤ n ≤ 10^5) — cỡ của mảng. Dòng tiếp theo là n số nguyên dương phân tách bởi dấu cách - các số trong mảng

Output
In ra “YES” (không có dấu ngoặc kép) nếu An đã vô tình thay đổi mảng, ko thì in ra “NO”

Resource limits
Execution time: 2 seconds

Memory: 256.00 MB

Đáp án

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import sys

number_of_line = 0
for line in sys.stdin:
number_of_line += 1
if number_of_line == 2:
arr = [int(i) for i in line.split()]

arr_sorted = sorted(arr)

at1 = -1
at2 = -1
for i in range(len(arr)):
if arr[i] != arr_sorted[i]:
if at1 == -1:
at1 = i
elif at2 == -1:
at2 = i
else:
print("NO")
exit()
if at1 == -1 and at2 == -1:
print("YES")
exit()
if arr[at2] == arr_sorted[at1] and arr[at1] == arr_sorted[at2]:
print("YES")
else:
print("NO")