• Главная
  • Блог
  • Пользователи
  • Форум
  • Литературное творчество
  • Музыкальное творчество
  • Научно-техническое творчество
  • Художественно-прикладное творчество

«Система идей и предложений».

Опубликовано Подова Анна Николаевна вкл 19.02.2024 - 20:24
Автор: 
Келехсаев Илья Константинович

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

Новизна:

 

В нашей школе в прошлом году начался проект «Комфортная школа».

Одним из её идей была создание и автоматизация возможности оставлять свои идеи и предложения родителям, детям и сотрудникам школы, дабы улучшить что- либо в школе. И для этого решено было создать сайт, на котором эта идея и будет реализована.

 

Скачать:

ВложениеРазмер
Файл kelehsae_i_sistema_idets_i_predlozheniy.docx831.42 КБ
Файл prezintatsiya_sistema_idey_i_predlozheniy._sayt_1.pptx572 КБ

Предварительный просмотр:

КОНКУРС НАУЧНО-ТЕХНИЧЕСКОГО ТВОРЧЕСТВА

«ДОРОГА В БУДУЩЕЕ» 2023-2024

секция информатика

на тему: «Система идей и предложений».

                                  Выполнил:                                                    
                                                   

Келехсаев Илья Константинович,

10 кл МБОУ СОШ №22, с/п Ц. «Интеллект»

        

                                                       Научный руководитель:
        Подова Анна Николаевна,

учитель информатики МБОУ СОШ №22,

ПДО  с/п Ц. «Интеллект»

Владикавказ, 2023-2024

СОДЕРЖАНИЕ

АННОТАЦИЯ        3

ЦЕЛИ:        3

ЗАДАЧИ:        3

То что получилось:        3

В планах:        3

ВВЕДЕНИЕ        4

Актуальность:        4

Новизна:        4

ПРИЛОЖЕНИЯ:        5

Комфортная школа:        5

Структура базы данных:        6

Структура сайта:         6

Код:        6

СПИСОК ЛИТЕРАТУРЫ        23

Система идей и предложений

Работу выполнил Келехсаев Илья Константинович

Ученик 10 класс МБОУ СОШ №22, с/п Ц. «Интеллект»

 АННОТАЦИЯ

ЦЕЛИ:

  1. Создать онлайн сервис по подаче идей и заявок

ЗАДАЧИ:

  1. Изучить Python
  2. Изучить библиотеку Flask
  3. Изучить работу с базами данных SQLite3
  4. Создать сайт на Flask
  5. Создать базу данных и использовать её на сайте

То что получилось:

Организовать работу с базой данных, спроектировать класс пользователя который в зависимости от того, является ли пользователь новым, создаёт новую строчку в базе данных  иначе открывает строчку с пользователем, что в дальнейшем позволяет программе взаимодействовать с этим пользователем.

Реализовано добавление новых идей в базу данных, а так же вывод всех идей на отдельной страничке.

        Загрузить сайт на хостинг, и распространить ссылку по всей школе, чтоб каждый перейдя по ссылке мог в любой момент, и подать свою идею.

Усовершенствовать структуру сайта, сделать его более удобным в использовании.

     ВВЕДЕНИЕ

Актуальность:

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

Новизна:

В нашей школе в прошлом году начался проект «Комфортная школа».

Одним из её идей была создание и автоматизация возможности оставлять свои идеи и предложения родителям, детям и сотрудникам школы, дабы улучшить что- либо в школе. И для этого решено было создать сайт, на котором эта идея и будет реализована.

ПРИЛОЖЕНИЯ:

Комфортная школа:

Структура базы данных:

img.jpg

Структура сайта:

struk.png

Код:

Содержимое main.py

import sqlite3

import smtplib

from test import my_email, my_password, filtering

from flask import Flask, render_template, request, redirect, url_for

from email.message import EmailMessage

app = Flask(__name__)

class User:

    def __init__(self, username, password, new_user=False):

        self.con = sqlite3.connect("all_tables.sqlite")

        self.error = ""

        self.adm = False

        if not new_user:

            up = self.con.cursor().execute(

                f"""SELECT user_id, password FROM users WHERE username='{username}'""").fetchone()

            if up:

                if password == up[1]:

                    self.user_id = up[0]

                    self.username = username

                    self.password = up[1]

                    if self.con.cursor().execute(f"""SELECT user_id FROM admins WHERE user_id='{up[0]}'""").fetchone():

                        self.adm = True

                else:

                    self.error = "Неверный пароль"

            else:

                self.error = f"Нет пользователя '{username}'"

        else:

            up = self.con.cursor().execute(

                f"""SELECT user_id, password FROM users WHERE username='{username}'""").fetchone()

            if not up:

                self.con.cursor().execute(

                    f"""INSERT INTO users(username, password) VALUES ('{username}', '{password}')""")

                self.con.commit()

                v = self.con.cursor().execute(f"""SELECT user_id FROM users WHERE username='{username}'""").fetchone()

                self.user_id = v[0]

                self.username = username

                self.password = password

            else:

                self.error = f"Пользователь '{username}' уже существует"

