Создание базы данных и выполнения различных операций с ними - C (СИ)
Формулировка задачи:
Суть программки, создание базы данных и выполнения различных операций с ними (Ввод, редактирование, удаление и т.д.)
Не работает в программе два модуля, возможно кто-то сможет сказать в чем причина, а именно "видалення" (удаление), и "пошук" (поиск).
Програмка необходима для курсового проекта.
Делал все по методичке но не все получилось, в программировании не силен, но что-то получилось сделать, возможно кто-то поможет.
Ссылка на програмку: [ссылка удалена]
Или могу сбросить на почту.
Извините что не на Русском меню программы.
#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <string.h>
struct base{
int i;
int code;
char name[100];
int number;
float price;
char date[100];
};
int menu(void);
void create(void);
void update(void);
void view(void);
void del(void);
void change(void);
void search(void);
char*UA(const char*text);
int main(int argc, char *argv[])
{
int a;
while((a=menu())!=7){
switch(a){
case 1:
create();
break;
case 2:
update();
break;
case 3:
view();
break;
case 4:
del();
break;
case 5:
change();
break;
case 6:
search();
break;
default:
system("cls");
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Помилка : невiрна команда"));
printf("--------------------------------------------------------------------------------\n");
getch();
}
}
return 0;
}
int menu(void){
system("cls");
int i;
printf("\n\n\n\n\n\n\n--------------------------------------------------------------------------------");
printf(" %s \n",UA("1 - Створити базу даних"));
printf(" %s \n",UA("2 - Оновити базу даних"));
printf(" %s \n",UA("3 - Переглянути базу даних"));
printf(" %s \n",UA("4 - Видалити запис"));
printf(" %s \n",UA("5 - Змiнити запис"));
printf(" %s \n",UA("6 - Пошук"));
printf(" %s \n",UA("7 - Вихiд"));
printf("--------------------------------------------------------------------------------\n#");
scanf("%d",&i);
return i;
};
/*Створення БД*/
void create(void)
{system("cls");
int exit;
int b;
FILE *p;
struct base a;
memset(&a,0,sizeof(struct base));
a.code=1;
if((p=fopen("base.dat","w+"))==NULL){
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Помилка : невдалось вiдкрити файл"));
printf("--------------------------------------------------------------------------------\n");
getch();
}
else{
while(a.code!=0)
{
system("cls");
printf("********************************************************************************\n");
printf("%s | ",UA("Введiть код товару"));
scanf("%d",&a.code);
printf("--------------------------------------------------------------------------------\n");
printf("%s | ",UA("Введiть назву товару"));
scanf("%s",&a.name);
printf("--------------------------------------------------------------------------------\n");
printf("%s | ",UA("Кiлькiсть товару"));
scanf("%d",&a.number);
printf("%s | ",UA("Введiть цiну"));
scanf("%f",&a.price);
printf("%s | ",UA("Введiть дату продажу"));
scanf("%s",&a.date);
printf("--------------------------------------------------------------------------------\n");
fseek(p,(a.code-1)*sizeof(struct base),SEEK_SET);
fwrite(&a,sizeof(struct base),1,p);
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Вийти Так = 1 Нi = 0"));
printf("--------------------------------------------------------------------------------\n");
scanf("%d",&exit);
if(exit==1){memset(&a,0,sizeof(struct base));
fseek(p,(a.code-1)*sizeof(struct base),SEEK_SET);
fwrite(&a,sizeof(struct base),1,p);
}
if(exit==1)break;
}
fclose(p);
}
};
/*оновлення бд*/
void update(void){
system("cls");
int a;
int c;
char n[100];
int num;
float price;
float date;
FILE *p;
if((p=fopen("base.dat","r+"))==NULL){
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Помилка : невдалось вiдкрити файл"));
printf("--------------------------------------------------------------------------------\n");
getch();
}
else {
struct base b;
printf("%s\n",UA("Введіть код товару для обновлення запису"));
scanf("%d",&a);
fseek(p,(a-1)*sizeof(struct base),SEEK_SET);
fread(&b,sizeof(struct base),1,p);
if(b.code==0)
printf("%s\n",UA("Запис не містить даних"));
else
{
printf("********************************************************************************\n");
printf("%s\t",UA("Код товару"));
printf("%s\t",UA("Назва"));
printf("%s\t",UA("Кiлькiсть"));
printf("%s\t",UA("Цiна"));
printf("%s\n",UA("Дата"));
printf("%d\t",b.code);
printf("%s\t",b.name);
printf("%d\t",b.number);
printf("%f\t",b.price);
printf("%f\t",b.date);
printf("\n--------------------------------------------------------------------------------\n");
printf("%s\t",UA("Введіть нвое значення"));
printf("********************************************************************************\n");
printf("%s | ",UA("Введiть код товару"));
scanf("%d",&c);
b.code=c;
printf("--------------------------------------------------------------------------------\n");
printf("%s | ",UA("Введiть назву товару"));
scanf("%s",&n);
printf("--------------------------------------------------------------------------------\n");
printf("%s | ",UA("Кiлькiсть товару"));
scanf("%d",&num);
b.number=num;
printf("%s | ",UA("Введiть цiну"));
scanf("%f",&price);
b.price=price;
printf("%s | ",UA("Введiть дату продажу"));
scanf("%s",&date);
printf("--------------------------------------------------------------------------------\n");
fseek(p,(a-1)*sizeof(struct base),SEEK_SET);
fwrite(&b,sizeof(struct base),1,p);
}
fclose(p);
}
printf("%s",UA("\nДля виходу в головне меню натиснiть будь-яку клавiшу..."));
getch();
};
/*перегляд бд*/
void view(void)
{
system("cls");
FILE *p;
char t;
struct base a;
memset(&a,0,sizeof(struct base));
a.code=1;
if((p=fopen("base.dat","r"))==NULL){
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Помилка : невдалось вiдкрити файл"));
printf("--------------------------------------------------------------------------------\n");
getch();
}
else{
while(!feof(p)){
fread(&a,sizeof(struct base),1,p);
if(a.code!=0){
printf("********************************************************************************\n");
printf("%5s\t",UA("Код товару"));
printf("%10.5s\t",UA("Назва"));
printf("%10s\t",UA("Кiлькiсть"));
printf("%5s\t",UA("Цiна"));
printf("%20s\n",UA("Дата"));
printf("%10d\t",a.code);
printf("%10s\t",a.name);
printf("%10d\t",a.number);
printf("%.2f\t",a.price);
printf("%20s\t",a.date);
printf("\n--------------------------------------------------------------------------------\n");
}
}
fclose(p);
}
printf("%s",UA("\nДля виходу в головне меню натиснiть будь-яку клавiшу..."));
getch();
};
void del(void){
FILE *p;
if((p=fopen("base.dat","r+"))==NULL){printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Помилка : невдалось вiдкрити файл"));
printf("--------------------------------------------------------------------------------\n");
getch();
}
else
{struct base a, bst={0,0,"",0,0.0,""};
int n;
system("cls");
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Введіть запис для видалення"));
printf("--------------------------------------------------------------------------------\n");
scanf("%f",&n);
fseek(p,(n-1)*sizeof(struct base),SEEK_SET);
fread(&a,sizeof(struct base),1,p);
if(a.code==0){
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Відсутній запис"));
printf("--------------------------------------------------------------------------------\n");
getch();}
else
{
fseek(p,(n-1)*sizeof(struct base),SEEK_SET);
fwrite(&bst,sizeof(struct base),1,p);
}}
fclose(p);
printf("%s",UA("\nДля виходу в головне меню натиснiть будь-яку клавiшу..."));
getch();
}
void change(void){
}
void search(void)
{
system("cls");
FILE *p;
char t;
int u;
struct base a;
memset(&a,0,sizeof(struct base));
a.code=1;
if((p=fopen("base.dat","r"))==NULL){
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Помилка : невдалось вiдкрити файл"));
printf("--------------------------------------------------------------------------------\n");
getch();
}
else{
while(!feof(p)){
fread(&a,sizeof(struct base),1,p);
if(a.code!=0){
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Введіть слово для пошуку"));
printf("--------------------------------------------------------------------------------\n");
scanf("%d",&u);
if((strcmp(t,a.name))==NULL)
{printf("********************************************************************************\n");
printf("%5s\t",UA("Код товару"));
printf("%10.5s\t",UA("Назва"));
printf("%10s\t",UA("Кількість"));
printf("%5s\t",UA("Ціна"));
printf("%20s\n",UA("Дата"));
printf("%10d\t",a.code);
printf("%10s\t",a.name);
printf("%10d\t",a.number);
printf("%.2f\t",a.price);
printf("%20s\t",a.date);
printf("\n--------------------------------------------------------------------------------\n");
}
else{
printf("--------------------------------------------------------------------------------\n");
printf(" %s \n",UA("Не знайдено"));
printf("--------------------------------------------------------------------------------\n");
}
}
}
fclose(p);
}
printf("%s",UA("\nДля виходу в головне меню натиснiть будь-яку клавiшу..."));
getch();
}
char*UA(const char*text)
{
char bufUA[256];
CharToOem(text, bufUA);
return bufUA;
}Решение задачи: «Создание базы данных и выполнения различных операций с ними»
textual
Листинг программы
if (!strcmp(t,a.name))