J'ai fait un programme de gestion de la paie en Python!

1.Tout d'abord

Comme le titre l'indique, j'ai fait un programme pour gérer les salaires horaires en Python (^^;) La plus grande partie est terminée et je voudrais le publier.

2. Le processus jusqu'à la création du programme.

Qu'est-ce qui vous est venu à l'esprit, combien avez-vous gagné ce mois-ci après la fin de votre emploi à temps partiel en pleine nuit? C'était le début que je pensais. Quand j'ai remarqué, les oiseaux chantaient et le soleil brillait (^^;) Cela ne s'est pas terminé seul ce jour-là, alors j'ai pu le terminer dans une certaine mesure aujourd'hui après presque trois heures de travail à temps partiel! Peut-être qu'il y a un bug ... Il n'y a aucune fonctionnalité du tout w

C'est un tel programme, mais s'il aide quelqu'un, m (_ _) m

3. À propos du programme

4. Programme réel

salary.py


#-*- coding:utf-8 -*-

import sqlite3
import sys
import datetime

#Choisissez ce que vous voulez faire à partir de maintenant
def  checksalary_or_addtime():
	print "Entrez "C" pour vérifier votre salaire jusqu'à ce mois"
	print "Entrez "A" pour ajouter de nouvelles heures de travail"
	print "* Remarque: en cas d'ajout, vous ne pouvez participer que pour cette année"
	push_word = raw_input(">>> ")
	if push_word == "C" or push_word == "c":
		print "--------------------------------------------------------------"
		print "\n Vérifiez votre salaire jusqu'à ce mois\n"
		check_no = 1
	elif push_word == "A" or push_word == "a":
		check_no = 2
	else:
		print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau\n"
		print "--------------------------------------------------------------"
		check_no = 0
	return check_no

#==== Fonction pour ajouter de nouvelles heures de travail|START====
def alert01(today):
	print "--------------------------------------------------------------"
	print "\n * Attention *"
	print "aujourd'hui%d années%d mois%C'est d jours.\n Actuellement, vous pouvez entrer\n" % (today.year,today.month,today.day)
	if today.month >= 4:
		print "『%1er avril de l'année ~%d années%d mois%jour j »" % (today.year,today.year,today.month,today.day)
	else:
		print "『%1er avril de l'année ~%d années%d mois%jour j »" % (today.year-1,today.year,today.month,today.day)
	print "Seulement pendant.\n Si vous essayez d'entrer une autre période, vous obtiendrez une entrée erronée.\n"
	print "--------------------------------------------------------------"

#Vérifiez si l'entrée était entre janvier et décembre
def check_month(input_word,today):
	if input_word <= 0 or input_word >12:
				return 0
	else:
		if today.month >= 4:
			if input_word <4 or today.month < input_word:
				print "Le mois saisi n'est pas applicable"
				return 0
		else:
			return 1

#Déterminer si les caractères saisis sont des valeurs numériques [Version du mois]
def check_inputword_month(input_word,today):
	check_no = 0
	while check_no == 0:
		if input_word.isdigit() == True:
			input_word = int(input_word)
			check_no = check_month(input_word,today)
		else:
			check_no = 0
		if check_no == 0:
			print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau"
			print "--------------------------------------------------------------"
			print"Veuillez saisir le mois que vous souhaitez ajouter"
			input_word = raw_input(">>> ")
	return input_word

#Assurez-vous que la date saisie se situe dans la plage de dates correcte
def check_day(input_word,input_month,input_year):
	if input_word <= 0 or input_word >31:
		return 0
	else:
		if input_month == 2:
			if input_year%4 == 0:
				if input_year%100 == 0:
					if input_year%400 == 0:
						if input_word>29:
							return 0
						else:
							return 1
					else:
						if input_word>28:
							return 0
				else:
					if input_word>29:
						return 0
			else:
				if input_word>28:
					return 0
		elif input_month == 4 or input_month == 6 or input_month == 9 or input_month == 11:
			if input_word>30:
				return 0
			else:
				return 1
		else:
			if input_word>31:
				return 0
			else:
				return 1


#Juger si les caractères saisis sont des valeurs numériques [version jour]
def check_inputword_day(input_word,today,input_month,input_year):
	check_no = 0
	while check_no == 0:
		if input_word.isdigit() == True:
			input_word = int(input_word)
			if today.month == input_month:
				if today.day < input_word or input_word <= 0:
					check_no = 0
				else:
					check_no = 1
			else:
				check_no = check_day(input_word,input_month,input_year)
		else:
			check_no = 0
		if check_no == 0:
			print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau"
			print "--------------------------------------------------------------"
			print"Saisissez le mois que vous souhaitez ajouter."
			input_word = raw_input(">>> ")
	return input_word

