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

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

Вернуться   Форум программистов > C/C++ программирование > Visual C++
Регистрация

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

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

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

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


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

1) Ввода исходного списка и его сортировки
2) Занесения оценок по N предметам
3) Добавление новой фамилии (в алфавитном порядке )
4)Исключение фамилий из списка
5) Сохранение результатов
6) Выход
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 20:47   #2
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

И что дальше? Нам всем очень понравилось ваше задание, благословляем вас на его скорейшее и наиболее правильное выполнение
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 14.12.2011, 20:50   #3
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 в 22:31.
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 20:50   #4
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:57.
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 20:55   #5
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Цитата:
Сообщение от BomaN1 Посмотреть сообщение
не урчи
Еще по указывай мне что делать, а чего не делать.

Цитата:
Сообщение от BomaN1 Посмотреть сообщение
не успел выложить что делаю
В одном посте все выкладывать надо, и оформлять тегом CODE(#), тогда проблем не будет.
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 14.12.2011, 20:58   #6
BomaN1
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 21
По умолчанию

можешь проверить алгоритмы ?

если несложно
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 21:01   #7
Blade
Software Engineer
Участник клуба
 
Аватар для Blade
 
Регистрация: 07.04.2007
Сообщений: 1,618
По умолчанию

Что не так-то? Что не работает\не устраивает?
Мужество есть лишь у тех, кто ощутил сердцем страх, кто смотрит в пропасть, но смотрит с гордостью в глазах. (с) Ария
Blade вне форума Ответить с цитированием
Старый 14.12.2011, 21:04   #8
BomaN1
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 21
По умолчанию

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

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

я вот сейчас все заново делать. начиная как раз с вывода списка студентов... можешь помочь с ним?
BomaN1 вне форума Ответить с цитированием
Старый 14.12.2011, 21:29   #10
BomaN1
Пользователь
 
Регистрация: 13.09.2011
Сообщений: 21
По умолчанию

Код:
// 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:43.
BomaN1 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нарастить базу данных edition Microsoft Office Excel 6 12.07.2010 00:06
написать Базу Данных Alesa90 Фриланс 5 27.06.2010 18:31
Создать базу данных west23 Microsoft Office Access 2 11.02.2010 21:20
Создать базу данных u108 Помощь студентам 2 19.01.2010 16:01
Открыть базу данных MogilShik Помощь студентам 3 11.10.2007 17:11