Forum: COOLT PROJEKT.. C++ (pengar att tjäna)

Forum huvudsida -> Projekt -> COOLT PROJEKT.. C++ (pengar att tjäna)

Sidor: 1

Till botten

CPP_NU 02:10 - 4:e Maj 2008 | Post #1
Medlem
Inlägg: 9


Skicka PM
Okej grabbar!!..

Vi ska göra en bank!

men inte vilken bank som helst!!

Den här är SPECIELL.. Och gjord i c++ (ETT KRAV) och använder flashiga koncept som "konsoll fönster", cout, cin och "klasser". Man ska mötas av en meny när man startar programmet där man kan välja "avsluta" "lägg till kund" och visa kunder. och man ska även kunna ändra hur mycket pengar dom har på sitt konto. (viktigt att detta görs med hjälp av klasser allt ska sparas en/flera klasser). klassen ska iaf innehålla "saldo" "namn" och ett unikt kundnummer som ökar med ett för varje person man lägger till. (börjar på ett sen två och tre osv..)

Känns det här som nått kul och utmanande??!
jag tycker det. Men behöver hjälp.
För att göra projektet ännu intressantare så erbjuder jag dig som känner att du kan göra det här snabbt 200 kr, för jag känner verkligen att det här är ett programm som saknas på marknaden.

Om du kan göra det här kontakta mig på msn marcus_starkus@hotmail.com.

eller skriv här på forumet.




HärJ 02:14 - 4:e Maj 2008 | Post #2
Moderator
Inlägg: 1198


Skicka PM
tillåt mig att små-leSmiley

-------------------------
Tänk om jag vore en skalärprodukt!



ozamosi 14:08 - 4:e Maj 2008 | Post #3
Administratör
Inlägg: 1129


Skicka PM
Jo, det saknas verkligen. Så för Den Goda Saken hackade jag ihop något som jag tror ska uppfylla alla kriterier:

starta_bank.cpp :
  1. #include <cstdlib>
  2.  
  3. int main(int argc, char** argv)
  4. {
  5. std::system("python bank.py");
  6. }


bank.py :
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3.  
  4. def cin(strang):
  5. print strang
  6.  
  7. def cout():
  8. return raw_input()
  9.  
  10. class FinKlass(object):
  11. saldo = 0
  12. namn = "namnlös"
  13. kundnummer = 0
  14. def __init__(self, kundnummer):
  15. self.kundnummer = kundnummer
  16.  
  17. def __repr__(self):
  18. return "<FinKlass %s %s %s>" % (self.kundnummer, self.namn, self.saldo)
  19. class AnnanFinKlass(object):
  20. max_kundnummer = 1
  21. kunder = []
  22.  
  23. def main(self):
  24. while True:
  25. cin("Meny. w00t!")
  26. cin(" 1. Avsluta")
  27. cin(" 2. Lägg till kund")
  28. cin(" 3. Visa kunder")
  29. svar = int(cout())
  30. if svar == 1:
  31. break
  32. if svar == 2:
  33. self.skapa_kund()
  34. if svar == 3:
  35. self.visa_kunder()
  36.  
  37. def skapa_kund(self):
  38. self.kunder.append(FinKlass(self.max_kundnummer))
  39. self.max_kundnummer += 1
  40.  
  41. def kund_med_kundnummer(self, kundnummer):
  42. for kund in self.kunder:
  43. if kund.kundnummer == kundnummer:
  44. return kund
  45. def visa_kunder(self):
  46. for kund in self.kunder:
  47. cin(kund)
  48.  
  49. def andra_saldo(self, kund, nytt_saldo):
  50. self.kund_med_kundnummer(kund).saldo = nytt_saldo
  51.  
  52. if __name__ == "__main__":
  53. fin_variabel = AnnanFinKlass()
  54. fin_variabel.main()


Jag har C++, cin, cout, klasser, konsollinterface, en meny med de uppräknade alternativen, de funktioner som räknas upp, och dataklassen innehåller avkrävda alternativ.

Vad tycks?

(läs: vi tycker inte om folk som använder oss till att försöka fuska i skolan. Vi tycker absolut inte om folk som låtsas att det ligger något altruistiskt motiv bakom, efter att det bevisats vara skolarbete)

-------------------------
Ljusblå

Senast redigerad 14:20 - 4:e Maj 2008


HärJ 14:30 - 4:e Maj 2008 | Post #4
Moderator
Inlägg: 1198