#Juger si les caractères saisis sont des valeurs numériques [Version temporelle]
def check_inputword_time(input_word):
	check_no = 0
	while check_no == 0:
		if input_word.isdigit() == True:
			input_word = int(input_word)
			check_no = 1
		else:
			check_no = 0
		if check_no == 0:
			print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau"
			print "--------------------------------------------------------------"
			print"Saisissez le mois que vous souhaitez ajouter."
			input_word = raw_input(">>> ")
	return input_word

#Confirmer pour continuer
def  check_continue():
	print "Entrez "Y" pour continuer tel quel ou "N" pour arrêter le programme."
	push_word = raw_input(">>> ")
	if push_word == "Y" or push_word == "y":
		check_no = 1
	elif push_word == "n" or push_word == "N":
		check_no = 2
	else:
		print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau\n"
		print "--------------------------------------------------------------"
		check_no = 0
	return check_no

#==== Fonction pour ajouter de nouvelles heures de travail|FINISH====

#==== Fonction liée à la confirmation du salaire jusqu'au présent de ce mois|START====

#Vérifiez si l'année saisie est anormale
def check_year_cs(input_word,today):
	if input_word > today.year or input_word <= 0:
		return 0
	else:
		return 1

#Déterminer si les caractères saisis sont des valeurs numériques [Version de l'année]
def check_inputword_year_cs(input_word,today):
	check_no = 0
	while check_no == 0:
		if input_word.isdigit() == True:
			input_word = int(input_word)
			check_no = check_year_cs(input_word,today)
		else:
			check_no = 0
		if check_no == 0:
			print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau"
			print "--------------------------------------------------------------"
			print"Veuillez saisir le mois que vous souhaitez vérifier"
			input_word = raw_input(">>> ")
	return input_word

#Vérifiez si l'entrée était entre janvier et décembre
def check_month_cs(input_word,today,input_word_year):
	if input_word <= 0 or input_word >12:
		return 0
	else:
		if input_word_year == today.year:
			if input_word > today.month:
				return 0
			else:
				return 1
		else:
			return 1

#Déterminer si les caractères saisis sont des valeurs numériques [Version du mois]
def check_inputword_month_cs(input_word,today,input_word_year):
	check_no = 0
	while check_no == 0:
		if input_word.isdigit() == True:
			input_word = int(input_word)
			check_no = check_month_cs(input_word,today,input_word_year)
		else:
			check_no = 0
		if check_no == 0:
			print "\n Entrée incorrecte confirmée. Veuillez entrer à nouveau"
			print "--------------------------------------------------------------"
			print"Veuillez saisir le mois que vous souhaitez vérifier"
			input_word = raw_input(">>> ")
	return input_word

def check_day_cs(input_month,input_year):
	if input_month == 2:
		if input_year%4 == 0:
			if input_year%100 == 0:
				if input_year%400 == 0:
					return 29
				else:
					return 28
			else:
				return 29
		else:
			return 28
	elif input_month == 4 or input_month == 6 or input_month == 9 or input_month == 11:
		return 30
	else:
		return 31

#==== Fonction liée à la confirmation du salaire jusqu'au présent de ce mois|FINISH====

#Vérifier le salaire jusqu'à ce mois
def check_salary(db,cur):
	today = datetime.date.today()

	print "Veuillez saisir l'année où vous souhaitez vérifier votre salaire"
	check_salary_year = raw_input(">>> ")
	check_salary_year = check_inputword_year_cs(check_salary_year,today)
	print check_salary_year

	print "Veuillez saisir le mois où vous souhaitez vérifier votre salaire"
	check_salary_month = raw_input(">>> ")
	check_salary_month = check_inputword_month_cs(check_salary_month,today,check_salary_year)

	if check_salary_month == today.month and check_salary_year == today.year:
		j = today.day + 1
	else:
		check_salary_day = check_day_cs(check_salary_month,check_salary_year)
		j = check_salary_day + 1
	n_time = [0] * j
	s_time = [0] * j
	sum_n_time = 0
	sum_s_time = 0
	for i in xrange(1,j):
		sql = "select * from sms where days = '%d années%d mois%jour j'" % (check_salary_year,check_salary_month,i)
		row = cur.execute(sql)
		for salary_time in row:
			n_time[i]=salary_time[1]
			s_time[i]=salary_time[2]
	for i in xrange(1,today.day+1):
		sum_n_time = sum_n_time + n_time[i]
		sum_s_time = sum_s_time + s_time[i]
	sum_salary = sum_n_time * 868 + sum_s_time * 868 * 1.35
	print "--------------------------------------------------------------"
	if check_salary_month == today.month and check_salary_year == today.year:
		print "votre%d années%d mois%Le salaire à jour d...\n\n%d yen\n\est n" % (check_salary_year,check_salary_month,today.day,sum_salary)
		
	else:
		print "votre%d années%d Salaire mensuel...\n\n%d yen\n\est n" % (check_salary_year,check_salary_month,sum_salary)
	print "--------------------------------------------------------------"
	

