mvc架构的简单实践----用户注册的实现

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;
}
posted @ 2024-11-04 23:01  元始天尊123  阅读(13)  评论(0编辑  收藏  举报