2015-06-09 3 views
0

Так что мне нужно создать базу данных студента и его оценки в классе. Я сделал это, используя массив массивов объектов, но мне нужно записать его в html-файл, как таблицу, и создаю специальную функцию сохранения.введите C++ в html

#include <iostream> 
#include "windows.h" 
#include <fstream> 
#include "TkachenkoLab.h" 
using namespace std; 

void save(Student KI[]); 
ofstream file_out("C:\\Users\\ТКаченко\\Desktop\\МП ЛАБ №7\\LAB7\\page.html"); 
int main() 
{ 
SetConsoleCP(::GetACP()); 
SetConsoleOutputCP(::GetACP()); 
short n; 

cout << "Ââåä³òü ê³ëüê³ñòü ñòóäåíò³â ãðóïè: "; 
cin >> n; 
cin.clear(); cin.sync(); 
cout << "\n —-— ÑÒÂÎÐÅÍÍß ÃÐÓÏÈ Ê² —---\n"; 
Student KI[n]; 

cout << "\n —-— ÑÏÈÑÎÊ ÃÐÓÏÈ Ê² —---\n"; 
short i; 
for (i = 0; i < Student::cnt(); i++) 
cout << i+1 << ". " << KI[i].name << endl; 

cout << "\n —-— reading student —-— \n"; 
for (i = 0; i < Student::cnt(); i++) 
KI[i].in_res(); 

save(KI); 
if (file_out.is_open()) 
    file_out.close(); 

return 0; 
} 
void save(Student KI[]) 
{ 
    file_out.open("C:\\Users\\ТКаченко\\Desktop\\МП ЛАБ №7\\LAB7\\page.html",ios::trunc); 
    file_out << "<html>" << endl; 
    file_out << "<head>" << endl; 
    file_out << "</head>" << endl; 
    file_out << "<body>" << endl; 
    file_out << "<table class=\"simple-little-table\">" << endl; 
    file_out << "<tr>" << endl; 
    file_out << "<td>студент</td>" << endl; 
    file_out << "<td>мп</td>" << endl; 
    file_out << "<td>кс</td>" << endl; 
    file_out << "<td>физра</td>" << endl; 
    file_out << "<td>средний бал</td>" << endl; 
    file_out << "</tr>" << endl; 
    for (short i = 0; i < Student::cnt(); i++) 
    { 
     file_out << "<td>студент</td>" << endl; 
     file_out << "<td>"<<KI[i].name<<"</td>" << endl; 
     file_out << "<td>"<<KI[i].MP<<"</td>" << endl; 
     file_out << "<td>"<<KI[i].KC<<"</td>" << endl; 
     file_out << "<td>"<<KI[i].fiz_ra<<"</td>" << endl; 
     file_out << "</tr>" << endl; 

    } 
    file_out << "</table>" << endl; 
    file_out << "</body>" << endl; 
    file_out << "</html>" << endl; 
    file_out.close(); 
} 

мой класс в библиотеке

#include <string> 
using namespace std; 

class Student 
{ 
public: 
Student(); 
static short cnt() { return cnt_stud; }; 
void in_res(); 
void out_res(); 
string name; 
~Student() {}; 
short MP, KC, fiz_ra; 
static short cnt_stud; 
short s_bal() { return (short)(MP+KC+fiz_ra)/3; }; 

}; 
void Student::out_res() 
{ 
} 

Student::Student() 
{ 
cout << "ПІБ студента: "; 
getline(cin, name); 
MP = 0; 
KC = 0; 
fiz_ra = 0; 
cnt_stud++; 
}; 

short Student::cnt_stud = 0; 

void Student::in_res() 
{ 
cout << name << ": "; 
cin >> MP; cin >> KC; cin >> fiz_ra; 
} 

Это даже не создать файл. Что я сделал не так?

+0

Где объявляется 'file_out', и вы проверили, является ли это [' is_open() '] (http://en.cppreference.com/w/cpp/io/basic_ifstream/is_open)? – NathanOliver

+0

он объявлен в main.cpp 'ofstream file_out (" C: \\ Users \\ ТКаченко \\ Desktop \\ МП ЛАБ №7 \\ LAB7 \\ page.html ");' –

+0

файл не открывается сам по себе. В вашем коде на самом деле не совсем ясно, что такое 'file_out'. – user463035818

ответ

1

Сначала вы используете символы не-ascii в своем имени пути. Я никогда не пытался это сделать, поэтому я не могу вам помочь, но, возможно, вы можете попробовать ответить здесь. Open File with Non ASCII Characters

Вы делаете это неправильно, как вы собираетесь писать в файл. Я предполагаю, что вы пытаетесь записать всех студентов в один и тот же файл, но не делайте свой файл глобальной переменной, передайте его функции, подобной этой.

void save(std::ofstream &file, Student KI[]); 

И проверить вещи в главном, как это,

int main() { 
    std::ofstream file("PathOfFile"); 
    if (file.is_open()) { 
     // Do what you want to do with your file 
     save(file, student); 

     file.close(); 
    } 
    else { 
     std::cout << "Failed to open file" << std::endl; 
    } 
    return 0; 
} 

Это проще для нас, чтобы читать и работать с.

Смежные вопросы