Ich habe ein Pay-Management-Programm in Python erstellt!

1. Zuallererst

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.

2. Der Prozess bis zur Programmerstellung.

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

3. Über das Programm

4. Aktuelles Programm

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)

5. Eindrücke

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

Ich habe ein Pay-Management-Programm in Python erstellt!
Ich habe ein Caesar-Kryptografieprogramm in Python erstellt.
Ich habe einen Python-Text gemacht
Ich habe ein Programm erstellt, um die Größe einer Datei mit Python zu überprüfen
Ich habe einen Line-Bot mit Python gemacht!
Ich habe mit Python eine Lotterie gemacht.
Ich habe mit Python einen Daemon erstellt
Beim Schreiben eines Programms in Python
Ich habe ein einfaches Tippspiel mit tkinter of Python gemacht
Ich habe einen schnellen Feed-Reader mit Feedparser in Python erstellt
Ich habe versucht, "ein Programm, das doppelte Anweisungen in Python entfernt"
Ich habe mit Tkinter of Python ein Puzzlespiel (wie) gemacht
Ich habe mit Python einen Zeichenzähler erstellt
Schreiben Sie ein Caesar-Verschlüsselungsprogramm in Python
Ich habe mit Python eine Hex-Map erstellt
Nachdem ich Python3 studiert hatte, machte ich einen Slackbot
Ich habe ein Passwort-Tool in Python erstellt.
Ich habe mit Python ein schurkenhaftes Spiel gemacht
Ich habe mit Python einen einfachen Blackjack gemacht
Ich habe mit Python eine Einstellungsdatei erstellt
Ich habe mit Python einen Neuronensimulator erstellt
Ich habe ein Programm erstellt, das die Fehlersuche in Sekunden löst
Ich habe ein Ausgabeprogramm für Primzahlentabellen in verschiedenen Sprachen erstellt
〇✕ Ich habe ein Spiel gemacht
Ich habe eine Python-Wörterbuchdatei für Neocomplete erstellt
Ein Memo, das ich schnell in Python geschrieben habe
Ich habe eine GUI-App mit Python + PyQt5 erstellt
Ich möchte mit Python ein Fenster erstellen
Ich habe versucht, mit Python ein Tippspiel zu spielen
Ich habe versucht, mit Python einen Twitter-Blocker für faule Mädchen zu machen
Ich habe eine Klasse in Python3 und Java geschrieben
Ein Programm, das doppelte Anweisungen in Python entfernt
[Python] Ich habe mit Tkinter einen Youtube Downloader erstellt.
Einfache Pub / Sub-Programmhinweise in Python
Ich habe versucht, ein Python 3-Modul in C hinzuzufügen
Ich habe mit Python ein Bin-Picking-Spiel gemacht
Mattermost Bot mit Python gemacht (+ Flask)
Python Qiita API Wrapper "qiipy" gemacht
Ich habe eine Webanwendung in Python erstellt, die Markdown in HTML konvertiert
Ich habe in Python einen Discord-Bot erstellt, der übersetzt, wenn er reagiert
Ich habe ein Skript in Python erstellt, um MDD-Dateien in das Scrapbox-Format zu konvertieren
[IOS] Ich habe ein Widget erstellt, das den Trend von Qiita in Pythonista3 anzeigt. [Python]
Machen Sie einen Screenshot in Python
Ich möchte eine Variable in einen Python-String einbetten
Ich möchte Timeout einfach in Python implementieren
Ich habe einen Twitter BOT mit GAE (Python) gemacht (mit einer Referenz)
Ich habe Python auf Japanisch geschrieben
Erstellen Sie eine Funktion in Python
Erstellen Sie ein Wörterbuch in Python
Schreiben Sie ein super einfaches molekulardynamisches Programm in Python
Ich habe einen Anmelde- / Abmeldevorgang mit Python's Bottle durchgeführt.
Empfangen Sie Wörterbuchdaten von Python-Programmen mit AppleScript
Ich habe mit Python ein Weihnachtsbaum-Beleuchtungsspiel gemacht
Ich habe einen Blackjack mit Python gemacht!
Ich möchte in Python schreiben! (2) Schreiben wir einen Test
Ich habe mit Python eine App für die Benachrichtigung über Netznachrichten erstellt