1 はじめに
20世紀初頭から国の教育政策が絶え間なく変化する中、政府は入学者数拡大計画を実施し始め、2020年の時点で我が国の大学生の総数は5,000万人近くにまで増加しました。大学教育の普及も徐々に実現しつつある。新入生の数が増加するにつれて、毎年9月になると、大学は新入生登録に関する一連の問題に直面します。新入生の登録は、大学の円滑な運営に関連する大学運営の重要な部分です。フォローアップ作業と行為の開発。入学者拡大政策の影響で、大学は毎年、入学シーズンに前年よりも多くの新入生を受け入れることになり、新入生の登録手続きもより多く行う必要があるため、各学期の登録手続きは非常に煩雑になります。現在、多くの学校はプロセスを簡素化し、効率を向上させるためにAPP登録システムを使用していますが、一部の学校では既存の登録システムの機能が複雑で、生徒は登録をうまく完了できず、登録システムの統計的精度や便利な機能が不足しています。登録システムにはそれが必要です。したがって、新入生予測システムAPPは、学校の新入生登録の効率を向上させるように設計されていると同時に、学校のお知らせの照会、生徒のカリキュラムの照会、および生徒の情報の照会など、生徒が使用する基本的な機能を満たしている必要があります。
APP システムは主に 2 つの操作端末に分かれています。
1 つはバックグラウンド管理者システムとクライアントです。アカウントの操作権限が十分であれば、学生の在籍情報や学生のカリキュラムを修正・入力することができると同時に、学生が閲覧できるシステム上でのお知らせや、教員や教務担当教員が閲覧できるお知らせをシステム上に公開することができます。使用。
2つ目は、新入生用のユーザー端末へのログインです。主に新入生の登録や専攻、授業、スケジュールなどの情報の確認、個人情報をバックグラウンドでアップロードできるMySQLデータベースを利用したシステムで、主に新入生や在校生が利用しています。
このシステムはシステムの設計目標を達成し、学校の基本的な要件を満たし、新入生登録作業の手作業を軽減し、就学が確認された生徒の情報をタイムリーに返し、生徒が情報を照会し、プロモーションを容易にすることができます。新入生登録作業管理の標準化されたニーズ。
2. 開発ツールとテクノロジー
2.1 ハイジSQL
HeidiSQL は、無料のオープンソース データベース クライアント ソフトウェアです。グラフィカルなデータベースのインターフェイス。特定の構成を行うと、データベースの参照、テーブルの管理、便利なレコードの参照、ユーザー権限の管理などの機能をサポートできます。ハイジSQ. ミニ サーバーとデータベースの管理を簡素化するために使用されるグラフィカル インターフェイスで、Delphi によって開発され、MySQL、SQL Server、および PostgreSQL サーバーをサポートしています。HeidiSQL は、データベース ブラウザと構文強調表示を備えたタブ間で SQL クエリを切り替えるための使いやすいインターフェイスを提供します。データベースの参照、テーブル、ビュー、ストアド プロシージャ、トリガーの管理、レコードの参照と編集、ユーザー権限の管理に便利です。さらに、テキスト ファイルからデータをインポートしたり、SQL クエリを実行したり、2 つのデータベース間でテーブルを同期したり、選択したテーブルを他のデータベースや SQL スクリプトにエクスポートしたりすることができます。具体的な HeidiSQL 操作図を図 2.1 に示します。
2.2 SQLyog
SQLyog は、プロフェッショナルなグラフィカル管理ソフトウェアです。SQLyog は、操作が簡単で強力です。ユーザーが自分の MYSQL データベースを簡単に管理できるようにします。SQLyog は、複数のデータ形式でのエクスポートをサポートしています。ユーザーがデータを迅速にバックアップおよび復元できるようにすることができ、また、迅速な実行も可能です。 SQL を実行します。スクリプト ファイルはユーザーに利便性を提供します。業界で有名な Webyog 会社によって制作されています。SQLyog を使用すると、世界中のどこからでもネットワークを介してリモート MySQL データベースを迅速かつ直感的に保守できるようになります。データベースは主にユーザーデータを保存する機能を実現するために使用されますが、同時にユーザーがデータベース内のデータにアクセスしたり、データを検索したりするための接続機能も備えている必要があります。したがって、データベースには、データ漏洩を避けるために、ある程度のセキュリティと独立性が必要です。具体的な SQLyog 操作図を図 2.2 に示します。
古い暗号化方式を使用して新しいアカウントを作成し、スーパー管理者を承認した後は、この管理者でのログインにも使用できます。具体的な SQLyog 接続図を図 2.3 に示します。
2.3 Androidスタジオ
Android Studio は Google のソフトウェア開発ツールであり、Gradle ベースの構築のサポートにより、このプラットフォームを通じて UI コントロールをドラッグして制御することで効果をプレビューすることができます。プラットフォームによって提供されるテンプレートを使用して、一般的に使用されるアプリケーションの設計とコンポーネントを生成できます。具体的な Android Studio の動作図を図 2.4 に示します。
本ソフトウェアでは、作成した情報管理ソフトウェアのプレビューを確認することができ、生徒用操作端末のUIデザインを変更する際に便利であり、具体的な変更手順を図2.5に操作端末のUI変更図として示します。
2.4 日食
Eclipse は、10 年以上の活力を持つ Java プログラミング言語の統合開発環境です。インテリジェントな選択、リッチナビゲーションモード、履歴記録機能、コーディング支援などの機能を備えており、開発者の執筆環境に非常に優しいです。同時に、グラフィカル インターフェイスを使用して、バックグラウンド管理システムの作成を実現できます。現在はコーディング環境が増えていますが、互換性は依然として Eclipse の方が優れています。具体的なEclipseグラフィカル操作端末を図2.6に示します。
2.5 Android システムアーキテクチャ
Android システム アーキテクチャは、一般的な汎用オペレーティング システム アーキテクチャです。主なアーキテクチャは、上位から下位に向かって、アプリケーション層、アプリケーション フレームワーク層、システム ランタイム層、Linuxカーネル層に分かれています。
アプリケーションプログラム:主に顧客が運用するプログラムソフトウェア。一般的には機能利用層であり、Androidのプログラミング言語はJava言語が一般的です。これはJavaの開発効率が十分に高く、同時に入門難易度が低いためです。Android は Java 言語で書かれており、Java には優れたクロスプラットフォーム機能があるため、既存の Android デバイスの多くの使用をサポートし、アプリケーションの安定性を維持するには十分です。
アプリケーション フレームワーク: 主に開発者がアクセスするための API フレームワーク。主にビュー、リスト、グリッド、テキストボックス、ボタン、コンテンツプロバイダー、リソースマネージャー、通知マネージャー(通知マネージャー)、アクティビティマネージャー(アクティビティマネージャー)が含まれます。
システムランタイムライブラリ:プラットフォームが保有するライブラリを利用することで、システム内のコンポーネントを利用することができます。上位層のフレームワークを通じてプラットフォームプログラム開発者に関連サービスを提供します。いくつかのコアライブラリが含まれています。システム C ライブラリ、メディア ライブラリ、Surface Manager、LibWebCore、その他のランタイム ライブラリなど。
Linuxカーネル: Linux カーネルはハードウェアとソフトウェアの間の中間層として機能し、その機能はアプリケーションのリクエストをハードウェア層に渡すことです。同時に、カーネルはライブラリでもあり、アプリケーションにシステム指向のコマンドを提供し、アプリケーションのシステム コールを容易にします。
Android アーキテクチャの完全なフローチャートを図 2.7 に示します。
2.6 Java
Java の特徴 Java はマルチユーザーかつクロスプラットフォームであるため、機能が豊富で使いやすい、この 2 つの最も基本的な特徴があります。Java には、単純さ、オブジェクト指向、分散、堅牢性、セキュリティ、プラットフォームの独立性と移植性、マルチスレッド、ダイナミクスなどの特徴があります。同時に、Java はデスクトップ アプリケーション、Web アプリケーション、分散システム、組み込みシステムアプリケーションなどを作成できます。
Java の動作原理: ライターによってソース ファイルがバイトコード ファイル クラスにコンパイルされ、そのバイトコード ファイルが JVM のインタプリタによって対応する実行可能ファイルに生成されます。具体的なJavaの動作原理図を図2.8に示します。
Java の操作プロセスは、Java プラットフォームを介して Java 仮想マシンと Java アプリケーション プログラム インターフェイスによって構築され、Java 言語はこのプラットフォームに入るチャネルであり、Java 言語で記述およびコンパイルされたプログラムは、このプラットフォーム上で実行できます。Javaの動作フローチャートを図2.9に示します。
2.7 構造化クエリ言語
SQL は特殊目的のプログラミング言語であり、その機能はデータベースを通じてデータにアクセスし、リレーショナル データベース システムのクエリ、更新、管理を行うことです。
主な特徴は、機能の統合、統一された構造、システムの自動補完、簡潔な言語などです。
構造化照会言語は主に 6 つの部分に分かれています: 1. データ照会言語 ( DQL :)、2.データ操作言語(DML:)、3. トランザクション制御言語 (TCL)、4.データ制御言語(DCL)、5. 、データ定義言語 ( DDL )、6、ポインター制御言語 (CCL)。
データ クエリ言語: データベースにデータ クエリ言語ステートメントを実行させ、結果をクライアントに送信します。これはデータを取得するために避けられない重要な手段です。
データ操作言語: データベース操作およびデータ操作とアクセス作業のプログラミング ステートメントに使用されます。
トランザクション制御言語: 主に複雑で困難なデータを操作するために使用されます。
データ制御言語: データベース ユーザーとロールの権限ステートメントを設定および変更するために使用されます。
データ定義言語: データベース内の権限データを定義することによってデータを分類します。
ポインタ制御言語:データベースの正常な使用を促進するためにプログラムの使用規則を規定します。
3. 機能的なデザイン
システム機能モジュールの機能紹介: 新しい学生登録システムは、主に学生クライアントと教師の経歴管理システムに分かれています。
学生クライアントに含まれる機能は、ログイン アカウント、基本情報の照会、システム関連のお知らせの表示、関連料金の支払いと支払い詳細の照会、授業スケジュールの表示、個人情報のアップロード、アカウントのパスワードの変更、およびその他の機能です。
教員経歴管理システムに関わる機能には、生徒管理モジュールの関連機能、料金管理モジュールの関連機能、コース管理モジュールの関連機能、情報登録モジュールの関連機能、システムアナウンスの関連機能が含まれます。モジュール。
システム管理に必要な機能は主に学生情報管理機能モジュールがあり、さらに情報登録モジュール、料金管理モジュール、コース管理モジュール、学生管理モジュール、システム告知モジュールなどに分かれています。
情報登録モジュールの構造図を図に示します。
情報登録モジュールの機能概要:情報編集、学生の性別、名前、電話番号、ID番号、自宅住所、出身校などの情報を編集する機能。
経費管理モジュールの構造図を次の図に示します。
経費管理モジュールの機能紹介:経費情報の追加、経費情報の変更、経費情報の削除、経費情報の参照。授業料、軍事訓練費、アパート備品費、雑貨費、図書費、健康診断費などの具体的な費用情報の変更やその他の情報変更機能を備えています。
コース管理モジュールの構造図を次の図に示します。
コース管理モジュールの特定の機能の簡単な紹介: コース情報の追加、コース情報の変更、コース情報の削除、およびコース情報の表示。特定のコース情報には、学科、専攻、クラス、カリキュラムの変更、およびその他のコンテンツ変更機能が含まれます。
学生管理モジュールの構造図を次の図に示します。
学生管理モジュールの機能の簡単な紹介: 学生情報の追加、学生情報の変更、学生情報の削除、学生情報の表示など。このうち、具体的な学生情報は、学科、氏名、専攻、学生番号、クラス、寮棟番号、寮番号に変更される。学生IDは学生端末の初期アカウントパスワードです。
システム アナウンス モジュールの構造図を次の図に示します。
システム速報モジュールの機能紹介: 速報の追加、変更、削除、表示、タイトル、内容、リリース日などのマークを付けます。
4. 機能的なレンダリング
4.1バックグラウンド 管理機能の動作
まず、新しい生徒の情報を記録できるように、管理者アカウントを作成する必要があります。初期管理者アカウントにログインした後、新しい管理者を追加します。初期管理者アカウントは admin、パスワードは 2014122 です。ログイン後、バックグラウンドの学生管理システムに管理者アカウントを追加できます。
(1) 管理者アカウントでのログイン
初期管理者アカウントには最高の権限があり、追加や削除はできません。バックグラウンドでログインした後、ログインを続けるには自分の管理者アカウントに切り替える必要があります。正しい管理者アカウントのパスワードを入力すると、学生管理システムに入ることができます。バックグラウンドのログイン インターフェイスは次の図に示されています。
(2) 管理者アカウントを追加する
初期管理者アカウントを使用して新しい管理者アカウントを追加します。管理者アカウントを追加するためのインターフェイス図を次の図に示します。
(3) 管理者アカウントを追加する
管理者アカウントにログインした後、新入生の情報を追加すると、新入生の情報はバックグラウンドの学生管理システムに保存され、新入生はAPPを通じてログインできます。
学生情報を追加する場合、学生番号、クラス、専攻、寮棟番号、寮番号を選択することができ、学生はフロントエンドAPPで自分の情報を確認できます。同時に、変更操作もサポートしており、新生児情報の具体的な追加を図に示します。
新しい学生情報のログインが完了すると、学生情報に基づいて学生の授業料や授業スケジュールの追加、システム通知の発行が可能になり、学生はその後の支払いを完了し、学生が情報を理解しやすくなります。
図に示すように、学生授業料表を追加します。
図に示すように、クラス スケジュールを追加します。
図に示すように、システム アナウンスを発行します。
4.2新生児APP機能 操作_
当管理员账号在后台学生管理系统中添加新生信息后,预报到新生即可通过在线上方式获取APP后,通过自己的学号,初始密码为学号登录APP完成一系列的操作。
(1)新生账号登录
新生在通过账号登录后,即可以对自己的信息添加,和修改账户密码。
新生账号登录图如图所示:
信息添加图如图所示:
修改账户密码图如图所示:
(2)APP其他功能
新生登录APP后应该完成自己的基础信息查阅,缴费,查阅课程表,查阅系统公告等功能。
基础信息查阅如图所示:
新生缴费如图所示:
查阅课程表如图所示:
查阅系统公告如图所示:
5.核心代码
public class BaseController {
protected Logger logger = Logger.getLogger(this.getClass());
private static final long serialVersionUID = 6357869213649815390L;
/** new PageData对象
* @return
*/
public PageData getPageData(){
return new PageData(this.getRequest());
}
/**得到ModelAndView
* @return
*/
public ModelAndView getModelAndView(){
return new ModelAndView();
}
/**得到request对象
* @return
*/
public HttpServletRequest getRequest() {
HttpServletRequest request = ((ServletRequestAttributes)RequestContextHolder.getRequestAttributes()).getRequest();
return request;
}
/**得到32位的uuid
* @return
*/
public String get32UUID(){
return UuidUtil.get32UUID();
}
/**得到分页列表的信息
* @return
*/
public Page getPage(){
return new Page();
}
public static void logBefore(Logger logger, String interfaceName){
logger.info("");
logger.info("start");
logger.info(interfaceName);
}
public static void logAfter(Logger logger){
logger.info("end");
logger.info("");
}
}
@Controller
@RequestMapping(value="/datasource2")
public class DataSource2Controller extends BaseController {
String menuUrl = "datasource2/list.do"; //菜单地址(权限用)
@Resource(name="datasource2Service")
private DataSource2Manager datasource2Service;
/**保存
* @param
* @throws Exception
*/
@RequestMapping(value="/save")
public ModelAndView save() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"新增DataSource2");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd.put("DATASOURCE2_ID", this.get32UUID()); //主键
datasource2Service.save(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**删除
* @param out
* @throws Exception
*/
@RequestMapping(value="/delete")
public void delete(PrintWriter out) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"删除DataSource2");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
PageData pd = new PageData();
pd = this.getPageData();
datasource2Service.delete(pd);
out.write("success");
out.close();
}
/**修改
* @param
* @throws Exception
*/
@RequestMapping(value="/edit")
public ModelAndView edit() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"修改DataSource2");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
datasource2Service.edit(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**列表
* @param page
* @throws Exception
*/
@RequestMapping(value="/list")
public ModelAndView list(Page page) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"列表DataSource2");
//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
String keywords = pd.getString("keywords"); //关键词检索条件
if(null != keywords && !"".equals(keywords)){
pd.put("keywords", keywords.trim());
}
page.setPd(pd);
List<PageData> varList = datasource2Service.list(page); //列出DataSource2列表
mv.setViewName("dst/datasource2/datasource2_list");
mv.addObject("varList", varList);
mv.addObject("pd", pd);
mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
return mv;
}
/**去新增页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goAdd")
public ModelAndView goAdd()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("dst/datasource2/datasource2_edit");
mv.addObject("msg", "save");
mv.addObject("pd", pd);
return mv;
}
/**去修改页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goEdit")
public ModelAndView goEdit()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd = datasource2Service.findById(pd); //根据ID读取
mv.setViewName("dst/datasource2/datasource2_edit");
mv.addObject("msg", "edit");
mv.addObject("pd", pd);
return mv;
}
/**批量删除
* @param
* @throws Exception
*/
@RequestMapping(value="/deleteAll")
@ResponseBody
public Object deleteAll() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"批量删除DataSource2");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
PageData pd = new PageData();
Map<String,Object> map = new HashMap<String,Object>();
pd = this.getPageData();
List<PageData> pdList = new ArrayList<PageData>();
String DATA_IDS = pd.getString("DATA_IDS");
if(null != DATA_IDS && !"".equals(DATA_IDS)){
String ArrayDATA_IDS[] = DATA_IDS.split(",");
datasource2Service.deleteAll(ArrayDATA_IDS);
pd.put("msg", "ok");
}else{
pd.put("msg", "no");
}
pdList.add(pd);
map.put("list", pdList);
return AppUtil.returnObject(pd, map);
}
/**导出到excel
* @param
* @throws Exception
*/
@RequestMapping(value="/excel")
public ModelAndView exportExcel() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"导出DataSource2到excel");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
ModelAndView mv = new ModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
Map<String,Object> dataMap = new HashMap<String,Object>();
List<String> titles = new ArrayList<String>();
titles.add("标题"); //1
titles.add("内容"); //2
dataMap.put("titles", titles);
List<PageData> varOList = datasource2Service.listAll(pd);
List<PageData> varList = new ArrayList<PageData>();
for(int i=0;i<varOList.size();i++){
PageData vpd = new PageData();
vpd.put("var1", varOList.get(i).getString("TITLE")); //1
vpd.put("var2", varOList.get(i).getString("CONTENT")); //2
varList.add(vpd);
}
dataMap.put("varList", varList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv,dataMap);
return mv;
}
@InitBinder
public void initBinder(WebDataBinder binder){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
}
}
public class ShopDetailAcitivity extends AppCompatActivity implements View.OnClickListener {
private TextView tvShopName,tvTime,tvNotice,tvTile;
private ImageView ivShopPic,ivBack;
private ShopBean bean;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//绑定布局文件,把布局文件当作我们这个activity的界面
setContentView(R.layout.acitivity_shop_detail);
bean= (ShopBean) getIntent().getSerializableExtra("shop");
if(bean==null){
return;
}
initView();
setData();
}
private void setData() {
tvShopName.setText(bean.getShopName());
tvTime.setText(bean.getTime());
tvNotice.setText(bean.getShopNotice());
Glide.with(this).load(bean.getShopPic()).error(R.mipmap.ic_launcher).into(ivShopPic);
}
private void initView() {
tvShopName=findViewById(R.id.tv_shop_name);
tvTime=findViewById(R.id.tv_time);
tvNotice=findViewById(R.id.tv_notice);
tvTile=findViewById(R.id.tv_title);
ivShopPic=findViewById(R.id.iv_shop_pic);
ivBack=findViewById(R.id.iv_back);
tvTile.setText("店铺详情");
ivBack.setVisibility(View.VISIBLE);
ivBack.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()){
case R.id.iv_back:
finish();
break;
}
}
}
@Controller
@RequestMapping(value="/cost")
public class CostController extends BaseController {
String menuUrl = "cost/list.do"; //菜单地址(权限用)
@Resource(name="costService")
private CostManager costService;
/**保存
* @param
* @throws Exception
*/
@RequestMapping(value="/save")
public ModelAndView save() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"新增Cost");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd.put("COST_ID", this.get32UUID()); //主键
costService.save(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**删除
* @param out
* @throws Exception
*/
@RequestMapping(value="/delete")
public void delete(PrintWriter out) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"删除Cost");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
PageData pd = new PageData();
pd = this.getPageData();
costService.delete(pd);
out.write("success");
out.close();
}
/**修改
* @param
* @throws Exception
*/
@RequestMapping(value="/edit")
public ModelAndView edit() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"修改Cost");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
costService.edit(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**列表
* @param page
* @throws Exception
*/
@RequestMapping(value="/list")
public ModelAndView list(Page page) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"列表Cost");
//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
String keywords = pd.getString("keywords"); //关键词检索条件
if(null != keywords && !"".equals(keywords)){
pd.put("keywords", keywords.trim());
}
page.setPd(pd);
List<PageData> varList = costService.list(page); //列出Cost列表
mv.setViewName("newreport/cost/cost_list");
mv.addObject("varList", varList);
mv.addObject("pd", pd);
mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
return mv;
}
/**去新增页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goAdd")
public ModelAndView goAdd()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("newreport/cost/cost_edit");
mv.addObject("msg", "save");
mv.addObject("pd", pd);
return mv;
}
/**去修改页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goEdit")
public ModelAndView goEdit()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd = costService.findById(pd); //根据ID读取
mv.setViewName("newreport/cost/cost_edit");
mv.addObject("msg", "edit");
mv.addObject("pd", pd);
return mv;
}
/**批量删除
* @param
* @throws Exception
*/
@RequestMapping(value="/deleteAll")
@ResponseBody
public Object deleteAll() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"批量删除Cost");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
PageData pd = new PageData();
Map<String,Object> map = new HashMap<String,Object>();
pd = this.getPageData();
List<PageData> pdList = new ArrayList<PageData>();
String DATA_IDS = pd.getString("DATA_IDS");
if(null != DATA_IDS && !"".equals(DATA_IDS)){
String ArrayDATA_IDS[] = DATA_IDS.split(",");
costService.deleteAll(ArrayDATA_IDS);
pd.put("msg", "ok");
}else{
pd.put("msg", "no");
}
pdList.add(pd);
map.put("list", pdList);
return AppUtil.returnObject(pd, map);
}
/**导出到excel
* @param
* @throws Exception
*/
@RequestMapping(value="/excel")
public ModelAndView exportExcel() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"导出Cost到excel");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
ModelAndView mv = new ModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
Map<String,Object> dataMap = new HashMap<String,Object>();
List<String> titles = new ArrayList<String>();
titles.add("学费"); //1
titles.add("书本费"); //2
titles.add("公寓用品费"); //3
titles.add("军训费"); //4
titles.add("杂物费"); //5
dataMap.put("titles", titles);
List<PageData> varOList = costService.listAll(pd);
List<PageData> varList = new ArrayList<PageData>();
for(int i=0;i<varOList.size();i++){
PageData vpd = new PageData();
vpd.put("var1", varOList.get(i).get("STUCOST").toString()); //1
vpd.put("var2", varOList.get(i).get("BOOKCOST").toString()); //2
vpd.put("var3", varOList.get(i).get("GOODSCOST").toString()); //3
vpd.put("var4", varOList.get(i).getString("TRAINCOST")); //4
vpd.put("var5", varOList.get(i).getString("SUNDCOST")); //5
varList.add(vpd);
}
dataMap.put("varList", varList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv,dataMap);
return mv;
}
@InitBinder
public void initBinder(WebDataBinder binder){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
}
}
@Controller
@RequestMapping(value="/course")
public class CourseController extends BaseController {
String menuUrl = "course/list.do"; //菜单地址(权限用)
@Resource(name="courseService")
private CourseManager courseService;
/**保存
* @param
* @throws Exception
*/
@RequestMapping(value="/save")
public ModelAndView save(@RequestParam(value = "tp", required = false) MultipartFile file,
@RequestParam(value = "tpz", required = false) String tpz,
@RequestParam(value = "DEPARTMENT", required = false) String DEPARTMENT,
@RequestParam(value = "SUBJECT", required = false) String SUBJECT,
@RequestParam(value = "CLASS", required = false) String CLASS
) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"新增Course");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd.put("COURSE_ID", this.get32UUID()); //主键
pd.put("DEPARTMENT", DEPARTMENT); //课程表
pd.put("SUBJECT", SUBJECT); //课程表
pd.put("CLASS", CLASS); //课程表
if (null == tpz) {
tpz = "";
}
String ffile = DateUtil.getDays(), fileName = "";
if (null != file && !file.isEmpty()) {
String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG
+ ffile; // 文件上传路径
fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); // 执行上传
pd.put("COURSEURL", ffile + "/" + fileName); // 路径
// pd.put("C_FILENAME", fileName);
} else {
pd.put("COURSEURL", tpz);
}
courseService.save(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**删除
* @param out
* @throws Exception
*/
@RequestMapping(value="/delete")
public void delete(PrintWriter out) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"删除Course");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
PageData pd = new PageData();
pd = this.getPageData();
courseService.delete(pd);
out.write("success");
out.close();
}
/**修改
* @param
* @throws Exception
*/
@RequestMapping(value="/edit")
public ModelAndView edit(
@RequestParam(value = "tp", required = false) MultipartFile file,
@RequestParam(value = "tpz", required = false) String tpz,
@RequestParam(value = "DEPARTMENT", required = false) String DEPARTMENT,
@RequestParam(value = "SUBJECT", required = false) String SUBJECT,
@RequestParam(value = "CLASS", required = false) String CLASS,
@RequestParam(value = "COURSE_ID", required = false) String COURSE_ID
) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"修改Course");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd.put("COURSE_ID",COURSE_ID); //主键
pd.put("DEPARTMENT", DEPARTMENT); //课程表
pd.put("SUBJECT", SUBJECT); //课程表
pd.put("CLASS", CLASS); //课程表
if (null == tpz) {
tpz = "";
}
String ffile = DateUtil.getDays(), fileName = "";
if (null != file && !file.isEmpty()) {
String filePath = PathUtil.getClasspath() + Const.FILEPATHIMG
+ ffile; // 文件上传路径
fileName = FileUpload.fileUp(file, filePath, this.get32UUID()); // 执行上传
pd.put("COURSEURL", ffile + "/" + fileName); // 路径
// pd.put("C_FILENAME", fileName);
} else {
pd.put("COURSEURL", tpz);
}
courseService.edit(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**列表
* @param page
* @throws Exception
*/
@RequestMapping(value="/list")
public ModelAndView list(Page page) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"列表Course");
//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
String keywords = pd.getString("keywords"); //关键词检索条件
if(null != keywords && !"".equals(keywords)){
pd.put("keywords", keywords.trim());
}
page.setPd(pd);
List<PageData> varList = courseService.list(page); //列出Course列表
mv.setViewName("newreport/course/course_list");
mv.addObject("varList", varList);
mv.addObject("pd", pd);
mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
return mv;
}
/**去新增页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goAdd")
public ModelAndView goAdd()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("newreport/course/course_edit");
mv.addObject("msg", "save");
mv.addObject("pd", pd);
return mv;
}
/**去修改页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goEdit")
public ModelAndView goEdit()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd = courseService.findById(pd); //根据ID读取
mv.setViewName("newreport/course/course_edit");
mv.addObject("msg", "edit");
mv.addObject("pd", pd);
return mv;
}
/**批量删除
* @param
* @throws Exception
*/
@RequestMapping(value="/deleteAll")
@ResponseBody
public Object deleteAll() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"批量删除Course");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
PageData pd = new PageData();
Map<String,Object> map = new HashMap<String,Object>();
pd = this.getPageData();
List<PageData> pdList = new ArrayList<PageData>();
String DATA_IDS = pd.getString("DATA_IDS");
if(null != DATA_IDS && !"".equals(DATA_IDS)){
String ArrayDATA_IDS[] = DATA_IDS.split(",");
courseService.deleteAll(ArrayDATA_IDS);
pd.put("msg", "ok");
}else{
pd.put("msg", "no");
}
pdList.add(pd);
map.put("list", pdList);
return AppUtil.returnObject(pd, map);
}
/**导出到excel
* @param
* @throws Exception
*/
@RequestMapping(value="/excel")
public ModelAndView exportExcel() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"导出Course到excel");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
ModelAndView mv = new ModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
Map<String,Object> dataMap = new HashMap<String,Object>();
List<String> titles = new ArrayList<String>();
titles.add("院系"); //1
titles.add("专业"); //2
titles.add("班级"); //3
titles.add("课程表"); //4
dataMap.put("titles", titles);
List<PageData> varOList = courseService.listAll(pd);
List<PageData> varList = new ArrayList<PageData>();
for(int i=0;i<varOList.size();i++){
PageData vpd = new PageData();
vpd.put("var1", varOList.get(i).getString("DEPARTMENT")); //1
vpd.put("var2", varOList.get(i).getString("SUBJECT")); //2
vpd.put("var3", varOList.get(i).getString("CLASS")); //3
vpd.put("var4", varOList.get(i).getString("COURSEURL")); //4
varList.add(vpd);
}
dataMap.put("varList", varList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv,dataMap);
return mv;
}
@RequestMapping(value = "/deltp")
public void deltp(PrintWriter out) throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
String COURSEURL = pd.getString("COURSEURL");
if (Tools.notEmpty(pd.getString("COURSEURL").trim())) {// 图片路径
DelAllFile.delFolder(PathUtil.getClasspath() + Const.FILEPATHIMG
+ pd.getString("COURSEURL")); // 删除图片
}
courseService.delTp(pd); // 删除数据库中图片数据
out.write("success");
out.close();
}
@InitBinder
public void initBinder(WebDataBinder binder){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
}
}
@Controller
@RequestMapping(value="/mobileintef")
public class MobileIntefController extends BaseController {
@Resource(name="studentmService")
private StudentMManager studentmService;
@Resource(name="costService")
private CostManager costService;
@Resource(name="courseService")
private CourseManager courseService;
@Resource(name="studentinfoService")
private StudentInfoManager studentinfoService;
@Resource(name="sysmsgService")
private SysMsgManager sysmsgService;
/**
* 登录
* @param
* @throws Exception
*/
@RequestMapping(value = "/dologin", produces = "application/json;charset=UTF-8")
@ResponseBody
public String dologin() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
String STUDYNUMB = pd.getString("STUDYNUMB");
String PASSWORD = pd.getString("PASSWORD");
PageData loginpd = studentmService.dologin(pd); //根据用户名和密码去读取用户信息
JSONObject result = new JSONObject();
Map<String, String> map = new HashMap<String, String>();
if (loginpd != null) {
pd.put("ROW_ID", this.get32UUID());
result.put("code", "ok");
JSONObject userinfo = AppUtil.pdToJSON(loginpd);
result.put("data", userinfo);
result.put("msg", "请求成功");
} else {
result.put("code", "error");
result.put("msg", "用户名或密码错误");
}
System.out.println("result = "+result.toString());
return result.toString();
}
@RequestMapping(value = "/changePsd", produces = "application/json;charset=UTF-8")
@ResponseBody
public String changePsd() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
PageData userpd = studentmService.dologin(pd);
JSONObject result = new JSONObject();
if (userpd == null) {
result.put("code", "error");
result.put("msg", "原密码错误,请重新输入!");
} else {
studentmService.editPSD(pd);
result.put("code", "ok");
result.put("msg", "密码修改成功!");
}
return result.toString();
}
@RequestMapping(value = "/getSysMsgList", produces = "application/json;charset=UTF-8")
@ResponseBody
public String getSysMsgList() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
List<PageData> info = sysmsgService.listAll(pd);
JSONObject result = new JSONObject();
/* Map<String,String> map = new HashMap<String,String>(); */
if (info != null) {
result.put("code", "ok");
JSONArray verifylist = AppUtil.pdToJSONArray(info);
result.put("data", verifylist);
result.put("msg", "请求成功!");
} else {
result.put("code", "error");
result.put("msg", "无数据");
}
return result.toString();
}
@RequestMapping(value = "/getCostList", produces = "application/json;charset=UTF-8")
@ResponseBody
public String getCostList() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
List<PageData> info = costService.listAll(pd);
JSONObject result = new JSONObject();
/* Map<String,String> map = new HashMap<String,String>(); */
if (info != null) {
result.put("code", "ok");
JSONArray verifylist = AppUtil.pdToJSONArray(info);
result.put("data", verifylist);
result.put("msg", "请求成功!");
} else {
result.put("code", "error");
result.put("msg", "无数据");
}
return result.toString();
}
@RequestMapping(value = "/getCouseList", produces = "application/json;charset=UTF-8")
@ResponseBody
public String getCouseList() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
PageData info = courseService.getCouseList(pd);
JSONObject result = new JSONObject();
/* Map<String,String> map = new HashMap<String,String>(); */
if (info != null) {
result.put("code", "ok");
JSONObject verifylist = AppUtil.pdToJSON(info);
result.put("data", verifylist);
result.put("msg", "请求成功!");
} else {
result.put("code", "error");
result.put("msg", "无数据");
}
return result.toString();
}
@RequestMapping(value = "/getInfo", produces = "application/json;charset=UTF-8")
@ResponseBody
public String getInfo() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
PageData info = studentinfoService.findById(pd);
JSONObject result = new JSONObject();
/* Map<String,String> map = new HashMap<String,String>(); */
if (info != null) {
result.put("code", "ok");
JSONObject verifylist = AppUtil.pdToJSON(info);
result.put("data", verifylist);
result.put("msg", "请求成功!");
} else {
result.put("code", "error");
result.put("msg", "无数据");
}
return result.toString();
}
@RequestMapping(value = "/saveInfo", produces = "application/json;charset=UTF-8")
@ResponseBody
public String saveInfo() throws Exception {
PageData pd = new PageData();
pd = this.getPageData();
if(pd.containsKey("STUDENTINFO_ID")) {
studentinfoService.edit(pd);
}else {
pd.put("STUDENTINFO_ID", this.get32UUID());
studentinfoService.save(pd);
}
JSONObject result = new JSONObject();
/* Map<String,String> map = new HashMap<String,String>(); */
result.put("code", "ok");
result.put("msg", "请求成功!");
return result.toString();
}
@InitBinder
public void initBinder(WebDataBinder binder){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
}
}
@Controller
@RequestMapping(value="/studentinfo")
public class StudentInfoController extends BaseController {
String menuUrl = "studentinfo/list.do"; //菜单地址(权限用)
@Resource(name="studentinfoService")
private StudentInfoManager studentinfoService;
/**保存
* @param
* @throws Exception
*/
@RequestMapping(value="/save")
public ModelAndView save() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"新增StudentInfo");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "add")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd.put("STUDENTINFO_ID", this.get32UUID()); //主键
studentinfoService.save(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**删除
* @param out
* @throws Exception
*/
@RequestMapping(value="/delete")
public void delete(PrintWriter out) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"删除StudentInfo");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return;} //校验权限
PageData pd = new PageData();
pd = this.getPageData();
studentinfoService.delete(pd);
out.write("success");
out.close();
}
/**修改
* @param
* @throws Exception
*/
@RequestMapping(value="/edit")
public ModelAndView edit() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"修改StudentInfo");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "edit")){return null;} //校验权限
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
studentinfoService.edit(pd);
mv.addObject("msg","success");
mv.setViewName("save_result");
return mv;
}
/**列表
* @param page
* @throws Exception
*/
@RequestMapping(value="/list")
public ModelAndView list(Page page) throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"列表StudentInfo");
//if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;} //校验权限(无权查看时页面会有提示,如果不注释掉这句代码就无法进入列表页面,所以根据情况是否加入本句代码)
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
String keywords = pd.getString("keywords"); //关键词检索条件
if(null != keywords && !"".equals(keywords)){
pd.put("keywords", keywords.trim());
}
page.setPd(pd);
List<PageData> varList = studentinfoService.list(page); //列出StudentInfo列表
mv.setViewName("newreport/studentinfo/studentinfo_list");
mv.addObject("varList", varList);
mv.addObject("pd", pd);
mv.addObject("QX",Jurisdiction.getHC()); //按钮权限
return mv;
}
/**去新增页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goAdd")
public ModelAndView goAdd()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
mv.setViewName("newreport/studentinfo/studentinfo_edit");
mv.addObject("msg", "save");
mv.addObject("pd", pd);
return mv;
}
/**去修改页面
* @param
* @throws Exception
*/
@RequestMapping(value="/goEdit")
public ModelAndView goEdit()throws Exception{
ModelAndView mv = this.getModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
pd = studentinfoService.findById(pd); //根据ID读取
mv.setViewName("newreport/studentinfo/studentinfo_edit");
mv.addObject("msg", "edit");
mv.addObject("pd", pd);
return mv;
}
/**批量删除
* @param
* @throws Exception
*/
@RequestMapping(value="/deleteAll")
@ResponseBody
public Object deleteAll() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"批量删除StudentInfo");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "del")){return null;} //校验权限
PageData pd = new PageData();
Map<String,Object> map = new HashMap<String,Object>();
pd = this.getPageData();
List<PageData> pdList = new ArrayList<PageData>();
String DATA_IDS = pd.getString("DATA_IDS");
if(null != DATA_IDS && !"".equals(DATA_IDS)){
String ArrayDATA_IDS[] = DATA_IDS.split(",");
studentinfoService.deleteAll(ArrayDATA_IDS);
pd.put("msg", "ok");
}else{
pd.put("msg", "no");
}
pdList.add(pd);
map.put("list", pdList);
return AppUtil.returnObject(pd, map);
}
/**导出到excel
* @param
* @throws Exception
*/
@RequestMapping(value="/excel")
public ModelAndView exportExcel() throws Exception{
logBefore(logger, Jurisdiction.getUsername()+"导出StudentInfo到excel");
if(!Jurisdiction.buttonJurisdiction(menuUrl, "cha")){return null;}
ModelAndView mv = new ModelAndView();
PageData pd = new PageData();
pd = this.getPageData();
Map<String,Object> dataMap = new HashMap<String,Object>();
List<String> titles = new ArrayList<String>();
titles.add("性别"); //1
titles.add("电话"); //2
titles.add("身份证号"); //3
titles.add("家庭住址"); //4
titles.add("毕业院校"); //5
dataMap.put("titles", titles);
List<PageData> varOList = studentinfoService.listAll(pd);
List<PageData> varList = new ArrayList<PageData>();
for(int i=0;i<varOList.size();i++){
PageData vpd = new PageData();
vpd.put("var1", varOList.get(i).getString("GENDER")); //1
vpd.put("var2", varOList.get(i).getString("PHONE")); //2
vpd.put("var3", varOList.get(i).getString("IDCARD")); //3
vpd.put("var4", varOList.get(i).getString("ADDRESS")); //4
vpd.put("var5", varOList.get(i).getString("GRADUATE")); //5
varList.add(vpd);
}
dataMap.put("varList", varList);
ObjectExcelView erv = new ObjectExcelView();
mv = new ModelAndView(erv,dataMap);
return mv;
}
@InitBinder
public void initBinder(WebDataBinder binder){
DateFormat format = new SimpleDateFormat("yyyy-MM-dd");
binder.registerCustomEditor(Date.class, new CustomDateEditor(format,true));
}
}
6.参考论文
目 录
7.总结
まず、テスト後、システムは通常通り使用できますが、コース選択にシステムを使用するなど、システム自体が想定していた機能の一部を達成できていません。本システムを学務部のネットワークに接続するため、セキュリティ上のリスクが伴います。したがって、この機能の追加についてはまだ詳細に検討する必要があります。
第二に、設計プログラムの欠陥とソフトウェアの特性により、このシステムは当面、同じネットワーク上の場所にあるフロントエンドAPPとバックエンドのみを使用でき、機能は十分に完璧ではありません。
現在、モバイルアプリケーションの発展が急速に進んでおり、Androidアプリケーションは業務効率の向上に大きな役割を果たしており、安定性と機能性、そして操作性の高いAndroidレポートシステムの構築が特に重要となっています。
プロジェクトの開始前に、関連する書籍、論文、雑誌を参照することで、関連するシステムのパターン特性を根本的に理解し、関連するシステムの長所と短所を注意深く検討しました。理解した上で、システムの設計・開発を分析しました。システムの主な目的は、新入生の入学情報を新入生にお知らせし、新入生向けのサービスを提供することです。新たな学校関連情報の情報提供や生徒への表示が可能となります。比較的成功しているシステムです。
ブラック ボックス テストと互換性テストの後、システムのさまざまな機能が新世代の Android に基づいて正常に実行され、基本的に期待された目標に到達します。しかし、まだ不十分な点もいくつかあり、私たちは新しい新入生予測システムの最適化に引き続き熱心に取り組み、最終的には新入生の仕事に便利なプロジェクト ソフトウェアを提供したいと考えています。
好き、好き、コレクション、私信への注目 著者コミュニケーション