WeChatアプレットに基づく試験問題と分析システムの小さなプログラム

ソースコードを入手するには、記事の最後に連絡してください

開発言語: Java

フレームワーク: ssm

JDK バージョン: JDK1.8

サーバー: tomcat7

データベース: mysql 5.7/8.0

データベース ツール: Navicat11

開発ソフト:eclipse/myeclipse/idea

Maven パッケージ: Maven3.3.9

ブラウザ:グーグルクローム

小さなプログラム フレームワーク: uniapp

小規模プログラム開発ソフト:HBuilder X

小さなプログラム実行ソフトウェア: WeChat 開発者

1.はじめに

情報技術とネットワーク技術の急速な発展に伴い、人類は新しい情報の時代に入り、従来の管理技術では情報を効率的かつ便利に管理できなくなりました。時代のニーズに応え、経営効率を最適化するために、時代に合わせて様々な経営システムが登場し、あらゆる社会が次々と情報経営の時代に突入しており、出題・分析システムアプレットもその製品の一つです。情報化時代の変化について。

どんなシステムでもシステム設計の基本的なプロセスを踏む必要があり、このシステムも例外ではなく、市場調査、需要分析、全体設計、詳細設計、コーディング、テストを経て、Javaをベースに設計・実装されます。言語と WeChat アプレット技術 試験問題と分析システムのための小さなプログラム。システムには、主に、システムのホームページ、個人センター、ユーザー管理、テスト用紙管理、テスト問題管理、システム管理、およびテスト管理などの機能モジュールが含まれています。

この記事では、最初に試験問題と分析システムの小さなプログラム管理技術の開発背景と開発状況を紹介し、次に従来のソフトウェア開発プロセスに従います.システムの全体的な機能モジュールの設計に従って、機能モジュール図を描きます,システムのフローチャートとER図。次に、フレームワークを設計し、設計したフレームワークに従ってコードを記述し、システムの各機能モジュールを実現します。最後に、事前に完成したシステムをテストします。主に、機能テスト、単体テスト、およびパフォーマンス テストです。テスト結果は、システムが必要な機能を実現できることを示しており、動作条件は明らかではありません

2.機能分析

実生活での試験問題と分析システム アプレット管理のニーズ、およびシステムの深刻な分析を考慮して、システム権限は、管理者とユーザーの 2 種類のユーザーに分けられます。

(a) 管理者: 管理者によるこのシステムの使用に関与する機能には、主に、個人センター、ユーザー管理、テスト用紙管理、テスト問題管理、システム管理、テスト管理、およびその他の機能が含まれます。管理者のユース ケース図を図に示します。

(b) 利用者は、システムのフロントに入ると、ホームページ、マイプロフィール、健康記録、健康診断レポート、健康レポート、運動チェックインなどの機能を実現することができます。ユーザー ユース ケース図を図に示します。

2.1 機能モジュール設計

ウェブサイトの全体的な機能は、下の図に示されています。

3. 小さなプログラム端末

3.1 ユーザーログイン

図に示すように、ユーザーはアプレットに入り、自分のアカウントとパスワードを入力し、対応するロールを選択してシステムにログインします。 

3.2 ユーザー登録

ユーザー登録ページでは、図のようにユーザー名、パスワード、確認用パスワード、氏名、性別、メールアドレス、携帯電話番号などを入力してユーザー登録操作を完了してください。

3.3 ホームページ

ユーザーはシステムにログイン後、図のようにホームページやお知らせ情報、マイコンテンツなどの細かい操作を行うことができます。 

3.4鉱山 

ユーザー管理を追加 ユーザー管理ページでは、図のように問題用紙一覧や、出題範囲、間違った問題集の内容などの情報を入力することができます。

3.5 試験

4. 管理者機能モジュール

学生試験問題管理情報システムシステムにおいて、コア業務ユースケースの実現効果を以下に示します。スペースの制限により、ユーザー管理とユーザーに関連する 3 つのコア機能のみが表示されます。

4.1 管理者管理ユーザー情報機能モジュール

管理者がシステムにログインした後、バックエンド管理インターフェイスを確認し、ユーザー管理情報を選択します. クリックすると、ウェブサイトはデータベースで照会されたすべてのユーザーの情報を取得し、ユーザー情報を選択して、この情報を HTML に返します.詳細インターフェイスの表示とレンダリング。次に、ソースを開いて、ユーザーの情報を追加、削除、変更、および確認します。実現効果を図 4.3 に示します。