class Idea:

    def __init__(self, idea_, user, name, email):

        self.con = sqlite3.connect("all_tables.sqlite")

        cur = self.con.cursor()

        cur.execute(

            f"""INSERT OR REPLACE INTO ideas(idea_text, username, name, email) VALUES ('{idea_}', '{user}', '{name}', '{email}')""")

        self.con.commit()

@app.route('/', methods=["POST", "GET"])

def login():

    error = ""

    if request.method == "POST":

        user_login = request.form["user_login"]

        password = request.form["password"]

        if user_login and password:

            if request.form["btn-log-reg"] == "Вход":

                us = User(user_login, password)

                if us.error == "":

                    return redirect(f"/idea/{us.user_id}/")

                else:

                    return render_template("login_form.html", error=us.error)

            else:

                us = User(user_login, password, new_user=True)

                if us.error == "":

                    return redirect(f"/idea/{us.user_id}/")

                else:

                    return render_template("login_form.html", error=us.error)

        else:

            return render_template("login_form.html", error="Логин и пароль не могут быть пустыми")

    else:

        return render_template("login_form.html", error="")

@app.route('/idea//', methods=["POST", "GET"])

def idea(user_id):

    s = sqlite3.connect("all_tables.sqlite").cursor().execute(

        f"""SELECT username, password FROM users WHERE user_id = {user_id}""").fetchone()

    us = User(s[0], s[1])

    if request.method == "POST":

        name = request.form["name"]

        email_address = request.form["email_address"]

        idea_text = request.form["idea_text"]

        print(filtering(idea_text))

        if name and email_address and idea_text and filtering(idea_text):

            Idea(idea_text, us.username, name, email_address)

            smtpObj = smtplib.SMTP(host='smtp.gmail.com', port=587)

            smtpObj.starttls()

            smtpObj.login(my_email, my_password)

            mess = f"""

       

       

           

           

           

       

       

       

           

               

                   

           

                       

Добавлена новая идея!

                   

           

               

                   

               

           

                       

Пользователь: {name}

С почтой: {email_address}

Оставил новую идею:

                       

                            {idea_text}

                       

                   

       

       

        """

            msg = EmailMessage()

            msg["From"] = my_email

            msg["To"] = [my_email, "apodova@mail.ru"]

            msg["Subject"] = "Добавили новую идею!"

            msg.set_content(mess, subtype="html")

            smtpObj.send_message(msg)

            smtpObj.quit()

            return redirect(f"/all_ideas/{us.user_id}/")

        else:

            return render_template("change.html", us=us)

    else:

        return render_template("change.html", us=us)

@app.route("/all_ideas//", methods=["POST", "GET"])

def all_ideas(user_id):

    s = sqlite3.connect("all_tables.sqlite").cursor().execute(

        f"""SELECT username, password FROM users WHERE user_id = {user_id}""").fetchone()

    us = User(s[0], s[1])

    ideas = sqlite3.connect("all_tables.sqlite").cursor().execute(

        f"""SELECT idea_id, idea_text, username, name FROM ideas""").fetchall()[::-1]

    if request.method == "POST":

        if request.form["answer"][:3] == "del":

            id = int(request.form["answer"][3:])

            con = sqlite3.connect("all_tables.sqlite")

            con.cursor().execute(f"""DELETE FROM ideas WHERE idea_id = {id}""")

            con.commit()

        else:

            id = int(request.form["answer"])

            info = sqlite3.connect("all_tables.sqlite").cursor().execute(

                f"""SELECT idea_text, name, email FROM ideas WHERE idea_id = {id}""").fetchone()

            smtpObj = smtplib.SMTP(host='smtp.gmail.com', port=587)

            smtpObj.starttls()

            smtpObj.login(my_email, my_password)

            mess = f"""

                   

                   

                       

                       

                       

                   

                   

                   

                       

                           

                               

                       

                                   

Ваша идея не осталась без внимания!

                               

                       

                           

                               

                           

                       

                                   

Уважаемый(-ая) {info[1]}

                                   

На вашу идею:

                                   

{info[0]}

                                   

                                        Пришёл ответ.

                                   

                                   

                                   

Ответ:

                                   

{request.form[f"ans{id}"]}

                                   

                                   

                                   

Если данный ответ как либо задел вас, то прошу напишите и об этом, нас интересует удовлетворённость нашим обслуживанием

                               

                   

                   

                    """

            msg = EmailMessage()

            msg["From"] = my_email

            msg["To"] = info[2]

            msg["Subject"] = "Ваша идея не осталась без внимания!"

            msg.set_content(mess, subtype="html")

            smtpObj.send_message(msg)

            smtpObj.quit()

        return render_template("all_ideas.html", ideas=ideas, us=us)

    else:

        return render_template("all_ideas.html", ideas=ideas, us=us)

@app.route("/user_ideas//")

