Auftragsverwaltung mit ksh sed awk und ex

ninjinjetlee

New Member
Hi alle zusammen!

Ich hoffe, ich bin hier im richtigen Forum und ihr könnt mir helfen. Ich bin ein Anfänger und möchte mich mit der Shell Programmierung anfreunden.
Schlage mich schon sehr lange damit herum, hab Bücher gelesen und das Internet durchgestöbert, komme nicht weiter und könnte schreien ;'( vor Frust!!!
Wer kann mir bitte bitte helfen.
Hab Solaris auf meinem Rechner laufen.
Also: Ich muss eine Auftragsveraltung mit Hilfe der ksh sed ex und awk programmieren.
Andere Programmiersprachen wie Perl usw. kommen nicht in Frage.

So, hier die Angabe:

Zu entwickeln ist eine kleine Auftragsverwaltung, die folgendes leistet:

Kunden (Name, Adresse, Telefonnumer, Ansprechperson)
können erfasst, geändert und gelöscht werden.

Mitarbeiter können erfasst, geändert und gelöscht werden.

Aufträge(Kunde, Auftragsbezeichnung, Auftragsbeginn, geplantes Ende, Preis, verantwortlicher Mitarbeiter)
können erfasst, geändert und gelöscht werden.

Einen offen Auftrag kann man abrechnen, dadurch gilt dieser Auftrag als erledigt,
eine entsprechende Rechnung ist automatisch zu generieren.
Dabei soll eine Volagedatei verwendet werden(analog Serienbrief), die das Aussehen des Briefs den "Rahmentext"festlegt.

Abfrage aller offenen Aufträge mit Gesamtpreis bis zu einem einzugegebenen Datum.

Abfrage aller erledigten/abgerechneten Aufträge in einem bestimmten Zeitraum mit Gesamtpreis/Unsatz. in diesem Zeitraum.

Abfrage aller überfälligen Aufträge (wo das geplante Ende schon vorbei ist).

Auswertung über Kunden: Eine Auswertung zeigt die Umsätze der Kunden in einem auszuwählenden Zeitraum.
Die Liste ist so zu sortieren, dass der Kunde mit dem grössten Umsatz als erster angeführt wird.


Mitarbeiterauswertung, die den Umsatz der verantwortlichen Mitarbeiter in einem Zeitraum gegenüberstellt.


Ja, ich weiss, es ist nicht wenig.
Aber ich bin für jede Lösung dankbar.

Ich habe auch schon ein paar Scripte geschrieben.

#! /usr/bin/ksh
#
# neuen Kunden erfassen
#

Dateiname=/Kundendaten

print -n "Nachname: "
read nachname
print -n "Vorname: "
read vorname
print -n "Adresse: "
read adresse
print -n "Telefonnummer: "
read telefonnummer
print -n "Ansprechperson: "
read ansprechperson


echo $nachname $vorname $adresse $telefonnummer $ansprechperson 'date' >> $Dateiname
sort -n Kundendaten

...funzt wunderbar :rolleyes: , aber wenn wer einen besseren Vorschlag hat, dann bitte raus damit, bin gerne bereit die bessere Lösung zu anzunehmen.

#! /usr/bin/ksh
#
# delkunde
# loescht Kunde aus Kundendatei


Dateiname=/Kundendaten

until [ "${nachname=$1}" ]
do
print -n "Nachname: "
read nachname
print -n "Vorname: "
read vorname
print -n "Adresse: "
read Adresse
done

if
ex $Dateiname <<-!
/$nachname $vorname $adresse/d
x
!
then
echo "Kunde $vorname $nachname geloescht"
else
echo "$vorname $nachname gibt es nicht"
fi


...loescht Kunde + alle seine Daten, funzt auch wunderbar. :)


Kundendatei schaut so aus:

####Nachname Vorname Adresse Telefon Bearbeiter Erstellungs-Datum####
Maus Micky Entenhausen 12345 Ninjin Freitag, 13. Mai 2005, 17:26:01 Uhr CEST
Duck Daisy Entenhausen 325233242 Ninjin Mittwoch, 17. Mai 2005, 17:28:23 Uhr CEST

So, jetz zu meinem Problem.
Möchte z.B. die Telefonnummer ausgeben.
Hab ein Script geschrieben, funzt aber nicht so ganz wie ich es will.

#! /usr/bin/ksh
#
# gettelkunde
# gibt Telefonnummer von Kunden aus

Dateiname=/Kundendaten

until [ "${nachname=$1}" ]
do
print -n "Nachname: "
read nachname
print -n "Vorname: "
read vorname
done
IFS=:
if grep "^$nachname $vorname" $Dateiname | read $4(????)
then
print $nachname $vorname hat Nummer $4(???)
fi

Es wird hier nichts ausgegeben.
wo und was ist hier der Fehler?? ;'(

Wie kann ich die Telefonnummer ändern???

Bitte um Eure Hilfe und bedanke mich im vorraus!!!
DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE DANKE
 
Hi,

bei deinem Problem kann ich dir leider nicht helfen. Aber mich würde interessieren, warum die "anderen Programmiersprachen" und eine DB nicht in Frage kommen?!

Elwood
 
Auftragsverwaltung

Hi!
yo!
Es ist ein Projekt von der Schule aus, welches ich nur mit der Shell pragrammieren darf.
Trotzdem danke an alle...
Ich glaube, dass ich die Lösung schon habe!!
 
mögliche Lösung

Hi!
Na klaro!
Weiss nicht obs ganz so stimmt, aber hier hast du die Scripte!

#! /usr/bin/ksh
dateiname=/madat

until [ "${$nname=$1}" ]
do

print -n "nachname: "
read nname
done


if grep ^[0-9]*" "$nname" " $dateiname
then
print -n "Bitte manr angeben: "
read manr

else
echo "ma existiert nicht"
fi


grep ^$manr $dateiname | read a b c d e

echo "was wollen sie ändern? nn vn adr tel?"
read x

case $x in
[1])
echo "neuer nachname?"; read b
;;

[2])
echo "neuer vname?";read c
;;

[3])
echo "neue adresse?";read d
;;

[4]

echo "neuer tel?" ;read e
;;
[l])

echo "ma wird gelöscht" ;
ex $dateiname <<-!
/$a/d
x
!

exit 0

;;

*) echo "Fehler"; exit 1
;;

esac

ex $dateiname <<-!
/$a/d
xx
!
echo $a $b $c $d $e >>$dateiname

Muss noch ein bisschen ausgebessert werden...bin grad dabei :cool: :D
 

Anhänge

  • aget.txt
    788 Bytes · Aufrufe: 390
  • aman.txt
    928 Bytes · Aufrufe: 379
  • kdget.txt
    458 Bytes · Aufrufe: 373
  • kdman.txt
    813 Bytes · Aufrufe: 390
  • maget.txt
    384 Bytes · Aufrufe: 358
Du solltest einen expliziten Zellentrenner verwenden, denn in einem Namen koennen ja mehrere Leerzeichen auftreten. Also lieber : oder ; als Zellentrenner einsetzen. (Stichwort IFS)
 
Auftragsverwaltung

Danke MrFixit für Deinen Beitrag!
Könntest Du mir bitte das ausgebesserte Script zukommen lassen??
danke vielmals
 
Zurück
Oben