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