def user_ideas(user_id):

    s = sqlite3.connect("all_tables.sqlite").cursor().execute(

        f"""SELECT username, password FROM users WHERE user_id = {user_id}""").fetchone()

    us = User(s[0], s[1])

    ideas = sqlite3.connect("all_tables.sqlite").cursor().execute(

        f"""SELECT idea_id, idea_text, username, name FROM ideas WHERE username = (SELECT username FROM users WHERE user_id = {user_id})""").fetchall()[

            ::-1]

    return render_template("user_ideas.html", ideas=ideas, us=us)

if __name__ == '__main__':

    app.run(host="localhost", port=11111, debug=True)

Содержимое all_ideas.html

   

   

    Оставленные заявки

   

          integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

   

   

       

           

               

                   

               

           

           

                   

  •                         src="{{ url_for('static', filename='logo.png') }}" href="https://s22.amsvlad.ru/" height="40px"

                        width="45px"> МБОУ СОШ №22

  •            

           

                Мои идеи

               

           

       

   

   

Все идеи и предложения


{% for idea in ideas%}

   

   

       

       

           

               

                   

                       

{{ idea[3] }}

                       

                               

  •                                

                                       

                                   

                                   

                                       

    {{ idea[1] }}

                                   

                               

  •                        

                        {% if us.adm %}

                       

                           

                               

                                   

                               

                               

                               

                                   

                               

                           

                       

                        {% endif %}

                   

               

           

       

   

{% endfor %}

Содержимое change.html

   

   

    МБОУ СОШ №22 - идеи и предложения

   

          integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

   

   

       

           

               

                   

               

           

           

                   

  •                         src="{{ url_for('static', filename='logo.png') }}" href="https://s22.amsvlad.ru/" height="40px"

                            width="45px"> МБОУ СОШ №22

  •            

           

                Все идеи

                Мои идеи

               

           

       

   


   

       

   

   

       

           

           

               

                       autofocus="" required="">

           

       

       

           

           

               

                       placeholder="Введите адрес" required="">

           

       

       

           

           

               

           

       

       

       

   

Содержимое login_form.html

   

   

    МБОУ СОШ №22 - идеи и предложения - Вход

   

          integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

   

   

       

           

               

                   

               

           

           

                   

  •                         src="{{ url_for('static', filename='logo.png') }}" href="https://s22.amsvlad.ru/" height="40px"

                            width="45px"> МБОУ СОШ №22

  •            

       

        {% if error != ''%}

       

{{ error }}

        {% endif %}

   

   

       

   

   

       

       

           

           

           

               

                       placeholder="Введите ваш логин" autofocus="" required="">

           

       

       

       

           

           

           

               

                   

                           placeholder="Введите ваш пароль" required="">

                   

               

           

       

       

       

           

           

               

                   

                   

               

           

       

   

Содержимое user_ideas.html

   

   

    Оставленные заявки

   

          integrity="sha384-T3c6CoIi6uLrA9TneNEoa7RxnatzjcDSCmG1MXxSR1GAsXEV/Dwwykc2MPK8M2HN" crossorigin="anonymous">

   

   

       

           

               

                   

               

           

           

                   

  •                         src="{{ url_for('static', filename='logo.png') }}" href="https://s22.amsvlad.ru/" height="40px"

                            width="45px"> МБОУ СОШ №22

  •            

           

                Все идеи

               

           

       

   

   

Ваши идеи и предложения


{% for idea in ideas%}

   

   

       

       

           

               

                   

                       

{{ idea[3] }}

                       

                               

  •                                

                                       

                                   

                                   

                                       

    {{ idea[1] }}

                                   

                               

  •                        

                   

               

           

       

   

{% endfor %}

СПИСОК ЛИТЕРАТУРЫ

  1. Яндекс Учебник, Базы данных
  2. Видео уроки по Flask: https://www.youtube.com/playlist?list=PL0lO_mIqDDFXiIQYjLbncE9Lb6sx8elKA


Предварительный просмотр:
Чтобы пользоваться предварительным просмотром презентаций создайте себе аккаунт (учетную запись) Google и войдите в него: https://accounts.google.com

Подписи к слайдам:

Слайд 1

Система Идей И Предложений Автор: Келехсаев Илья Ученик 10класса МБОУ СОШ №22, ДЦО “Интеллек” Преподаватель: Подова Анна Николаевна

Слайд 2

Цели Создать онлайн сервис по подаче идей и заявок Изучить Python Изучить библиотеку Flask Изучить работу с базами данных через библиотеку SQLite Создать сайт через Flask Создать базу данных и использовать её на сайте Задачи

Слайд 3

Демонстрация mbousosh22.pythonanywhere.com

Слайд 4

Схема Базы Данных

Слайд 5

Выводы: Я сам скажу^^! не позволю бездушной машине говорить за меня….

Слайд 6

Спасибо за внимание!

Поделиться:

Три способа изобразить акварелью отражения в воде

Зимняя ночь. Как нарисовать зимний пейзаж гуашью

Швейня

Золотая хохлома

Композитор Алексей Рыбников