Я создаю небольшую СУБД, которая записывает имена студентов, маты #, отдел и майор.студентов Система управления базами данных
Я использую текстовый файл в качестве моей базы данных; моя программа должна добавлять новых студентов, искать студентов, удалять студентов, обновлять информацию об учениках и т. д. На данный момент я добавляю информацию о студентах в базу данных и ее работу отлично, но я хочу постоянно добавлять учеников, не запуская программу снова, пока Я нажимаю клавишу.
Итак, я использовал цикл (оба цикла while и while), и он работает нормально, но я не могу добавить их в базу данных. Я не знаю, что происходит.
Если я не использую цикл, он добавит его в базу данных, но если я использую цикл, он не добавит его.
/*
* Files.c
*
* Created on: Mar 2, 2015
* Author: ousainou
*/
# include <stdio.h>
# include <stdlib.h>
void appending();
void readFile();
main()
{
//printf("do you want to add a student[y/n]");
printf("*********************************\n");
printf("*Students Management System(SMS)*\n");
printf("*********************************\n");
printf("press '1' to add a new student\n");
printf("press '2' to view all students records\n");
//frintf("press '3' to view a a student's information");
//printf("press '4' to edit a student's infomation);
//printf("press '5' to delete a student);
int input;
scanf("%d",&input);
int x= 0;
do{
//do{
if(input == 1)
{
appending();
}
else if(input == 2)
{
readFile();
}
printf("press -1 to exit");
scanf("%d",&input);
if(input == -1)
break;
}while(x == 0);
}
int input;
char firstname[20];
char lastname[20];
char mat_number[10];
char department[10];
char major[20];
char read;
int num = 1;
int count = 0;
void appending()
{
FILE*file = fopen("new file.txt","a");
printf("enter first name\n");
scanf("%s", firstname);
printf("enter second name\n");
scanf("%s", lastname);
printf("enter mat number\n");
scanf("%s", mat_number);
printf("enter department\n");
scanf("%s", department);
printf("enter major\n");
scanf("%s", major);
fprintf(file,"\t\t%s\t\t%s\t\t%s\t\t%s\t\t%s\n",firstname,lastname,mat_number,department,major);
if(file)
{
printf("%s %s%s",firstname,lastname,"'s information has been stored\n");
}
else
{
printf("database not found ");
}
}
void readFile()
{
FILE*rfile = fopen("new file.txt","r");
if(!rfile)
{
printf("file not found");
exit(-1);
}
else
{
do{
read = fgetc(rfile);
printf("%c",read);
}while(read != EOF);
}
}
Thanks bro. Я пробовал это и его работу. Знаете ли вы, как я могу найти конкретного ученика, просто набрав его номер макета – ous
здесь, что я делаю. используйте структуру данных, такую как Связанный список или дерево. после запуска программа должна прочитать файл и поместить его в структуру данных. а также когда я вставляю новую запись, она также помещается в структуру данных. и когда мне нужно найти какой-то один, то я могу просто использовать метод поиска в соответствии с моей структурой. или прочитайте файл по строкам, разделите строку и возьмите номер мата и проверьте его. , вам также может потребоваться рассмотреть размер базы данных. – mhs
Могу ли я увидеть его в кодах? – ous