自己做的網(wǎng)站視頻播放不了營(yíng)銷云
🙊作者簡(jiǎn)介:擁有多年開(kāi)發(fā)工作經(jīng)驗(yàn),分享技術(shù)代碼幫助學(xué)生學(xué)習(xí),獨(dú)立完成自己的項(xiàng)目或者畢業(yè)設(shè)計(jì)。
- 代碼可以私聊博主獲取。🌹
- 贈(zèng)送計(jì)算機(jī)畢業(yè)設(shè)計(jì)600個(gè)選題excel文件,幫助大學(xué)選題。
- 贈(zèng)送開(kāi)題報(bào)告模板,幫助書寫開(kāi)題報(bào)告。
作者完整代碼目錄供你選擇:
- 《Springboot網(wǎng)站項(xiàng)目》400套
- 《ssm網(wǎng)站項(xiàng)目》800套
- 《小程序項(xiàng)目》300套
- 《App項(xiàng)目》500套
- 《python網(wǎng)站項(xiàng)目》600套
?感興趣大家可以點(diǎn)點(diǎn)關(guān)注收藏,后續(xù)更新更多項(xiàng)目資料。?
項(xiàng)目演示
?
??????????
現(xiàn)代經(jīng)濟(jì)快節(jié)奏發(fā)展以及不斷完善升級(jí)的信息化技術(shù),讓傳統(tǒng)數(shù)據(jù)信息的管理升級(jí)為軟件存儲(chǔ),歸納,集中處理數(shù)據(jù)信息的管理方式。本校園順路代送微信小程序就是在這樣的大環(huán)境下誕生,其可以幫助管理者在短時(shí)間內(nèi)處理完畢龐大的數(shù)據(jù)信息,使用這種軟件工具可以幫助管理人員提高事務(wù)處理效率,達(dá)到事半功倍的效果。此校園順路代送微信小程序利用當(dāng)下成熟完善的SSM框架,使用跨平臺(tái)的可開(kāi)發(fā)大型商業(yè)網(wǎng)站的Java語(yǔ)言,以及最受歡迎的RDBMS應(yīng)用軟件之一的MySQL數(shù)據(jù)庫(kù)進(jìn)行程序開(kāi)發(fā)。校園順路代送微信小程序管理員有個(gè)人中心,用戶管理,發(fā)布者管理,代送類型管理,代送任務(wù)管理,任務(wù)接取管理,任務(wù)取消管理,系統(tǒng)消息管理,意見(jiàn)反饋,系統(tǒng)管理。發(fā)布者和用戶都可以注冊(cè)登錄,發(fā)布者主要發(fā)布代送任務(wù)和任務(wù)取消操作,用戶可以選擇接受發(fā)布者的任務(wù),并且可以反饋。校園順路代送微信小程序的開(kāi)發(fā)根據(jù)操作人員需要設(shè)計(jì)的界面簡(jiǎn)潔美觀,在功能模塊布局上跟同類型網(wǎng)站保持一致,程序在實(shí)現(xiàn)基本要求功能時(shí),也為數(shù)據(jù)信息面臨的安全問(wèn)題提供了一些實(shí)用的解決方案??梢哉f(shuō)該程序在幫助管理者高效率地處理工作事務(wù)的同時(shí),也實(shí)現(xiàn)了數(shù)據(jù)信息的整體化,規(guī)范化與自動(dòng)化。
關(guān)鍵詞:校園順路代送微信小程序;SSM框架;MySQL;自動(dòng)化
1 緒論
1.1?研究背景
當(dāng)前社會(huì)各行業(yè)領(lǐng)域競(jìng)爭(zhēng)壓力非常大,隨著當(dāng)前時(shí)代的信息化,科學(xué)化發(fā)展,讓社會(huì)各行業(yè)領(lǐng)域都爭(zhēng)相使用新的信息技術(shù),對(duì)行業(yè)內(nèi)的各種相關(guān)數(shù)據(jù)進(jìn)行科學(xué)化,規(guī)范化管理。這樣的大環(huán)境讓那些止步不前,不接受信息改革帶來(lái)的信息技術(shù)的企業(yè)隨時(shí)面臨被淘汰,被取代的風(fēng)險(xiǎn)。所以當(dāng)今,各個(gè)行業(yè)領(lǐng)域,不管是傳統(tǒng)的教育行業(yè),餐飲行業(yè),還是旅游行業(yè),醫(yī)療行業(yè)等領(lǐng)域都將使用新的信息技術(shù)進(jìn)行信息革命,改變傳統(tǒng)的紙質(zhì)化,需要人手工處理工作事務(wù)的辦公環(huán)境。軟件信息技術(shù)能夠覆蓋社會(huì)各行業(yè)領(lǐng)域是時(shí)代的發(fā)展要求,各種數(shù)據(jù)以及文件真正實(shí)現(xiàn)電子化是信息社會(huì)發(fā)展的不可逆轉(zhuǎn)的必然趨勢(shì)。本校園順路代送微信小程序也是緊跟科學(xué)技術(shù)的發(fā)展,運(yùn)用當(dāng)今一流的軟件技術(shù)實(shí)現(xiàn)軟件系統(tǒng)的開(kāi)發(fā),讓家具銷售庫(kù)存管理信息完全通過(guò)管理系統(tǒng)實(shí)現(xiàn)科學(xué)化,規(guī)范化,程序化管理。從而幫助信息管理者節(jié)省事務(wù)處理的時(shí)間,降低數(shù)據(jù)處理的錯(cuò)誤率,對(duì)于基礎(chǔ)數(shù)據(jù)的管理水平可以起到促進(jìn)作用,也從一定程度上對(duì)隨意的業(yè)務(wù)管理工作進(jìn)行了避免,同時(shí),校園順路代送微信小程序的數(shù)據(jù)庫(kù)里面存儲(chǔ)的各種動(dòng)態(tài)信息,也為上層管理人員作出重大決策提供了大量的事實(shí)依據(jù)。總之,校園順路代送微信小程序是一款可以真正提升管理者的辦公效率的軟件系統(tǒng)。
1.2 目的和意義
信息數(shù)據(jù)的處理完全依賴人工進(jìn)行操作,會(huì)耗費(fèi)大量的人工成本,特別是面對(duì)大量的數(shù)據(jù)信息時(shí),傳統(tǒng)人工操作不僅不能對(duì)數(shù)據(jù)的出錯(cuò)率進(jìn)行保證,還容易出現(xiàn)各種信息資源的低利用率與低安全性問(wèn)題。更有甚者,耽誤大量的寶貴時(shí)間,尤其是對(duì)信息的更新,歸納與統(tǒng)計(jì)更是耗財(cái)耗力的過(guò)程。所以電子化信息管理的出現(xiàn)就能緩解以及改變傳統(tǒng)人工方式面臨的處境,一方面可以確保信息數(shù)據(jù)在短時(shí)間被高效處理,還能節(jié)省人力成本,另一方面可以確保信息數(shù)據(jù)的安全性,可靠性,并可以實(shí)現(xiàn)信息數(shù)據(jù)的快速檢索與修改操作,這些優(yōu)點(diǎn)是之前的舊操作模式無(wú)法比擬的。因此校園順路代送微信小程序?yàn)閿?shù)據(jù)信息的管理模式的升級(jí)與改革提供了重要的窗口。
1.3 論文結(jié)構(gòu)安排
為了幫助用戶更好的了解和理解程序的開(kāi)發(fā)流程與相關(guān)內(nèi)容,本文將通過(guò)六個(gè)章節(jié)進(jìn)行內(nèi)容闡述。
第一章:描述了程序的開(kāi)發(fā)背景,程序運(yùn)用于現(xiàn)實(shí)生活的目的與意義,以及程序文檔的結(jié)構(gòu)安排信息;
第二章:描述了程序的開(kāi)發(fā)環(huán)境,包括程序開(kāi)發(fā)涉及到的技術(shù),程序開(kāi)發(fā)使用的數(shù)據(jù)存儲(chǔ)工具等信息;
第三章:描述了程序著手進(jìn)行開(kāi)發(fā)時(shí),會(huì)面臨的可行性問(wèn)題,并對(duì)程序功能以及性能要求進(jìn)行描述;
第四章:描述了程序大功能模塊下的功能細(xì)分信息,以及存儲(chǔ)程序數(shù)據(jù)的數(shù)據(jù)庫(kù)表文件結(jié)構(gòu)的設(shè)計(jì)信息等;
第五章:描述了程序的功能實(shí)現(xiàn)界面的內(nèi)容,也對(duì)程序操作人員操作的部分功能進(jìn)行了描述;
第六章:描述了程序功能的測(cè)試內(nèi)容,并介紹了系統(tǒng)測(cè)試的概念與方法。
2?相關(guān)技術(shù)
2.1 微信小程序介紹
2.3?uni-app介紹
uni-app?是一個(gè)使用?Vue.js?開(kāi)發(fā)所有前端應(yīng)用的框架,開(kāi)發(fā)者編寫一套代碼,可發(fā)布到iOS、Android、Web(響應(yīng)式)、以及各種小程序(微信/支付寶/百度/頭條/QQ/釘釘/淘寶)、快應(yīng)用等多個(gè)平臺(tái)。
DCloud公司擁有800萬(wàn)開(kāi)發(fā)者、數(shù)百萬(wàn)應(yīng)用、12億手機(jī)端月活用戶、數(shù)千款uni-app插件。
uni-app在手,做啥都不愁。即使不跨端,uni-app也是更好的小程序開(kāi)發(fā)框架更好的App跨平臺(tái)框架、更方便的H5開(kāi)發(fā)框架。不管任務(wù)類型安排什么樣的項(xiàng)目,你都可以快速交付,不需要轉(zhuǎn)換開(kāi)發(fā)思維、不需要更改開(kāi)發(fā)習(xí)慣。
2.3 MySQL數(shù)據(jù)庫(kù)介紹
開(kāi)發(fā)的程序面向用戶的只是程序的功能界面,讓用戶操作程序界面的各個(gè)功能,那么很多人就會(huì)問(wèn),用戶使用程序功能生成的數(shù)據(jù)信息放在哪里的?這個(gè)就需要涉及到數(shù)據(jù)庫(kù)的知識(shí)了,一般來(lái)說(shuō),程序開(kāi)發(fā)通常就會(huì)對(duì)常用數(shù)據(jù)存儲(chǔ)工具的特點(diǎn)進(jìn)行分析比對(duì),比如MySQL數(shù)據(jù)庫(kù)的特點(diǎn)與優(yōu)勢(shì),Access數(shù)據(jù)庫(kù)的特點(diǎn)與優(yōu)勢(shì),Sqlserver數(shù)據(jù)庫(kù)的特點(diǎn)與優(yōu)勢(shì)等,最終看哪個(gè)數(shù)據(jù)庫(kù)與需要開(kāi)發(fā)的程序比較匹配,也符合程序功能運(yùn)行需要的數(shù)據(jù)存儲(chǔ)要求,比如,需要開(kāi)發(fā)商業(yè)級(jí)別的程序,存儲(chǔ)的數(shù)據(jù)對(duì)數(shù)據(jù)庫(kù)要求較高,可以選用Oracle,如果只是比較簡(jiǎn)單的程序,對(duì)數(shù)據(jù)存儲(chǔ)沒(méi)有過(guò)多要求,可以選用微軟旗下的Access,當(dāng)開(kāi)發(fā)程序要求數(shù)據(jù)庫(kù)占用空間小,并能滿足程序數(shù)據(jù)存儲(chǔ)要求時(shí),就可以考慮Oracle公司從瑞典MySQL AB公司在很早之前就收購(gòu)過(guò)一個(gè)關(guān)系型數(shù)據(jù)庫(kù),它是現(xiàn)在的MySQL數(shù)據(jù)庫(kù)。在數(shù)據(jù)庫(kù)工具里面它是最受認(rèn)可的其中一個(gè)應(yīng)用軟件。需要說(shuō)明的信息就是,本程序的開(kāi)發(fā)就運(yùn)用到了此數(shù)據(jù)庫(kù)。它將程序數(shù)據(jù)通過(guò)使用不同的數(shù)據(jù)表格進(jìn)行保存,在增加了程序數(shù)據(jù)的存儲(chǔ)速度的時(shí)候,也提高了數(shù)據(jù)庫(kù)的靈活性。?圖2.3展示的就是MySQL的架構(gòu)圖。
圖2.3 MySQL數(shù)據(jù)庫(kù)架構(gòu)圖
2.4 SSM框架介紹
SSM框架,是Spring+Spring MVC+MyBatis的縮寫,這個(gè)是繼SSH之后,目前比較主流的Java EE企業(yè)級(jí)框架,適用于搭建各種大型的企業(yè)級(jí)應(yīng)用系統(tǒng)。
1.Spring簡(jiǎn)介
Spring是一個(gè)開(kāi)源框架,Spring是于2003年興起的一個(gè)輕量級(jí)的Java開(kāi)發(fā)框架,由Rod Johnson在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來(lái)。它是為了解決企業(yè)應(yīng)用開(kāi)發(fā)的復(fù)雜性而創(chuàng)建的。Spring使用基本的JavaBean來(lái)完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務(wù)器端的開(kāi)發(fā)。從簡(jiǎn)單性、可測(cè)試性和松耦合的角度而言,任何Java應(yīng)用都可以從Spring中受益。簡(jiǎn)單來(lái)說(shuō),Spring是一個(gè)輕量級(jí)的控制反轉(zhuǎn)(IoC)和面向切面(AOP)的容器框架。
A.控制反轉(zhuǎn)(IOC)是什么呢?
IOC:控制反轉(zhuǎn)也叫依賴注入。利用了工廠模式將對(duì)象交給容器管理,你只需要在spring配置文件總配置相應(yīng)的bean,以及設(shè)置相關(guān)的屬性,讓spring容器來(lái)生成類的實(shí)例對(duì)象以及管理對(duì)象。在spring容器啟動(dòng)的時(shí)候,spring會(huì)把你在配置文件中配置的bean都初始化好,然后在你需要調(diào)用的時(shí)候,就把它已經(jīng)初始化好的那些bean分配給你需要調(diào)用這些bean的類(假設(shè)這個(gè)類名是A),分配的方法就是調(diào)用A的setter方法來(lái)注入,而不需要你在A里面new這些bean了。
B.面向切面(AOP)又是什么呢?
首先,需要說(shuō)明的一點(diǎn),AOP只是Spring的特性,它就像OOP一樣是一種編程思想,并不是某一種技術(shù),AOP可以說(shuō)是對(duì)OOP的補(bǔ)充和完善。OOP引入封裝、繼承和多態(tài)性等概念來(lái)建立一種對(duì)象層次結(jié)構(gòu),用以模擬公共行為的一個(gè)集合。當(dāng)我們需要為分散的對(duì)象引入公共行為的時(shí)候,OOP則顯得無(wú)能為力。也就是說(shuō),OOP允許你定義從上到下的關(guān)系,但并不適合定義從左到右的關(guān)系。例如日志功能。日志代碼往往水平地散布在所有對(duì)象層次中,而與它所散布到的對(duì)象的核心功能毫無(wú)關(guān)系。在OOP設(shè)計(jì)中,它導(dǎo)致了大量代碼的重復(fù),而不利于各個(gè)模塊的重用。將程序中的交叉業(yè)務(wù)邏輯(比如安全,日志,事務(wù)等),封裝成一個(gè)切面,然后注入到目標(biāo)對(duì)象(具體業(yè)務(wù)邏輯)中去。
實(shí)現(xiàn)AOP的技術(shù),主要分為兩大類:一是采用動(dòng)態(tài)代理技術(shù),利用截取消息的方式,對(duì)該消息進(jìn)行裝飾,以取代原有對(duì)象行為的執(zhí)行;二是采用靜態(tài)織入的方式,引入特定的語(yǔ)法創(chuàng)建“方面”,從而使得編譯器可以在編譯期間織入有關(guān)“方面”的代碼。
2.Spring MVC簡(jiǎn)介
Spring MVC屬于Spring Framework的后續(xù)產(chǎn)品,已經(jīng)融合在Spring Web Flow里面,它原生支持的Spring特性,讓開(kāi)發(fā)變得非常簡(jiǎn)單規(guī)范。Spring MVC分離了控制器、模型對(duì)象、分派器以及處理程序?qū)ο蟮慕巧?#xff0c;這種分離讓它們更容易進(jìn)行定制。
3.MyBatis簡(jiǎn)介
MyBatis本是apache的一個(gè)開(kāi)源項(xiàng)目iBatis,2010年這個(gè)項(xiàng)目由apache software foundation遷移到了google code,并且改名為MyBatis。MyBatis是一個(gè)基于Java的持久層框架。iBATIS提供的持久層框架包括SQL Maps和Data Access Objects(DAO)MyBatis消除了幾乎所有的JDBC代碼和參數(shù)的手工設(shè)置以及結(jié)果集的檢索。MyBatis使用簡(jiǎn)單的XML或注解用于配置和原始映射,將接口和Java的POJOs(Plain Old Java Objects,普通的Java對(duì)象)映射成數(shù)據(jù)庫(kù)中的記錄??梢赃@么理解,MyBatis是一個(gè)用來(lái)幫你管理數(shù)據(jù)增刪改查的框架。
3 系統(tǒng)分析
當(dāng)用戶確定開(kāi)發(fā)一款程序時(shí),是需要遵循下面的順序進(jìn)行工作,概括為:系統(tǒng)分析-->系統(tǒng)設(shè)計(jì)-->系統(tǒng)開(kāi)發(fā)-->系統(tǒng)測(cè)試,無(wú)論這個(gè)過(guò)程是否有變更或者迭代,都是按照這樣的順序開(kāi)展工作的。系統(tǒng)分析就是分析系統(tǒng)需要做什么的問(wèn)題,主要目的就是確定系統(tǒng)的功能,這也為接下來(lái)的工作做了一個(gè)好的開(kāi)端。
3.1?系統(tǒng)可行性分析
開(kāi)發(fā)一款程序軟件不僅需要時(shí)間,也需要人力,物力資源。而進(jìn)行可行性分析這個(gè)環(huán)節(jié)就是解決用戶這方面的疑問(wèn),看看程序在當(dāng)前的條件下是否可以進(jìn)行開(kāi)發(fā)。
3.1.1 技術(shù)可行性分析
此程序選用的開(kāi)發(fā)語(yǔ)言是Java,這種編程語(yǔ)言有著豐富的數(shù)據(jù)類型,在指令控制語(yǔ)句上也比較完善,更重要的就是對(duì)類與對(duì)象的大力支持,這些優(yōu)點(diǎn)為程序開(kāi)發(fā)者提供了技術(shù)保障,尤其是現(xiàn)在代碼都逐漸模塊化,有關(guān)系統(tǒng)功能開(kāi)發(fā)的源碼在網(wǎng)絡(luò)上都公開(kāi)展示了,所以讓具備一定計(jì)算機(jī)開(kāi)發(fā)基礎(chǔ)的開(kāi)發(fā)人員獨(dú)立開(kāi)發(fā)系統(tǒng)在技術(shù)上也逐漸容易。
3.1.2 經(jīng)濟(jì)可行性分析
開(kāi)發(fā)此程序最關(guān)鍵的設(shè)備就是一臺(tái)電腦,無(wú)論是學(xué)校計(jì)算機(jī)室配備的電腦,還是自己入學(xué)以來(lái)購(gòu)置的筆記本,都是可以符合開(kāi)發(fā)要求的設(shè)備,另外在網(wǎng)絡(luò)上,學(xué)校本已完全覆蓋了校園網(wǎng),所以在設(shè)備以及網(wǎng)絡(luò)上無(wú)須考慮經(jīng)濟(jì)問(wèn)題。
3.1.3 運(yùn)行可行性分析
隨著電腦軟件以及配套硬件的完善升級(jí),當(dāng)下的計(jì)算機(jī)環(huán)境是一片大好,尤其是計(jì)算機(jī)已經(jīng)廣泛普及到家家戶戶,所以計(jì)算機(jī)設(shè)備現(xiàn)在是隨處可見(jiàn),由于本次開(kāi)發(fā)的程序占有的資源耗費(fèi)較小,在一般的電腦或筆記本上都能輕松運(yùn)轉(zhuǎn)起來(lái)。
通過(guò)上面的可行性描述,可以從經(jīng)濟(jì),技術(shù),運(yùn)行方面解決程序開(kāi)發(fā)是否可行的問(wèn)題。因此可以認(rèn)為該程序軟件是可以進(jìn)行開(kāi)發(fā)的。
3.2?系統(tǒng)性能分析
系統(tǒng)性能分析也是比較重要的內(nèi)容,進(jìn)行系統(tǒng)性能分析就是為了確保系統(tǒng)的功能要能夠在生活中運(yùn)行使用時(shí),達(dá)到規(guī)定的指標(biāo),因此一個(gè)完整的系統(tǒng)軟件,是需要進(jìn)行系統(tǒng)的性能分析這個(gè)步驟的。本次進(jìn)行性能分析主要從易用性指標(biāo),可擴(kuò)展性指標(biāo),系統(tǒng)健壯性指標(biāo),系統(tǒng)安全性指標(biāo)這幾個(gè)方面進(jìn)行分析。
3.2.1 易用性指標(biāo)
本次程序軟件的開(kāi)發(fā)的目的就是讓使用者可以通過(guò)使用該軟件提高信息數(shù)據(jù)的管理效率,同時(shí)該程序軟件也需要針對(duì)不同的操作用戶設(shè)置對(duì)應(yīng)的功能,因此,此程序的操作流程應(yīng)該盡量與用戶日常操作軟件的行為習(xí)慣相貼合,另外,程序軟件的設(shè)計(jì)與開(kāi)發(fā)也應(yīng)考慮非計(jì)算機(jī)專業(yè)用戶的計(jì)算機(jī)操作水平,要讓大部分使用者都可以輕松操作程序提供的各個(gè)功能。
3.2.2 可擴(kuò)展性指標(biāo)
當(dāng)前需要開(kāi)發(fā)的程序軟件是根據(jù)當(dāng)下的用戶需求進(jìn)行設(shè)計(jì)開(kāi)發(fā)的,但是隨著時(shí)間的推移,社會(huì)大環(huán)境的改變,開(kāi)發(fā)出的程序也是需要與時(shí)俱進(jìn)的,需要根據(jù)用戶不斷變換的需求進(jìn)行相應(yīng)的功能內(nèi)容的擴(kuò)展,需要注意的就是,當(dāng)對(duì)成型的程序進(jìn)行功能模塊新增時(shí),仍然需要保證程序原有架構(gòu)以及功能不能受到影響,新增的功能模塊在系統(tǒng)中也能夠運(yùn)行正常,該指標(biāo)達(dá)標(biāo)也就可以保證此程序是可以在滿足信息管理要求下,從容應(yīng)對(duì)市場(chǎng)環(huán)境的變化。
3.2.3 健壯性指標(biāo)
程序軟件的開(kāi)發(fā)就是為了投入使用時(shí),可以一直穩(wěn)定的處理各種數(shù)據(jù)信息,程序軟件一旦不穩(wěn)定,也會(huì)給使用者帶來(lái)干擾。因此從性能分析的角度,就要要求程序軟件在應(yīng)對(duì)使用者的誤操作,或者是使用者因?yàn)楦鞣N原因,填寫有誤的數(shù)據(jù)等情況時(shí),程序要一直保持穩(wěn)定,并能夠正常讓使用者進(jìn)行使用。當(dāng)程序的某個(gè)功能模塊出現(xiàn)異常時(shí),程序的其它功能模塊也要能夠確保正常使用。程序的健壯性指標(biāo)達(dá)標(biāo)可以讓使用者產(chǎn)生良好的用戶體驗(yàn)。
3.2.4 安全性指標(biāo)
程序軟件的安全問(wèn)題是首要問(wèn)題,畢竟程序?qū)?yīng)數(shù)據(jù)庫(kù)里面存放的數(shù)據(jù)信息是龐大的,里面也包括了許多重要的個(gè)人信息,這就對(duì)程序要具備一個(gè)完善的安全機(jī)制提出了要求。因此程序必須要設(shè)置登錄功能用以進(jìn)行用戶身份的檢查,以及身份和權(quán)限的匹配,通過(guò)對(duì)不同用戶身份進(jìn)行功能約束,絕不容忍用戶越權(quán)操作程序。另外,也需要時(shí)刻防范計(jì)算機(jī)病毒,還有黑客,通過(guò)采取針對(duì)性的辦法進(jìn)行安全應(yīng)對(duì),確保程序時(shí)刻處于安全的環(huán)境,讓使用者放心使用。
3.3?系統(tǒng)流程分析
3.3.1 操作流程分析
程序上交給用戶進(jìn)行使用時(shí),需要提供程序的操作流程圖(如圖3.1所示),這樣便于用戶容易理解程序的具體工作步驟,現(xiàn)如今程序的操作流程都有一個(gè)大致的標(biāo)準(zhǔn),即先通過(guò)登錄頁(yè)面提交登錄數(shù)據(jù),通過(guò)程序驗(yàn)證正確之后,用戶才能在程序功能操作區(qū)頁(yè)面操作對(duì)應(yīng)的功能。
圖3.1?程序操作流程圖
3.3.2 登錄流程分析
在這個(gè)部分,需要對(duì)程序的登錄功能模塊的運(yùn)行流程(如圖3.2所示),進(jìn)行單獨(dú)說(shuō)明。程序設(shè)置登錄模塊也是為了安全起見(jiàn),讓用戶使用放心,登錄模塊主要就是讓用戶提交登錄信息,程序進(jìn)行數(shù)據(jù)驗(yàn)證,驗(yàn)證通過(guò)的用戶才能夠成功登錄程序。
圖3.2 程序登錄流程圖
3.3.3 信息添加流程分析
程序的添加功能就是提供給操作者錄入信息的功能,不管是涉及到用戶信息添加,還是其它功能模塊涉及到的信息添加,程序的信息添加流程(如圖3.3所示)都是一致的。程序都是先對(duì)操作者錄入的數(shù)據(jù)進(jìn)行判定,這個(gè)判定規(guī)則是一段提前編寫完成的程序代碼,當(dāng)程序判定數(shù)據(jù)符合要求時(shí),才會(huì)把操作者錄入的數(shù)據(jù)登記在數(shù)據(jù)表里面,比如添加的用戶信息,就會(huì)把新添加的用戶信息寫入用戶信息的數(shù)據(jù)表文件里面。
圖3.3?信息添加流程圖
3.3.4 信息刪除流程分析
當(dāng)從程序里面刪除某種無(wú)效數(shù)據(jù)時(shí),遵循程序的信息刪除流程(如圖3.4所示),先要選中操作者需要?jiǎng)h除的數(shù)據(jù),程序?yàn)榱祟A(yù)防操作者誤刪信息,也會(huì)進(jìn)行提示,當(dāng)操作者真正確定要?jiǎng)h選中的信息時(shí),該信息就會(huì)從數(shù)據(jù)庫(kù)中被永久刪除。
圖3.4?信息刪除流程圖
4?系統(tǒng)設(shè)計(jì)
校園順路代送微信小程序的設(shè)計(jì)方案比如功能框架的設(shè)計(jì),比如數(shù)據(jù)庫(kù)的設(shè)計(jì)的好壞也就決定了該系統(tǒng)在開(kāi)發(fā)層面是否高效,以及在系統(tǒng)維護(hù)層面是否容易維護(hù)和升級(jí),因?yàn)樵谙到y(tǒng)實(shí)現(xiàn)階段是需要考慮用戶的所有需求,要是在設(shè)計(jì)階段沒(méi)有經(jīng)過(guò)全方位考慮,那么系統(tǒng)實(shí)現(xiàn)的部分也就無(wú)從下手,所以系統(tǒng)設(shè)計(jì)部分也是至關(guān)重要的一個(gè)環(huán)節(jié),只有根據(jù)用戶需求進(jìn)行細(xì)致全面的考慮,才有希望開(kāi)發(fā)出功能健全穩(wěn)定的程序軟件。
4.1?系統(tǒng)概要設(shè)計(jì)
本次擬開(kāi)發(fā)的系統(tǒng)為了節(jié)約開(kāi)發(fā)成本,也為了后期在維護(hù)和升級(jí)上的便利性,打算通過(guò)瀏覽器來(lái)實(shí)現(xiàn)系統(tǒng)功能界面的展示,讓程序軟件的主要事務(wù)集中在后臺(tái)的服務(wù)器端處理,前端部分只用處理少量的事務(wù)邏輯。下面使用一張圖(如圖4.1所示)來(lái)說(shuō)明程序的工作原理。
圖4.1 程序工作的原理圖
4.2?系統(tǒng)功能結(jié)構(gòu)設(shè)計(jì)
在分析并得出使用者對(duì)程序的功能要求時(shí),就可以進(jìn)行程序設(shè)計(jì)了。如圖4.2展示的就是管理員功能結(jié)構(gòu)圖。
圖4.2 管理員功能結(jié)構(gòu)圖
4.3?數(shù)據(jù)庫(kù)設(shè)計(jì)
程序功能操作不管是添加,修改,還是刪除等功能產(chǎn)生的數(shù)據(jù)都是經(jīng)由數(shù)據(jù)庫(kù)進(jìn)行數(shù)據(jù)保存和更新的,所以一個(gè)數(shù)據(jù)庫(kù)設(shè)計(jì)的好壞也是程序是否好壞的判定標(biāo)準(zhǔn),因?yàn)槌绦虻某晒?#xff0c;有一半的功勞都是靠數(shù)據(jù)庫(kù)的優(yōu)秀設(shè)計(jì)。數(shù)據(jù)庫(kù)一旦設(shè)計(jì)得良好是可以減輕開(kāi)發(fā)人員的開(kāi)發(fā)負(fù)擔(dān)的。
4.3.1?數(shù)據(jù)庫(kù)E-R圖設(shè)計(jì)
這個(gè)部分的設(shè)計(jì)需要使用到E-R圖繪制工具,常用的工具就是Visio工具來(lái)繪制E-R模型圖,這款工具不僅可以快速創(chuàng)建需要的E-R模型圖,而且該工具提供的操作界面很簡(jiǎn)單,可以短時(shí)間內(nèi)修改繪圖界面的圖形或者是文字的屬性。在繪制E-R模型圖時(shí),要分清楚各個(gè)圖形代表的含義,以免繪制出錯(cuò),E-R模型圖由長(zhǎng)方形(實(shí)體),橢圓形(屬性),菱形(關(guān)系)這三部分圖形符號(hào)組成,繪制期間要區(qū)分開(kāi)來(lái),用準(zhǔn)確的圖形符號(hào)代表相應(yīng)的數(shù)據(jù)元素。
(1)管理員實(shí)體屬性圖見(jiàn)圖4.4。
圖4.4?管理員實(shí)體屬性圖
(2)常見(jiàn)問(wèn)題實(shí)體屬性圖見(jiàn)圖4.5。
圖4.5?常見(jiàn)問(wèn)題實(shí)體屬性圖
(3)任務(wù)類型實(shí)體屬性圖見(jiàn)圖4.6。
圖4.6 任務(wù)類型實(shí)體屬性圖
4.3.2 數(shù)據(jù)庫(kù)表結(jié)構(gòu)設(shè)計(jì)
數(shù)據(jù)庫(kù)系統(tǒng)一旦選定之后,需要根據(jù)程序要求在數(shù)據(jù)庫(kù)中建立數(shù)據(jù)庫(kù)文件,并在已經(jīng)完成創(chuàng)建的數(shù)據(jù)庫(kù)文件里面,為程序運(yùn)行中產(chǎn)生的數(shù)據(jù)建立對(duì)應(yīng)的數(shù)據(jù)表格,數(shù)據(jù)表結(jié)構(gòu)設(shè)計(jì)就是對(duì)創(chuàng)建的數(shù)據(jù)表格進(jìn)行字段設(shè)計(jì),字段長(zhǎng)度設(shè)計(jì),字段類型設(shè)計(jì)等,當(dāng)數(shù)據(jù)表格合理設(shè)計(jì)完成之后,才能正常存儲(chǔ)相關(guān)程序運(yùn)行產(chǎn)生的數(shù)據(jù)信息。
1常見(jiàn)問(wèn)題表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | title | String | 標(biāo)題 | 是 |
4 | introduction | String | 簡(jiǎn)介 | 是 |
5 | picture | String | 圖片 | 是 |
6 | content | String | 內(nèi)容 | 是 |
2任務(wù)取消表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | dingdanbianhao | String | 訂單編號(hào) | 是 |
4 | renwumingcheng | String | 任務(wù)名稱 | 是 |
5 | renwuleixing | String | 任務(wù)類型 | 是 |
6 | renwuyongjin | float | 任務(wù)傭金 | 是 |
7 | quxiaoshijian | datetime | 取消時(shí)間 | 是 |
8 | quxiaoyuanyin | String | 取消原因 | 是 |
9 | renwutupian | String | 任務(wù)圖片 | 是 |
10 | fabuzhanghao | String | 發(fā)布賬號(hào) | 是 |
11 | zhanghao | String | 賬號(hào) | 是 |
12 | xingming | String | 姓名 | 是 |
13 | sfsh | String | 是否審核 | 是 |
14 | shhf | String | 審核回復(fù) | 是 |
15 | userid | Integer | 用戶id | 是 |
3代送任務(wù)表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | dingdanbianhao | String | 訂單編號(hào) | 是 |
4 | renwumingcheng | String | 任務(wù)名稱 | 是 |
5 | renwuleixing | String | 任務(wù)類型 | 是 |
6 | renwuneirong | String | 任務(wù)內(nèi)容 | 是 |
7 | renwuyongjin | float | 任務(wù)傭金 | 是 |
8 | fabushijian | datetime | 發(fā)布時(shí)間 | 是 |
9 | songdashixiao | String | 送達(dá)時(shí)效 | 是 |
10 | dingdanzhuangtai | String | 訂單狀態(tài) | 是 |
11 | renwutupian | String | 任務(wù)圖片 | 是 |
12 | fabuzhanghao | String | 發(fā)布賬號(hào) | 是 |
13 | lianxidianhua | String | 聯(lián)系電話 | 是 |
14 | userid | Integer | 用戶id | 是 |
4代送任務(wù)評(píng)論表表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | refid | Integer | 關(guān)聯(lián)表id | 是 |
4 | userid | Integer | 用戶id | 是 |
5 | nickname | String | 用戶名 | 是 |
6 | content | String | 評(píng)論內(nèi)容 | 是 |
7 | reply | String | 回復(fù)內(nèi)容 | 是 |
5收藏表表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | userid | Integer | 用戶id | 是 |
4 | refid | Integer | 收藏id | 是 |
5 | tablename | String | 表名 | 是 |
6 | name | String | 收藏名稱 | 是 |
7 | picture | String | 收藏圖片 | 是 |
8 | type | String | 類型(1:收藏,21:贊,22:踩) | 是 |
9 | inteltype | String | 推薦類型 | 是 |
6用戶表表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | username | String | 用戶名 | 是 |
3 | password | String | 密碼 | 是 |
4 | role | String | 角色 | 是 |
5 | addtime | Date | 新增時(shí)間 | 是 |
7token表表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | userid | Integer | 用戶id | 是 |
3 | username | String | 用戶名 | 是 |
4 | tablename | String | 表名 | 是 |
5 | role | String | 角色 | 是 |
6 | token | String | 密碼 | 是 |
7 | addtime | Date | 新增時(shí)間 | 是 |
8 | expiratedtime | Date | 過(guò)期時(shí)間 | 是 |
8系統(tǒng)消息表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | biaoti | String | 標(biāo)題 | 是 |
4 | xiaoxileixing | String | 消息類型 | 是 |
5 | xiaoxineirong | String | 消息內(nèi)容 | 是 |
6 | fabushijian | datetime | 發(fā)布時(shí)間 | 是 |
7 | tupian | String | 圖片 | 是 |
8 | zhanghao | String | 賬號(hào) | 是 |
9 | xingming | String | 姓名 | 是 |
10 | userid | Integer | 用戶id | 是 |
9發(fā)布者表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | fabuzhanghao | String | 發(fā)布賬號(hào) | 是 |
4 | mima | String | 密碼 | 是 |
5 | fabuxingming | String | 發(fā)布姓名 | 是 |
6 | xingbie | String | 性別 | 是 |
7 | lianxidianhua | String | 聯(lián)系電話 | 是 |
8 | sushehao | String | 宿舍號(hào) | 是 |
9 | touxiang | String | 頭像 | 是 |
10用戶表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | zhanghao | String | 賬號(hào) | 是 |
4 | mima | String | 密碼 | 是 |
5 | xingming | String | 姓名 | 是 |
6 | xingbie | String | 性別 | 是 |
7 | shouji | String | 手機(jī) | 是 |
8 | sushehao | String | 宿舍號(hào) | 是 |
9 | touxiang | String | 頭像 | 是 |
11意見(jiàn)反饋表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | userid | Integer | 留言人id | 是 |
4 | username | String | 用戶名 | 是 |
5 | content | String | 留言內(nèi)容 | 是 |
6 | cpicture | String | 留言圖片 | 是 |
7 | reply | String | 回復(fù)內(nèi)容 | 是 |
8 | rpicture | String | 回復(fù)圖片 | 是 |
12任務(wù)接取表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | dingdanbianhao | String | 訂單編號(hào) | 是 |
4 | renwumingcheng | String | 任務(wù)名稱 | 是 |
5 | renwuleixing | String | 任務(wù)類型 | 是 |
6 | renwuyongjin | float | 任務(wù)傭金 | 是 |
7 | jiequshijian | datetime | 接取時(shí)間 | 是 |
8 | jiequzhuangtai | String | 接取狀態(tài) | 是 |
9 | renwutupian | String | 任務(wù)圖片 | 是 |
10 | fabuzhanghao | String | 發(fā)布賬號(hào) | 是 |
11 | zhanghao | String | 賬號(hào) | 是 |
12 | xingming | String | 姓名 | 是 |
13 | sfsh | String | 是否審核 | 是 |
14 | shhf | String | 審核回復(fù) | 是 |
15 | ispay | String | 是否支付 | 是 |
16 | userid | Integer | 用戶id | 是 |
13任務(wù)類型表
序號(hào) | 列名 | 數(shù)據(jù)類型 | 說(shuō)明 | 允許空 |
1 | Id | Int | id | 否 |
2 | addtime | Date | 創(chuàng)建時(shí)間 | 是 |
3 | leixing | String | 類型 | 是 |
5?系統(tǒng)實(shí)現(xiàn)
系統(tǒng)實(shí)現(xiàn)部分就是將系統(tǒng)分析,系統(tǒng)設(shè)計(jì)部分的內(nèi)容通過(guò)編碼進(jìn)行功能實(shí)現(xiàn),以一個(gè)實(shí)際應(yīng)用系統(tǒng)的形式展示系統(tǒng)分析與系統(tǒng)設(shè)計(jì)的結(jié)果。前面提到的系統(tǒng)分析,系統(tǒng)設(shè)計(jì)最主要還是進(jìn)行功能,系統(tǒng)操作邏輯的設(shè)計(jì),也包括了存儲(chǔ)數(shù)據(jù)的數(shù)據(jù)庫(kù)方面的設(shè)計(jì)等內(nèi)容,系統(tǒng)實(shí)現(xiàn)就是一個(gè)最終的實(shí)施階段,將前面的設(shè)計(jì)成果進(jìn)行物理轉(zhuǎn)化,最終出具可以運(yùn)用于實(shí)際的軟件系統(tǒng)。
5.1?用戶管理
如圖5.1顯示的就是用戶管理頁(yè)面,此頁(yè)面提供給管理員的功能有:對(duì)用戶信息進(jìn)行查詢,添加,刪除以及批量刪除操作。
圖5.1 用戶管理頁(yè)面
5.2?發(fā)布者管理
如圖5.2顯示的就是發(fā)布者管理頁(yè)面,管理員可以對(duì)發(fā)布者信息進(jìn)行添加,修改,刪除,查詢操作。
圖5.2 發(fā)布者管理頁(yè)面
5.3 任務(wù)類型管理
如圖5.3顯示的就是任務(wù)類型管理頁(yè)面,管理員可以對(duì)任務(wù)類型信息進(jìn)行添加,修改,刪除,查詢操作。
5.4?常見(jiàn)問(wèn)題管理
如圖5.4顯示的就是常見(jiàn)問(wèn)題管理頁(yè)面,管理員可以對(duì)常見(jiàn)問(wèn)題進(jìn)行添加修改刪除查詢操作。
圖5.4 常見(jiàn)問(wèn)題管理頁(yè)面
5.5 用戶接取任務(wù)
如圖5.4顯示的就是用戶接取任務(wù)頁(yè)面,用戶登錄后可以選擇任務(wù)信息進(jìn)行接取操作。
圖5.5 用戶接取任務(wù)頁(yè)面
5.6 任務(wù)代送管理
如圖5.4顯示的就是任務(wù)代送管理頁(yè)面,發(fā)布者可以對(duì)任務(wù)代送信息進(jìn)行添加,刪除,修改,查詢操作。
圖5.6 任務(wù)代送管理頁(yè)面
6?系統(tǒng)測(cè)試
程序軟件一旦被開(kāi)發(fā)完成之后,在真正投入日常生活中進(jìn)行運(yùn)行使用之前,是必須要經(jīng)歷測(cè)試這一個(gè)重要的操作環(huán)節(jié),因?yàn)殚_(kāi)發(fā)期間注重的是每個(gè)單獨(dú)功能模塊的開(kāi)發(fā),盡管每次開(kāi)發(fā)完成一個(gè)單獨(dú)功能模塊時(shí),會(huì)通過(guò)單元測(cè)試進(jìn)行檢驗(yàn),檢驗(yàn)合格才會(huì)讓程序員繼續(xù)開(kāi)發(fā)下一個(gè)子功能模塊,以此類推,當(dāng)程序員完成所有的系統(tǒng)子功能模塊的開(kāi)發(fā)時(shí),這個(gè)時(shí)候就需要引進(jìn)系統(tǒng)測(cè)試,系統(tǒng)測(cè)試就是把所有的子功能模塊集成到一起,構(gòu)建成整個(gè)系統(tǒng),在指定的運(yùn)行環(huán)境下進(jìn)行運(yùn)行,主要就是測(cè)試系統(tǒng)的所有功能模塊在一起是否良好運(yùn)行,一旦程序軟件通過(guò)了系統(tǒng)測(cè)試這一環(huán)節(jié),就意味著它可以進(jìn)行最終的驗(yàn)收測(cè)試了,這個(gè)測(cè)試步驟的操作用戶是程序面向的客戶或者是最終用戶了。
6.1 系統(tǒng)測(cè)試的特點(diǎn)
系統(tǒng)測(cè)試也是為了保證系統(tǒng)正式上線后,可以穩(wěn)定正常運(yùn)行,給使用者帶來(lái)便利。系統(tǒng)測(cè)試也有其對(duì)應(yīng)的特點(diǎn):
(1)系統(tǒng)測(cè)試它包括了端到端的完整測(cè)試;
(2)系統(tǒng)測(cè)試也對(duì)程序軟件的架構(gòu)方面,程序軟件的業(yè)務(wù)需求等方面進(jìn)行了測(cè)試;
(3)系統(tǒng)測(cè)試一旦采用正確的方法進(jìn)行,這將減少程序正式上線之后產(chǎn)生的各種錯(cuò)誤;
系統(tǒng)測(cè)試一般都是在跟生產(chǎn)環(huán)境相似的環(huán)境當(dāng)中運(yùn)行,程序的功能比如添加功能,刪除功能,修改功能等都會(huì)使用同樣的數(shù)據(jù)在新系統(tǒng)和現(xiàn)有系統(tǒng)中進(jìn)行比較,這樣做讓用戶對(duì)新系統(tǒng)中的添加,修改,刪除等功能能夠更好地理解,也能提升用戶對(duì)新系統(tǒng)的滿意度。
6.2 測(cè)試結(jié)果分析
程序經(jīng)過(guò)了上述的測(cè)試環(huán)節(jié),可以得出的測(cè)試結(jié)論有:
第一點(diǎn),可以確定開(kāi)發(fā)出來(lái)的校園順路代送微信小程序是符合同類型系統(tǒng)的要求;
第二點(diǎn),用戶要求校園順路代送微信小程序需要具備的功能都已開(kāi)發(fā)完成并能夠正常使用;
第三點(diǎn),校園順路代送微信小程序界面簡(jiǎn)潔美觀,操作流程清晰明了;
第四點(diǎn),校園順路代送微信小程序的安全性,以及運(yùn)行性能符合開(kāi)發(fā)要求。
至此,校園順路代送微信小程序可以確保所有功能能夠按照預(yù)期目標(biāo)進(jìn)行運(yùn)行,可以正式投入生活中運(yùn)行使用!
結(jié) ?論
通過(guò)對(duì)校園順路代送微信小程序的開(kāi)發(fā),讓我深刻明白開(kāi)發(fā)一個(gè)程序軟件需要經(jīng)歷的流程,當(dāng)確定要開(kāi)發(fā)一個(gè)校園順路代送微信小程序的程序時(shí),我在開(kāi)發(fā)期間,對(duì)其功能進(jìn)行合理的需求分析,然后才是程序軟件的功能的框架設(shè)計(jì),數(shù)據(jù)庫(kù)的實(shí)體與數(shù)據(jù)表設(shè)計(jì),程序軟件的功能詳細(xì)界面實(shí)現(xiàn),以及程序的功能測(cè)試等進(jìn)行全方位的細(xì)致考慮,雖然在此過(guò)程中,各個(gè)環(huán)節(jié)都遇到了大大小小的困難,但是通過(guò)對(duì)這些問(wèn)題進(jìn)行反復(fù)的分析,深入的思考,借助各種相關(guān)文獻(xiàn)資料提供的方法與解決思路成功解決面臨的各個(gè)問(wèn)題,最后成功的讓我開(kāi)發(fā)的校園順路代送微信小程序得以正常運(yùn)行。
校園順路代送微信小程序在功能上面是基本可以滿足用戶對(duì)系統(tǒng)的操作,但是這個(gè)程序軟件也有許多方面是不足的,因此,在下一個(gè)時(shí)間階段,有幾點(diǎn)需要改進(jìn)的地方需要提出來(lái),它們分別是:
(1)操作頁(yè)面可以滿足用戶簡(jiǎn)易操作的要求,但是在頁(yè)面多樣化設(shè)計(jì)層面上需要把一些比較豐富的設(shè)計(jì)結(jié)構(gòu)考慮進(jìn)來(lái)。
(2)程序軟件的總體安全性能需要優(yōu)化,例如程序的退出安全性,以及程序的并發(fā)性等問(wèn)題都需要進(jìn)行安全性升級(jí),讓開(kāi)發(fā)的校園順路代送微信小程序與現(xiàn)實(shí)中的相關(guān)網(wǎng)站更貼合。
(3)需要對(duì)程序的數(shù)據(jù)結(jié)構(gòu)方面,程序的代碼方面等進(jìn)行優(yōu)化,讓運(yùn)行起來(lái)的程序可以保持穩(wěn)定運(yùn)行,也讓程序能夠保證短時(shí)間內(nèi)處理相關(guān)事務(wù),節(jié)省處理事務(wù)的時(shí)間,提高事務(wù)處理的效率,同時(shí)對(duì)服務(wù)器上資源占用的比例進(jìn)行降低。
校園順路代送微信小程序的開(kāi)發(fā)一方面是對(duì)自身專業(yè)知識(shí)技能進(jìn)行最終考核,另一方面也是讓自己學(xué)會(huì)獨(dú)立解決程序開(kāi)發(fā)過(guò)程中所遇到的問(wèn)題,掌握將理論知識(shí)運(yùn)用于程序開(kāi)發(fā)實(shí)踐的方法。校園順路代送微信小程序的開(kāi)發(fā)最終目標(biāo)就是讓系統(tǒng)更具人性化,同時(shí)在邏輯設(shè)計(jì)上,讓系統(tǒng)能夠更加的嚴(yán)謹(jǐn)。
致??謝
大學(xué)期間的學(xué)習(xí)時(shí)光對(duì)于我來(lái)說(shuō)是美好而短暫的,在這期間我也接觸了許多可愛(ài)的大學(xué)同學(xué)們,以及兢兢業(yè)業(yè)教學(xué)的老師們,在我的畢業(yè)論文即將完成之際,我想對(duì)那些曾經(jīng)給予我支持,幫助,還有鼓勵(lì)的同學(xué)和老師以及家人們表達(dá)我內(nèi)心的無(wú)比感激之情。
首先,感謝給予我論文指導(dǎo)的指導(dǎo)老師,從開(kāi)題報(bào)告,任務(wù)書,論文大綱的編寫與系統(tǒng)的功能框架設(shè)計(jì),到最終的畢業(yè)論文,都是指導(dǎo)老師全程參與的悉心指導(dǎo)和幫忙,才能夠讓我的畢業(yè)論文可以符合學(xué)院要求編寫完成。我的指導(dǎo)老師一絲不茍的教學(xué)精神以及在學(xué)術(shù)上的嚴(yán)謹(jǐn)作風(fēng),這些優(yōu)點(diǎn)是值得我不斷去努力學(xué)習(xí)的。
其次,感謝大學(xué)同學(xué)的陪伴與幫助,在我獨(dú)立編寫畢業(yè)論文期間,大學(xué)同學(xué)的鼓勵(lì)與耐心的幫助使得我少走很多彎路,節(jié)省畢業(yè)論文的編寫時(shí)間,也讓我有更多精力去完善我開(kāi)發(fā)的系統(tǒng)。
最后,感謝我最親密的家人帶給我的包容和關(guān)愛(ài),我能夠安心學(xué)習(xí)也是來(lái)源于家人們對(duì)我的無(wú)微不至的照顧,這樣我才可以順順利利完成我的大學(xué)學(xué)業(yè)。
畢業(yè)倒計(jì)時(shí)之際,希望在今后的工作中,在今后的生活中,我會(huì)一直謹(jǐn)記老師們帶給我的孜孜不倦的教誨,并通過(guò)不懈的努力和追求來(lái)改變自己,以此報(bào)答那些曾支持過(guò)以及幫助過(guò)我的人!
參考文獻(xiàn)
[1]陳偉,方霞,吳俊.基于數(shù)字化校園的學(xué)生學(xué)科競(jìng)賽管理系統(tǒng)[J].實(shí)驗(yàn)室研究與探索,2015,34(10):201-205.
[2]邵檢江.高職院校學(xué)生職業(yè)技能競(jìng)賽管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].廣東交通職業(yè)技術(shù)學(xué)院學(xué)報(bào),2015,14(03):58-59+106.
[3]宋麗娜.基于JSP的Web開(kāi)發(fā)中文亂碼問(wèn)題的研究與解決[J].電子技術(shù),2015,42(11):5-7.
[4]汪君宇.基于JSP的Web應(yīng)用軟件開(kāi)發(fā)技術(shù)分析[J].科技創(chuàng)新與應(yīng)用,2018(16):158-160.
[5]趙鋼.JSP Servlet+EJB的Web模式應(yīng)用研究[J].電子設(shè)計(jì)工程,2016,21(13):47-49.
[6]肖英.解決JSP/Servlet開(kāi)發(fā)中的中文亂碼問(wèn)題[J].科技傳播,2017,(1)11-25.
[7]朱鈞.基于角色的jsp通用權(quán)限系統(tǒng)設(shè)計(jì)與實(shí)現(xiàn)[D].山東大學(xué),2014.
[8]康牧.JSP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)實(shí)用教程[M].清華大學(xué)出版社,2014.
[9]王建國(guó).數(shù)據(jù)庫(kù)設(shè)計(jì)在網(wǎng)站開(kāi)發(fā)中的應(yīng)用[J].山東農(nóng)業(yè)工程學(xué)院學(xué)報(bào),2017,34(04):158-159+164.
[10]張知青.基于關(guān)系數(shù)據(jù)庫(kù)的查詢方法及優(yōu)化技術(shù)分析[J].煤炭技術(shù),2015,31(05):218-220.
[11]陳志譽(yù).Java工具及其調(diào)度方法研究[D].華南理工大學(xué),2018.
[12]張孝祥,徐明華.JAVA基礎(chǔ)與案例開(kāi)發(fā)詳解[M].清華大學(xué)出版社,2014.
[13]劉亞賓.精通Eclipse--JAVA技術(shù)大系[M].電子工業(yè)出版社,2015.
[14]曾志明.網(wǎng)站開(kāi)發(fā)技術(shù)的比較研究[J].電腦知識(shí)與技術(shù),2015,6(05):1075-1078.
[15]衛(wèi)紅春.信息系統(tǒng)分析與設(shè)計(jì)[M].北京:清華大學(xué)出版社,2014.
[16]于萬(wàn)波.網(wǎng)站開(kāi)發(fā)與應(yīng)用案例教程[M].清華大學(xué)出版社,2013.
[17]黎連業(yè),王華,李淑春.軟件測(cè)試與測(cè)試技術(shù)[M].清華大學(xué)出版社,2014.
[18]Xin-hua YOU. Brief Discuss the Application of Object-oriented in Java Language Programming Course[A]. Advanced Science and Industry Research Center.Proceedings of 2018 3rd International Conference on Automation, Mechanical and Electrical Engineering (AMEE 2018)[C].Advanced Science and Industry Research Center:Science and Engineering Research Center,2018:5.
[19]Menglin Liu. Design and Research of Batch Query System Based on Java[A]. Research Institute of Management Science and Industrial Engineering.Proceedings of 2018 4th World Conference on Control, Electronics and Computer Engineering (WCCECE 2018)[C].Research Institute of Management Science and Industrial Engineering:計(jì)算機(jī)科學(xué)與電子技術(shù)國(guó)際學(xué)會(huì)(Computer Science and Electronic Technology International Society),2018:5.
核心代碼展示
/*** 公告通知* 后端接口* @author * @email * @date 2021-03-09 11:33:59*/
@RestController
@RequestMapping("/news")
public class NewsController {@Autowiredprivate NewsService newsService;/*** 后端列表*/@RequestMapping("/page")public R page(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 前端列表*/@IgnoreAuth@RequestMapping("/list")public R list(@RequestParam Map<String, Object> params,NewsEntity news, HttpServletRequest request){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();PageUtils page = newsService.queryPage(params, MPUtil.sort(MPUtil.between(MPUtil.likeOrEq(ew, news), params), params));return R.ok().put("data", page);}/*** 列表*/@RequestMapping("/lists")public R list( NewsEntity news){EntityWrapper<NewsEntity> ew = new EntityWrapper<NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); return R.ok().put("data", newsService.selectListView(ew));}/*** 查詢*/@RequestMapping("/query")public R query(NewsEntity news){EntityWrapper< NewsEntity> ew = new EntityWrapper< NewsEntity>();ew.allEq(MPUtil.allEQMapPre( news, "news")); NewsView newsView = newsService.selectView(ew);return R.ok("查詢公告通知成功").put("data", newsView);}/*** 后端詳情*/@RequestMapping("/info/{id}")public R info(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 前端詳情*/@IgnoreAuth@RequestMapping("/detail/{id}")public R detail(@PathVariable("id") Long id){NewsEntity news = newsService.selectById(id);return R.ok().put("data", news);}/*** 后端保存*/@RequestMapping("/save")public R save(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 前端保存*/@RequestMapping("/add")public R add(@RequestBody NewsEntity news, HttpServletRequest request){news.setId(new Date().getTime()+new Double(Math.floor(Math.random()*1000)).longValue());//ValidatorUtils.validateEntity(news);newsService.insert(news);return R.ok();}/*** 修改*/@RequestMapping("/update")public R update(@RequestBody NewsEntity news, HttpServletRequest request){//ValidatorUtils.validateEntity(news);newsService.updateById(news);//全部更新return R.ok();}/*** 刪除*/@RequestMapping("/delete")public R delete(@RequestBody Long[] ids){newsService.deleteBatchIds(Arrays.asList(ids));return R.ok();}/*** 提醒接口*/@RequestMapping("/remind/{columnName}/{type}")public R remindCount(@PathVariable("columnName") String columnName, HttpServletRequest request, @PathVariable("type") String type,@RequestParam Map<String, Object> map) {map.put("column", columnName);map.put("type", type);if(type.equals("2")) {SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");Calendar c = Calendar.getInstance();Date remindStartDate = null;Date remindEndDate = null;if(map.get("remindstart")!=null) {Integer remindStart = Integer.parseInt(map.get("remindstart").toString());c.setTime(new Date()); c.add(Calendar.DAY_OF_MONTH,remindStart);remindStartDate = c.getTime();map.put("remindstart", sdf.format(remindStartDate));}if(map.get("remindend")!=null) {Integer remindEnd = Integer.parseInt(map.get("remindend").toString());c.setTime(new Date());c.add(Calendar.DAY_OF_MONTH,remindEnd);remindEndDate = c.getTime();map.put("remindend", sdf.format(remindEndDate));}}Wrapper<NewsEntity> wrapper = new EntityWrapper<NewsEntity>();if(map.get("remindstart")!=null) {wrapper.ge(columnName, map.get("remindstart"));}if(map.get("remindend")!=null) {wrapper.le(columnName, map.get("remindend"));}int count = newsService.selectCount(wrapper);return R.ok().put("count", count);}}