日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

学生公寓管理系统-python+Django+Mysql(附视图代码)

發(fā)布時間:2023/12/20 数据库 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 学生公寓管理系统-python+Django+Mysql(附视图代码) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、系統(tǒng)開發(fā)平臺............................................................................................................ 3

二、數(shù)據(jù)庫規(guī)劃............................................................................................................... 4

2.1 任務陳述............................................................................................................ 4

2.2 任務目標............................................................................................................ 4

三、系統(tǒng)定義................................................................................................................... 6

3.1 系統(tǒng)邊界............................................................................................................ 6

3.2 用戶視圖............................................................................................................ 8

四、需求分析................................................................................................................... 9

4.1 用戶需求說明................................................................................................... 10

4.1.1 數(shù)據(jù)需求............................................................................................... 10

4.1.2 事務需求............................................................................................... 10

4.2 系統(tǒng)需求說明................................................................................................... 12

五、數(shù)據(jù)庫邏輯設計...................................................................................................... 13

5.1 ER圖:............................................................................................................. 13

5.2 數(shù)據(jù)字典........................................................................................................... 14

六、數(shù)據(jù)庫物理設計...................................................................................................... 16

6.1 索引.................................................................................................................. 16

6.2 安全機制.......................................................................................................... 17

七、應用程序設計.......................................................................................................... 17

7.1 功能模塊.......................................................................................................... 17

7.2 界面設計.......................................................................................................... 19

7.3 事務設計........................................................................................................... 77

八、測試和運行............................................................................................................ 114

九、總結...................................................................................................................... 171

9.1 系統(tǒng)優(yōu)點......................................................................................................... 171

9.2 系統(tǒng)不足......................................................................................................... 172

9.3 系統(tǒng)改進......................................................................................................... 172

9.4 經(jīng)驗與收獲...................................................................................................... 172

附. 參考文獻............................................................................................................... 172

前言

?? 隨著我校逐級擴招,學生越來越多,學生公寓樓房越來越多,宿管人員越來越多。隨著高校后勤社會化改革,學生住宿條件得到了很大改善,宿舍內(nèi)的貴重設施、電器等越來越多,宿舍安排上打破了原來按專業(yè)班級強制集中住宿的限制,可供學生選擇的余地也越來越大;同學們可以根據(jù)自己的合理要求申請調(diào)換宿舍,同時,由于學生越來越多,學生宿舍也越來越多,宿舍內(nèi)硬件出現(xiàn)的故障也自然會增多。至今為止,某某大學故障報修仍為仍共筆錄上報,不僅物業(yè)得知學生需求的速度慢,甚至有時還會出現(xiàn)物業(yè)錯漏報修的問題,導致學生的住宿體驗變差。對于學生人際交往逐漸增多,學生之間在沒有聯(lián)系方式的情況下想要知道一個同學在哪一個宿舍只能通過打聽等不準確不確切的方式獲得,十分的不便。對于班內(nèi)同學逐個分發(fā)物品時,也必須知道班內(nèi)的每一個同學所在宿舍號,因此,對于班內(nèi)同學的宿舍情況也是一項需求。且某某大學宿管查宿舍衛(wèi)生也只是紙面記錄,且學生們根本不知道宿舍的衛(wèi)生檢查情況,所以對于這一方面也有疏漏。宿舍同學們作息習慣的不同,很可能導致影響其他同學的休息,由于不好意思開口,掛在‘表白墻’又很難達到效果且有暴露其他宿舍的隱私和損壞名譽問題,所以對于同學們對于其他宿舍的意見反饋也是一件需求。

一、系統(tǒng)開發(fā)平臺

1.1 開發(fā)平臺簡介

本項目開發(fā)的學生公寓管理系統(tǒng)采用B-S架構,使用基于phthon的技術開發(fā)路線,使用Django后端開發(fā)MVT框架,連接起數(shù)據(jù)庫與前端,實現(xiàn)交互。

1.2 開發(fā)語言:Python

用python更加易于使用和閱讀,并且python豐富的包十分便于開發(fā);python的編程方法也更少限制,豐富成熟的基于python的后端開發(fā)框架也更便于我們使用開發(fā)。

1.3 開發(fā)工具:Navicat for Mysql、VS2019、Pycharm

?????? 利用如上的開發(fā)工具,可以十分便捷的進行Web開發(fā)。

1.4 數(shù)據(jù)庫: MySQL 5.7

MySQL是業(yè)界領先的開源數(shù)據(jù)庫,在開源產(chǎn)品中具有僅次于Apache服務器的市場占有率。本數(shù)據(jù)庫開放源代碼,具有免費使用,比較穩(wěn)定的特點,適合于小型系統(tǒng)的持久性存儲。

1.5 操作系統(tǒng):Microsoft Windows 10

二、數(shù)據(jù)庫規(guī)劃

2.1 任務陳述

學生公寓管理系統(tǒng)是學生公寓管理不可缺少的部分,它的應用會使學生以及宿管的工作變得十分便利。隨著青島校區(qū)擴招學生的增多以及宿舍硬件的使用年數(shù)逐漸變多,越來越多的問題也不斷出現(xiàn),對于學生公寓的管理不僅宿管任務加重,學生們對于宿舍問題的需求也逐漸增多。有了學生公寓管理系統(tǒng),以上出現(xiàn)的問題會在一定程度上得到解決。

該項目所設計的學生公寓管理系統(tǒng)包括:

學生用戶:

個人信息頁、班級信息情況頁、宿舍查詢頁、衛(wèi)生管理頁、報修系統(tǒng)頁、投訴系統(tǒng)頁、訪問申請頁、離校登記頁。

由于宿管需要對衛(wèi)生管理進行信息同步,所以需要管理員身份的專屬系統(tǒng),管理員身份的頁有查詢宿舍信息頁以及衛(wèi)生管理頁、故障報修頁、訪問審批頁、個人信息頁。如此,管理員可以將衛(wèi)生檢查的結果發(fā)送給各個同學,也可以查詢各個宿舍的情況、查看宿舍報修情況。同學們可以自行進行故障報修、對個別宿舍進行不滿的匿名建議、查看班級宿舍信息、查看指定同學姓名的宿舍信息、查看個人信息、審批故障以及訪問信息等。因此宿管用戶包括以下頁面

