trywialny projekt C# - przetłumaczenie z C++

0

Cześć, jestem totalnie zielony w temacie C# i mam problem ponieważ na studia muszę przetłumaczyć albo jak kto woli zrobić analogiczny program w C# do tego co napisałem wcześniej w Cpp. Sprawa nie jest ciężka ale siedzę nad tym już drugi dzień, nie mam siły i potrzebuje pomocy. Zadanie brzmi "pracownicy" Generalnie program w którym możemy dodaj usunąc edytować pracownika na liście, w Cpp był wymóg żeby był zapis do vectora wiec w C# bedzie to pewnie lista. Wiem ze programy (nawet ten w cpp są patologicznie napisane) ale jestem już zdesperowany i nie daje rady. Bardzo proszę o pomoc.
Tutaj kod mojego cpp

#include "stdafx.h"
#include <string>
#include <iostream>
#include <vector>
#include <fstream>
#include <cstdlib>

using namespace std;

class pracownik
{
	string imie, nazwisko, stanowisko;
	int wiek;

public:
	void dodaj_imie(string);
	void dodaj_nazwisko(string);
	void dodaj_stanowisko(string);
	void dodaj_wiek(int);

	string get_imie();
	string get_nazwisko();
	string get_stanowisko();
	int get_wiek();
};

void pracownik::dodaj_imie(string x) { imie = x; }
void pracownik::dodaj_nazwisko(string x) { nazwisko = x; }
void pracownik::dodaj_stanowisko(string x) { stanowisko = x; }
void pracownik::dodaj_wiek(int x) { wiek = x; }
string pracownik::get_imie() { return imie; }
string pracownik::get_nazwisko() { return nazwisko; }
string pracownik::get_stanowisko() { return stanowisko; }
int pracownik::get_wiek() { return wiek; }

vector <pracownik>tab_pracownikow;

void menu()
{
	system("cls");

	cout << "PRACOWNICY W FIRMIE:" << endl << endl;
	cout << "DODAJ NOWEGO PRACOWNIKA ---- PRESS (1)" << endl;
	cout << "EDYTUJ DANE ISTNIEJACEGO PRACOWNIKA ---- PRESS (2)" << endl;
	cout << "USUN PRACOWNIKA ---- PRESS (3)" << endl;
	cout << "WYSWIETL LISTE AKTUALNYCH PRACOWNIKOW ---- PRESS (4)" << endl;
	cout << "ZAMKNIJ PROGRAM  ---- PRESS (5)" << endl;
	cout << endl << "WYBIERZ NUMER CZYNNOSCI I KLIKNIJ ENTER...";
}
void dodaj()
{
	string z;
	int u;
	pracownik nowy;
	cout << "IMIE PRACOWNIKA: ";
	cin >> z;
	nowy.dodaj_imie(z);
	cout << "NAZWISKO PRACOWNIKA: ";
	cin >> z;
	nowy.dodaj_nazwisko(z);
	cout << "STANOWISKO PRACOWNIKA: ";
	cin >> z;
	nowy.dodaj_stanowisko(z);
	cout << "WIEK PRACOWNIKA: ";
	cin >> u;
	nowy.dodaj_wiek(u);
	tab_pracownikow.push_back(nowy);
}
void edytuj()
{
	string z;
	int u, i = 0;
	pracownik nowy;
	cout << "NR PRACOWNIKA DO EDYCJI: ";
	getchar();
	i = getchar();
	i = i - 48;
	tab_pracownikow.erase(tab_pracownikow.begin() + i - 1);
	cout << "IMIE PRACOWNIKA: ";
	cin >> z;
	nowy.dodaj_imie(z);
	cout << "NAZWISKO PRACOWNIKA: ";
	cin >> z;
	nowy.dodaj_nazwisko(z);
	cout << "STANOWISKO PEACOWNIKA: ";
	cin >> z;
	nowy.dodaj_stanowisko(z);
	cout << "WIEK PRACOWNIKA: ";
	cin >> u;
	nowy.dodaj_wiek(u);
	tab_pracownikow.insert(tab_pracownikow.begin() + i - 1, nowy);
}
void usun()
{
	string z;
	int i = 0;
	cout << "NR PRACOWNIKA DO USUNIECIA: ";
	getchar();
	i = getchar();
	i = i - 48;
	tab_pracownikow.erase(tab_pracownikow.begin() + i - 1);
}
void pokaz()
{
	cout << endl << "LISTA PRACOWNIKOW" << endl << endl;

	if (tab_pracownikow.size() == 0)
	{
		cout << "NA LISCIE NIE MA ZADNYCH PRACOWNIKOW" << endl << endl;

	}
	else
	{
		for (int i = 0; i<tab_pracownikow.size(); i++)
		{
			cout << "PRACOWNIK " << i + 1 << ":" << endl;
			cout << "IMIE: " << tab_pracownikow[i].get_imie() << endl;
			cout << "NAZWISKO: " << tab_pracownikow[i].get_nazwisko() << endl;
			cout << "STANOWISKO: " << tab_pracownikow[i].get_stanowisko() << endl;
			cout << "WIEK: " << tab_pracownikow[i].get_wiek() << endl << endl;
		}
	}
}
int main()
{
	char input;

	for (;;)
	{
		menu();
		input = getchar();
		switch (input)
		{
		case'1':
			dodaj();
			break;
		case'2':
			edytuj();
			break;
		case'3':
			usun();
			break;
		case'4':
			pokaz();
			getchar();
			cout << "ABY POWROCIC DO MENU, KLIKNIJ 'ENTER'.";
			getchar();
			break;
		case'5':return 0;
		}
	}
}

