項目概述
新聞發布系統是新聞媒體或者自媒體推送實時新聞,讓其他用戶或者游客閱讀的網站。主要實現功能:前台開放式的展示新聞列表,允許所有用戶、游客瀏覽,提供游客的登錄注冊功能,個人中心用戶可以對自己文章、評論的管理,增加文章等功能;后台實現管理員管理所有文章、評論的刪除、修改、編輯功能,實現對用戶的強制下線,刪除用戶等功能。
需求分析
1.用戶、游客可以任意的訪問新聞主頁各類型的文章信息,但是如果要進行評論游客需要進行登錄/注冊才能操作。
2.登錄注冊基礎功能。
3.用戶登錄后,可以發表文章,在個人中心可以對自己文章,評論的管理。
4.文章主頁點擊顯示文章內容。
5.管理員在后台管理所有的文章、評論的刪除、修改等。
6.管理員在后台管理普通用戶的賬號:對普通用戶的強制下線,刪除用戶賬號等。
7.登錄:需要檢測登錄狀態,防止同一賬號多次登錄。
8.忘記密碼,根據郵箱找回密碼。
實現效果
1.用戶注冊
2.用戶登錄
3.管理員登錄
4.新聞主頁
5.后台主頁
6.新增新聞
7.編輯新聞
8.詳情內容頁
9.評論區
數據庫設計
1.user表(用戶表):user_id(用戶Id),user_type(用戶類型),user_password(用戶密碼),user_email(用戶郵箱),user_age(用戶年 齡),create_time(用戶創建時間)。
注:該用戶表的user_type類型的值 0:表示普通用戶,1:認證用戶,2:管理員。user_eamil是用來找回密碼的。
字段 |
數據類型 |
是否為空 |
備注 |
user_id |
bigint |
not null |
key |
user_name |
varchar(225) |
not null |
用戶名 |
user_password |
varchar(225) |
not null |
密碼(使用md5加密) |
user_email |
varchar(40) |
not null |
郵箱(用來找回密碼) |
user_age |
int |
|
用戶年齡 |
create_time |
timestamp |
not null |
創建時間 |
2.news表(新聞表):new_id(新聞id),category_id(類別id),user_id(作者),title(標題),content(內容),create_time(創建時間),key_words(新聞關鍵字)
注:在數據庫設計的時候最好不要使用外鍵,原因很簡單,因為到時候刪除表的時候會導致一系列麻煩事情,不利於開發。
所以一般不設置外鍵,到時候只是建立連接查詢即可。
字段 |
數據類型 |
是否為空 |
備注 |
new_id |
bigint |
not null |
key |
category_id |
bigint |
not null |
類型Id |
user_id |
bigint |
not null |
作者Id |
title |
varchar(225) |
not null |
文章標題 |
content |
text |
not null |
文章內容 |
create_time |
timestamp |
not null |
創建時間 |
key_words |
varchar(125) |
not null |
關鍵字 |
3.comment表(評論表):comment_id表id,new_id所評論新聞的id,user_id評論者的id,content評論內容,create_time創建時間。
字段 |
類型 |
是否為空 |
備注 |
comment_id |
bigint |
not null |
表id key |
new_id |
bigint |
not null |
新聞id |
user_id |
bigint |
not null |
評論者id |
content |
text |
not null |
內容 |
create_time |
timestamp |
not null |
創建時間 |
4.category表(類別表):category_id表id,category_name 類別名
字段 |
類型 |
是否為空 |
備注 |
category_id |
bigint |
not null |
key |
category_name |
bigint |
not null |
類別名 |
功能模塊設計
注冊功能設計
在注冊頁面,首先在前端對用戶輸入的數據的合法性的檢驗,較少后端的訪問次數;在后端,我們采用Redis做有個二級緩存,用來存儲已經注冊的用戶信息,用戶注冊的時候首先檢測緩存中是否存在,如果不存在再在數據庫中檢測(如果數據庫中的全部注冊信息都在緩存中,那么可以不用這一步,但是如果redis掛掉了這種情況)。一切合法再進行注冊。
使用Redis緩存的好處:如果在傳統的情況下,注冊的時候直接檢測數據庫里的數據,在高並發的情況下,兩個用戶同時注冊數據庫中不存在的字段,數據庫中會出現兩條數據用戶名相同的數據,但是使用二級緩存就可以避免這個問題。
登錄功能設計
在login頁面,用戶輸入數據,首先js驗證數據是否出錯,不出錯就發送到后台。在后台第一步在application查找登錄信息,判斷該用戶是否已經登錄,如果已經登錄,提示不能登錄。然后在redis中驗證登錄字段,如果redis中沒有找到該字段,那么再數據庫中查詢驗證登錄字段,如果數據庫都沒有那么提示用戶或者密碼錯誤。
后台頁面設計
后台列表首先顯示相應的數據,和相應的操作。
新聞主頁設計
結語
初步對這個項目的需求分析和數據庫、頁面功能的設計。
然后附上我這個項目的githhub地址:https://github.com/fireshoot/YxNews。