mvc架構的簡單實踐----使用者註冊的實現

元始天尊123發表於2024-11-04

mvc架構的簡單實踐----使用者註冊的實現

蒟蒻本人今天學習了mvc三層架構,以下是使用本架構開發的一個簡單的例項

主線任務---案例詳細

1.我們要再mysql中建立一個表來儲存賬號密碼

2.本次開發使用mvc三層架構來實現,分為web層service層和dao層首先要配置環境包括目錄的建立和mybatis的配置和pom檔案匯入座標

3.在dao層我們要設計兩個對於資料庫的操作,一個是根據使用者名稱來查詢使用者是否已經被註冊,和插入一個使用者.這裡sql語句較為簡單所以使用註解開發

4.第二步是service層的開發,建立UserService,來封裝對於資料庫的操作.

5.第三步是web層這裡包含兩部分一部分有servlet來作負責資料的邏輯處理的資料的傳輸,另外一部分由jsp,和jstl標籤和el表示式來實現.我還在其中新增了錯誤資訊的提示嘿嘿

支線任務---圖論拆點問題

今天寫了一道拆點問題,用到了dp,狀態壓縮,bfs的知識.簡單給大家分享一下.這道題是acwing上的一道題大兵瑞恩

本題為了解決找到取鑰匙的最短路的問題,需要將圖分層,對於不同的狀態處於不同的層級,透過位運算將
判斷狀態的複雜度壓縮到O(1).同時拿到鑰匙要改變自身狀態,遇到門只有狀態足夠才可以過去

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
#include<queue>
#include<map>
#include<unordered_map>
#include<stack>
#include<vector>
typedef long long LL;
using namespace std;
#define INF 0x3f3f3f3f
typedef pair<int,int>PII;
#define x first
#define y second
const int N=20;

int dis[1<<12][N][N];
int n,m,p,k,s;
int pa[120][120];
int mp[12][12];
int dx[4]={0,0,1,-1},dy[4]={1,-1,0,0};

void bfs(int x,int y){
	queue<PII>q;
	q.push({0,0});
	dis[0][1][1]=0;
	if(mp[1][1]){
		dis[mp[1][1]][1][1]=0;
		q.push({mp[1][1],0});
	}
	
	while(q.size()){
		PII t=q.front();
		q.pop();
		int st=t.x;
		int po=t.y;
		int poy=t.y/10+1;
		int pox=t.y%10+1;
		for(int i=0;i<4;i++){
			int xa=pox+dx[i],
			    ya=poy+dy[i];
			if(xa<=0||xa>n||ya<=0||ya>m)
				continue; 
			int pos=xa-1+(ya-1)*10;
	        if((pa[po][pos]==0)||(pa[po][pos]!=-1&&((st>>pa[po][pos])&1)==0))continue;
			if(dis[st][xa][ya]!=-1)continue;
			dis[st][xa][ya]=dis[st][pox][poy]+1;
			q.push({st,pos});
			if(mp[xa][ya]){
			    int se=st|mp[xa][ya];
				dis[se][xa][ya]=dis[st][xa][ya];
				q.push({se,pos});
			}
		}
		
	}
	int mi=1e9;
	for(int i=0;i<(1<<(p+1));i++){
		if(dis[i][n][m]==-1)continue;
		else mi=min(mi,dis[i][n][m]);
	}
	if(mi==1e9)cout<<-1<<endl;
	else cout<<mi<<endl;
}
int main(){
	memset(dis,-1,sizeof dis);
	memset(pa,-1,sizeof pa);
	cin>>n>>m>>p;
	cin>>k;
	int x1,x2,y1,y2,d;
//	dis[0][1][1]=0;
	for(int i=0;i<k;i++){	
		cin>>x1>>y1>>x2>>y2>>d;
		int f1=(x1-1+(y1-1)*10);
		int f2=((y2-1)*10+x2-1);
		pa[f1][f2]=d;
		pa[f2][f1]=d;
	}
	cin>>s;
	for(int i=0;i<s;i++){
		cin>>x1>>y1>>d;
		mp[x1][y1]|=(1<<d);
	}
    bfs(1,1);
	
	return 0;
}

相關文章