??? 宿管用戶:

??? 個人信息頁、宿舍查詢頁、衛(wèi)生管理頁、宿舍反饋頁、訪問審批頁、故障審批頁。

2.2 任務目標

模塊

功能

個人信息

查看個人的基本信息

班級情況

班級的所有成員宿舍信息可以查看

宿舍查詢

查找具體個人的宿舍信息,學號、姓名。宿管可以根據(jù)學號、姓名或者宿舍直接查詢,權限比學生高

衛(wèi)生管理

宿管更新檢查結果,學生查看結果,學生頁面留有以往的檢查結果

投訴系統(tǒng)

匿名反饋意見給指定宿舍,指定宿舍會有記錄,只能自己宿舍人員看到。宿管可以發(fā)送警告內(nèi)容到指定宿舍,警告信息會特別提示。

報修系統(tǒng)

宿管阿姨受理報修信息。學生上報報修信息。學生會有保修信息的反饋

訪問申請

學生訪問非自己所在的公寓樓需要申請,對應宿舍樓的宿管需要審批。

離校鄧麗

學生離校進行系統(tǒng)登記,對應宿舍樓的宿管可以看到自己宿舍樓學生的離校登記信息。

三、系統(tǒng)定義

3.1 系統(tǒng)邊界

系統(tǒng)邊界描述數(shù)據(jù)庫系統(tǒng)和企業(yè)信息系統(tǒng)的其他部分的接口,是信息系統(tǒng)內(nèi)部構成元素與外部有聯(lián)系實體之間的信息關系的描述與分割。它并不需要在它們之間劃一條物理邊界,而只需要弄清它們之間信息輸入與輸出的分割。

???? 用戶范圍邊界:

?????? 支持學生學號登錄、管理員賬號登錄,即只支持宿舍管理員以及學生使用。

