Моя первая курсовая с программирования, делал год назад
#include<iostream>
#include<conio.h>
#include<windows.h>
#include<iomanip>
#include<time.h>
#include<iomanip>
#include<stdlib.h>
using namespace std;
const int n=100;
bool z;
char a[n], c, a2[n];
int j, timer=1000;
time_t t;
char file[10];
FILE *f, *fc, *fb;
struct tim {
struct tm st;
int klk,pom;
float sec, prc;
}dani;
struct mm{
char m[n];
};
mm r[10];
enum ConsoleColor
{
Black = 0,
Blue = 1,
Green = 2,
Cyan = 3,
Red = 4,
Magenta = 5,
Brown = 6,
LightGray = 7,
DarkGray = 8,
LightBlue = 9,
LightGreen = 10,
LightCyan = 11,
LightRed = 12,
LightMagenta = 13,
Yellow = 14,
White = 15
};
void SetColor(ConsoleColor text, ConsoleColor background);
void menu();
void trenager();
void result();
void pro();
void help();
void stat();
void add();
void pass();
void info();
void clean_base();
void main()
{
setlocale(0, "");
SetColor(Black, White);
menu();
getch();
}
void menu(){
system("mode con cols=80 lines=25");
system("cls");
int i, k=6;
z=0;
strcpy(r[0].m, "РОЗПОЧАТИ");
strcpy(r[1].m, "РЕЗУЛЬТАТИ");
strcpy(r[4].m, "ПРО ПРОГРАМУ");
strcpy(r[3].m, "ДОПОМОГА");
strcpy(r[5].m, "ВИХiД");
strcpy(r[2].m, "КЕРУВАННЯ");
strcpy(r[6].m, " ");
while(1){
cout<<"\t\tЗробiть ваш вибiр:\n";
for(i=0; i<=k;i++){
if(i==j) SetColor(White, Black);
if(i==j+1) SetColor(Black, White);
cout<<"\t"<<r[i].m<<endl;
}
info();
c = static_cast<int>(getch());
if(c==72 && j>0) j--;
else if(c==80 && j<k-1) j++;
else if(c==27) exit(0);
else if(c==13) {
switch(j){
case 0:{trenager();}
break;
case 1:{result();}
break;
case 4:{pro();}
break;
case 3:{help();}
break;
case 5:{exit(0);}
break;
case 2:{pass();}
break;
}
}
system("cls");
}
}
void result(){
int k=0;
tim a;
system("cls");
system("mode con cols=100 lines=20");
if(fopen("ex.dat", "rb")==NULL) cout<<"Файлу з результатами нема!";
else {
f = fopen("ex.dat", "rb");
while(!feof(f)){
fread(&a, sizeof(dani), 1, f);
k++;
}
k--;
fclose(f);
if(!k) {cout<<"Файл з результатами пустий!";
Sleep(timer); menu();
}
else{
f = fopen("ex.dat", "rb");
cout<<setw(21)<<"Дата/час"<<"|"<<"Всього символiв"<<"|"<<"Час введення, сек."<<"|"<<"Помилок"<<"|"<<"Темп, уд/хв"<<"|"<<"Майстернiсть, сим/хв"<<"|"<<endl;
for(int i=0;i<k;i++){
fread(&a, sizeof(dani), 1, f);
cout<<setw(5)<<a.st.tm_hour<<":"<<a.st.tm_min<<":"<<a.st.tm_sec<<" "<<a.st.tm_mday<<"/"<<a.st.tm_mon+1<<"/"<<a.st.tm_year+1900<<"|"<<setw(15)<<a.klk<<"|"<<setw(18)<<a.sec<<"|"<<setw(7)<<a.pom<<"|"<<setw(11)<<a.klk/a.sec*60<<"|"<<setw(20)<<(a.klk-a.pom)/a.sec*60<<"|"<<endl;
}
}
fclose(f);
cout<<endl;
SetColor(White, Black);cout<<"Enter"; SetColor(Black, White);
cout<<" - Очистити \t";
SetColor(White, Black);cout<<"Esc"; SetColor(Black, White);
cout<<" - В меню";
strcpy(file,"ex.dat");
c=static_cast<int>(getch());
switch(c){
case 13: clean_base();
break;
case 27: menu();
break;
default:{system("cls");}
}
}
}
void pro(){
system("cls");
cout<<"Пpoграму створив Строгуш назарiй\nГалицький коледж 2012 рiк\n Версiя 1.0\n";
cout<<endl;
SetColor(White, Black);cout<<"Будь-яка клавiша"; SetColor(Black, White);
cout<<" - В меню";
getch();
menu();
}
void help(){
system("cls");
system("mode con cols=85 lines=26");
cout<<"Програма складається з шести роздiлiв:\n";
cout<<endl;
cout<<"РОЗПОЧАТИ - вiдкриває саме тестування вашої швидкостi введення з клавiатури\n";
cout<<endl;
cout<<"РЕЗУЛЬТАТИ - дає змогу переглянути данi про попереднi введення поданого тексту\n";
cout<<endl;
cout<<"КЕРУВАННЯ - перехiд до панелi керування, де вiдбувається робота з базою\n";
cout<<endl;
cout<<"ДОПОМОГА - власне цей роздiл\n";
cout<<endl;
cout<<"ПРО ПРОГРАМУ - автор програми, навчальний заклад, рiк, версiя програми\n";
cout<<endl;
cout<<"ВИХiД - вихiд iз програми\n\n";
cout<<endl;
cout<<"Перехiд по програмi та меню вiдбувається за допомогою клавiш навiгацiї\n";
cout<<endl;
SetColor(White, Black);cout<<"Будь-яка клавiша"; SetColor(Black, White);
cout<<" - В меню";
getch();
menu();
}
void trenager(){
system("cls");
system("mode con cols=100 lines=20");
int pos1=0, pos2=0, i, j=0, pom=0, kilk=0;
const int k=3;
char rech[100];
if(fopen("baza.dat","r+b")==NULL) {cout<<"Файл з базою слiв вiдсутнiй, \nЗаповнити базу слiв?";
cout<<endl;
SetColor(White, Black);cout<<"Enter"; SetColor(Black, White);
cout<<" - Додати слова\t";
SetColor(White, Black);cout<<"Esc"; SetColor(Black, White);
cout<<" - В меню";
c=static_cast<int>(getch());
switch(c){
case 13: pass();
break;
case 27: menu();
break;
}
}
else {fc=fopen("baza.dat","r+b");
srand(time(NULL));
fb = fopen("baza.dat", "r+b");
while(!feof(fb)){
fread(&a2, sizeof(a2), 1, fb);
kilk++;
}
kilk--;
fclose(fb);
if(!kilk) {cout<<endl;
cout<<"Слiв немає в базi...";
SetColor(White, Black);cout<<"Enter"; SetColor(Black, White);
cout<<" - Додати слова\t";
SetColor(White, Black);cout<<"Esc"; SetColor(Black, White);
cout<<" - В меню";
c=static_cast<int>(getch());
switch(c){
case 13: pass();
break;
case 27: menu();
break;
}
}
else{
float a1;
char aa[100];
rech[0]='\0';
int r=10;
for(int j=0;j<r;j++){
strcat(rech, " ");
int i=0, rkilk=rand()%kilk;
while(i<rkilk){
fread(&aa,sizeof(aa),1,fc);
i++;
}
fseek ( fc , 0 , SEEK_SET );
strcat(rech, aa);
}
fclose(fc);
a1 = GetTickCount();
for(;pos2!=strlen(rech);){
cout<<"Речення для введення:\n";
for(i=0; i<strlen(rech);i++){
if(i==pos1) SetColor(Yellow, DarkGray);
if(i==pos2) SetColor(Cyan, LightGray);
if(i==pos2+1) SetColor(Black, White);
cout<<rech[i];}
cout<<endl;
cout<<endl;
for(i=0; i<strlen(rech);i++){
if(i==pos1) SetColor(White, DarkGray);
if(i==pos2) SetColor(White, White);
cout<<rech[i];}
cout<<endl;
SetColor(White, Black);
cout<<"Esc";
SetColor(Black, White);
cout<<" - В меню";
c=getch();
if(c==rech[pos2]) pos2++;
else if(static_cast<int>(c)!=27) {pom++;cout<<"\a";}
else menu();
system("cls");
}
a1=(GetTickCount()-a1)/1000;
int rozm=strlen(rech);
f = fopen("ex.dat", "a+b");
dani.prc=pom/rozm*100;
dani.klk = rozm;
dani.sec = a1;
dani.pom = pom;
time(&t);
dani.st = *localtime(&t);
fwrite(&dani, sizeof(dani), 1, f);
const int k=2;
fclose(f);
pom=0;
stat();
cout<<endl;
SetColor(White, Black);cout<<"Enter"; SetColor(Black, White);
cout<<" - Ще раз\t";
SetColor(White, Black);cout<<"Esc"; SetColor(Black, White);
cout<<" - В меню";
c=static_cast<int>(getch());
switch(c){
case 13: trenager();
break;
case 27: menu();
break;
}
}
}
}
void stat(){
SetColor(White, Black);
cout<<setw(30)<<"Результат:"<<setw(17)<<" "<<endl;
cout<<setw(30)<<"Кiлькiсть символiв - "<<setw(17)<<dani.klk<<setw(50)<<endl;
cout<<setw(30)<<"Введено за - "<<setw(12)<<dani.sec<<" сек."<<endl;
cout<<setw(30)<<"Помилок - ";
SetColor(Red, Black);
cout<<setw(17)<<dani.pom<<endl;
SetColor(White, Black);
cout<<setw(30)<<"Темп - "<<setw(10)<<dani.klk/dani.sec*60<<" нат/хв."<<endl;
cout<<setw(30)<<"Mайстернiсть - ";
SetColor(Green, Black);
cout<<setw(10)<<(dani.klk-dani.pom)/dani.sec*60<<" сим/хв\n"<<endl;
SetColor(Black, White);
}
void pass(){
int l=0;
char a[]="password", aa[]="*", pass_user[100], c;
while(1){
system("cls");
if(z) break;
cout<<"Пароль: \n";
while(1){
c=getch();
if(static_cast<int>(c)!=13 && static_cast<int>(c)!=27){
pass_user[l++] = c;
cout<<aa;
}
else
if (static_cast<int>(c)==27) menu();
else
if(static_cast<int>(c)==13) {pass_user[l++]='\0';
if(!strcmp(pass_user,a)) {SetColor(Green, White); cout<<endl<<"Пароль вiрний"; SetColor(Black, White); l=0; Sleep(timer); z=1; break;}
else {SetColor(Red, White);cout<<endl<<"Пароль невiрний"; SetColor(Black, White); l=0; Sleep(timer); break;}
}
}
}
const int pk = 2;
int i, j=0;
mm p[pk];
strcpy(p[0].m,"ЗАПИСАТИ СЛОВО В БАЗУ");
strcpy(p[1].m,"ОЧИСТИТИ БАЗУ");
while(1){
cout<<"Панель керування: \n";
for(i=0; i<pk;i++){
if(i==j) SetColor(White, Black);
if(i==j+1) SetColor(Black, White);
cout<<"\t"<<p[i].m<<endl;
}
info();
c = static_cast<int>(getch());
if(c==72 && j>0) j--;
else if(c==80 && j<pk-1) j++;
else if(c==27) menu();
else if(c==13) {
switch(j){
case 0:{add();}
break;
case 1:{strcpy(file, "baza.dat");
clean_base();}
break;
}
}
system("cls");
}
}
void add(){
system("cls");
while(1){
cout<<"Вводимо лексему для запису в файл: ";
cin>>a;
fc = fopen("baza.dat","a+b");
fwrite(&a,sizeof(a),1,fc);
fclose(fc);
SetColor(Green, White);cout<<"Данi записанi!"; SetColor(Black, White);
Sleep(timer);
system("cls");
cout<<"Записати ще?";
cout<<endl;
SetColor(White, Black);cout<<"Enter"; SetColor(Black, White);
cout<<" - Записати\t";
SetColor(White, Black);cout<<"Esc"; SetColor(Black, White);
cout<<" - В меню";
c=static_cast<int>(getch());
switch(c){
case 13: add();
break;
case 27: menu();
break;
default:{system("cls");}
}
}
}
void info(){
cout<<endl;
SetColor(White, Black);
cout<<"Up/Down";
SetColor(Black, White);
cout<<" - Вверх/Вниз\t";
SetColor(White, Black);
cout<<"Enter";
SetColor(Black, White);
cout<<" - Вибiр \t";
SetColor(White, Black);
cout<<"Esc";
SetColor(Black, White);
cout<<" - Назад/Вихiд";
}
void clean_base(){
system("cls");
fc = fopen(file,"wb");
fclose(fc);
SetColor(Green, White);
cout<<"Файл очищено!";
SetColor(Black, White);
cout<<endl;
Sleep(timer);
if(!strcmp(file,"ex.dat")) result();
else {pass(); z=1;}
}
void SetColor(ConsoleColor text, ConsoleColor background)
{
HANDLE hStdOut = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(hStdOut, (WORD)((background << 4) | text));
}