Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 2
Регистрация: 21.09.2015
Сообщений: 321
1

Способы хранения информации о книгах и проценте их прочтения

23.03.2016, 10:15. Показов 2289. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем привет!
Подскажите, что лучше использовать
Необходимо хранить информации о книгах и процент их прочтения
Думал, как в делфи в типизированном файле, или тут лучше подойдет бд типо sql lite?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.03.2016, 10:15
Ответы с готовыми решениями:

Создать класс HomeLibary. Предусмотреть возможность хранения о книгах следующей информации:
Создать класс HomeLibrary (Домашняя библиотека). Предусмотреть возможность хранения о книгах...

Способы обеспечения надёжного хранения и передачи информации
Помогите пожалуйста с двумя вопросами Способы обеспечения надёжного хранения информации. Способы...

Разработать программу «Библиотека», в которой для хранения информации о книгах используется массив структур
Разработать программу «Библиотека», в которой для хранения информации о книгах используется массив...

Ввод/вывод в консоль любой произвольной информации и закрытие ее после прочтения
Ребят, не изучал C++ и не собирался. Просьба к вам небольшая. Мне нужен код : Запускается...

29
1517 / 908 / 328
Регистрация: 17.05.2015
Сообщений: 3,430
23.03.2016, 10:30 2
bySawka, зачем заделывать целую бд под хранение 1 переменной string и int? Сохраняй данные в xml файл и не парься
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
23.03.2016, 10:32 3
Цитата Сообщение от Рядовой Посмотреть сообщение
хранение 1 переменной string и int
Рядовой, у ТС сказано про набор.
Цитата Сообщение от bySawka Посмотреть сообщение
информации о книгах
Так что бд здесь подошла бы. Но и xml файл тоже. Будет зависеть от количества книг.
1
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
23.03.2016, 10:35 4
Цитата Сообщение от bySawka Посмотреть сообщение
Подскажите, что лучше использовать
Я не думаю что для вас это будет критично. Самый просто вариант XML, если такой вариант вам не равится, то можно воспользоватся базой данных (sqlite), но реализация будет немного сложнее/
1
1 / 1 / 2
Регистрация: 21.09.2015
Сообщений: 321
23.03.2016, 11:08  [ТС] 5
insite2012, а можно пример работы с xml?
0
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
23.03.2016, 11:47 6
Делайте на sqlite.
Выбраем ORM:
1) Dapper https://github.com/StackExchange/dapper-dot-net
2) EF https://msdn.microsoft.com/ru-... 10%29.aspx

вот пример работы с EF Работа с библиотекой AutoMapper
1
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
23.03.2016, 11:48 7
Вчера в другую тему выкладывал. Думаю поймете Сохранение таблицы в файл

Добавлено через 1 минуту
_exp10der_, если там небольшой объем информации или учебная программа зачем создавать себе столько лишних проблема?
1
Warrior
500 / 427 / 177
Регистрация: 23.11.2014
Сообщений: 932
23.03.2016, 14:09 8
orlov87, Спросили что лучше использовать очевидно бд. Написать класс Book с нужными автосвойтвами и использовать методы Add и SaveChanges(); что тут сложного...
0
1 / 1 / 2
Регистрация: 21.09.2015
Сообщений: 321
23.03.2016, 16:01  [ТС] 9
Что быстрее будет работать
1. SQL запрос или парсинг XML ?
Если данные нужно часто обновлять (например раз 10 в минуту ) - то лучше обновлять данные например при закрытии программы или по 100% прочтению книги?
0
82 / 82 / 51
Регистрация: 25.02.2016
Сообщений: 243
23.03.2016, 16:57 10
Цитата Сообщение от bySawka Посмотреть сообщение
1. SQL запрос или парсинг XML ?
Если у вас будет хотя бы несколько тысяч записей, то лучше брать бд. А если меньше, то разницы вы не заметите.
Цитата Сообщение от bySawka Посмотреть сообщение
то лучше обновлять данные например при закрытии программы или по 100% прочтению книги?
БД сама разберется, а XML например по таймеру и при закрытии.
1
Эксперт .NET
11070 / 6987 / 1571
Регистрация: 25.05.2015
Сообщений: 21,072
Записей в блоге: 14
23.03.2016, 17:46 11
Цитата Сообщение от _exp10der_ Посмотреть сообщение
что тут сложного...
Для такой задачи явный оверхед, или иначе "из пушки по воробьям".
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
23.03.2016, 17:51 12
bySawka, простой пример.
1. Создаем БД примерно с такой структурой, как на скрине.
2. Пишем модель данных (поля добавьте по вкусу, изменив код выборки).
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.ComponentModel;
 
namespace BookBaseDemo.Models {
    public class Book {
        [DisplayName("Автор произведения")]
        public string Author { get; set; }
        [DisplayName("Название произведения")]
        public string Name { get; set; }
        [DisplayName("Процент прочтения")]
        public float Percentage { get; set; }
    }
}
3. Пишем класс для взаимодействия с БД
C#
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Data;
using System.Data.SQLite;
using BookBaseDemo.Models;
 