系統(tǒng)功能邊界

  • 此系統(tǒng)對于學生忘記密碼的操作不設置管理員管理,直接由代碼層進行操作。
  • 此系統(tǒng)不設置提醒模式,即未打開系統(tǒng)時不會收到消息提醒。
  • 此系統(tǒng)不支持具體的報修流程,只負責上報與管理員已讀未讀的狀態(tài)。
  • 此系統(tǒng)不設置優(yōu)先顯示特別頁面以及未讀消息提醒,即每次登錄都是個人信息頁,新的衛(wèi)生結果同之或者投訴建議也不會顯示未讀,只有點擊之后才會看到。
  • 3.2 用戶視圖

    管理員用戶視圖

  • 宿舍信息查詢
  • 查詢、以宿舍號為索引的宿舍信息。

  • 衛(wèi)生檢查結果更新:
  • 更新、將衛(wèi)生結果發(fā)給各個宿舍各個同學

  • 報修情況查看回復
  • 更新、回復同學們的報修情況

  • 個人信息
  • 查詢、更新個人基本信息

  • 宿舍反饋
  • 更新、給指定宿舍告以警告信息

  • 訪問審批
  • 更新、對無權限進入的外宿舍樓訪問者提交的訪問申請進行審批

  • 離校登記信息查看:
  • 查看自己管理的宿舍樓的學生離校信息

    學生用戶視圖

  • 個人信息
  • 查詢、個人信息

  • 宿舍信息
  • 查詢、以姓名為索引查詢宿舍信息

  • 班級信息
  • 查看自己所在班級的人員信息

  • 衛(wèi)生結果
  • 查詢、查看以往的衛(wèi)生檢查結果

  • 投訴建議
  • 更新、投訴宿舍的投訴信息

  • 報修界面
  • 更新、上報報修信息

  • 訪問申請
  • 更新、查詢訪問信息,查看訪問信息受理情況。

  • 離校登記
  • 更新、填寫離校登記信息,查看歷史登記記錄

    四、需求分析

    學生公寓管理系統(tǒng)功能一覽:

    4.1 用戶需求說明

    4.1.1 數(shù)據(jù)需求

    1、學生(宿管)基本信息;

    學生學號sid、學生姓名sname、學生性別sex、學生年齡age、學生班級、學生宿舍樓id、學生宿舍id、學生學院信息、學生戶籍、學生身份證號、學生手機號、學生郵箱、學生專業(yè)信息

    2、班級基本信息:

    學生總人數(shù)、男生人數(shù)、女生人數(shù)、所有學生住宿信息

    3、衛(wèi)生檢查基本信息:

    歷史衛(wèi)生考核記錄、考核各項分數(shù)、宿舍id、宿舍樓id

    4、訪問申請基本信息:

    歷史訪問申請記錄、訪問人姓名、訪問人學號、訪問人宿舍樓id、訪問人宿舍id、訪問人目標宿舍樓id、訪問人申請事由、訪問人訪問時間、管理員審批狀態(tài)、宿管歷史審批記錄

    5、故障報修基本信息:

    歷史報修記錄、申報人姓名、申報人學號、申報人宿舍樓id、申報人宿舍id、故障信息、宿管審批狀態(tài)、宿管回復信息、宿管歷史審批記錄

    6、匿名提醒基本信息:

    宿舍樓id、宿舍號id、匿名提醒內(nèi)容、宿管阿姨警告內(nèi)容

    7、離校登記基本信息:

    學生學號、學生姓名、宿舍樓id、宿舍號id、離校理由、離校時間、返校時間。

    4.1.2 事務需求

  • 數(shù)據(jù)錄入:
    • 錄入搜索信息:

    學生學號、學生姓名、學生宿舍號、學生班級

    • 錄入衛(wèi)生成績:

    宿管:地面整潔、廁所衛(wèi)生、窗戶衛(wèi)生、異味雜物、廁所衛(wèi)生、物品整齊分數(shù)

    • 錄入匿名提醒信息

    提醒目標宿舍id、匿名提醒信息

    • 錄入訪問申請信息:

    訪問目標宿舍樓信息、訪問理由、訪問時間

    宿管:訪問審批結果

    • 故障報修信息:

    上報宿舍、故障信息

    宿管:回復備注、審批結果

    • 離校信息登記:

    上報離校信息。

  • 數(shù)據(jù)更新/刪除:
    • 學生的聯(lián)系方式更新/刪除
    • 學生匿名提醒信息更新
    • 學生衛(wèi)生成績更新
    • 學生訪問申請歷史記錄更新
    • 學生故障上報歷史記錄更新
    • 宿管聯(lián)系方式更新
    • 宿管更新學生衛(wèi)生考核成績
    • 宿管更新學生警告信息
    • 宿管待處理訪問申請信息更新/刪除
    • 宿管待處理故障信息更新/刪除
    • 學生離校登記信息更新

    3、數(shù)據(jù)查看:

    管理員用戶視圖下:

    學生用戶視圖下

    4.2 系統(tǒng)需求說明

    該學生公寓管理系統(tǒng)需要較強的數(shù)據(jù)處理功能,理論上應該能夠容納上萬人的數(shù)據(jù)資料,并且在搜索方面理應具有較快的響應速度,能夠處理多方面的數(shù)據(jù)請求。系統(tǒng)能夠有效的處理各種異常,具有較好的健壯性。

    4.2.1 初始數(shù)據(jù)庫大小

    ①30條左右學生信息

    ②共5個 左右宿舍樓

    • 查看本人基本個人信息
    • 查看歷史訪問審批表單
    • 查看歷史故障審批表單
    • 查看學生離校登記信息表單
    • 查看個人基本信息
    • 查看本班級所有人員信息
    • 查看本宿舍衛(wèi)生歷史成績以及本次成績信息
    • 查看本宿舍受到的匿名提醒信息
    • 查看申請的訪問記錄信息
    • 查看上報的故障處理信息?????
    • 查看歷史離校登記信息
    • 5個宿管賬號
    • 15個左右宿舍
    • 15條左右衛(wèi)生信息
    • 10條左右故障報修、訪問申請、離校登記信息

    ?

    4.2.1 安全性

    ①只有登錄才能使用

    ②每個用戶只能看到權限范圍內(nèi)的學生信息

    ③學生只能看到自己宿舍的故障報修、自己的訪問申請

    ④學生只能看到自己宿舍的匿名提醒、衛(wèi)生信息

    五、數(shù)據(jù)庫邏輯設計

    5.1 ER圖:

    5.2 數(shù)據(jù)字典

    5.2.1 從數(shù)據(jù)字典中抽取出來的系統(tǒng)實體描述:

    ?

    學生信息表

    宿管信息表

    ?

    學生匿名反饋信息表

    宿管警告信息表

    學生衛(wèi)生成績表

    學生歷史衛(wèi)生成績表

    學生訪問申請信息表

    學生故障報修信息表

    離校登記信息表:

    ?

    ?

    六、數(shù)據(jù)庫物理設計

    6.1 索引

    數(shù)據(jù)庫中的索引:

    表名

    主鍵

    索引

    stu

    sid

    1、`sid`

    2、`dorm_id`, `dorm_building_id`

    manager

    mid

    1、`mid`

    2、`mid`, `mdorm`

    Mfback

    num

    `dorm_id`, `dorm_building_id`

    fback

    num

    `dorm_id`, `dorm_building_id`

    Score

    `dorm_id`, `dorm_building_id`

    `dorm_id`, `dorm_building_id`

    Historyscore

    num

    `dorm_building_id`, `dorm_id`

    Svisit

    num

    `target`,

    `ac`

    Wrong

    num

    `dorm_id`, `dorm_building_id`

    Leave

    num

    1、`sid`

    2、`dorm_building_id`

    解釋:對應于學生信息的索引建立,由于每次用到學生的個人信息都是從sid開始尋找(主鍵確保唯一查找),所以建立sid的索引可以加快所有功能涉及到用到stu對應信息的視圖查詢速度;對于其他所有的`dorm_id`, `dorm_building_id`索引的建立,由于每一個功能的實現(xiàn)(查詢修改)都是建立在`dorm_id`, `dorm_building_id`基礎上的,這也是學生公寓的特點,因此建立`dorm_id`, `dorm_building_id`索引可以大大加快所有功能的增刪改查速度。

    6.2 安全機制

    6.2.1 系統(tǒng)安全

    1、學生用戶的注冊只有系統(tǒng)中有了對應的學號才能進行注冊,否則會提示是否是某某大學的學生:

    2、對于所有輸入異常,如空白輸入(未輸入)、學號不滿12位注冊、其他功能未選擇宿舍樓id、宿舍id、時間都會有相應的異常處理。

    6.2.2 數(shù)據(jù)安全

    1、登陸界面輸入的賬號密碼信息只有到了數(shù)據(jù)庫內(nèi)系統(tǒng)設計者(我)才能看到,其他所有信息也只有系統(tǒng)設計者才能進行無條件修改,數(shù)據(jù)不會被隨意更改。

    2、個人信息中學號身份證號宿舍號等不可動數(shù)據(jù)無論宿管還是學生都無條件修改,只有系統(tǒng)設計者才能更改,確保數(shù)據(jù)不會被學生或宿管更改而出現(xiàn)bug。

    3、對于匿名提醒或申請訪問或故障處理宿管與學生的信息處理之間確保了原子性,

    七、應用程序設計

    7.1 功能模塊

    ?????? 該學生公寓管理系統(tǒng)共有查看修改個人信息、查看班級信息、查詢宿舍信息、查詢衛(wèi)生信息、查看更新匿名提醒信息、查看更新訪問申請信息、查看更新故障報修信息七個功能模塊,其中分為兩個不同的系統(tǒng)用戶系統(tǒng),對應不同的頁面。宿管無查看班級信息功能,但是在審批等其他功能有著更高級的權限,符合現(xiàn)實要求。具體實現(xiàn)如下

    7.1.1 病人住院

    1、查看修改個人信息:

    ?????? ① 檢測登陸狀態(tài)

    ?????? ② 檢測登陸賬戶

    ?????? ③ 判斷登陸賬戶類型(學生、宿管)

    • 查詢數(shù)據(jù)、展示所有個人信息
    • 若修改手機或者郵箱(其他信息不可動),判斷輸入是否合法
    • 修改手機或者郵箱
    • 更新頁面信息

    2、查看班級信息

    ?????? ① 檢測登陸狀態(tài)

    ?????? ② 檢測登陸賬戶

    4、查看更新匿名提醒信息

    ?????? ① 檢測登陸狀態(tài)

    ?????? ② 檢測登陸賬戶

    5、查看更新訪問申請

    ?????? ① 檢測登陸狀態(tài)

    ?????? ② 檢測登陸賬戶

    7、查看更新離校登記信息

    ① 檢測登陸狀態(tài)

    ?????? ② 檢測登陸賬戶

    ④(學生)展示所有離校登記的信息,上報新的離校登記信息。(宿管)查看所有本宿舍樓的離校登記信息。

    ⑤(學生)要進行離校登記,則必須選擇時間和填寫理由,其中離校時間必須小于返校時間,否則登記失敗,不上傳數(shù)據(jù),進行異常處理。

    ⑥更新對應數(shù)據(jù)庫信息

    ⑦更新頁面信息

    7.2 界面設計

    7.2.1 登錄界面

    • ?判斷登陸賬戶類型(學生、宿管)
    • 查詢數(shù)據(jù)、展示所有班級成員信息

      3、查看衛(wèi)生信息

      ?????? ① 檢測登陸狀態(tài)

      ?????? ② 檢測登陸賬戶

    • ?判斷登陸賬戶類型(學生、宿管)
    • (學生)查詢數(shù)據(jù)、展示所屬宿舍所有歷史衛(wèi)生信息、當次衛(wèi)生檢查信息
    • (宿管)選擇相應的宿舍,對應分數(shù)填入,檢測是否正確填入信息或分數(shù)。
    • 更新對應數(shù)據(jù)庫信息
    • 更新頁面信息
    • ?判斷登陸賬戶類型(學生、宿管)
    • 查詢數(shù)據(jù)、展示所有收到的匿名信息
    • 若對其他宿舍進行匿名投訴,檢查是否正確選擇宿舍號并填入提醒信息
    • 更新對應數(shù)據(jù)庫信息
    • 更新頁面信息
    • ?判斷登陸賬戶類型(學生、宿管)
    • (學生)查詢數(shù)據(jù)、展示所有歷史訪問申請信息。(宿管)查詢數(shù)據(jù)、展示所有歷史審批記錄,展示未審批記錄的一條。
    • (學生)若要申請訪問,檢測是否正確選擇時間、目標宿舍樓、事由。(宿管)點擊同意或者拒絕。
    • 更新對應數(shù)據(jù)庫信息
    • 更新頁面信息
    • 6、查看更新故障報修信息

      ① 檢測登陸狀態(tài)

      ?????? ② 檢測登陸賬戶

    • ?判斷登陸賬戶類型(學生、宿管)
    • (學生)查詢數(shù)據(jù)、展示所有歷史故障上報信息。(宿管)查詢數(shù)據(jù)、展示所有歷史審批記錄,展示一個待審批信息表。
    • (學生)若要上報故障信息,檢測是否正確填寫故障信息。(宿管)點擊選擇回復,檢查是否正確填寫。
    • 更新對應數(shù)據(jù)庫信息
    • 更新頁面信息
    • ?判斷登陸賬戶類型(學生、宿管)
    • ?????? 用戶若首次入學沒有賬號,則可以使用自己的學號對應注冊;管理員會已經(jīng)分

    配賬號。用戶在登錄界面輸入用戶名和密碼,經(jīng)過系統(tǒng)驗證后會根據(jù)賬號類型進入學生或管理員界面。

    學生注冊

    .

    ?

    學生賬號

    管理員賬號

    7.2.2 登陸后的頁面操作:

    默認首先顯示個人信息頁面:

    宿管頁面:

    學生頁面:

    ?

    7.2.3宿舍查詢頁面

    下面是學生的宿舍查詢頁面,比宿管要缺少一項按照宿舍號查詢的權限

    下面是宿管的查詢頁面,權限高于學生,有三項查詢方式:

    ?

    7.2.4 學生專屬的班級信息查詢:

    顯示男女人數(shù)、顯示班級總人數(shù)、展示所有班級成員信息

    ?

    7.2.5 衛(wèi)生信息頁面

    學生頁面:

    ?

    宿管頁面,可以選擇宿舍號進行打分

    ?

    ?

    7.2.6 宿舍反饋(警告)

    宿管頁面,可以向指定宿舍發(fā)送警告內(nèi)容,可選擇的宿舍號已經(jīng)過濾到所管理的宿舍樓

    ?

    學生頁面:可查看收到的私信以及宿管的警告,可匿名向指定宿舍發(fā)送提醒私信,可選擇的宿舍號已經(jīng)過濾到所住的宿舍樓

    7.2.7訪問申請、審批:

    學生頁面,可進行審批,查看歷史申請及通過狀態(tài)

    ?

    宿管頁面,展示需要處理的審批單和已經(jīng)審批過的審批單

    7.2.8 宿舍故障上報、審批

    學生頁面,可進行審批,查看歷史申請及通過狀態(tài)

    ?

    宿管頁面,展示需要處理的審批單和已經(jīng)審批過的審批單

    ?

    ?

    7.2.8 離校登記

    學生頁面:登記離校信息、展示歷史登記信息

    宿管頁面:查看本宿舍樓的離校登記信息

    7.2.9 退出登錄

    ?

    返回登錄頁面

    ?

    7.3 事務設計

    該系統(tǒng)中,稍微復雜的查詢利用sql進行raw查詢,其他簡單的增刪改查利用filter和.save以及.delete完成。

    7.3.1 登錄注冊事務

    ?????? 有關于登錄注冊時的查詢判斷增刪如下:

    def to_login(request):

    ??? num = Logininfo.objects.filter().count()

    ??? if num >= 1:

    ??????? u = Logininfo.objects.filter()

    ??????? u.delete()

    ??? return render(request, 'login.html')

    def to_reg(request):

    ??? return render(request, 'register.html')

    def judge_login(request):

    ??? u = request.POST.get("user", '')

    ??? p = request.POST.get("pwd", '')

    ??? msg = "請正確輸入賬號密碼"

    ??? if u and p:

    ??????? c = Stu_Idpwd.objects.filter(sid=u, password=p).count()

    ??????? if c >= 1:

    ? ??????????state = Logininfo(id=u, password=p)

    ??????????? state.save()

    ??????????? if len(u) < 12:

    ??????????????? c = Logininfo.objects.filter().count()

    ??????????????? if c >= 1:

    ??????????????????? u = Logininfo.objects.get()

    ??????????????????? infodb = Manager.objects.get(mid=u.id)

    ??????????????? else:

    ??????????????????? msg = "請先登錄!"

    ??????????????????? return render(request, 'login.html', locals())

    ??????????????? return render(request, 'manageinfo.html', locals())

    ??????????? infodb = Stu.objects.get(sid=u)

    ??????????? return render(request, 'info.html', locals())

    ??????? else:

    ??????????? msg = "賬號或密碼錯誤!"

    ??????????? return render(request, 'login.html', locals())

    ??? else:

    ??????? return render(request, 'login.html', locals())

    def judge_reg(request):

    ??? u = request.GET.get("user", '')

    ??? p = request.GET.get("pwd", '')

    ??? msg = ""

    ??? if u and p:

    ??????? c = Stu_Idpwd.objects.filter(sid=u).count()

    ??????? if c >= 1:

    ??????????? msg = "賬號已存在,如忘記密碼,請聯(lián)系系統(tǒng)管理員"

    ??????????? return render(request, 'register.html', locals())

    ??????? else:

    ??????????? cc = Stu.objects.filter(sid=u).count()

    ??????????? if cc >= 1:

    ??????????????? msg = "注冊成功"

    ??????????????? newaccount = Stu_Idpwd(sid=u, password=p)

    ??????????????? newaccount.save()

    ??????????????? return render(request, 'login.html', locals())

    ??????????? else:

    ??????????????? msg = "系統(tǒng)沒有您的學號,請確認您是否是山大學生"

    ??????????????? return render(request, 'register.html', locals())

    ??? else:

    ??????? return render(request, 'register.html', locals())

    7.3.2 個人信息事務

    def info(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c >= 1:

    ?? ?????u = Logininfo.objects.get()

    ??????? infodb = Stu.objects.get(sid=u.id)

    ??? else:

    ??????? msg = "請先登錄!"

    ?????? ?return render(request, 'login.html', locals())

    ??? return render(request, 'info.html', locals())

    def infomove(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c >= 1:

    ??????? u = Logininfo.objects.get()

    ??????? infodb = Stu.objects.get(sid=u.id)

    ??????? newphone = request.GET.get('phone', '')

    ??????? newemail = request.GET.get('ema', '')

    ??????? if newemail or newphone:

    ????????? ??if newemail:

    ??????????????? infodb.email = newemail

    ??????????????? infodb.save()

    ??????????? if newphone:

    ???? ???????????infodb.phone = newphone

    ??????????????? infodb.save()

    ??????????? infomsg = "修改成功!"

    ??????? else:

    ??????????? infomsg = "請正確填寫手機號或郵箱!"

    ??????? return render(request, 'info.html', locals())

    ??? else:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    def minfomove(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c >= 1:

    ??????? u = Logininfo.objects.get()

    ??????? infodb = Manager.objects.get(mid=u.id)

    ??????? newphone = request.GET.get('phone', '')

    ??????? newemail = request.GET.get('ema', '')

    ??????? if newemail or newphone:

    ??????????? if newemail:

    ??????????????? infodb.email = newemail

    ??????????????? infodb.save()

    ??????????? if newphone:

    ??????????????? infodb.phone = newphone

    ??????????????? infodb.save()

    ??????????? infomsg = "修改成功!"

    ??????? else:

    ??????????? infomsg = "請正確填寫手機號或郵箱!"

    ??????? return render(request, 'manageinfo.html', locals())

    ??? else:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    7.3.3 班級信息事務

    def classs(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? classinfo = Stu.objects.get(sid=num.id)

    ??????? membercount = Stu.objects.filter(classs=classinfo.classs).count()

    ??????? mancount = Stu.objects.filter(classs=classinfo.classs, sex='男').count()

    ??????? womancount = membercount - mancount

    ??????? allmember = Stu.objects.filter(classs=classinfo.classs)

    ??? return render(request, 'classs.html', locals())

    7.3.4 宿舍查詢事務

    def dormSearch(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? return render(request, 'dormSearch.html', locals())

    def search(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? name = request.GET.get('searchname', '')

    ??????? ssid = request.GET.get('searchsid', '')

    ??????? sdormnum = Stu.objects.filter(sname=name).count()

    ??????? siddormnum = Stu.objects.filter(sid=ssid).count()

    ??????? msg = " "

    ??????? if siddormnum >= 1:

    ??????????? sdorm = Stu.objects.filter(sid=ssid)

    ??????? elif sdormnum >= 1:

    ??????????? sdorm = Stu.objects.filter(sname=name)

    ??????? else:

    ??????????? msg = "請輸入姓名或學號!"

    ??? return render(request, 'dormSearch.html', locals())

    def managedormsearch(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.mdorm])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ??????????????? listmm.append(m.dorm_id)

    ??????? dormid = request.GET.get('dormid', '')

    ??????? name = request.GET.get('searchname', '')

    ??????? ssid = request.GET.get('searchsid', '')

    ??????? dormidnum = Stu.objects.filter(dorm_id=dormid, dorm_building_id=nowinfo.mdorm).count()

    ??????? sdormnum = Stu.objects.filter(sname=name).count()

    ??????? siddormnum = Stu.objects.filter(sid=ssid).count()

    ??????? msg = " "

    ??????? if dormidnum >= 1:

    ??????????? sdorm = Stu.objects.filter(dorm_id=dormid, dorm_building_id=nowinfo.mdorm)

    ??????? elif siddormnum >= 1:

    ??????????? sdorm = Stu.objects.filter(sid=ssid)

    ??????? elif sdormnum >= 1:

    ??????????? sdorm = Stu.objects.filter(sname=name, dorm_building_id=nowinfo.mdorm)

    ??? ????else:

    ??????????? msg = "請輸入宿舍號或姓名或學號!"

    ??? return render(request, 'managedormsearch.html', locals())

    7.3.5 衛(wèi)生信息事務

    def day(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c >= 1:

    ??????? num = Logininfo.objects.get()

    ??????? dorminfo = Stu.objects.get(sid=num.id)

    ??????? sdorm_id = dorminfo.dorm_id

    ??????? sbuil_id = dorminfo.dorm_building_id

    ??????? lii = dict()

    ??????? lii['dorm_building_id'] = sbuil_id

    ??????? lii['dorm_id'] = sdorm_id

    ??????? ct = Score.objects.filter(**lii).count()

    ??????? if ct < 1:

    ??????????? newscore = Score(dorm_building_id=sbuil_id, dorm_id=sdorm_id, ground=0, bathroom=0, tidness=0, smell=0,

    ???????????????????????????? windows=0)

    ??????????? newscore.save()

    ??????? dormscore = Score.objects.filter(**lii)[0]

    ??????? hsc = Historyscore.objects.filter(**lii).count()

    ??????? if hsc >= 1:

    ??????????? oldscore = Historyscore.objects.filter(**lii)

    ??? else:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? return render(request, 'dormClean.html', locals())

    def manageday(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.mdorm])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ???? ???????????listmm.append(m.dorm_id)

    ??? return render(request, 'manageday.html', locals())

    def managedaysubmit(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.mdorm])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ??????????????? listmm.append(m.dorm_id)

    ??? ????d = request.GET.get('dormid', '')

    ??????? g = request.GET.get('ground', '')

    ? ??????b = request.GET.get('bathroom', '')

    ??????? w = request.GET.get('windows', '')

    ??????? t = request.GET.get('tidness', '')

    ??????? s = request.GET.get('smell', '')

    ??????? if d and g and b and w and t and s:

    ??????????? oldnum = Score.objects.filter(dorm_building_id=nowinfo.mdorm, dorm_id=d).count()

    ??????????? if oldnum >= 1:

    ??????????????? old = Score.objects.get(dorm_building_id=nowinfo.mdorm, dorm_id=d)

    ??????? ????????tohistory = Historyscore(dorm_building_id=old.dorm_building_id, dorm_id=old.dorm_id, ground=old.ground,

    ???????????????????????????????????????? bathroom=old.bathroom, tidness=old.tidness, smell=old.smell,

    ???????????????????????????????????????? windows=old.windows)

    ??????????????? tohistory.save()

    ??????????????? old = Score.objects.get(dorm_building_id=nowinfo.mdorm, dorm_id=d).delete()

    ??????????? newscore = Score(dorm_building_id=nowinfo.mdorm, dorm_id=d, ground=g, bathroom=b, tidness=t, smell=s,

    ???????????????????????????? windows=w)

    ??????????? newscore.save()

    ??????????? msg = "打分數(shù)據(jù)上傳成功!"

    ??????? else:

    ??????????? msg = "請選擇宿舍并且正確打分!"

    ??? return render(request, 'manageday.html', locals())

    7.3.6 宿舍反饋事務

    def errorr(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid=num.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.dorm_building_id])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ??????????????? listmm.append(m.dorm_id)

    ?????? ?fbinfocount = Fback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id).count()

    ??????? mfbinfocount = Mfback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id).count()

    ??????? if fbinfocount >= 1:

    ??????????? fbmsg = ""

    ??????????? feedbinfo = Fback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id)

    ??????? else:

    ??????????? fbmsg = "當前沒有收到同學的投訴信息哦"

    ??????? if mfbinfocount >= 1:

    ??????????? mfbmsg = "以下是來自宿管的警告!"

    ??????????? mfeedbinfo = Mfback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id)

    ??????? else:

    ??????????? mfbmsg = "當前沒有收到來自宿管的警告哦"

    ??? return render(request, 'errorr.html', locals())

    def feedback(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??? ????nowinfo = Stu.objects.get(sid=num.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.dorm_building_id])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ??????????????? listmm.append(m.dorm_id)

    ??????? fbinfocount = Fback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id).count()

    ??????? if fbinfocount >= 1:

    ??????????? fbmsg = ""

    ??????????? feedbinfo = Fback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id)

    ??????? else:

    ??????????? fbmsg = "當前沒有收到投訴信息哦"

    ??? mfbinfocount = Mfback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id).count()

    ??? if mfbinfocount >= 1:

    ??????? mfbmsg = "以下是來自宿管的警告!"

    ??????? mfeedbinfo = Mfback.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id)

    ??? else:

    ??????? mfbmsg = "當前沒有收到來自宿管的警告哦"

    ??? dormid = request.GET.get('dormid', '')

    ??? judge = request.GET.get('message', '')

    ??? if judge:

    ??????? dbmsg = request.GET.get('message', '')

    ??????? dormnum = request.GET.get('dormid', '')

    ??????? dormbuildid = nowinfo.dorm_building_id

    ??????? newmsg = Fback(dorm_id=dormid, dorm_building_id=dormbuildid, fbinfo=dbmsg)

    ??????? newmsg.save()

    ??????? msg = "消息已發(fā)送"

    ??? else:

    ??????? msg = "請正確填寫消息"

    ??? return render(request, 'errorr.html', locals())

    def managefeedback(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??? ????num = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=num.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.mdorm])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ??????????????? listmm.append(m.dorm_id)

    ??? dormid = request.GET.get('dormid', '')

    ??? judge = request.GET.get('message', '')

    ??? if judge:

    ??????? dbmsg = request.GET.get('message', '')

    ??????? dormnum = request.GET.get('dormid', '')

    ??????? dormbuildid = nowinfo.dorm_building_id

    ??????? newmsg = Mfback(dorm_id=dormid, dorm_building_id=dormbuildid, mfbinfo=dbmsg)

    ??????? newmsg.save()

    ??????? msg = "警告已送達"

    ??? else:

    ??????? msg = "請選擇宿舍并填寫消息"

    ??? return render(request, 'manageerror.html', locals())

    def manageerror(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=num.id)

    ??????? sql = "select distinct sid,dorm_id from stu where dorm_building_id = %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.mdorm])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_id not in listmm:

    ??????????????? listmm.append(m.dorm_id)

    ??????? msg = ""

    ??? return render(request, 'manageerror.html', locals())

    7.3.7 訪問審批事務

    def visit(request):

    ? ??c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ? ??????return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid=num.id)

    ??????? sql = "select sid,dorm_building_id from stu where dorm_building_id != %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.dorm_building_id])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_building_id not in listmm:

    ??????????????? listmm.append(m.dorm_building_id)

    ??? dormid = request.GET.get('dormid', '')

    ??? judge = request.GET.get('message', '')

    ??? if judge:

    ??????? dbmsg = request.GET.get('message', '')

    ??????? dormnum = request.GET.get('dormid', '')

    ??????? visitTime = request.GET.get('time', '')

    ?? ?????newmsg = Svisit(time=visitTime, target=dormnum, why=dbmsg, sno=nowinfo.sid, sname=nowinfo.sname, ac=0,

    ? ??????????????????????dorm_building_id=nowinfo.dorm_building_id, dorm_id=nowinfo.dorm_id)

    ??????? newmsg.save()

    ??????? msg = "請求單已送達"

    ??? else:

    ??????? msg = "請正確填寫"

    ??? reqnum = Svisit.objects.filter(sno=nowinfo.sid).count()

    ??? if reqnum >= 1:

    ??????? reqform = Svisit.objects.filter(sno=nowinfo.sid)

    ??????? fbmsg = ''

    ??? else:

    ??????? fbmsg = '您還沒有上交過請求'

    ??? return render(request, 'visit.html', locals())

    def visitt(request):

    ??? c = Logininfo.objects.filter().count()

    ?? ?if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid=num.id)

    ??????? sql = "select sid,dorm_building_id from stu where dorm_building_id != %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.dorm_building_id])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_building_id not in listmm:

    ???? ???????????listmm.append(m.dorm_building_id)

    ??? dormid = request.GET.get('dormid', '')

    ??? judge = request.GET.get('message', '')

    ??? reqnum = Svisit.objects.filter(sno=nowinfo.sid).count()

    ??? if reqnum >= 1:

    ??????? reqform = Svisit.objects.filter(sno=nowinfo.sid)

    ??????? fbmsg = ''

    ??? else:

    ??????? fbmsg = '您還沒有上交過請求'

    ??? return render(request, 'visit.html', locals())

    def mvisit(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??? waitinfonum = Svisit.objects.filter(ac=0, target=nowinfo.mdorm).count()

    ??? sql = "select * from svisit where target = %s and ac != 0"

    ??? alreadyinfo = Svisit.objects.raw(sql, [nowinfo.mdorm])

    ??? if alreadyinfo:

    ??????? hvmsg = ""

    ??? else:

    ??????? hvmsg = "您還沒有處理過申請信息"

    ??? if waitinfonum < 1:

    ??????? vmsg = "當前沒有需要處理的申請"

    ??? else:

    ??????? waitinfo = Svisit.objects.filter(ac=0, target=nowinfo.mdorm)[0]

    ??????? stuinfo = Stu.objects.get(sid=waitinfo.sno)

    ??? return render(request, 'managevisit.html', locals())

    def mvisitt(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??? waitinfo = Svisit.objects.filter(ac=0, target=nowinfo.mdorm)[0]

    ??? res = request.GET.get('res', '')

    ??? waitinfo.ac = res

    ??? waitinfo.save()

    ??? waitinfonum = Svisit.objects.filter(ac=0, target=nowinfo.mdorm).count()

    ??? if waitinfonum < 1:

    ??????? vmsg = "當前沒有需要處理的申請"

    ??? else:

    ??????? waitinfo = Svisit.objects.filter(ac=0, target=nowinfo.mdorm)[0]

    ??????? stuinfo = Stu.objects.get(sid=waitinfo.sno)

    ??? sql = "select * from svisit where target = %s and ac != 0"

    ??? alreadyinfo = Svisit.objects.raw(sql, [nowinfo.mdorm])

    ??? if alreadyinfo:

    ??????? hvmsg = ""

    ??? else:

    ??????? hvmsg = "您還沒有處理過申請信息"

    ??? return render(request, 'managevisit.html', locals())

    7.3.7 故障報修事務

    def wrong(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid=num.id)

    ??????? sql = "select sid,dorm_building_id from stu where dorm_building_id != %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.dorm_building_id])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????? ????if m.dorm_building_id not in listmm:

    ??????????????? listmm.append(m.dorm_building_id)

    ??? dormid = request.GET.get('dormid', '')

    ??? judge = request.GET.get('message', '')

    ??? if judge:

    ??????? dbmsg = request.GET.get('message', '')

    ??????? newmsg = Wrong(dorm_building_id=nowinfo.dorm_building_id, dorm_id=nowinfo.dorm_id, wronginfo=dbmsg,

    ?????????????????????? sid=nowinfo.sid, sname=nowinfo.sname, ac=0)

    ??????? newmsg.save()

    ??????? msg = "故障單已送達"

    ??? else:

    ??????? msg = "請正確填寫"

    ??? reqnum = Wrong.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id).count()

    ??? if reqnum >= 1:

    ??????? reqform = Wrong.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id)

    ??????? fbmsg = ''

    ??? else:

    ??????? fbmsg = '您的宿舍還沒有上交過故障信息'

    ??? return render(request, 'wrong.html', locals())

    def wrongg(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid=num.id)

    ??????? sql = "select sid,dorm_building_id from stu where dorm_building_id != %s"

    ??????? dorminfo = Stu.objects.raw(sql, [nowinfo.dorm_building_id])

    ??????? listmm = []

    ??????? for m in dorminfo:

    ??????????? if m.dorm_building_id not in listmm:

    ??????????????? listmm.append(m.dorm_building_id)

    ??? dormid = request.GET.get('dormid', '')

    ??? judge = request.GET.get('message', '')

    ??? reqnum = Wrong.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id).count()

    ??? if reqnum >= 1:

    ??????? reqform = Wrong.objects.filter(dorm_id=nowinfo.dorm_id, dorm_building_id=nowinfo.dorm_building_id)

    ??????? fbmsg = ''

    ??? else:

    ??????? fbmsg = '您的宿舍還沒有上交過請求'

    ??? return render(request, 'wrong.html', locals())

    def mwrong(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??? waitinfonum = Wrong.objects.filter(ac=0, dorm_building_id=nowinfo.mdorm).count()

    ??? sql = "select * from wrong where dorm_building_id = %s and ac != 0"

    ??? alreadyinfo = Wrong.objects.raw(sql, [nowinfo.mdorm])

    ??? if alreadyinfo:

    ??????? hvmsg = ""

    ??? else:

    ??????? hvmsg = "您還沒有處理過申請信息"

    ??? if waitinfonum < 1:

    ??????? vmsg = "當前沒有需要處理的申請"

    ??? else:

    ??????? waitinfo = Wrong.objects.filter(ac=0, dorm_building_id=nowinfo.mdorm)[0]

    ??????? stuinfo = Stu.objects.get(sid=waitinfo.sid)

    ??? return render(request, 'managewrong.html', locals())

    def mwrongg(request):

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1:

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else:

    ??????? now = Logininfo.objects.get()

    ??????? nowinfo = Manager.objects.get(mid=now.id)

    ??? waitinfo = Wrong.objects.filter(ac=0, dorm_building_id=nowinfo.mdorm)[0]

    ??? res = request.GET.get('res', '')

    ??? mes = request.GET.get('message', '')

    ??? waitinfo.ac = res

    ??? waitinfo.reply = mes

    ??? waitinfo.save()

    ??? waitinfonum = Wrong.objects.filter(ac=0, dorm_building_id=nowinfo.mdorm).count()

    ??? if waitinfonum < 1:

    ??????? vmsg = "當前沒有需要處理的申請"

    ??? else:

    ??????? waitinfo = Wrong.objects.filter(ac=0, dorm_building_id=nowinfo.mdorm)[0]

    ??????? stuinfo = Stu.objects.get(sid=waitinfo.sid)

    ??? sql = "select * from wrong where dorm_building_id = %s and ac != 0"

    ??? alreadyinfo = Wrong.objects.raw(sql, [nowinfo.mdorm])

    ??? if alreadyinfo:

    ??????? hvmsg = ""

    ??? else:

    ??????? hvmsg = "您還沒有處理過申請信息"

    ??? return render(request, 'managewrong.html', locals())

    7.3.8 離校登記事務

    def leavee(request) :

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1 :

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else :

    ? ??????num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid = num.id)

    ??????? reqnum = Leave.objects.filter(sid = nowinfo.sid).count()

    ??????? if reqnum >= 1 :

    ??????????? reqform = Leave.objects.filter(sid = nowinfo.sid)

    ??????????? fbmsg = ''

    ??????? else:

    fbmsg = '您還沒有過離校登記'

    return render(request, 'leave.html', locals())

    def leave(request) :

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1 :

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else :

    ?? ?????num = Logininfo.objects.get()

    ??????? nowinfo = Stu.objects.get(sid = num.id)

    ??????? judge = request.GET.get('message', '')

    ??????? bbtime = request.GET.get('btime', '')

    ??????? eetime = request.GET.get('etime', '')

    ??????? if eetimeand bbtimeand judge:

    if eetime >= bbtime :

    ??? newmsg = Leave(btime = bbtime, etime = eetime, why = judge, sid = nowinfo.sid, sname = nowinfo.sname,

    ??????? dorm_building_id = nowinfo.dorm_building_id, dorm_id = nowinfo.dorm_id)

    ??? newmsg.save()

    ? ??msg = "報備成功!"

    else:

    lmsg = "返校時間必須大于離校時間!"

    ??????? else:

    msg = "請正確填寫"

    reqnum = Leave.objects.filter(sid = nowinfo.sid).count()

    if reqnum >= 1 :

    ??? reqform = Leave.objects.filter(sid = nowinfo.sid)

    ??? fbmsg = ''

    else:

    fbmsg = '您還沒有上交過請求'

    return render(request, 'leave.html', locals())

    def mleave(request) :

    ??? c = Logininfo.objects.filter().count()

    ??? if c < 1 :

    ??????? msg = "請先登錄!"

    ??????? return render(request, 'login.html', locals())

    ??? else :

    ??????? m = Logininfo.objects.get()

    ??????? minfo = Manager.objects.get(mid = m.id)

    ??????? num = Leave.objects.filter(dorm_building_id = minfo.mdorm).count()

    ??????? if num < 1 :

    ??????????? msg = "您管理的宿舍樓目前還沒有學生進行離校登記過哦"

    ??????? else:

    msg = ""

    allmember = Leave.objects.filter(dorm_building_id = minfo.mdorm)

    return render(request, 'mleave.html', locals())

    總結

    以上是生活随笔為你收集整理的学生公寓管理系统-python+Django+Mysql(附视图代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。