Perangkat lunak untuk lomba uji waktu


11

Saya mencari perangkat lunak untuk melakukan balapan time-trial lokal. Akan ada sekitar 50 pembalap: cukup besar untuk membuat pekerjaan mempersiapkan hasil balapan dengan pena dan kertas agak sulit dan memakan waktu, tetapi terlalu kecil untuk menggunakan sistem chip balap lengkap.

Pengendara akan memulai dengan interval satu menit dan pada garis finish akan ada seorang pria mengumumkan waktu kepada operator. Jadi operator hanya perlu memasukkan waktu pengendara ke program. Program harus dapat menghasilkan tabel hasil dengan cepat saat pengendara melewati batas.

Saya mengerti bahwa membuat perangkat lunak semacam ini tidak terlalu sulit, tetapi saya hanya berharap ada solusi freeware yang tersedia yang dapat saya gunakan untuk acara saya. Tolong beri tahu saya jika Anda pernah mendengarnya.


Dalam 1 jam, saya akan membuatnya dengan python :)
Tim

Ya, benar, saya tahu itu relatif mudah untuk menulisnya sendiri. Tetapi ketika saya mulai memikirkan semua fitur berguna yang ingin saya miliki di sana, seperti mengedit tabel dengan hasil (secara otomatis memindahkan entri jika diperlukan), membuat output ramah printer, mengekspor ke excel, memfilter hasil sesuai dengan misalkan jenis sepeda (sepeda jalan vs aero) atau kelompok umur, dll. Saya menyadari bahwa mungkin lebih mudah berinvestasi di googling :-)
krakovjak

4
Mengapa tidak menggunakan spreadsheet saja?
200_success

1
Saya memberikan suara untuk menutup pertanyaan ini sebagai di luar topik karena perangkat lunak tentang bersepeda adalah di luar topik. Silakan bertanya di softwarerecs.stackexchange.com dan gunakan tag untuk bersepeda.
Criggie

Jawaban:


7

Ini akan berjalan dalam python (hanya 3.X, bukan 2.7), bebas untuk menginstal bahasa pemrograman. Cukup simpan yang berikut ini sebagai akhiran file .py- mis timetrials.py. Kemudian buka IDLE3 (menu mulai), dan buka file ( Ctrl+ O). Akhirnya, tekan F5untuk memulainya.

import datetime
from operator import itemgetter

def get_int_input(prompt, min_=0, max_=None):
    """Get a valid integer input."""
    while True:
        try:
            i = int(input(prompt))
        except ValueError:
            print("Please enter an integer.")
        else:
            if min_ is not None and i < min_:
                print("Must be at least {0}.".format(min_))
                continue
            elif max_ is not None and i > max_:
                print("Must be at most {0}.".format(max_))
                continue
            return i

def get_time():
    """"Get a time input as a datetime.time object."""
    h = get_int_input("Hours (0-23): ", max_=23)
    m = get_int_input("Minutes (0-59): ", max_=59)
    s = get_int_input("Seconds (0-59): ", max_=59)
    ms = get_int_input("Milliseconds (0-999): ", max_=999)
    return datetime.time(h, m, s, ms*1000)

def get_results(competitors):
    """Get a dict of finishing times for all competitors."""
    results = {}
    for _ in range(competitors):
        while True:
            competitor = get_int_input("Enter competitor number: ", min_=1, max_=competitors+1)
            if competitor not in results:
                results[competitor] = get_time()
                break
            print("Time already entered.")
        print_results(results)
    return results

def print_results(results):
    """Display the race results in a table, fastest first."""
    linet = '┌' + "─" * 12 + '┬' + '─' * 17 + '┐'
    linec = '├' + "─" * 12 + '┼' + '─' * 17 + '┤'
    lineb = '└' + "─" * 12 + '┴' + '─' * 17 + '┘'
    print(linet)
    print("│ Competitor │ Time (H:M:S)    │")
    for n, t in sorted(results.items(), key=itemgetter(1)):
        print(linec)
        print("│ {0:<10d} │ {1!s:<15} │".format(n, t))
    print(lineb)

def race():
    """Handle race times for a user-specified number of competitors."""
    n = get_int_input("Enter number of competitors (2-): ", min_=2)
    results = get_results(n)

if __name__ == "__main__":
    race()

Ketika semua orang selesai, itu akan terlihat seperti ini:

┌──────────────┬───────────────┐  
│  Con Num     │ Time H:M:S    │  
├──────────────┼───────────────┤  
│  1           │ 5:4:3.2       │  
├──────────────┼───────────────┤  
│  2           │ 8:7:6.5       │  
├──────────────┼───────────────┤  
│  3           │ 2:2:2.2       │  
└──────────────┴───────────────┘  

3
Semua baik dan bagus, tetapi membeli paket komersial setidaknya memberi Anda seseorang untuk mengeluh ketika Anda menemukan bug.
PeteH

3
Jangan ragu untuk mengeluh kepada saya di sini, saya cukup sedih untuk selalu berada di SE!
Tim

2
Usaha yang bagus! Anda harus mempertimbangkan menjalankan codereview.stackexchange.com yang lalu , meskipun - Anda tidak sepenuhnya mematuhi panduan gaya dan ada banyak pengulangan (mis. Pertimbangkan untuk menambahkan fungsi def get_int_input(prompt, min_=None, max_=None):). Juga, strftimeakan menghemat beberapa pekerjaan.
jonrsharpe

@jon hanya melakukan itu sekarang ... Ini rumit karena variasi ... 15 menit;)
Tim

@jon Bahkan, 13 menit kemudian ... pengeditan ;-)
Tim

3

Salah satu pilihan adalah RaceSplitter . Ini adalah aplikasi iOS, biaya $ 35. Anda membutuhkan iPad, iPhone, atau iPod Touch yang sesuai untuk menjalankannya.

Anda dapat memasukkan daftar awal terlebih dahulu. Kemudian selama balapan, Anda hanya perlu memasukkan nomor pengendara saat mereka melewati garis finish, dan itu akan mencatat waktu mereka. Anda kemudian dapat mempublikasikan hasilnya di situs web, dan mengekspor ke Excel dll.

Saya belum mencoba ini sendiri, tetapi saya telah melihatnya digunakan di beberapa balapan lokal. Tampaknya berfungsi dengan baik untuk pengaturan waktu, dan mereka mendapatkan hasilnya secara online segera setelah balapan.


Ini persis seperti yang saya butuhkan! Terima kasih!
krakovjak

1

Kami telah menggunakan aplikasi untuk ponsel android yang dibuat oleh Liuto. Itu hebat, mudah dipelajari / digunakan dan murah - hanya $ 1,11. Pada dasarnya, ketika masing-masing pengendara berbunyi dengan nomor mulai, Anda mengetuk nomor yang sesuai pada pengembalian mereka dan perhitungan waktu mereka terhadap keseluruhan waktu yang berlalu selesai. Jepret!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.