tutaj moje nie działające wypociny C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Firma
{
    public class worker
    {
        string imie, nazwisko, stanowisko;
        int wiek;
        List<worker> tab_worker = new List<worker>();
    }
    //public class ludzie
    //{
       

    //        //public void DodajIm(worker imie)
    //          //{
    //        //pracownicy.Add(imie);
    //        //}
    //        //public void DodajNaz(worker nazwisko)
    //        //{
    //        //    pracownicy.Add(nazwisko);
    //        //}
    //        //public void DodajsSan(worker stanowisko)
    //        //{
    //        //    pracownicy.Add(stanowisko);
    //        //}
    //        //public void DodajWk(worker wiek)
    //        //{
    //        //    pracownicy.Add(wiek);
    //        //}
            
    //}

        class Program
        {
        

        static void Main(string[] args)
            {
            worker pracownik = new worker();
           
            Console.WriteLine("--PRACOWNICY W FIRMIE--");
                Console.WriteLine("DODAJ NOWEGO PRACOWNIKA ---- PRESS(1)");
                Console.WriteLine("EDYTUJ DANE ISTNIEJACEGO PRACOWNIKA ---- PRESS(2)");
                Console.WriteLine("USUN PRACOWNIKA ---- PRESS(3)");
                Console.WriteLine("WYSWIETL LISTE AKTUALNYCH PRACOWNIKOW ---- PRESS(4)");
                Console.WriteLine("ZAMKNIJ PROGRAM ---- PRESS(5)");
                Console.WriteLine("WYBIERZ NUMER CZYNNOSCI I KLIKNIJ ENTER...");
                Console.ReadKey();
                
            void dodawanie(worker pracownicy)
            {                                
                Console.WriteLine("PODAJ IMIE");
                string imie = Console.ReadLine();
                Console.WriteLine("PODAJ NAZWISKO");
                string nazwisko = Console.ReadLine();
                Console.WriteLine("PODAJ STANOWISKO");
                string stanowisko = Console.ReadLine();
                Console.WriteLine("PODAJ WIEK");
                int wiek  = int.Parse(Console.ReadLine());
            }
            void usuwanie()
            {
                Console.WriteLine("NUMER PRACOWNIKA DO USUNIECIA");
                int nr = int.Parse(Console.ReadLine());
            }
            int i = int.Parse(Console.ReadLine());
            int caseSwitch = i;
            
                switch (caseSwitch)
                {
                    case 1:
                    
                        break;
                    case 2:
                        Console.WriteLine("edycja");
                    Console.ReadKey();
                        break;
                    case 3:
                        Console.WriteLine("PODAJ NUMER PRACOWNIKA DO USUNIECIA:");
                    Console.ReadKey();
                    break;
                    case 4:
                        Console.WriteLine("wyswietlanie");
                    Console.ReadKey();
                    break;
                    case 5:
                        Console.WriteLine("zakniecie progrmu");
                    Console.ReadKey();
                    return;
                    default:
                        Console.WriteLine("NIE MA TAKIEJ CZYNNOSCI");
                    Console.ReadKey();
                    break;
                }
                

                
            }
    }
    
}
0

Jaki problem? Zrób W C++ podlinkuj jako dynamiczna bibliotekę w c# i gitara.

0

3 pytania:

  1. Dlaczego nie masz siły? ;)
  2. Kiedy masz termin oddania?
  3. Chcesz pomocy (żeby się czegoś nauczyć), czy gotowca?
0

Nie mam siły bo już nie mam pomysłu jak to zeobic a mega szybko się irytuje jak mi coś nie wychodzi. Termin oddania mam na za 5h i potrzebuje tego w sumie kompletnego, i tak muszę to obronić wiec nawet jak będę miał gotowca to będę go
Musiał przeanalizować pare razy żeby zakuma co gdzie i jak się zadziało.

0