#Nouvelles heures de travail ajoutées
def add_time(db,cur):
	today = datetime.date.today()
	alert01(today)

	print "Veuillez saisir le mois que vous souhaitez ajouter"
	input_month = raw_input(">>> ")
	input_month = check_inputword_month(input_month,today)
	input_year = today.year
	if today.month < 4:
		if input_month >= 4:
			input_year = input_year - 1
	print "Veuillez saisir la date que vous souhaitez ajouter"
	input_day = raw_input(">>> ")
	input_day = check_inputword_day(input_day,today,input_month,input_year)
	print "--------------------------------------------------------------"
	print "\n Le jour que vous souhaitez ajouter...\t%d années%d mois%jour j\t" % (input_year,input_month,input_day)
	print "--------------------------------------------------------------"
	check_no = 0
	while check_no == 0:
		check_no = check_continue()
	if check_no == 1:
		print "--------------------------------------------------------------"
		print "\n Vérifiez votre salaire jusqu'à ce mois\n"
	elif check_no == 2:
		print "confirmé. Quitter le programme"
		sys.exit()

	print "\n%d années%d mois%Veuillez saisir le nombre total d'heures travaillées sur d jours" % (input_year,input_month,input_day)
	input_totaltime = raw_input(">>> ")
	input_totaltime = check_inputword_time(input_totaltime)
	print "--------------------------------------------------------------"
	print "\n%Spécialement ajouté en d heures(Salaire de minuit, etc.)Veuillez saisir le nombre d'heures dans le fuseau horaire." % input_totaltime
	input_sp_time = raw_input(">>> ")
	input_sp_time = check_inputword_time(input_sp_time)			
	input_no_time = input_totaltime - input_sp_time
	print "--------------------------------------------------------------"
	print "\n Enregistrez le contenu suivant dans la base de données.\n"
	print "--------------------------------------------------------------"
	print "\n%d années%d mois%jour j" % (input_year,input_month,input_day)
	print "Nombre total d'heures:%d" % input_totaltime
	print "Nombre d'heures dans le fuseau horaire soumis à un ajout spécial:%d" % input_sp_time
	print "--------------------------------------------------------------"
	#-----------Note-----------
	#Assurez-vous maintenant que vous l'avez déjà entré à la même date et demandez si vous voulez l'écraser s'il a été entré.
	#Pour les jours déjà saisis, sélectionnez uniquement écraser enregistrer. C'est ennuyant.
	#Si déjà entré"Y", Si ce n'est déjà fait"N"rends le.
	sql = "select case when days = '%d années%d mois%jour j' then 'Y' else 'N' end from sms;" % (input_year,input_month,input_day)
	row = cur.execute(sql)
	for double_check in row:
		if double_check[0] == "Y":
			print "Déjà%d années%d mois%Les données ont été saisies le jour d."
			print "Voulez-vous continuer le travail de mise à jour?"
			check_no = 0
			while check_no == 0:
				check_no = check_continue()
				if check_no == 1:
					print "confirmé. Mettons à jour les données"
					sql = "update sms set n_wt = %d and s_wt = %d where days = '%d années%d mois%jour j'" % (input_no_time,input_sp_time,input_year,input_month,input_day)
					cur.execute(sql)
					db.commit()
					print "La mise à jour des données est terminée. Voulez-vous continuer à taper?"
				elif check_no == 2:
					print "confirmé. Quitter le programme"
					sys.exit()
		elif double_check[0] == "N":
			sql = "insert into sms values('%d années%d mois%jour j',%d,%d)" % (input_year,input_month,input_day,input_no_time,input_sp_time)
			cur.execute(sql)
			db.commit()
			print("Ajout de données à la base de données. Voulez-vous continuer à taper?")
	check_no = 0
	while check_no == 0:
		check_no = check_continue()
	if check_no == 1:
		print "--------------------------------------------------------------"
		print "\n ajoute à la base de données.\n"
		return 2
	elif check_no == 2:
		print "confirmé. Quittez le programme. Je vous remercie pour votre travail acharné"
		cur.close()
		db.close()
		sys.exit()