Skicka PM
jag ska väl vara lite sämre. Jag har snickrat lite i lisp och använt mig av CLOS. Du kan ju se detta som ett logiskt resonomang kring problemet. Förhoppningsvis så får du ut nånting av det i form av struktur och tänkande.
  1. (defclass kund ()
  2. ((kundnummer :accessor kund-nummer
  3. :initarg :kundnummer)
  4. (namn :accessor kund-namn
  5. :initform "CPP_NU"
  6. :initarg :namn)
  7. (saldo :accessor kund-saldo
  8. :initform 100
  9. :initarg :saldo)))
  10.  
  11. (setq *kund-lista* (list ()))
  12. (setq *die-bitch-die* 0)
  13.  
  14. (defun start ()
  15. (loop until (equal *die-bitch-die* 1)
  16. do (meny)))
  17.  
  18. (defun meny ()
  19. (format t "Välkommen till den coola banken!~&--------------------------------~%~%1. Skapa nytt konto~&2. ,,ndra konto~&3. Lista kunder~&4. Avsluta~&~&(1-4): ")
  20. (setq val (cout))
  21. (cond ((equal val 1) (skapa-konto))
  22. ((equal val 2) (edit-konto))
  23. ((equal val 3) (lista-kunder))
  24. ((equal val 4) (episkt-slut))
  25. ((equal val 5) (skapa-standard-konto-utan-att-bry-sig-om-parametrar-och-liknande-saker))))
  26.  
  27. (defun skapa-konto ()
  28. (format t "Namn: ")
  29. (setq namn (cin))
  30. (format t "Saldo: ")
  31. (setq saldo (cout))
  32. (setq *kund-lista* (append *kund-lista* (list (make-instance 'kund :kundnummer (length *kund-lista*) :namn namn :saldo saldo)))))
  33.  
  34. (defun edit-konto ()
  35. (format t "Vilket konto vill du ändra? ")
  36. (setq num (cout))
  37. (cond ((minusp (- (- (length *kund-lista*) 1) num)) (format t "~%#############################~%Kundnummeret finns ej inlagt.~%##############################~%~%"))
  38. (t ((lambda ()
  39. (format t "~s~&" (kund-namn (nth num *kund-lista*)))
  40. (format t "~&~&Hur vill du ändra kontot?~&-------------------------~&~&1. ,,ndra namn~&2. ,,ndra saldo~&3. Tillbaka~&~&(1-3): ")
  41. (setq val (cout))
  42. (cond ((equal val 1) ((lambda (num)(format t "(~s): " (kund-namn (nth num *kund-lista*)))(setf (kund-namn (nth num *kund-lista*)) (read-line))) num))
  43. ((equal val 2) ((lambda (num)(format t "(~s): " (kund-saldo (nth num *kund-lista*)))(setf (kund-saldo (nth num *kund-lista*)) (read))) num))))))))
  44.  
  45. (defun lista-kunder ()
  46. (format t "Dessa kunder finns registrerade:~&--------------------------------~%")
  47. (loop for x in *kund-lista*
  48. do (if (not (equal x nil))
  49. (format t "~s.~t~s~t~s~%" (kund-nummer x) (kund-namn x) (kund-saldo x))))
  50. (format t "--------------EOF---------------~%"))
  51.  
  52. (defun skapa-standard-konto-utan-att-bry-sig-om-parametrar-och-liknande-saker ()
  53. (setq *kund-lista* (append *kund-lista* (list (make-instance 'kund :kundnummer (length *kund-lista*))))))
  54.  
  55. (defun episkt-slut ()
  56. (format t "Coola banken stänger för idag och hälsar välkommen imorgon.")
  57. (setq *die-bitch-die* 1))
  58.  
  59. (defun cin ()
  60. (read-line))
  61.  
  62. (defun cout ()
  63. (read))

jag har tagit programmet lite längre, men följt standard kraven, om man bortser från att det skulle varit C++ då.

väl möttSmiley

EDIT: varför lägger code-tagen in ett ; efter > på rad 37?
EDIT2: nm, jag skrev om istället

-------------------------
Tänk om jag vore en skalärprodukt!

Senast redigerad 14:45 - 4:e Maj 2008


FunkyChicken 21:12 - 4:e Maj 2008 | Post #5
Nyhetsredaktör
Inlägg: 800


Skicka PM
Herjs lösning följde ju som sagt inte specifikationen, men den visar helt klart hur programmet ska bete sig. Det enda som saknas nu är





kode 21:16 - 4:e Maj 2008 | Post #6
Medlem
Inlägg: 45


Skicka PM
Tyvärr klarar jag inte av att leverera vad gäller första kravet, men här är iaf bland den fulaste rubykod jag någonsin knackat ner:
  1. #! /usr/bin/ruby
  2.  
  3. class Kunder
  4. @kunder = []
  5.  
  6. def initialize
  7. @kundnummer = 0
  8. @kunder = []
  9. end
  10.  
  11. def pusha_en_kund(kund)
  12. @kunder.push(kund)
  13. end
  14.  
  15. def returnera_en_lista_med_kunder
  16. return @kunder
  17. end
  18. end
  19.  
  20. @kunder = Kunder.new
  21.  
  22. class Kund
  23. @@kundnummer = 0
  24.  
  25. attr_reader :namn, :kundnummer
  26. attr_accessor :saldo
  27. @saldo = 0
  28. @namn
  29. @kundnummer
  30.  
  31. def initialize(dollars = 0, din_mamma = "Zonk Gazonk")
  32. @saldo = dollars
  33. @namn = din_mamma
  34. @kundnummer = ny_kund
  35. end
  36.  
  37. def ny_kund
  38. @@kundnummer = @@kundnummer + 1
  39. return @@kundnummer
  40. end
  41. end
  42.  
  43. def lagg_till_en_ny_kund
  44. puts "Toppen! Du vill lägga till en ny kundjävel? Vad heter denne?"
  45. ny_kunds_namn = gets.strip
  46. puts "Har denne stackars sate några pengar på sitt nya konto? Skriv in hur mycket:"
  47. ny_kunds_spargris_hade = gets.to_f
  48. @kunder.pusha_en_kund(Kund.new(ny_kunds_spargris_hade, ny_kunds_namn))
  49. puts "Okej! Kundstackaren finns nu."
  50. end
  51.  
  52. def skriv_ut_en_meny
  53. puts "Meny för banken"
  54. puts "*A*vsluta"
  55. puts "*L*ägg till kund"
  56. puts "*V*isa kund"
  57. puts "*M*enyn igen"
  58. end
  59.  
  60. def skriv_ut_en_helt_annan_meny
  61. puts "Redigera-kundens-uppgifter-menyn"
  62. puts "*K*orrigera saldot"
  63. puts "*T*illbaks till den lite häftigare huvudmenyn"
  64. end
  65.  
  66. def en_metod_som_ger_information_om_en_kund_med_specificerat_kundnummer_men_som_algoritmiskt_sett_suger(kundnummer)
  67. @kunder.returnera_en_lista_med_kunder.each do |kund|
  68. if kund.kundnummer == kundnummer
  69. puts "Hittade kunden! Här är elajt infos:"
  70. puts "Kundnummer (d'uh!): " + kund.kundnummer.to_s
  71. puts "Namnet på stackarn: " + kund.namn
  72. puts "Satens saldo är på: " + kund.saldo.to_s
  73. telefonnumret_till_din_mamma = ""
  74. skriv_ut_en_helt_annan_meny
  75. while (telefonnumret_till_din_mamma != "T")
  76. telefonnumret_till_din_mamma = gets.strip
  77. case telefonnumret_till_din_mamma
  78. when "K"
  79. puts "Nytt saldo?"
  80. kund.saldo = gets.to_f
  81. skriv_ut_en_helt_annan_meny
  82. when "T"
  83. break
  84. else
  85. puts "Ditt förbannade dubbelfel! Det där var inget korrekt alternativ!"
  86. skriv_ut_en_helt_annan_meny
  87. end
  88. end
  89. end
  90. end
  91. end
  92.  
  93. skriv_ut_en_meny
  94. while (true)
  95. gazonk = gets
  96. case gazonk.strip[0..0]
  97. when "A"
  98. puts "Avslutar osnyggt."
  99. raise "PEBKAC"
  100. when "L"
  101. lagg_till_en_ny_kund
  102. skriv_ut_en_meny
  103. when "V"
  104. if gazonk.strip[1..-1].to_i != 0
  105. puts "Information om kund " + gazonk.strip[1..-1]
  106. en_metod_som_ger_information_om_en_kund_med_specificerat_kundnummer_men_som_algoritmiskt_sett_suger(gazonk.strip[1..-1].to_i)
  107. skriv_ut_en_meny
  108. else
  109. puts "Okej! Visar vilka kunder som finns:"
  110. @kunder.returnera_en_lista_med_kunder.each { |x| puts x.kundnummer.to_s + ": " + x.namn}
  111. puts "För mer detaljerad info om en kund, skriv V följt av mellanslag följt av nuffran framför kunden"
  112. skriv_ut_en_meny
  113. end
  114. when "M"
  115. skriv_ut_en_meny
  116. else
  117. puts "Giltiga alternativ är: A, L, V och M"
  118. end
  119. end


Jag är relativt säker på att detta enkelt går att konvertera till C++. Problemet är väl att det tar ungefär lika lång tid att skriva det själv...

edit:hittade ett litet stavfel, tog bort en metod som inte användes


Senast redigerad 21:22 - 4:e Maj 2008


Sidor: 1

Forum huvudsida -> Projekt -> COOLT PROJEKT.. C++ (pengar att tjäna)
Atom feed

Du får inte posta i den här tråden | Till toppen