Математика


 Правила(обновени на 11.05.2008)   Търсене   Потребители   Потребителски групи   Регистрирайте сеРегистрирайте се 
 ПрофилПрофил   Влезте, за да видите съобщенията сиВлезте, за да видите съобщенията си   ВходВход 
Не е нужно да се регистрирате!

Вход/Изход от файл


 
Създайте нова тема   Напишете отговор    Информатика Форуми -> C#, VB.NET
Предишната тема :: Следващата тема  
Автор Съобщение
Гост







МнениеПуснато на: Sat Dec 17, 2011 11:12 am    Заглавие: Вход/Изход от файл Отговорете с цитат

Здравейте! Искам да направя конзолно приложение, което да има един клас SudentP, който да капсулира данните за студента в свойства! След това създавам динамичен масив от обекти с тип StudetnP! Да има меню за работа с приложението, като опциите да са въвеждане на данни, извеждане на данни, изход и т.н. ! Проблема ми е когато започвам да записвам във файла не знам кои класове и кои методи да ползвам че цялото съдържане на определения обект да се запише във файла на един ред във файла! После ще създам цикъл и да ги въведа всеки обект на отделен ред! Пробвах всяко свойство едно по едно, но ми изглежда много тромаво! А знам че това съм го правил в C++, би трябвало и в C# да става нали? Ако някой може да помогне да пише моля! Ще приложа и двата файла! На C# и на C++!
Код:
using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;

class Decoration
    {   
         static public void bar(char znak)
         {
            for(int i = 0;i < 80;i++)
            {
               Console.Write(znak);            
            }
            Console.WriteLine();
         }


         internal static void bar(string p)
         {
            throw new NotImplementedException();
         }
      }
public class StudentP
{
   private   string name = null;
   private string prezime = null;
   private string familia = null;
   private string spec = null;
   private string kurs = null;
   private string univer = null;
   private string email = null;
   private string gsm = null;
   static public int broi = 0;
   public string Name
   {
      get {return name;}   
      set {name = value;}
   }
   public string Prezime
   {
      get {return prezime;}
      set {prezime = value;}
   }
   public string Familia
   {
      get {return familia;}
      set {familia = value;}
   }
   public string Specialnost
   {
      get {return spec;}
      set {spec = value;}
   }
   public string Kurs
   {
      get {return kurs;}
      set {kurs = value;}
   }
   public string Universitet
   {
      get {return univer;}
      set {univer = value;}
   }
   public string Email
   {
      get {return email;}
      set {email = value;}
   }
   public string GSM
   {
      get {return gsm;}
      set {gsm = value;}
   }

   public StudentP()
   {
      Console.Write("Въведете Име: ");
      name = Console.ReadLine();
      Console.Write("Въведете Презиме: ");
      prezime =Console.ReadLine();
      Console.Write("Въведете Фамилия: ");
      familia = Console.ReadLine();
      Console.Write("Въведете Специалност: ");
      spec = Console.ReadLine();
      Console.Write("Въведете Kурс: ");
      kurs = Console.ReadLine();//byte.Parse(Console.ReadLine());
      Console.Write("Въведете Университет: ");
      univer = Console.ReadLine();
      Console.Write("Въведете  E-mail: ");
      email = Console.ReadLine();
      Console.Write("Въведете GSM: ");
      gsm = Console.ReadLine();
      broi = broi + 1;
   }
   public StudentP(string name, string familia)
   {
      this.Name = name;
      this.Familia = familia;
      broi = broi + 1;
   }
   public StudentP(string univer, string spec, string kurs)
   {
      this.Universitet = univer;
      this.Specialnost = spec;
      this.Kurs = kurs;
      broi = broi + 1;
   }
   public void Display()
   {
      Console.WriteLine("Име: {0}\nПрезиме: {1}\nФамилиа: {2}\nУниверсите: {3}\nСпециалност: {4}\nКурс: {5}\nE-mail: {6}\nGSM: {7}\n", Name, Prezime, Familia, Universitet, Specialnost, Kurs, Email, GSM);
   
   }
}
class Class1
   {
      /// <summary>
      /// The main entry point for the application.
      /// </summary>
      [STAThread]
      static void Main(string[] args)
      {
         Console.Title = "Student";
         StudentP student;
         List<StudentP> st = new List<StudentP>();
         int num=0;
         int cases;
         string str;
         string path = @"c:\file.txt";
         bool bl;
         StreamReader rfs;
         ConsoleKeyInfo cki;
      start:
         Console.Clear();
         Console.Write("Каква операция ще извършвате:\n1.\t Зареждане на Базата Данни\n2.\t Извеждане на информация за определн номер\n3.\t Изход\n");
         cases = int.Parse(Console.ReadLine());
         Console.Clear();
         switch(cases)
         {
            case 1:
            do
            {
               Console.ForegroundColor = ConsoleColor.Cyan;
               Decoration.bar('+');
               Console.CursorLeft = 30;
               Console.Write("STUDENT No {0}\n", StudentP.broi+1);
               Decoration.bar('+');
               Console.ForegroundColor = ConsoleColor.White;
               student = new StudentP();
               st.Add(student);
               Console.Write("Ще има ли следващ студент? Натиснете \"Y\" за да! ");
               cki = Console.ReadKey();
               str = cki.Key.ToString();
               Console.Clear();
               bl = string.Compare(str, "Y") == 0;
               if(bl)
               {
                  num++;
                  continue;
               }
               else
               {
                  break;
               }
            }
            while(bl);
            FileStream wfs = new FileStream(path,FileMode.Append, FileAccess.ReadWrite,FileShare.None);
            using (wfs)
            {
               wfs.Write(st[1],0,10);
            }
            /*using(StreamWriter wfs = new StreamWriter(path))
            {
               foreach(StudentP s in st)
               {
                  wfs.Write(s.Name + "\n");
                  wfs.Write(s.Prezime + "\n");
                  wfs.Write(s.Familia + "\n");
                  wfs.Write(s.Universitet + "\n");
                  wfs.Write(s.Specialnost + "\n");
                  wfs.Write(s.Kurs + "\n");
                  wfs.WriteLine();
               }
            }   */
            goto start;
            case 2:
            Console.Write("Въведете номерът на Студента: ");
            num = int.Parse(Console.ReadLine());
            Console.Clear();
            student = st[num - 1];
            student.Display();
            Console.ReadKey(true);
            goto start;
            case 3:
            break;
            default :
               Console.Clear();
               Console.WriteLine("Некоректен избор! Въведете един от изброените!");
               Console.ReadKey(true);
               goto start;
         }
      }
   }


А ето го и стария ми сорс на C++, подчертавам там задачата беше друга, но действието точно с файла се изпълни!

Код:
// KP.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream.h> // Входно-изходна библиотека
#include <fstream.h> // Библиотека за работа с файлове
float imp;         // деклариране на променлива за броя на импулсите (глобална променлива)
int broi;//broi na horata
ifstream fileIn;
ofstream fileOut;


class Telephon // Деклариране на класа с който ще работим
   {
public :     // Публичната част на класа! Тук се обявяват всички член-методи на класа!   
      void  OneImp(float imp);
      void  GetData();
      void  Data_izr_imp();
      void  izr_imp();
      void  cena_izr_imp();
      void  DDC();
      void  izr_imp_DDC();
      void  ceni();
      void  Displey();
protected :      // Защитена част на класа! Тък са всички член-променливи на класа!
   char ime [20]; char prezime [20]; char familia [20];
   int   old_imp, new_imp, obsh_imp;
   float cena, cena_DDC,DDS, cena_1_imp;
   };


Telephon *p=new Telephon[100]; // Конструктор


void  Telephon::GetData()   // Деклариране на функцията за попълване на лични данни
         {
         cout<<"Vavedete ime: ";cin>>ime;"\n";
         cout<<"Vavedete prezime: ";cin>>prezime;"\n";
         cout<<"Vavedete familia: ";cin>>familia;"\n";
         }
void   Telephon::Data_izr_imp()   // Деклариране на функцията за попълване на стари и нови показания на изразходвани импулси
            {
            cout<<"Vavedete starite pokazania izrazhodvani impulsi: ";cin>>old_imp;
            cout<<"Vavedete novite pokazania izrazhodvani impulsi: "; cin>>new_imp;
            }
void    Telephon::izr_imp() // Деклариране на функцията за пресмятане на изразходваните импулси
      {
      obsh_imp=new_imp-old_imp;
      }
void  Telephon::cena_izr_imp()   // Деклариране на функцията за пресмятане цената на изразходваните импулси
      {
      cena=cena_1_imp*obsh_imp;
      }
void  Telephon::DDC() // Деклариране на функцията за пресмятане на ДДС
      {
      DDS=cena*0.2;
      }
void  Telephon::izr_imp_DDC() // Деклариране на функцията за пресмятане цената на изразходваните импулси с ДДС
      {
      cena_DDC=cena + DDS;
      }      
void  Telephon::ceni() // Деклариране на функцията обединяваща всички функции за пресмятане на цените
      {
      izr_imp();
      cena_izr_imp();
      DDC();
      izr_imp_DDC();
      }
void   Telephon::Displey() // Деклариране на функцията за извеждане информацията на екрана
   {
   ceni();
   cout<<ime<<"\t"<<prezime<<"\t"<<familia<<"\n"<<obsh_imp<<"\t"<<cena<<"\t"<<DDS<<" \t"<<cena_DDC<<"\n";
   }
void  Telephon::OneImp(float imp) // Деклариране на функцията за промяна на цената на един импулс
   {
   cena_1_imp=imp;
   }

bool read_fail()   // // Деклариране на функцията за четене от фаил
   {
   
   float imp;
   int i=0;
   Telephon *pfail=new Telephon;

   fileIn.open("FILE.txt", ios::in|ios::nocreate|ios::binary);
   if ( !fileIn ) {  return false; }
   
   fileIn.seekg(0);
   fileIn.read ((char*)&imp, sizeof (imp));
   while(!(fileIn.eof()))
      {
      fileIn.read ((char*)pfail, sizeof (Telephon));
      p[i]=*pfail;
      i++;
      }
   fileIn.close(); // Функцията за затваряне на фаила
   broi=i;
   return true;
   }
bool zapis_fail() // Деклариране на функцията за запис във фаил
   {

   Telephon pfail;

   fileOut.open("FILE.txt", ios::out|ios::binary);
   if ( !fileOut ) { return false; }


   fileOut.write((char*)&imp, sizeof(imp));
   for(int i=0;i<broi-1;i++)
      {
      pfail=p[i];
      fileOut.write((char*)&pfail,sizeof(Telephon));   
      }
   fileOut.close();
   return true;
   }   

void premahvane(int nomer) // Деклариране на функцията за добавяне на елемент в Базата данни
   {
      Telephon x[sizeof(p1)];
      for(int i=0;i<nomer-1;i++)
      {
      x[i]=p[i];
      }
      for(i=nomer;i<sizeof(p);i++)
      {
      x[i-1]=p[i];
      }
      p=x;
      broi--;
      zapis_fail();
   }

void main() // Главна функцията на програмата
{
short i,n,p1, k;
do

{
   if(!read_fail()) // Ако има съществуващ фаил, програмата работ с него, ако не създава такъв
   {
      cout<<"Vavedete broia na potrebitelite: ";cin>>p1;
      cout<<"Vavedete cena za 1 izrazhoden impuls: ";cin>>imp;
      broi=p1;
      for(i=0;i<p1;i++)
      {
      
      p[i].OneImp(imp);
      cout<<"\n";
      p[i].GetData();
      cout<<"\n";
      p[i].Data_izr_imp();
      cout<<"\n";
      p[i].ceni();
      }
      zapis_fail();
      break;
  }
  // Меню на програмата за различните операзции които извършва
   cout<<"Vavedete izbranata operacia: \n";
   cout<<"1. Promiana na cenata za 1 impuls, natisnete \n";
   cout<<"2. Izvejdane na dannite na ekrana, natisnete \n";
   cout<<"3. Premahvane na element ot Bazata Danni      \n";
   cout<<"\n";
   cin>>n;
      
switch (n)
   {
   case 1:
      {
   cout<<"Vavedete nova cena na edin impuls: ";cin>>imp;"\n";
   for(int i=0;i<sizeof(p);i++)
   {
      p[i].OneImp(imp);
      p[i].ceni();
      zapis_fail();
   }
   break;
      }   
   case 2:
      {
         cout<<"Vyvedi nomer: ";cin>>i;
         cout<<"\n"<<i<<". \t";
         p[i-1].Displey();
         cout<<"\n";
      break;
      }
   case 3:
      {
      int nom;
      cout<<"Koi nomer:";cin>>nom;
      premahvane(nom);
      }
         break;
   }
      }

while (i) ;
}
Върнете се в началото
Реклама







Пуснато на:     Заглавие:

Върнете се в началото
Покажи мнения от преди:   
Създайте нова тема   Напишете отговор    Информатика Форуми -> C#, VB.NET Часовете са според зоната GMT + 2 Часа
Страница 1 от 1

 
Идете на:  
Можете да пускате нови теми
Можете да отговаряте на темите
Не Можете да променяте съобщенията си
Не Можете да изтривате съобщенията си
Не Можете да гласувате в анкети
You cannot attach files in this forum
Може да сваляте файлове от този форум
Copyright © 2007-2013 math10.com.   изработка на сайт