#Principale
if __name__ == '__main__':
	db = sqlite3.connect("salary.db")
	cur = db.cursor()
	sql = "create table sms(days,n_wt,s_wt);"

	try:
		cur.execute(sql)
		print "--------------------------------------------------------------"
		print "\n Création d'une base de données..."
		print "Accès réussi à la base de données"
		print "--------------------------------------------------------------"
	except sqlite3.OperationalError:
		print "--------------------------------------------------------------"
		print "\n L'accès à la base de données a réussi\n"
		print "--------------------------------------------------------------"

	check_no = checksalary_or_addtime()

	while check_no == 0:
		check_no = checksalary_or_addtime()

	if check_no == 1:
		check_salary(db,cur)
	elif check_no == 2:
		while check_no == 2:
			check_no == add_time(db,cur)

5. Impressions

Il y a beaucoup de choses à étudier en créant ce programme, Je le savais, mais j'ai réalisé que j'étais encore immature (^^;) De plus, comme l'utilisateur n'obtient pas toujours l'entrée comme prévu, il est assez ennuyeux de devoir porter un jugement à chaque fois que je demande une entrée, je me suis senti pour la première fois cette fois (^^) ^;) Mais après tout, c'est amusant! !!

Recommended Posts

J'ai fait un programme de gestion de la paie en Python!
J'ai créé un programme cryptographique César en Python.
J'ai fait un texte Python
J'ai fait un programme pour vérifier la taille d'un fichier avec Python
J'ai fait un Line-bot avec Python!
J'ai fait une loterie avec Python.
J'ai créé un démon avec Python
Lors de l'écriture d'un programme en Python
J'ai fait un jeu de frappe simple avec tkinter de Python
J'ai créé un lecteur de flux rapide en utilisant feedparser en Python
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai fait un jeu de puzzle (comme) avec Tkinter of Python
J'ai fait un compteur de caractères avec Python
Ecrire un programme de chiffrement Caesar en Python
J'ai fait une carte hexadécimale avec Python
Après avoir étudié Python3, j'ai créé un Slackbot
J'ai créé un outil de mot de passe en Python.
J'ai fait un jeu rogue-like avec Python
J'ai fait un simple blackjack avec Python
J'ai créé un fichier de configuration avec Python
J'ai fait un simulateur de neurones avec Python
J'ai créé un programme qui résout la recherche d'erreur en quelques secondes
J'ai créé un programme de sortie de table de nombres premiers dans différentes langues
〇✕ J'ai fait un jeu
J'ai créé un fichier de dictionnaire python pour Neocomplete
Un mémo que j'ai écrit un tri rapide en Python
J'ai créé une application graphique avec Python + PyQt5
Je veux créer une fenêtre avec Python
J'ai essayé de jouer à un jeu de frappe avec Python
J'ai essayé de créer un bloqueur de filles pourries sur Twitter avec Python ①
J'ai écrit une classe en Python3 et Java
Un programme qui supprime les instructions en double en Python
[Python] J'ai créé un téléchargeur Youtube avec Tkinter.
Notes de programme simples Pub / Sub en Python
J'ai essayé d'ajouter un module Python 3 en C
J'ai fait un jeu de cueillette avec Python
Made Mattermost Bot avec Python (+ Flask)
Création du wrapper d'API Qiita Python "qiipy"
J'ai créé une application Web en Python qui convertit Markdown en HTML
J'ai créé un bot Discord en Python qui se traduit quand il réagit
J'ai créé un script en python pour convertir des fichiers .md au format Scrapbox
[IOS] J'ai créé un widget qui affiche la tendance de Qiita dans Pythonista3. [Python]
Prendre une capture d'écran en Python
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
J'ai fait un Twitter BOT avec GAE (python) (avec une référence)
J'ai écrit python en japonais
Créer une fonction en Python
Créer un dictionnaire en Python
Ecrire un programme de dynamique moléculaire super simple en python
J'ai effectué un processus de connexion / déconnexion en utilisant Python's Bottle.
Recevez des données de dictionnaire à partir de programmes Python avec AppleScript
J'ai fait un jeu d'éclairage de sapin de Noël avec Python
J'ai fait un blackjack avec du python!
Je veux écrire en Python! (2) Écrivons un test
J'ai créé une application de notification de nouvelles en ligne avec Python