Wie der Titel schon sagt, habe ich ein Programm zur Verwaltung des Stundenlohns in Python erstellt (^^;) Das meiste davon wurde fertiggestellt und ich möchte es veröffentlichen.
Was ist Ihnen in den Sinn gekommen, wie viel haben Sie diesen Monat verdient, nachdem Ihr Teilzeitjob mitten in der Nacht beendet wurde? Es war der Anfang, an den ich dachte. Als ich bemerkte, sangen die Vögel und die Sonne schien (^^;) Es endete nicht allein an diesem Tag, so dass ich es heute bis zu einem gewissen Grad nach fast drei Stunden Beendigung meines Teilzeitjobs fertigstellen konnte! Vielleicht gibt es einen Fehler ... Es gibt überhaupt keine Funktionalität w
Es ist so ein Programm, aber wenn es jemandem hilft, m (_ _) m
salary.py
#-*- coding:utf-8 -*-
import sqlite3
import sys
import datetime
#Wählen Sie aus, was Sie von nun an tun möchten
def checksalary_or_addtime():
print "Geben Sie "C" ein, um Ihr Gehalt bis zu diesem Monat zu überprüfen"
print "Geben Sie "A" ein, um neue Arbeitszeiten hinzuzufügen"
print "* Hinweis: Im Falle einer Hinzufügung können Sie nur für dieses Jahr teilnehmen"
push_word = raw_input(">>> ")
if push_word == "C" or push_word == "c":
print "--------------------------------------------------------------"
print "\n Überprüfen Sie Ihr Gehalt bis zu diesem Monat\n"
check_no = 1
elif push_word == "A" or push_word == "a":
check_no = 2
else:
print "\n Falsche Eingabe bestätigt. Bitte nochmal eingeben\n"
print "--------------------------------------------------------------"
check_no = 0
return check_no
#==== Funktion zum Hinzufügen neuer Arbeitszeiten|START====
def alert01(today):
print "--------------------------------------------------------------"
print "\n * Vorsicht *"
print "heute%d Jahre%d Monat%Es ist d Tage.\n Derzeit können Sie eingeben\n" % (today.year,today.month,today.day)
if today.month >= 4:
print "『%1. April d Jahr ~%d Jahre%d Monat%d Tag ”" % (today.year,today.year,today.month,today.day)
else:
print "『%1. April d Jahr ~%d Jahre%d Monat%d Tag ”" % (today.year-1,today.year,today.month,today.day)
print "Nur während.\n Wenn Sie versuchen, einen anderen Zeitraum einzugeben, wird eine falsche Eingabe angezeigt.\n"
print "--------------------------------------------------------------"
#Überprüfen Sie, ob die Eingabe zwischen Januar und Dezember erfolgte
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 "Der eingegebene Monat ist nicht anwendbar"
return 0
else:
return 1
#Beurteilen Sie, ob die eingegebenen Zeichen numerische Werte sind [Monatsversion]
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 Falsche Eingabe bestätigt. Bitte nochmal eingeben"
print "--------------------------------------------------------------"
print"Bitte geben Sie den Monat ein, den Sie hinzufügen möchten"
input_word = raw_input(">>> ")
return input_word
#Stellen Sie sicher, dass das eingegebene Datum im richtigen Datumsbereich liegt
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
#Beurteilen Sie, ob die eingegebenen Zeichen numerische Werte sind [Tagesversion]
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 Falsche Eingabe bestätigt. Bitte nochmal eingeben"
print "--------------------------------------------------------------"
print"Geben Sie den Monat ein, den Sie hinzufügen möchten."
input_word = raw_input(">>> ")
return input_word
#Beurteilen Sie, ob die eingegebenen Zeichen numerische Werte sind [Zeitversion]
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 Falsche Eingabe bestätigt. Bitte nochmal eingeben"
print "--------------------------------------------------------------"
print"Geben Sie den Monat ein, den Sie hinzufügen möchten."
input_word = raw_input(">>> ")
return input_word
#Bestätigen Sie, um fortzufahren
def check_continue():
print "Geben Sie "Y" ein, um fortzufahren, oder "N", um das Programm zu stoppen."
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 Falsche Eingabe bestätigt. Bitte nochmal eingeben\n"
print "--------------------------------------------------------------"
check_no = 0
return check_no
#==== Funktion zum Hinzufügen neuer Arbeitszeiten|FINISH====
#==== Funktion zur Bestätigung des Gehalts bis zur Gegenwart dieses Monats|START====
#Überprüfen Sie, ob das eingegebene Jahr abnormal ist
def check_year_cs(input_word,today):
if input_word > today.year or input_word <= 0:
return 0
else:
return 1
#Beurteilen Sie, ob die eingegebenen Zeichen numerische Werte sind [Jahresversion]
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 Falsche Eingabe bestätigt. Bitte nochmal eingeben"
print "--------------------------------------------------------------"
print"Bitte geben Sie den Monat ein, den Sie überprüfen möchten"
input_word = raw_input(">>> ")
return input_word
#Überprüfen Sie, ob die Eingabe zwischen Januar und Dezember erfolgte
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
#Beurteilen Sie, ob die eingegebenen Zeichen numerische Werte sind [Monatsversion]
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 Falsche Eingabe bestätigt. Bitte nochmal eingeben"
print "--------------------------------------------------------------"
print"Bitte geben Sie den Monat ein, den Sie überprüfen möchten"
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
#==== Funktion zur Bestätigung des Gehalts bis zur Gegenwart dieses Monats|FINISH====
#Überprüfen Sie das Gehalt bis zu diesem Monat
def check_salary(db,cur):
today = datetime.date.today()
print "Bitte geben Sie das Jahr ein, in dem Sie Ihr Gehalt überprüfen möchten"
check_salary_year = raw_input(">>> ")
check_salary_year = check_inputword_year_cs(check_salary_year,today)
print check_salary_year
print "Bitte geben Sie den Monat ein, in dem Sie Ihr Gehalt überprüfen möchten"
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 Jahre%d Monat%d Tag'" % (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 "Ihre%d Jahre%d Monat%Das aktuelle Gehalt d...\n\n%d Yen\n\ist n" % (check_salary_year,check_salary_month,today.day,sum_salary)
else:
print "Ihre%d Jahre%d Monatsgehalt...\n\n%d Yen\n\ist n" % (check_salary_year,check_salary_month,sum_salary)
print "--------------------------------------------------------------"
#Neue Arbeitszeiten hinzugefügt
def add_time(db,cur):
today = datetime.date.today()
alert01(today)
print "Bitte geben Sie den Monat ein, den Sie hinzufügen möchten"
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 "Bitte geben Sie das Datum ein, das Sie hinzufügen möchten"
input_day = raw_input(">>> ")
input_day = check_inputword_day(input_day,today,input_month,input_year)
print "--------------------------------------------------------------"
print "\n Der Tag, den Sie hinzufügen möchten...\t%d Jahre%d Monat%d Tag\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 Überprüfen Sie Ihr Gehalt bis zu diesem Monat\n"
elif check_no == 2:
print "Bestätigt. Beenden Sie das Programm"
sys.exit()
print "\n%d Jahre%d Monat%Bitte geben Sie die Gesamtzahl der an d Tagen geleisteten Arbeitsstunden ein" % (input_year,input_month,input_day)
input_totaltime = raw_input(">>> ")
input_totaltime = check_inputword_time(input_totaltime)
print "--------------------------------------------------------------"
print "\n%Speziell in d Stunden hinzugefügt(Mitternachtsgehalt usw.)Bitte geben Sie die Anzahl der Stunden in der Zeitzone ein." % 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 Speichern Sie die folgenden Inhalte in der Datenbank.\n"
print "--------------------------------------------------------------"
print "\n%d Jahre%d Monat%d Tag" % (input_year,input_month,input_day)
print "Gesamtzahl der Stunden:%d" % input_totaltime
print "Anzahl der Stunden in der Zeitzone unter besonderer Berücksichtigung:%d" % input_sp_time
print "--------------------------------------------------------------"
#-----------Memo-----------
#Stellen Sie nun sicher, dass Sie es bereits am selben Datum eingegeben haben, und fragen Sie, ob Sie es überschreiben möchten, wenn es eingegeben wurde.
#Wählen Sie für die bereits eingegebenen Tage nur Speichern überschreiben aus. Es ist nervig.
#Wenn bereits eingegeben"Y", Wenn nicht bereits eingegeben"N"Gib es zurück.
sql = "select case when days = '%d Jahre%d Monat%d Tag' 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 "Bereits%d Jahre%d Monat%Die Daten wurden am Tag d eingegeben."
print "Möchten Sie die Update-Arbeit fortsetzen?"
check_no = 0
while check_no == 0:
check_no = check_continue()
if check_no == 1:
print "Bestätigt. Lassen Sie uns die Daten aktualisieren"
sql = "update sms set n_wt = %d and s_wt = %d where days = '%d Jahre%d Monat%d Tag'" % (input_no_time,input_sp_time,input_year,input_month,input_day)
cur.execute(sql)
db.commit()
print "Die Datenaktualisierung ist abgeschlossen. Möchten Sie weiter tippen?"
elif check_no == 2:
print "Bestätigt. Beenden Sie das Programm"
sys.exit()
elif double_check[0] == "N":
sql = "insert into sms values('%d Jahre%d Monat%d Tag',%d,%d)" % (input_year,input_month,input_day,input_no_time,input_sp_time)
cur.execute(sql)
db.commit()
print("Daten zur Datenbank hinzugefügt. Möchten Sie weiter tippen?")
check_no = 0
while check_no == 0:
check_no = check_continue()
if check_no == 1:
print "--------------------------------------------------------------"
print "\n fügt der Datenbank hinzu.\n"
return 2
elif check_no == 2:
print "Bestätigt. Beenden Sie das Programm. Danke für deine harte Arbeit"
cur.close()
db.close()
sys.exit()
#Maine
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 Erstellt eine Datenbank..."
print "Erfolgreicher Zugriff auf die Datenbank"
print "--------------------------------------------------------------"
except sqlite3.OperationalError:
print "--------------------------------------------------------------"
print "\n Auf die Datenbank wurde erfolgreich zugegriffen\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)
Es gibt viele Dinge zu studieren, wenn Sie dieses Programm erstellen. Ich wusste es, aber mir wurde klar, dass ich noch unreif war (^^;) Da der Benutzer die Eingabe nicht immer wie erwartet erhält, ist es ziemlich ärgerlich, jedes Mal ein Urteil fällen zu müssen, wenn ich zur Eingabe auffordere (^), das ich zum ersten Mal fühlte (^) ^;) Aber es macht doch Spaß! !!
Recommended Posts