アンドリュースのカリキュラムのデザイン
( 2019年〜2020年学年 最初の学期)
学生管理システム
部門 ドゥ: 情報と制御工学
設計された 業界: コンピュータ科学と技術
クラス レベル: 1702
学校 番号: 173 230 216
姓 名: 張Zijian
インストラクター ダン郭
完了時間 2019年12月5日
ディレクトリ
目的と意義.......................................... .................................................. 3
第二に、このシステムは、分析を必要とする............................................. .................................................. ... 3
2.1 ユーザの要求............................................... .................................................. ...... 3
2.2 機能要件............................................... .................................................. ...... 3
2.3 UMLのクラス図.............................................. .................................................. ...... 3
三、システム設計、テスト、および実装......................................... ..................................... 4
1. システムの設計............................................. .................................................. ........ 4
1.1 図の分析の.............................................. .................................................. .... 4
1.2 ファイルリスト............................................... .................................................. ... 5
2. システムの実装............................................. .................................................. ........ 6
3. 試験システム............................................. .................................................. ....... 14
A。テスト環境.............................................. .................................................. ..14
二つ。テストプロセス.............................................. .................................................. ..... 14
四、カリキュラムの設計の概要............................................. .................................................. ... 18
A. 目的と意義
社会の進歩、特にコンピュータ技術の開発やインターネット、データ伝送のための人々 、コンピュータ技術の開発を行い、ますます高のリアルタイム要件、より多くのネットワーク指向のリモコン付き。近代的な学校経営は、間違いなく、コンピュータのコンピュータの品質向上、コスト削減、スピード、典型的なネットワークアプリケーションになります ITの発展は公共のインターネットの動向。私たちは、可能なデータの高効率のコンピュータ処理を使用しています。、これは、学生管理システムを入力するための対話型コンピュータが表示されますの時代を反映して、データと情報管理担当者です。フレンドリーインタラクティブモード、明確かつ簡潔なグラフィカルなインターフェイス、効率的かつ安全な操作は、私たちは心で開始する必要が数十情報の何千ものを管理することができます。このシステムを通じて、あなたは、このようにワークロード管理を減らし、迅速標準プロセス情報、統計情報と科学的調査を行うことができます。言うまでもなく、学校管理システムを推進する教育の質と実行している学校のレベルを向上させるために、学校教育行政におけるコンピュータの導入の効果的な管理が重要な意味を持ちます。
II。システム要件の分析
2.1ユーザーのニーズ
学校や他の機関、クエリ、更新、メンテナンス、使いやすさ、使いやすさと強力に生徒の入学を管理するための学生管理システム。システム実装の近似関数、ユーザーのログイン。生徒のレコード情報のクエリを提供し、追加、変更、削除、学生情報の入力、変更、削除、クエリおよびその他の機能。経営陣は、最高管理者権限を持っています。
2.2機能要件
1. [追加]学生情報:、スタート画面で[追加]をクリックし、学生の氏名、年齢、学部、専門的、および作成日など、このインタフェースの追加・インタフェース、管理者が入力することができ、学生の情報を、入力して、[アクティビティによって互いの間をジャンプ達成するために、各モジュールの機能を移転
2.学生情報照会:メインインタフェースを表示するために開くことができ、学生の情報は、高速クエリに学生の基本的な状況を入力することによって追加されました。
3.修正学生情報:学生デザインのアイデアと同様の情報を追加するには、学生の情報に変更することができますが追加されました。
4、削除学生情報:あなたがはさみボタンのメインページの削除機能を完了するために、クリック削除したい学生の情報を選択した後、あなたが学生の情報が追加されました削除することができます。
2.3 UMLのクラス図
III。システム設計、実装、テスト
1.システム設計
コード
1.1 図。分析例
1.2 ファイルリスト
システムを実装2
元のファイルのコード
Java MainActivity原码
package com.example.z.student;
import android.app.DatePickerDialog;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Spinner;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.Toast;
import java.io.Serializable;
import java.time.Month;
import java.time.MonthDay;
import java.time.Year;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity implements View.OnClickListener, TimePicker.OnTimeChangedListener {
Button bt_add;
Button bt_send;
EditText et_name;
AutoCompleteTextView et_major;
EditText et_age;
RadioGroup rg_sex;
Spinner academyspinner;
EditText et_date;
private Calendar cal;
private int y, m, d;
DBop dbop = new DBop();
ArrayList<StuInfo> studentlist = new ArrayList<StuInfo>();
MySQLiteAccess mySQLiteAccess = new MySQLiteAccess(MainActivity.this, 1);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bt_add = (Button) findViewById(R.id.bt_add);
bt_send = (Button) findViewById(R.id.bt_send);
academyspinner = (Spinner) findViewById(R.id.academy);
et_date = (EditText) findViewById(R.id.et_date);
et_name = (EditText) findViewById(R.id.et_name);
et_major = (AutoCompleteTextView) findViewById(R.id.et_major);
et_age = (EditText) findViewById(R.id.et_age);
rg_sex = (RadioGroup) findViewById(R.id.rg_sex);
String[] arr = {"物联网工程", "计算机科学", "电子信息", "通信工程"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter(this, R.layout.au_textview, arr);
et_major.setAdapter(arrayAdapter);
bt_add.setOnClickListener(this);
bt_send.setOnClickListener(this);
et_date.setKeyListener(null);
et_date.setOnClickListener(this);
dbop.test(this);
initSpinner();
}
private boolean isDigital(String num) //正则表达式判断输入是否为数字
{
return num.matches("[0-9]{1,}");
}
private String getRadioInfo(RadioGroup radioGroup) {
String info = "";
int num = radioGroup.getChildCount();
for (int i = 0; i < num; i++) {
RadioButton rd = (RadioButton) radioGroup.getChildAt(i);
if (rd.isChecked()) {
info = rd.getText().toString();
break;
}
}
return info;
}
private String getCheckBoxInfo(LinearLayout CheckBoxgroup) {
String info = "";
int num = CheckBoxgroup.getChildCount();
for (int i = 0; i < num; i++) {
CheckBox cb = (CheckBox) CheckBoxgroup.getChildAt(i);
if (cb.isChecked()) {
info += cb.getText().toString() + "\n";
}
}
return info;
}
@Override
public void onClick(View v) {
Intent intent = new Intent();
switch (v.getId()) {
case R.id.bt_add:
String aca = academyspinner.getSelectedItem().toString();
String name = et_name.getText().toString();
String major = et_major.getText().toString();
String age = et_age.getText().toString();
String sex = getRadioInfo(rg_sex);
// String kecheng = getCheckBoxInfo(check).toString();
String date = et_date.getText().toString();
CharSequence a = et_age.getText();
if (TextUtils.isEmpty(a) | TextUtils.isEmpty((et_major.getText())) | TextUtils.isEmpty(et_name.getText())) {
Toast.makeText(MainActivity.this, "请输入完整信息", Toast.LENGTH_SHORT).show();
return;
} else if (aca == "选择学院") {
Toast.makeText(MainActivity.this, "请选择正确的学院", Toast.LENGTH_SHORT).show();
return;
} else if (!isDigital(a.toString())) {
et_age.setError("请输入数字");
} else {
StuInfo stu = new StuInfo(name, major, age, sex,aca, date);
studentlist.add(stu);
StuInfo s = new StuInfo(name, sex, age, aca, major, date);
dbop.insert(s);
Toast.makeText(MainActivity.this, "添加成功", Toast.LENGTH_SHORT).show();
}
break;
case R.id.bt_send:
if (studentlist.isEmpty()) {
Toast.makeText(MainActivity.this, "请先添加信息", Toast.LENGTH_SHORT).show();
return;
} else {
intent.putExtra("students", (Serializable) studentlist);
intent.setClass(MainActivity.this, StudentList.class);
startActivity(intent);
}
break;
case R.id.et_date:
DatePickerDialog.OnDateSetListener listener = new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
et_date.setText(year + "-" + (++month) + "-" + dayOfMonth);
}
};
getDate();
DatePickerDialog datePickerDialog = new DatePickerDialog(MainActivity.this, listener, y, m, d);
datePickerDialog.show();
break;
}
}
private void initSpinner() {
String[] arr = {"信息科学与工程系", "管理系", "电气系", "机械系", "生物系", "选择系"};
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_dropdown_item, arr);
academyspinner.setAdapter(arrayAdapter);
academyspinner.setSelection(arr.length - 1, true);
}
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
}
private void getDate() {
cal = Calendar.getInstance();
y = cal.get(Calendar.YEAR);
m = cal.get(Calendar.MONTH);
d = cal.get(Calendar.DAY_OF_MONTH);
}
private void test() {
MySQLiteAccess mySQLiteAccess = new MySQLiteAccess(this, 1);
mySQLiteAccess.getReadableDatabase();
}
}
类说明:完成学生成绩管理的主界面以及按钮操作。
Java StudentAdapter原码
package com.example.z.student;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import org.w3c.dom.Text;
import java.util.List;
public class StudentAdapter extends BaseAdapter implements View.OnClickListener{
private List<StuInfo> stuDates;//数据源
private Context stuContext;//布局加载器
private InnerItemOnClickListener innerItemOnClickListener;
DBop dbOperate=new DBop();//有参的构造函数,为数据源,上下文对象复制,同时实例化布局加载器
public StudentAdapter(Context context,List list) {
this.stuDates=list;
this.stuContext=context;
dbOperate.test(context);//初始化一下数据库,不然后面delete用的时候database是空的
}
//有多少条数据,需要创建多少个item布局
@Override
public int getCount() {
return stuDates.size();
}
//返回position对应位置的数据
@Override
public Object getItem(int position) {
return stuDates.get(position);
}
//返回position对应位置item的id
@Override
public long getItemId(int position) {
return position;
}
/**
* 具体定义加载item布局,并将数据显示到item布局上的方法。
* @param position
* @param convertView
* @param parent
* @return
*/
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View stuView=View.inflate(stuContext,R.layout.list,null);
//实例化stulist布局上的控件
TextView tv_id=stuView.findViewById(R.id.li_id);
TextView tv_name=stuView.findViewById(R.id.li_name);
TextView tv_academy=stuView.findViewById(R.id.li_academy);
ImageView iv_edit=stuView.findViewById(R.id.li_edit);
ImageView iv_delete=stuView.findViewById(R.id.li_delete);
final StuInfo student=(StuInfo) stuDates.get(position);
tv_id.setText(String.valueOf(student.getId()));
tv_name.setText(student.getName());
tv_academy.setText(student.getAcademy());
iv_edit.setImageResource(R.drawable.edit);
iv_delete.setImageResource(R.drawable.delete);
//增加监听
iv_edit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context=v.getContext();
Intent intent=new Intent();
intent.setClass(context,Edit.class);
intent.putExtra("altStu",student);
((Activity)context).startActivity(intent);
}
});
iv_delete.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
dbOperate.delete(student.getId());
stuDates.remove(student);
StudentAdapter.this.notifyDataSetChanged();
}
});
//给删除和编辑设置标志
iv_edit.setTag(position);
iv_delete.setTag(position);
return stuView;
}
//创建内部控件监听接口
interface InnerItemOnClickListener{
abstract void itemClick(View view);
}
public void setOnInnerOnClickListenner(InnerItemOnClickListener listener)
{
this.innerItemOnClickListener=listener;
}
@Override
public void onClick(View v) {
innerItemOnClickListener.itemClick(v);
}
}
类说明:完成学生学籍录入管理的主界面以及按钮操作。
- 系统的测试
一. 测试环境
1.设计环境:Android studio
2.测试环境:Android studio虚拟机
二.测试过程
- 测试能否正常运行程序
- 测试添加页面能否正常添加姓名,年龄,系别,专业和日期
- 测试能否查询学生信息
- 测试能否修改学生信息
- 测试能否删除学生信息
测试结果
1.测试能否正常运行程序
2.测试添加页面能否正常添加姓名,年龄,系别,专业和日期
3.测试能否查询学生信息
4.测试能否修改学生信息
5.测试能否删除学生信息
四. 课程设计总结
此系统是我做的一个简单的学生学籍管理系统,它的优点在于简单明了,容易上手操作,便于修改内容,从系统代码也比较容易修改,缺点是功能不是很强大,而且代码有些地方比较繁琐,仅仅是一个设计,在实际用途中还是有一定的技术差距。
在设计中我深知自己掌握的知识还远远不够,掌握的一些理论知识应用到实践中去,总会出现这样的问题,光知道书本上的知识是远远不够的,一定要把理论知识和实践结合起来。
把学到的知识应用到时间中去,多做多练,才可以把理论的精华发挥出来,知识不是知道,了解就好,而是要去应用并且发展它,让它得到充分的应用,从而解决一些问题,这才是学习的根本目的。在这次课程设计中,得到了老师和同学们很多的帮助,学到了很多书本上学不到的知识,今后,我还要加强学习,努力使自己成为一位专业的计算机人员,为我今后从事的工作服务。