No to proszę! Zrobiłem "najpatologiczniej" jak umiałem, żeby było podobnie do Twojego kodu z C++, teksty menu skopiowałem, poprawiłem ewentualnie tylko literówki. Nie testowałem za bardzo, ale powinno działać.

Program.cs:

static void Main(string[] args)
    {
        Menu menu = new Menu();
        menu.ShowMenu();   
    }

Worker.cs:

 public class Worker
    {
        public string Name { get; set; }
        public string Surname { get; set; }
        public string Worksite { get; set; }
        public int Age { get; set; }
    }

WorkerService.cs:

internal class WorkersService
    {
        List<Worker> workers;
        public WorkersService()
        {
         workers = new List<Worker>();
        }
        public void Display()
            {
            Console.Clear();
            Console.WriteLine("wyswietlanie:");
            foreach (var worker in workers)
            {
             DisplayOneWorker(worker);
            }
            Console.ReadKey();
        }

        public void DisplayOneWorker(Worker worker)
        {
           Console.WriteLine($"ID: {workers.IndexOf(worker)+1}, IMIE: {worker.Name}, NAZWISKO: {worker.Surname}, STANOWISKO: {worker.Worksite}, WIEK:{worker.Age}");
        }

        public void RemoveWorker()
        {
            Console.Clear();
            Console.WriteLine("PODAJ NUMER PRACOWNIKA DO USUNIECIA:");
            int choice = int.Parse(Console.ReadLine());
            RemoveSpecificWorker(workers[choice-1]);
        }

        public void EditWorker()
        {
           Console.Clear();
           Console.WriteLine("edycja");
           Console.WriteLine("PODAJ NUMER PRACOWNIKA DO EDYCJI:");
           int choice = int.Parse(Console.ReadLine());
           DisplayOneWorker(workers[choice-1]);
           RemoveSpecificWorker(workers[choice-1]);
           AddWorker();
        }

        public void RemoveSpecificWorker(Worker worker)
        {
           workers.Remove(worker);
        }

        public void AddWorker()
        {
            Worker worker = new Worker();
            Console.WriteLine("PODAJ IMIE");
            worker.Name = Console.ReadLine();
            Console.WriteLine("PODAJ NAZWISKO");
            worker.Surname = Console.ReadLine();
            Console.WriteLine("PODAJ STANOWISKO");
            worker.Worksite = Console.ReadLine();
            Console.WriteLine("PODAJ WIEK");
            worker.Age  = int.Parse(Console.ReadLine());
            workers.Add(worker);
        }   
    }

Menu.cs:

internal class Menu
    {        
        WorkersService actions;
        public Menu()
        {
             actions = new WorkersService();      
        }
        public void ShowMenu()
        {  
            Console.WriteLine("--PRACOWNICY W FIRMIE--");
            Console.WriteLine("DODAJ NOWEGO PRACOWNIKA ---- PRESS(1)");
            Console.WriteLine("EDYTUJ DANE ISTNIEJACEGO PRACOWNIKA ---- PRESS(2)");
            Console.WriteLine("USUN PRACOWNIKA ---- PRESS(3)");
            Console.WriteLine("WYSWIETL LISTE AKTUALNYCH PRACOWNIKOW ---- PRESS(4)");
            Console.WriteLine("ZAMKNIJ PROGRAM ---- PRESS(5)");
            Console.WriteLine("WYBIERZ NUMER CZYNNOSCI I KLIKNIJ ENTER...");
            ConsoleKeyInfo input=Console.ReadKey();
            int choice=-1;
            if (char.IsDigit(input.KeyChar))
            {
                choice=int.Parse(input.KeyChar.ToString());
            }          
            if (choice>0)
            Submenu(choice);         
        }

        private void Submenu(int choice)
        {
           Console.Clear();
           switch (choice)
            {
                case 1:
                actions.AddWorker();
                ShowMenu();
                    break;
                case 2:                   
                actions.EditWorker();
                ShowMenu();
                    break;
                case 3:                 
                actions.RemoveWorker();
                ShowMenu();
                    break;
                case 4:                
                actions.Display();
                ShowMenu();
                    break;
                case 5:
                Environment.Exit(0);
                break;
                default:
                Console.WriteLine("NIE MA TAKIEJ CZYNNOSCI");
                ShowMenu();
                break;
        }
        }   
    }
0

Nie analizowałem szczegółowo tego programu ale tak na pierwszy rzut oka to
widzę , że masz braki w projektowaniu obiektowym.

Pamiętaj jak piszesz metodę to żeby dawać nawias klamrowy otwierający i zamykający .
Metody co prawda można zagnieżdżać jedna w drugiej wtedy metoda zagnieżdżona jest niejawne statyczna ale po co takie dziwolągi,
a instrukcje muszą być umieszczone w jakieś funkcji składowej a nie luzem w definicji klasy ..

1 użytkowników online, w tym zalogowanych: 0, gości: 1