4.2 管理者管理ユーザー管理機能モジュール

管理者がシステムにログインした後、バックエンド管理インターフェイスを確認し、テスト用紙管理情報を選択します.クリックすると、ウェブサイトはデータベースクエリですべてのユーザー管理情報を取得し、ユーザー管理情報を選択して、この情報を返します.詳細インターフェイスへ.html、表示およびレンダリングされます。次に、ユーザーが管理する情報を追加、削除、変更、およびクエリします。実現効果を図に示します。

4.3 管理者管理試験紙管理機能モジュール

管理者がシステムにログインした後、バックエンド管理インターフェイスを確認し、テスト用紙管理情報を選択します.クリックすると、ウェブサイトはデータベースからクエリされたすべてのテスト用紙管理情報を取得し、特定のテスト用紙管理情報を選択し、この情報を詳細インターフェイスに返します. WeChat アプレット, 表示およびレンダリング. そして、試験紙で管理している情報の追加、削除、修正、確認を行います。実現効果を図に示します。

5. コアコードの一部

5.1 ログインシステムのメインコード

form.on('submit(login)', function(data) {
                data = data.field;
                if (vue.roles.length!=1) {
                	if (!data.role) {
			    layer.msg('请选择登录用户类型', {
				time: 2000,
				icon: 5
			    });
			    return false;
			}
                } else {
                        data.role = vue.roles[0].tableName;
                }
                http.request(data.role + '/login', 'get', data, function(res) {
                    layer.msg('登录成功', {
                        time: 2000,
                        icon: 6
                    });
                    // 登录凭证
                    localStorage.setItem('Token', res.token);
                    var roleName = "";
                    if(typeof(jquery('#role:checked').attr('title')) == "undefined") {
                    	roleName = vue.roles[0].roleName;
                    } else {
                    	roleName = jquery('#role:checked').attr('title');
                    }
                    localStorage.setItem('role', roleName);
                    // 当前登录用户角色
                    localStorage.setItem('userTable', data.role);
                    localStorage.setItem('sessionTable', data.role);
                    // 用户名称
                    localStorage.setItem('adminName', data.username);
                    http.request(data.role + '/session', 'get', {}, function(res) {
                        // 用户id
                        localStorage.setItem('userid', res.data.id);
		    	if(res.data.vip) {
				localStorage.setItem('vip', res.data.vip);
		    	}
                        // 路径访问设置
                        window.location.href = '../../index.html';
                    })
                    
                });
                return false
            });

        });

        /**
         * 跳转登录
         * @param {Object} tablename
         */
        function registerClick(tablename) {
            window.location.href = '../' + tablename + '/register.html?tablename=' + tablename;
        }

5.2 ユーザー登録メインコード 

*/
	@IgnoreAuth
    @RequestMapping("/register")
    public R register(@RequestBody YonghuEntity yonghu){
    	//ValidatorUtils.validateEntity(yonghu);
    	YonghuEntity user = yonghuService.selectOne(new EntityWrapper<YonghuEntity>().eq("yonghuming", yonghu.getYonghuming()));
		if(user!=null) {
			return R.error("注册用户已存在");
		}
		Long uId = new Date().getTime();
		yonghu.setId(uId);
        yonghuService.insert(yonghu);
        return R.ok();
    }

5.3 ミニプログラムのホームページのメインコード 

