Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C/C++ Базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2011, 20:41   #1
BomaN1
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 21
Восклицание База данных студенты

Всем добрый вечер.
Для ведения журнала успеваемости группы во внешнем файле храниться список группы (до 25 человек) и наименования предметов (до 10)


Подготовить меню для следующих действий:

1) Ввода исходного списка и его сортировки
2) Занесения оценок по N предметам
3) Добавление новой фамилии (в алфавитном порядке )
4)Исключение фамилий из списка
5) Сохранение результатов
6) Выход

Код:
// Bro.cpp: определяет точку входа для консольного приложения.
//

#include <iostream>
#include <fstream>
#include <conio.h>
#include <iomanip>
using namespace std;

struct student {
	char fam[15]; // фамилиия студента
	char prname[10]; // имя предмета
	int oc;// оценка
	int N;
};

void Menu() 
{
	cout << "1 - Исходный список студентов." << endl;
	cout << "2 - Занести оценки по предметам." << endl;
	cout << "3 - Добавьте новую фамилию в список студентов." << endl;
	cout << "4 - Исключить фамилию студета из списка." << endl;
	cout << "5 - Сохранить." << endl;
	cout << "0 - Выход." << endl;
	cout << "----------------" << endl;
	cout << "Выберите пункт: ";
	return;
}
void showTable(student* Table, int size) {
	int i;
	cout << "   N  |   Студенты   |  Предметы  |    " << endl;
	cout << "---------------------------------------" << endl;
	for (i = 0; i < size; i++) {
		cout << " " << setw(3) << Table[i].N << "  |  " << setw(3) << Table[i].fam;
		cout << setw(5) << Table[i].prname << "  |  ";
	}
	cout << endl << "Для продолжения нажмите Enter.";
	getch();
	return;
}


int main() {
	student* st = (student*)calloc(0,sizeof(st));
	char path[256];
	int n = 1;
	int tint, i;
	ifstream f;
	setlocale(LC_ALL,"Rus");


	cout << "Введите имя файла (quit - выйти) : ";
	while (true) {
		cin >> path;
		if (!strcmp(path,"quit")) return 0;
		f.open(path);
		if (f.fail()) cout << endl << "Файл '" << path << "' не найден." << endl << "Введите имя файла (quit - выйти) : ";
		else break;
	}

	do { //подсчёт количества машин в таблице по количеству элементов (номеров) в первой строке
		tint = f.get(); //считываем подряд символы
		if (tint==32) n++; //если пробел, то счётчик увеличивается (32 - скан-код пробела)
	} while (tint!=10); //пока не доходим до конца строки (10 - скан-код переноса строки)

	st = (student*)realloc(st,n*sizeof(student)); //выделили память точно под количество cтудентов в таблице
	if (!st) { cout << endl << "Ошибка выделения памяти!" << endl; getch(); free(st); return -1; }

	f.seekg(0, ios::beg); //возвращам курсор в начало файла
	for (i = 0; i < n; i++) f >> st[i].N; //читаем из файла порядковые номера студентов
	for (i = 0; i < n; i++) f >> st[i].fam; // фамилии
	for (i = 0; i < n; i++) f >> st[i].prname; // предметы студентов
	
	f.close();
	cout << endl << "Данные успешно загружены из файла. Для продолжения нажмите Enter";
	getch();

	while (true) {
		
		Menu();
		cin >> tint;
	
		switch(tint) {
		case 0: {
			free(st);
			return 0;
				}
		
				}
		case 1: {
			showTable(st, n);
			break;
				}
		}
	}
	free(st);
	return 0;

Последний раз редактировалось BomaN1; 14.12.2011 в 21:46.
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 20:41   #2
BomaN1
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 21
По умолчанию

Код:
и для удаления алгоритм 
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <conio.h>
using namespace std;
 
struct Student
 
{ 
        char Fstudent [10]; // фамилия студента
        int Ostudent ;      // оценка студента
        char Pstudent [20];  // наим. предметов
};
void seeStudent(Student pst);
bool getStudent();
bool addStudent();
bool buyStudent();
int main()
{
char ch;
        bool bMenu = true;
        while(bMenu)
        {
                system("cls");
                cout<<"\t\t*** МЕНЮ БАЗА ДАННЫХ (Студенты) ***\n";
                cout<<"1 - просмотр списка студентов и предметов\n";
                cout<<"2 - добавить студента\n";
                cout<<"3 - добавить предмет\n";
            cout<<"4 - удалить студента\n"; 
                cout<<"5 - cохранить результат\n";
        cout<<"6 - выход из программы\n";
                
                cout<<(ch = getch())<<endl;
                switch(ch)
                {
                case '1':
                        if(!getStudent())
                                cout<<"При добавлении cтудента возникли ошибки\n";
                        break;
                case '2':
                        if(!addStudent())
                                cout<<"При добавлении студента возникли ошибки\n";
                        break;
                case '3':
                        if(!buyStudent())
                                cout<<"При удалении студента возникли ошибки\n";
                        break;
                default :
                        bMenu = false;
                        cout<<"Прекращаем работу программы\n";
                        break;
                }
                system("pause");
        }
        return 0;
        void seeStudent(Student pst)
{
        cout<<"------------------------------------\n";
 
        cout<<"Фамилия студента : "<<pst.Fstudent<<endl;
        cout<<"Название предмета : "<<pst.Pstudent<<endl;
        cout<<"Оценка : "<<pst.Ostudent<<endl;
        cout<<"------------------------------------\n";
        }
        bool getStudent()
{
        cout<<"\tРежим просмотр списка cтудентов\n";
        bool bFlag  = false;
        long i,j,N;
        long fSize  = -1;
        char ch;
        product * list = NULL;
        product pst = {0};
        ifstream ifs
        (
                "d.txt",
                ios::binary
        );
        if(!ifs)
                cout<<"Ошибка открытия файла d.txt\n";
        else
        {
                ifs.seekg(0,ios::end);
                fSize = ifs.tellg();
                ifs.seekg(0,ios::beg);
 
                list = new product[(N = fSize/sizeof(product))];
                ifs.read((char *)list,fSize)
        
}

Последний раз редактировалось BomaN1; 14.12.2011 в 20:59.
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 21:36   #3
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

У вас что-то не получается или просто решили поделиться?
psycho-coder вне форума Ответить с цитированием
Старый 14.12.2011, 21:51   #4
BomaN1
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 21
По умолчанию

http://programmersforum.ru/showthread.php?t=178705
BomaN1 вне форума Ответить с цитированием
Старый 01.06.2014, 21:32   #5
alexb4
Пользователь
 
Регистрация: 09.06.2013
Сообщений: 22
По умолчанию

Подскажите люди добрые как правильно оформить этот самый .txt файл где хранятся файлы просто в универе схожее задание и пытаюсь на основе этого кода что да как
alexb4 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
база данных. добавление и удаление данных midiss Общие вопросы Delphi 3 09.12.2011 13:07
База данных и технология хранения данных Kate1 Помощь студентам 2 17.11.2011 23:27
Небольшая база в Open Office База данных. sashaman Фриланс 3 11.04.2010 20:13
База данных с возможностью приема данных из файлов Excel Al_Sha БД в Delphi 6 16.10.2009 15:34