Четверг, 28 Ноября 2024, 22:11

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Небольшой некоммерческий проект на С
DarkbasicДата: Воскресенье, 31 Октября 2021, 19:25 | Сообщение # 1
Revival Deiphi
Сейчас нет на сайте
Всех приветствую. Зарегистрировался на данном форуме далеких 10 лет назад, было тогда 13 лет отроду, как увлекся программированием. Было всякое, что то пытался, что то делал, но все в итоге так и осталось где-то на полках пылиться, не достиг я в данной сфере ничего от слова совсем. Время как-то прошло, теперь я более менее взрослый человек и решил все таки идти за своей маленькой мечтой, ведь как сказал один из мною прослушиваемых исполнителей "Мечта - таблетка, если жизнь спазм", но не суть. Поступил я на курсы, время к диплому(за что будет корочка, но не так важно) и есть у меня небольшой набросок проекта. Это что-то вроде готовой БД на чистом С. Я понимаю, что есть sql, plpgsql, mysql и им подобные, но моя цель не в этом, в укреплении и углублении знаний по С, хотя как известно, язык угасает(нет, конечно на нем еще написана добрая половина всяких драйверов и устройства различные на нем еще работают), и все работают уже минимум на С++, ведь ООП, как известно, смогло вытеснить процедурное программирование. Ну-с, извиняюсь за тираду, перейдем к сути.
Хотелось бы вас, всех гуру программирования(это сейчас не в обиду, не подкалываю, а действительно с уважением обращаюсь) попросить обратить внимание на мою небольшую программку(и действительно, она весит пока что 33 Кб), которая является чем-то вроде готовой БД.
В "БД" есть следующие поля: Номер человека, его ФИО, его дата поступления и отчисления. Что то вроде универской БД в самом простом виде. Что на данный момент умеет программа:
1)Соответственно запоминать данные, то есть можно их вводить(для простоты тестов даты генерируются случайным образом, вводятся только ФИО ). Для ФИО есть функция, что при любом регистре программа преобразует данные в нормальный вид. Пример иВАнов - преобразуется в Иванов и так далее.
2)Читать эти данные.
3)Сортировать эти данные по нужному выбранному полю(ФИО сортирует по отдельности, то есть либо по фамилии, либо по имени, либо по отчеству и по первой букве пока что, ну а числа соответственно в порядке возрастания).
4)Поиск по нужному полю. Тут пока реализовано кривовато, по ФИО ищет только точные совпадения строка в строку, либо по первой букве следующей и предыдущей, с цифрами аналогично, либо точные данные, либо ближайшие +-1.
5)Удалять элемент полностью.
6)Изменять любые данные в выбранном элементе.
7)Записывать все введенные данные в файл и при последующей открытии программы считывать их по новой.
Пока что это все, что умеет. Программа соответственно построена на консольной основе, так как пока видимо мне не хватает какой-то программистской смекалки понять WINAPI, чтобы все это красиво в окошечке было.
Ссылка на сам исполняющий файл Ссылка на скачивание. При запуске после введения данных создастся файл data.txt, при втором запуске создастся файл last_num.txt рядом, первый хранит всю "БД", во втором хранится номер последнего элемента.
Хотелось бы услышать какой-то критики, напутствий и всего такого, так как мне нравится этим заниматься, хоть оно и не приносит мне доход, плюс по С очень мало тем в принципе, никто не занимается уже этим языком по крайней мере здесь. Всем заранее спасибо!



Storm54Дата: Воскресенье, 31 Октября 2021, 21:21 | Сообщение # 2
постоянный участник
Сейчас нет на сайте
Если пишете диплом по этой теме, то очень странно видеть путаницу в терминах БД и СУБД. Ваша программа как раз-таки является неким подобием СУБД.
Касаемо программы:
Формат хранения выбран неудачный по нескольким причинам:
1. В текстовом формате хранить избыточно. Особенно, если планируется добавлять различные типы данных.
2. Столбцы разделены пробелами, что уже исключает возможность использования этих символов в качестве полезных данных.
3. Строки таблицы разделены символами переноса строк, что также исключает возможность хранить многострочные документы в БД.
Функционал СУБД очень скуден, по сути реализована только одна таблица с захардкоженным типом данных, подробнее:
1. Отсутствие возможности создавать и настраивать базы данных, таблицы и т.п.
2. Естественно, ни о каком ACID и речи даже не может идти.
3. Догадываюсь, что какой либо встроенной оптимизации поиска также нет.

Похвально, что пробуете писать на C - хоть немного разберетесь с основами работы с памятью, но проект очень слабый и даже рассматривать нечего. Если была задумка сделать СУБД, то можно было бы поставить конкретную задачу и попытаться ее реализовать - тот же журнал транзакций попытаться сделать и понять какую задачу он решает.

Советую прочитать любую книгу по SQL, чтобы понять, какие вообще задачи решают SQL СУБД. Хорошая книга "Введение в SQL" Мартина Грабера.


Сообщение отредактировал Storm54 - Вторник, 02 Ноября 2021, 15:43
drcrackДата: Понедельник, 01 Ноября 2021, 00:30 | Сообщение # 3
старожил
Сейчас нет на сайте
Цитата
2. Столбцы разделены пробелами, что уже исключает возможность использования этих символов в качестве полезных данных.
3. Строки таблицы разделены символами переноса строк, что также исключает возможность хранить многострочные документы в БД.

ну это решается экранированием
хотя согласен что проект в целом странный :D
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг