iCoding项目----题库页面实现

本文围绕iCoding项目的题库页面实现展开,介绍了功能分页面,包括首页、题库、题解等页面。阐述了题库页面问题动态展示与翻页、查找功能的实现方式,如通过ajax传参等。还说明了具体题目页面通过超链接传参到对应servlet的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iCoding项目----题库页面实现

功能简介–分页面

  1. 首页
  2. 题库页面
  3. 题解页面
  4. 讨论区
  5. 吐槽
  6. 登陆注册
  7. 个人空间

题库页面实现

  1. 问题动态展示和翻页

    ①.通过ajaxgetpageServlet传两个参数currentPagetype(question/answer,代表问题页或题解页)。
    ②. 在getpageServlet中向Page实体类中封装currentPage,调用servicegetAnsPage方法,再调用Dao层中的getAnsPage方法返回封装完成的Page(内涵当前页的具体问题,问题的qid,title)
    ③.ajax的返回函数代码为

			success:function(dataJson){	
					//显示部分
					var $tbody = $(".questionContent");
					$tbody.empty();
					var queList = dataJson.queList;
					var question = "question";
					for(i=0;i<queList.length;i++)
					{
						var $tr = $("<tr></tr>");
						$tr.html(
								"<td></td>"+
                        		 "<td><span style='color: grey;'>"+queList[i].qid+"</span></td>"+
                        		 "<td><a href='getquestionByid?qid="+queList[i].qid+"&uid=0&type="+question+"'>"+queList[i].questionTitle+"</a></td>"+
                        		 "<td><span style='color: grey;'>简单</span></td>"+
                        		 "<td><span class='label label-success round'>100%</span></td>"
                        		);
                        $tbody.append($tr);
						
					}
					//翻页部分
					var maxPage = dataJson.pageNum;
					var $li = $(".flag");
					for(var i=maxPage;i>0;i--)
					{
						var $myli = $("<li class='#' id='"+i+"'></li>");
						$myli.html(
									"<a href = '#'>"+i+"</a>"
									);
						$myli.click(function(){							
							changePage( $(this).text() );
						});
						$li.after($myli);
						
					}
					$("#1").attr("class","active");
					$("#page_sta").click(function(){
						changePage( 1 );
					});
					$("#page_end").click(function(){
						changePage( maxPage );
					});
				}

④. Dao层具体实现为

	public Page getPage(Page page) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		
		try {	
			conn = JDBCUtil.getConnection();
			String sql = "select * from questionbank limit ?,?";
			ps = conn.prepareStatement(sql);
			int firstParam = (page.getCurPage()-1)*page.getQueNum();
			ps.setInt(1, firstParam);
			ps.setInt(2, page.getQueNum());
			rs = ps.executeQuery();
			
			while(rs.next()) {
				//填充当前页展示的具体问题
				Code code = new Code();
				code.setQid(rs.getInt(1));
				code.setQuestionTitle(rs.getString(2));
				code.setQuestionDescription(rs.getString(3));
				code.setInputFormat(rs.getString(4));
				code.setOutputFormat(rs.getString(5));
				code.setInputSample(rs.getString(6));
				code.setOutputSample(rs.getString(7));		
				
				List<Code> codeList = page.getQueList();
				codeList.add(code);
			}
			//codes中题解的总数
			sql = "select count(1) from codes";
			ps = conn.prepareStatement(sql);
			rs = ps.executeQuery();
			rs.next();
			int totalNum = rs.getInt(1);
			int pageNum = 1;
			if(totalNum<page.getQueNum()) {
				pageNum = 1;
			}else if(totalNum%page.getQueNum()==0) {
				pageNum = totalNum/page.getQueNum();
			}else if(totalNum%page.getQueNum()!=0) {
				pageNum = totalNum/page.getQueNum()+1;
			}
			page.setPageNum(pageNum);
			
			return page;
			
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} finally {
			try {
				JDBCUtil.closeConnection(rs,ps, conn);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return page;
	}

⑤.翻页函数

	function changePage(num)
	{
		var question = "question";
		$.ajax({
			url:"getPage?currentPage="+num+"&type="+question,
			type:"post",
			data:{},
			dataType:"json",
			success:function(dataJson){	
				var $tbody = $(".questionContent");
				$tbody.empty();
				var queList = dataJson.queList;
				var question = "question";
				for(i=0;i<queList.length;i++)
				{
					var $tr = $("<tr></tr>");
					$tr.html(
							"<td></td>"+
                    		 "<td><span style='color: grey;'>"+queList[i].qid+"</span></td>"+
                    		 "<td><a href='getquestionByid?qid="+queList[i].qid+"&uid=0&type="+question+"'>"+queList[i].questionTitle+"</a></td>"+
                    		 "<td><span style='color: grey;'>简单</span></td>"+
                    		 "<td><span class='label label-success round'>100%</span></td>"
                    		);
                    $tbody.append($tr);	
				}
				//当前是那一页
				for(var j=1;j<=dataJson.pageNum;j++)
				{
					$("#"+j+"").attr("class","#");
				}
				$("#"+num+"").attr("class","active");				
			}			
		});	
	}
  1. 查找功能
    ①ajax代码
			$("#searchbutton").click(function(){
				
				$.ajax({
					url:"searchServlet?curpage="+1,
					type:"post",
					data:{
						"searchContent":$("#search_content").val()
					},
					dataType:"json",
					success:function(dataJson)
					{
						var $tbody = $(".questionContent");
						$tbody.empty();
						var queList = dataJson.queList;
						var question = "question";
						for(i=0;i<queList.length;i++)
						{
							var $tr = $("<tr></tr>");
							$tr.html(
									"<td></td>"+
	                        		 "<td><span style='color: grey;'>"+queList[i].qid+"</span></td>"+
	                        		 "<td><a href='getquestionByid?qid="+queList[i].qid+"&type="+question+"'>"+queList[i].questionTitle+"</a></td>"+
	                        		 "<td><span style='color: grey;'>简单</span></td>"+
	                        		 "<td><span class='label label-success round'>100%</span></td>"
	                        		);
	                        $tbody.append($tr);
							
						}
						var lastmaxpage = ${maxpage};
						for(var i=1;i<=lastmaxpage;i++)
						{
							$("#"+i+"").remove();
						}
						var $li = $(".flag");	
						var $myli = $("<li class='#' id='1'></li>");
						$myli.html(
									"<a href = '#'>1</a>"
								  );
						$li.after($myli);
						$("#1").attr("class","active");
					}
				});
			});
			
		});
②.Dao层实现
	public Page searchQueDao(String SearchContent,Page page) {
		Connection conn = null;
		PreparedStatement ps = null;
		ResultSet rs = null;
		try {
			conn = JDBCUtil.getConnection();
			//模糊匹配
			String sql = "select * from questionbank where questionTitle like '%"+SearchContent+"%';";
			ps = conn.prepareStatement(sql);
			//ps.setString(1, SearchContent);
			rs = ps.executeQuery();
			
			
			for(int first = 1;rs.next();first++)
			{
				Code code = new Code();
				code.setQid(rs.getInt(1));
				code.setQuestionTitle(rs.getString(2));
				code.setQuestionDescription(rs.getString(3));
				code.setInputFormat(rs.getString(4));
				code.setOutputFormat(rs.getString(5));
				code.setInputSample(rs.getString(6));
				code.setOutputSample(rs.getString(7));		
				
				
				List<Code> codeList = page.getQueList();
				codeList.add(code);
				page.setQueNum(first);
			}
			int pagenum = 1;
			page.setPageNum(pagenum);
			
			return page;
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}finally {
			try {
				JDBCUtil.closeConnection(rs,ps, conn);
			} catch (SQLException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return page;
	}

具体题目页面

通过超链接
"<td><a href='getquestionByid?qid="+queList[i].qid+"&type="+question+"'>"+queList[i].questionTitle+"</a></td>"
将参数qid,(uid),type传到getquestionByidservlet–type用来区分是题目页面还是题解页面。
getquestionByidservlet代码:

@WebServlet("/getquestionByid")
public class getQuestionByidServlet extends HttpServlet {
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		String qid = request.getParameter("qid");
		String type = request.getParameter("type");
			
		Code code = new Code();
		code.setQid(Integer.valueOf(qid));
				
		if("question".equals(type))
		{
			GetQuestionByidService gs = new GetQuestionByidServiceImpl();
			code = gs.getQuestionByidService(code);
			request.setAttribute("qid", code.getQid());
			request.setAttribute("tit", code.getQuestionTitle());
			request.setAttribute("des", code.getQuestionDescription());
			request.setAttribute("format_in", code.getInputFormat());
			request.setAttribute("format_out", code.getOutputFormat());
			request.setAttribute("example_in", code.getInputSample());
			request.setAttribute("example_out", code.getOutputSample());
			request.getRequestDispatcher("questionEditor.jsp").forward(request, response);
		}
		if("answer".equals(type))
		{
			List<Code> codes = new ArrayList<Code>();
			String uidStr = request.getParameter("uid");
			code.setUid(Integer.valueOf(uidStr));
			
			GetQuestionByidService gs = new GetQuestionByidServiceImpl();
			codes = gs.getQuestionByidAnsService(code);					
			
			request.setAttribute("qid", codes.get(1).getQid());
			request.setAttribute("tit", codes.get(1).getQuestionTitle());
			request.setAttribute("des", codes.get(1).getQuestionDescription());
			request.setAttribute("code", codes.get(1).getCode());
			request.setAttribute("author",codes.get(1).getUsername());
			request.setAttribute("pertit", codes.get(0).getQuestionTitle());
			request.setAttribute("perqid", codes.get(0).getQid());
			request.setAttribute("peruid", codes.get(0).getUid());
			request.setAttribute("nexttit", codes.get(2).getQuestionTitle());
			request.setAttribute("nextqid", codes.get(2).getQid());
			request.setAttribute("nextuid", codes.get(2).getUid());
			request.getRequestDispatcher("questionAns.jsp").forward(request, response);
		}
		
	}
【基于QT的调色板】是一个使用Qt框架开发的色彩选择工具,类似于Windows操作系统中常见的颜色选取器。Qt是一个跨平台的应用程序开发框架,广泛应用于桌面、移动和嵌入式设备,支持C++和QML语言。这个调色板功能提供了横竖两种渐变模式,用户可以方便地选取所需的颜色值。 在Qt中,调色板(QPalette)是一个关键的类,用于管理应用程序的视觉样式。QPalette包含了一系列的颜色角色,如背景色、前景色、文本色、高亮色等,这些颜色可以根据用户的系统设置或应用程序的需求进行定制。通过自定义QPalette,开发者可以创建具有独特视觉风格的应用程序。 该调色板功能可能使用了QColorDialog,这是一个标准的Qt对话框,允许用户选择颜色。QColorDialog提供了一种简单的方式来获取用户的颜色选择,通常包括一个调色板界面,用户可以通过滑动或点击来选择RGB、HSV或其他色彩模型中的颜色。 横渐变取色可能通过QGradient实现,QGradient允许开发者创建线性或径向的色彩渐变。线性渐变(QLinearGradient)沿直线从一个点到另一个点过渡颜色,而径向渐变(QRadialGradient)则以圆心为中心向外扩散颜色。在调色板中,用户可能可以通过滑动条或鼠标拖动来改变渐变的位置,从而选取不同位置的颜色。 竖渐变取色则可能是通过调整QGradient的方向来实现的,将原本水平的渐变方向改为垂直。这种设计可以提供另一种方式来探索颜色空间,使得选取颜色更为直观和便捷。 在【colorpanelhsb】这个文件名中,我们可以推测这是与HSB(色相、饱和度、亮度)色彩模型相关的代码或资源。HSB模型是另一种常见且直观的颜色表示方式,与RGB或CMYK模型不同,它以人的感知为基础,更容易理解。在这个调色板中,用户可能可以通过调整H、S、B三个参数来选取所需的颜色。 基于QT的调色板是一个利用Qt框架和其提供的色彩管理工具,如QPalette、QColorDialog、QGradient等,构建的交互式颜色选择组件。它不仅提供了横竖渐变的色彩选取方式,还可能支持HSB色彩模型,使得用户在开发图形用户界面时能更加灵活和精准地控制色彩。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值