methods: {
        jump(url) {
		if (this.queryIndex == 0) {
			localStorage.setItem('indexQueryCondition', document.getElementById("dianyingxinxidianyingmingcheng").value);
		}
          	jump(url)
        },
	queryChange(event) {
		this.queryIndex = event.target.value;
		if (this.queryIndex == 0) {
			this.dianyingxinxidianyingmingcheng = this.queryList[event.target.value].queryName;
		}
	}
      }
    });

    layui.use(['layer', 'form', 'element', 'carousel', 'http', 'jquery'], function() {
		var layer = layui.layer;
		var element = layui.element;
		var form = layui.form;
		var carousel = layui.carousel;
		var http = layui.http;
		var jquery = layui.jquery;
	vue.baseurl=http.baseurl;
      // 获取轮播图 数据
      http.request('config/list', 'get', {
        page: 1,
        limit: 5
      }, function(res) {
        if (res.data.list.length > 0) {
          let swiperList = [];
          res.data.list.forEach(element => {
            if (element.value != null) {
              swiperList.push({
                img: http.baseurl + element.value
              });
            }
          });

		  vue.swiperList = swiperList;

		  vue.$nextTick(() => {
		    carousel.render({
		    	elem: '#test1',
				width: '89.6%',
		    	height: '500px',
		    	arrow: 'hover',
		    	anim: 'default',
		    	autoplay: 'true',
		    	interval: '3000',
		    	indicator: 'inside'
		    });

		  })

          // vue.$nextTick(()=>{
          //   window.xznSlide();
          // });
        }
      });

  
      http.request('news/list', 'get', {
        page: 1,
        order: 'desc'
      }, function(res) {
        var newsList = res.data.list;
		for(var i = 0; i<newsList.length; i++) {
			let d = newsList[i].addtime.split(' ')
			d = d[0].split('-')
			newsList[i].year = d[0]
			newsList[i].month = d[1] + '-' + d[2]
		}
		
        vue.newsList = newsList;
        if (newsList.length > 0 && newsList.length <= 2) {
          vue.leftNewsList = res.data.list
        } else {
          var leftNewsList = []
          for (let i = 0; i <= 2; i++) {
            leftNewsList.push(newsList[i]);
          }
          vue.leftNewsList = leftNewsList
        }
        if (newsList.length > 2 && newsList.length <= 8) {
          var rightNewsList = []
          for (let i = 3; i <= newsList.length; i++) {
            rightNewsList.push(newsList[i]);
          }
          vue.rightNewsList = rightNewsList
        }

		let flag = 10;
		let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}
		options.pagination = {el:'null'}
		if(flag == 3) {
			vue.$nextTick(() => {
				new Swiper('#newsnews', options)
			})
		}
		
		if(flag == 6) {
			let sixSwiper = {
				loop: true,
				speed: 2500,
				slidesPerView: 3,
				spaceBetween: 10,
				centeredSlides: true,
				watchSlidesProgress: true,
				autoplay: {
				  delay: 0,
				  stopOnLastSlide: false,
				  disableOnInteraction: false
				}
			}
			
			vue.$nextTick(() => {
				new Swiper('#new-list-6', sixSwiper)
			})
		}
      });

      // 获取推荐信息
      var autoSortUrl = "dianyingxinxi/autoSort";
      if(localStorage.getItem('userid')!=null) {
    	  autoSortUrl = "dianyingxinxi/autoSort2";
      }
      http.request(autoSortUrl, 'get', {
        page: 1,
	limit: 3 * 1
		}, function(res) {
			vue.dianyingxinxiRecommend = res.data.list
			let flag = 1;
			let options = {"navigation":{"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},"slidesPerView":5,"loop":true,"spaceBetween":20,"autoplay":{"delay":3000,"disableOnInteraction":false}}
			options.pagination = {el:'null'}
			if(flag == 3) {
				vue.$nextTick(() => {
						new Swiper('#recommenddianyingxinxi', options)
				})
			}
			
		
			if(flag == 5) {
				vue.$nextTick(() => {
					var swiper = new Swiper('#recommend-five-swiperdianyingxinxi', {
						loop: true,
						speed: 500,
						slidesPerView: 5,
						spaceBetween: 10,
						autoplay: {"delay":3000,"disableOnInteraction":false},
						centeredSlides: true,
						watchSlidesProgress: true,
						on: {
							setTranslate: function() {
								slides = this.slides
								for (i = 0; i < slides.length; i++) {
									slide = slides.eq(i)
									progress = slides[i].progress
									// slide.html(progress.toFixed(2)); //看清楚progress是怎么变化的
									slide.css({
										'opacity': '',
										'background': ''
									});
									slide.transform(''); //清除样式
					
									slide.transform('scale(' + (1.5 - Math.abs(progress) / 4) + ')');
								}
							},
							setTransition: function(transition) {
								for (var i = 0; i < this.slides.length; i++) {
									var slide = this.slides.eq(i)
									slide.transition(transition);
								}
							},
						},
						navigation: {"nextEl":".swiper-button-next","prevEl":".swiper-button-prev"},
						pagination: {"el":".swiper-pagination","clickable":true},
					});
				})
			}
		});

  });

おすすめ

転載: blog.csdn.net/qq_61827376/article/details/130193013