namespace BookBaseDemo.DbProvider {
    public class SQLiteDbProvider {
        static string CONNECT_STR = string.Format("Data Source={0}",
            Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "database.db"));
        public Book[] GetBooks() {
            string selectStr = "SELECT * FROM Books";
            List<Book> books = new List<Book>();
            using (SQLiteConnection cnn = new SQLiteConnection(CONNECT_STR)) {
                cnn.Open();
                using (SQLiteCommand cmd = new SQLiteCommand(selectStr, cnn)) {
                    using (SQLiteDataReader dr = cmd.ExecuteReader()) {
                        while (dr.Read()) {
                            Book book = new Book {
                                Author=(string)dr["author"],
                                Name=(string)dr["name"],
                                Percentage=float.Parse(dr["percentage"].ToString())*100.0F
                            };
                            books.Add(book);
                        }
                    }
                }
            }
            return books.ToArray();
        }
    }
}
4. Ну и при загрузке формы выводим все в грид.
C#
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
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
 
using BookBaseDemo.Models;
using BookBaseDemo.DbProvider;
 
namespace BookBaseDemo {
    public partial class MainForm : Form {
        SQLiteDbProvider dbProvider = null;
        public MainForm() {
            InitializeComponent();
            dbProvider = new SQLiteDbProvider();
            this.Load += new EventHandler(MainForm_Load);
        }
 
        void MainForm_Load(object sender, EventArgs e) {
            booksGridView.DataSource = dbProvider.GetBooks();
        }
    }
}
Вот в общем и все.
Миниатюры
Способы хранения информации о книгах и проценте их прочтения  
1
Эксперт .NET
11070 / 6987 / 1571
Регистрация: 25.05.2015
Сообщений: 21,072
Записей в блоге: 14
23.03.2016, 18:01 13
Кстати, надо хранить не процент, а точную целочисленную позицию начала отображаемой страницы текста.
% только для отображения юзеру.
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
23.03.2016, 18:03 14
Цитата Сообщение от Rius Посмотреть сообщение
надо хранить не процент
Rius, это пусть ТС сам разбирается, что ему там хранить. Вопрос был именно так поставлен.
0
1 / 1 / 2
Регистрация: 21.09.2015
Сообщений: 321
24.03.2016, 10:07  [ТС] 15
insite2012, что нужно будет с собой "таскать" чтобы приложение отладить на другом компьютере?
0
Эксперт .NET
5545 / 4308 / 1218
Регистрация: 12.10.2013
Сообщений: 12,356
Записей в блоге: 2
24.03.2016, 10:10 16
Цитата Сообщение от bySawka Посмотреть сообщение
что нужно будет с собой "таскать"
Для данной БД нужна всего одна dll.
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.03.2016, 10:12 17
Rius, для такой задачи вообще пофиг, что использовать. БД очевидно масштабируемее. Ну и не говоря о том, что учебные задачи подразумевают тренировку перед будущей рабочей деятельностью, и если человек на рабочем месте в нормальном проекте начинает использовать XML-файлики (кстати почему XML? Я например JSON/BSON предпочитаю), то это клиника.

У нас был тут один "удаленщик". Взяли его на подработку помочь спроектом на ASP.Net, так этот перец весь результирующий HTML генерировал руками и пихал в стрингбилдер, а потом возвращал, aspx страниц у него не было вообще, просто хреначим все в Response и хоть трава не расти. А просто потому что "нипривык".
1
Эксперт .NET
11070 / 6987 / 1571
Регистрация: 25.05.2015
Сообщений: 21,072
Записей в блоге: 14
24.03.2016, 10:17 18
Psilon, очевидно, масштабируемее. И не очевидно, что ещё будет храниться, кроме некой "информации о книгах" и процента прочтения. А настройка ORM - дело не пары минут.
Оверинженеринг.
0
Master of Orion
Эксперт .NET
6100 / 4956 / 905
Регистрация: 10.07.2011
Сообщений: 14,522
Записей в блоге: 5
24.03.2016, 10:28 19
Цитата Сообщение от Rius Посмотреть сообщение
А настройка ORM - дело не пары минут.
Ой ли
0
1 / 1 / 2
Регистрация: 21.09.2015
Сообщений: 321
24.03.2016, 10:30  [ТС] 20
можете подсказать как dll в exe "положить"
что бы был только ехе без лишних файлов?
0
24.03.2016, 10:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.03.2016, 10:30
Помогаю со студенческими работами здесь

Способы хранения данных
Здравствуйте! Есть программа, которая хранит в себе данные с интернета по датам (парсинг). Прога...

По номеру носителю информации и объему информации найти количество носителей необходимых для её хранения
Цифровые носители информации пронумерованы следующим образом: 1 - дискета, 2 - диск cd-r, 3 - диск...

Способы хранения данных для expandable listview
Написал адаптер для expandedlistview. В каких объектах хранить данные для адаптера? Данные будут...

Ввод и поиск информации о книгах
Пытаюсь создать программу , которая заполняет массив структур данными,выводит на экран , и поиск в...

Поиск информации в нескольких книгах
Помогите, плз=( В папке есть несколько книг Excel, в каждой из которых хранится информация о...

Какие способы хранения можно считать самыми оптимальными для поиска?
Поисковые алгоритмы тем или иным способом ведут поиск совпадений в текстовых полях или сравнение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru