Не е нужно да се регистрирате!
| Предишната тема :: Следващата тема |
| Автор |
Съобщение |
Гост
|
Пуснато на: 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) ;
} |
|
|
| Върнете се в началото |
|
 |
Реклама
|
Пуснато на: Заглавие: |
|
|
|
|
|
| Върнете се в началото |
|
 |
|
|
Можете да пускате нови теми Можете да отговаряте на темите Не Можете да променяте съобщенията си Не Можете да изтривате съобщенията си Не Можете да гласувате в анкети You cannot attach files in this forum Може да сваляте файлове от този форум
|
|