1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
| #include "stdafx.h"
#include <stdio.h>
#include <locale.h>
#include <string.h>
#include <stdlib.h>
#define studentNum 300
struct studentDB
{
char surname[30];
int yearNum;
float grant;
} ;
studentDB data[studentNum];
void output_student(int i,studentDB *data) {
printf("Введите номер студента: ");
scanf("%d\n", &i);
if ( data[i].surname[0] != '\0' ) {
printf("Студент №%d\n", i);
printf("Фамилия: %s\n", data[i].surname);
printf("Номер курса: %d\n", data[i].yearNum);
printf("Стипендия: %d\n", data[i].grant);
}
else printf("Студент под номером %d не зарегистрирован\n", i);
}
void sorting(studentDB **data) {
studentDB *temp;
int i = 0, j;
for (i = 0; i < studentNum; i++) {
for (j = i + 1; j < studentNum; j++) {
if (strcmp(data[i]->surname, data[j]->surname) < 0 ) {
temp = data[i];
data[i] = data[j];
data[j] = temp;
}
}
}
}
void output_to_display(studentDB *data) {
int i;
for (i = 0; i < studentNum; i++) {
if ((data[i].surname[0] != '\0') & (data[i].yearNum != 0)) {
printf("Номер студента:","\nStudent N%d\n", i);
printf("Фамилия:","%s\n", data[i].surname);
printf("Номер курса:","%d\n", data[i].yearNum);
printf("Стипендия:","%d\n", data[i].grant);
}
}
}
void input_to_file(studentDB *data) {
int i = 0;
FILE *stream;
stream = fopen("database.txt", "w");
if (stream != NULL) {
while (i < studentNum) {
if (data[i].yearNum != 0) {
fprintf(stream, "%s\n", data[i].surname);
fprintf(stream, "%d\n", data[i].yearNum);
fprintf(stream, "%d\n", data[i].grant);
}
}
fclose (stream);
printf("Сохранение завершено успешно\n");
}
else printf("Ошибка сохранения\n");
}
void output_from_file(studentDB *data) {
int i = 0;
FILE *stream = fopen("database.txt", "r");
if (stream != NULL) {
while (!feof(stream)) {
fscanf(stream, "%s\n", &data[i].surname);
fscanf(stream, "%d\n", &data[i].yearNum);
fscanf(stream, "%s\n", &data[i].grant);
i++;
}
fclose(stream);
printf("Чтение завершено успешно\n");
}
else printf("Ошибка чтения\n");
}
void main() {
int i;
char option;
setlocale(LC_ALL, "Russian");
printf("БАЗА ДАННЫХ О СТУДЕНТАХ\n\n");
printf("Нажмите 1, чтобы зарегистрировать студента\n");
printf("Нажмите 2, чтобы посмотреть данные о студенте\n");
printf("Нажмите 3, чтобы отсортировать базу данных по возрастанию фамилии\n");
printf("Нажмите 4, чтобы вывести отсортированную базу данных на экран\n");
printf("Нажмите 5, чтобы сохранить базу данных в текстовый файл\n");
printf("Нажмите 6, чтобы прочитать базу данных из тектового файла\n");
printf("Нажмите 7, чтобы завершить работу\n\n");
while (option = getchar()) {
switch (option ) {
case '1':
printf("Введите номер студента: ");
scanf("%i",&i);
printf("Введите фамилию студента: ");
scanf_s("%s", data[i].surname);
printf("Введите номер курса: ");
scanf("%i", &data[i].yearNum);
printf("Введите размер стипендии: ");
scanf("%f", &data[i].grant);
printf("Студент зарегистрирован\n");
break;
case '2':
output_student(i, data);
break;
case '3':
sorting(data);
break;
case '4':
sorting(data);
output_to_display(data);
break;
case '5':
input_to_file(data);
break;
case '6':
output_from_file(data);
break;
case '7':
free(data);
exit(0);
default:
printf("Некорректный ввод, выберите одну из предложенных опций\n");
getchar();
}
printf("\nНажмите 1, чтобы зарегистрировать студента\n");
printf("Нажмите 2, чтобы посмотреть данные о студенте\n");
printf("Нажмите 3, чтобы отсортировать базу данных по возрастанию фамилии\n");
printf("Нажмите 4, чтобы вывести отсортированную базу данных на печать\n");
printf("Нажмите 5, чтобы сохранить базу данных в текстовый файл\n");
printf("Нажмите 6, чтобы прочитать базу данных из текстового файла\n");
printf("Нажмите 7, чтобы завершить работу\n\n");
}
} |