收藏 分销(赏)

软件详细设计报告样本.doc

上传人:二*** 文档编号:4687373 上传时间:2024-10-09 格式:DOC 页数:33 大小:2.12MB 下载积分:5 金币
下载 相关 举报
软件详细设计报告样本.doc_第1页
第1页 / 共33页
本文档共33页,全文阅读请下载到手机保存,查看更方便
资源描述
计算机学院实验中心----Android手机客户端 学生姓名:宋同煜 张宗森 指引教师:裴斐 专业:计算机科学与技术 102 在移动互联网发展迅猛今天,在Android完全开源及拥有庞大顾客群环境下,迫切需要为计算机学院实验中心网站开发Andriod手机客户端,以便计算机学院师生随时随处查看实验信息、登记实验等。 。 一、系统分析 需求分析 查询实验:教师及学生可以查询当周及上一周、下一周实验安排 登记实验:教师登录后可以登记实验 引言 为以便计算机学院教师及学生查询、登记实验,因而开发实验中心Android手机端软件 编写目 本文档对计算机学院实验中心网站手机客户端功能、顾客界面、运营环境等作出详细阐明。 项目背景 软件开发名称:计算机学院实验中心 项目需求单位:计算机学院全体师生 项目开发单位:宋同煜 张宗森 二、系统设计 系统目的 1.实现需求分析阶段所有功能 2.主界面清晰、简朴、操作易行 系统功能预览 该软件重要涉及查询、登录、登记实验3个功能模块,重要操作如下: (1) 运营软件后,一方面检查网络连接与否正常,如果正常,获取当周实验安排信息,显示给顾客,效果如图 (2) 通过“菜单->登记实验”进入级别实验页面,规定输入顾客名密码才可继续 点击“登录实验” 后,提示登录后才干继续 (3)点击登录进入登录页面,如图 对的输入顾客名密码后点提交 (4)顾客名密码输入对的,就可以登记实验了,次页面包括实验名、课程名、班级、机房、第几大节、实验日期等信息填写,如图 (5)对的填写实验信息后,确认登记后点提交,返回登记成果 (6)登记成功后,重新打开软件即可看到刚才登记实验,如下图 (7)顾客登录后可保存、清除登录信息,不用每次使用都需要登录,并在软件主界面右上角显示当前顾客名,效果如下图: 清除登录信息: 点击后弹出操作成果 (8)通过菜单->上周、下周进行上下周跳转查询, (9)检查更新、反馈等功能 软件每日启动都会检查与否存在新版本并提示顾客下载 反馈暂只通过短信方式反馈 (10)软件后台运营 因移动网络下蜗牛般网速,故提供后台运营功能,通过手机上返回键并没有真正退出而是后台运营了,对于手机网络较慢顾客(非Wifi下及3G顾客)是完全有必要,需要通过菜单里退出才干真正退出。 三、软件页头header某些设计 1.涉及软件名称,顾客登录状态,及提示信息 2.XML布局文献 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#ff009de4" android:orientation="vertical" > <RelativeLayout android:layout_width="fill_parent" android:layout_height="38.0dp" android:background="#ff009de4" > <ImageView …省略某些代码… /> <TextView …省略某些代码…/> <TextView …省略某些代码…/> <Button …省略某些代码… /> <ImageView …省略某些代码… /> </RelativeLayout> <RelativeLayout android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="#ff009de4" > <TextView …省略某些代码… android:text="获取网络数据中..." /> --></RelativeLayout> </LinearLayout> 四、软件主显示某些设计 1. 采用Viewpager+Listview 实现滑动显示周一到周日实验信息 2. 某些XML布局文献 <?xml version="1.0" encoding="utf-8"?> <LinearLayout …省略某些代码… > <!--标题--> <LinearLayout …省略某些代码… > <include …省略某些代码… layout="@layout/header" /> </LinearLayout> <!--滑动--> <LinearLayout …省略某些代码… > <android.support.v4.view.ViewPager …省略某些代码… > <android.support.v4.view.PagerTitleStrip …省略某些代码… /> </android.support.v4.view.ViewPager> </LinearLayout> <!--滑动结束--> </LinearLayout> 五、主Activity设计Cslab_listviewActivity.java 1. onCreate()窗口生成函数 Android 软件运营后一方面运营主Activity,一种Activity代表一种窗口(一种类)软件登录及级别实验分别用一种Activity来解决。 每一种Activity均有onCreat()函数,用来生成窗口,本软件主Activity Cslab_listviewActivity.javaoncreatr()函数设计 1、设立布局文献 setContentView(R.layout.main); 2、获取系统日期时间 SimpleDateFormat formatter = new SimpleDateFormat ("yyyy-MM-dd"); SimpleDateFormat timef = new SimpleDateFormat ("yyyy年MM月dd日"); SimpleDateFormat weeknumber = new SimpleDateFormat ("EEE"); Date curDate = new Date(System.currentTimeMillis());//获取当前时间 String str = formatter.format(curDate); String weeknumberString=weeknumber.format(curDate); zhouji=weeknumberString; time=timef.format(curDate); 3、检查网络状况,判断系统版本 initStrictMode();//判断系统版本,防止浮现NetworkOnMainThreadException 异常解决, if (!CheckNetwork()) { NetError(); return; } 4.从服务器获取当前第几周 GetWeekNumber();保存到成员变量中。 采用多线程,避免ANR Thread t = new Thread() { @Override public void run() { 省略某些代码 } }; t.start(); //接受子线程消息 handler = new Handler() { @Override public void handleMessage(Message msg) { case 2: 省略某些代码 break; } } }; 5.依照周数获取实验信息private void getExperiment(final String week)并保存 String experiment=WebServiceResult(NAMESPACE,"Experiment",1,new String[]{"weeknumber"},new String[]{week}); JSONObject JsonExperiment = new JSONObject(experiment); ArrayExperiment=JsonExperiment.getJSONArray("ex"); 6.显示实验信息public boolean showexperiment() …………………… experimentlist1 = buildexperimentListForSimpleAdapter("星期一");//填充ListView数据 notes1 = new MyAdapter(this,experimentlist1,R.layout.experimentinfo, new String[] { "section","experiment"},new int[] { R.id.section, R.id.experimentinfo}); mListView1.setAdapter(notes1); mViews.add(mListView1); ………………… 7.显示本周实验信息private void LoadThisweekExperiment() private void LoadExperiment(){ Thread Thnextweek = new Thread() { @Override public void run() { }}; Thnextweek.start(); nehandler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: break; } }}; } 8.用变量记录程序运营时顾客上下周跳转导致周数变化,并用private void LoadExperiment() 显示实验信息 读取顾客保存账号信息private void getusernamefromsetting() service = new PreferencesService(this); Map<String,String> params = service.getUsername(); usernameString=params.get("username"); 9.其她…………………………… 六、登录模块设计loginActivity.java 1. 顾客名密码输入 EditText usernameEdit; EditText passwordEdit; 2. 解决登录祈求,提交给Webservice服务器,并返回登录成果成功或失败private void login() 3.返回主界面 public class loginActivity extends Activity { private PreferencesService service; private static final String NAMESPACE = ""; //Webservice命名空间 private static String URL = ""; // WebService地址 String usernameString=""; String passwordString=""; EditText usernameEdit; EditText passwordEdit; Handler handler; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.login); getusernamefromsetting(); usernameEdit=(EditText)findViewById(R.id.username_edit); passwordEdit=(EditText)findViewById(R.id.password_edit); usernameEdit.setText(usernameString); passwordEdit.setText(passwordString); usernameEdit.addTextChangedListener(new TextWatcher() { 省略代码 }); passwordEdit.addTextChangedListener(new TextWatcher() { 省略代码 }); Button login_button=(Button)findViewById(R.id.signin_button); Button clear=(Button)findViewById(R.id.clear); Button Button01=(Button)findViewById(R.id.Button01); Button01.setOnClickListener(new Button.OnClickListener(){ @Override public void onClick(View arg0) { // TODO 自动生成办法存根 省略代码 } }); clear.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { 清除账号信息,省略代码 }}); login_button.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { 验证输入与否对的,省略代码 else login(); } }); } private void login() { // TODO 自动生成办法存根 Thread t = new Thread() { @Override public void run() { 新线程 解决登录 } }; t.start();// 启动线程 // 接受子线程消息 handler = new Handler() { @Override public void handleMessage(Message msg) { // TODO Auto-generated method stub switch (msg.what) { case 1: 解决登录成果,并提示顾客,省略代码 break; } } }; } //web服务调用函数 public String WebServiceResult(String ns,String method,int arg_number,String[] arg_name,String[] arg_value){ String re =arg_name[0]+arg_value[0]; try { SoapObject rpc = new SoapObject(ns,method); if (arg_number != 0) { for (int i=0;i<arg_number;i++) rpc.addProperty(arg_name[i].toString(),arg_value[i].toString()); } AndroidHttpTransport ht = new AndroidHttpTransport(URL); ht.debug = true; SoapSerializationEnvelope envelope = new SoapSerializationEnvelope( SoapEnvelope.VER11); envelope.bodyOut = rpc; envelope.dotNet = true; envelope.setOutputSoapObject(rpc); ht.call(ns + method,envelope); SoapObject result = (SoapObject) envelope.bodyIn; re = result.getProperty(0).toString(); } catch (Exception e) { e.printStackTrace(); } return re; } 七、登记实验模块设计: 1. 检查顾客与否登录,若登陆继续,否则返回private void checklogin() { 2. 文本输入框(EditView)、列表选取框(spanner)、日期控件设立 3. 从服务器获取机房信息private void getTestRoom() { 4. 提交实验信息并返回解决成果给顾客 private void subExperiment() 5. 返回主界面 public class addexperiment extends Activity { private static final String NAMESPACE = ""; //Webservice命名空间 private static String URL = ""; // WebService地址 Handler handler; private int mYear; private int mMonth; private int mDay; DatePicker dp; String username=""; String password=""; String room=""; String time=""; String name="客户端测试"; String numberstring=""; String teacher="test"; String classString="计科101"; String coursenameString="客户端测试"; EditText experimentname; EditText experimentteacher; EditText experimentclass; EditText coursename; Spinner number; private PreferencesService service; String usernameString=""; String passwordString=""; private Spinner roomSpinner; private List<String> list = new ArrayList<String>(); private List<String> numberlist = new ArrayList<String>(); private ArrayAdapter<String> roomadapter; private ArrayAdapter<String> numberadapter; @Override public void onCreate(Bundle savedInstanceState) { checklogin(); Calendar c=Calendar.getInstance(); mYear=c.get(Calendar.YEAR); mMonth=c.get(Calendar.MONTH); mDay=c.get(Calendar.DAY_OF_MONTH); time=""+mYear+"-"+(mMonth+1)+"-"+mDay; super.onCreate(savedInstanceState); setContentView(R.layout.editcourse); /*获得TextView对象,并调用updateDisplay()来设立显示初始日期时间*/ //tv= (TextView) findViewById(R.id.showTime); //updateDisplay(); /*获得DatePicker对象,以init() 设立初始值与onDateChangeListener() */ dp=(DatePicker)findViewById(R.id.dPicker); dp.init(mYear,mMonth,mDay,new DatePicker.OnDateChangedListener() { @Override public void onDateChanged(DatePicker view,int year,int monthOfYear,int dayOfMonth) { mYear=year; mMonth= monthOfYear+1; mDay=dayOfMonth; /*调用updateDisplay()来变化显示日期*/ time=""+mYear+"-"+mMonth+"-"+mDay;//updateDisplay(); } }); experimentname=(EditText)findViewById(R.id.experimentname); coursename=(EditText)findViewById(R.id.coursename); number = (Spinner)findViewById(R.id.Spinner_number); experimentteacher=(EditText)findViewById(R.id.editText_teacher); experimentclass=(EditText)findViewById(R.id.editText_class); experimentname.addTextChangedListener(new TextWatcher() { ………省略某些代码…………… }); coursename.addTextChangedListener(new TextWatcher() { ………省略某些代码…………… }); experimentclass.addTextChangedListener(new TextWatcher() { ………省略某些代码…………… }); numberlist.add("第一大节"); numberlist.add("第二大节"); numberlist.add("第三大节"); numberlist.add("第四大节"); numberlist.add("第五大节"); getTestRoom(); roomSpinner = (Spinner)findViewById(R.id.roomSpinner); roomadapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,list); //第三步:为适配器设立下拉列表下拉时菜单样式。 roomadapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); //第四步:将适配器添加到下拉列表上 roomSpinner.setAdapter(roomadapter); //第五步:为下拉列表设立各种事件响应,这个事响应菜单被选中 roomSpinner.setOnItemSelectedListener(new Spinner.OnItemSelectedListener(){ @SuppressWarnings("unchecked") public void onItemSelected(AdapterView arg0,View arg1,int arg2,long arg3) { ………省略某些代码…………… }); numberadapter = new ArrayAdapter<String>(this,android.R.layout.simple_spinner_item,numberlist); ………省略某些代码…………… Button button_cancel=(Button)findViewById(R.id.button_cancel); button_cancel.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { finish(); } }); Button button_save=(Button)findViewById(R.id.button_save); button_save.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View v) { new AlertDialog.Builder(addexperiment.this) .setTitle("确认登记") .setMessage("时间:"+time+"\n"+ "节次:"+numberstring+"\n"+ "课程名:"+name+"\n"+ "实验名:"+coursenameString+"\n"+ "教师:"+teacher+"\n"+ "机房:"+room+"\n"+ "班级:"+classString ) .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton("拟定",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { // 编写解决提交实验代码 }}) .setNegativeButton("取消", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { finish();// 取消 } }) .show(); } }); } private void getTestRoom() { // TODO 获取机房信息 Thread roomExperiment = new Thread() { @Override public void run() { 多线程解决,避免ANR,………省略某些代码…………… }}; roomExperiment.start(); handler = new Handler() { @Override public void handleMessage(Message msg) { switch (msg.what) { case 1: 解决登记实验返回成果 ………省略某些代码…………… } }}; } private void checklogin() { getusernamefromsetting(); // 检查与否登录 if(usernameString.isEmpty()) { new AlertDialog.Builder(addexperiment.this) .setTitle("提示") .setMessage("请登陆,再继续!" ) .setIcon(android.R.drawable.ic_dialog_info) .setPositiveButton("登录",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int whichButton) { finish(); Intent loginIntent=new Intent(); loginIntent.setClass(addexperiment.this,loginActivity.class); startActivity(loginIntent); //finish(); // 编写解决shi代码 }}).setNegativeButton("返
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 初中其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服