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.
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
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)
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