版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
中央民族大学本科生毕业论文(设计)前言目前,Android系统已经成为全球应用最为广泛的手机操作系统,各大手机厂商纷纷转战Android领域,如三星、HTC等。2013年5月17日数据,Android移动操作系统的市场占有率已经达到75%。而且平板电脑也开始搭载Android系统,并有越演越烈的趋势。随着科技的发展,手机系统越来越成熟和智能化,它拥有强大的功能,并开始深入人类社会的各个领域,如上网、娱乐、工作等。在信息高速化的今天,智能手机已经成为大多数人类离不开的工具。在手机的受用人群当中,大多数集中在上班族和学生族中。对于校园用户,课程安排是非常重要的一个环节,合理的规划,不仅可以提高学习的效率,而且可以有效利用时间。在课堂上,我们经常会因为各种手机铃声的响起而打断课堂气氛,从而降低课堂质量。为此,我们不得不在每一堂课前把手机调振动或静音,费时又费力,而且还容易遗忘。对于大学生,作息安排比较自由而凌乱,上课地点和时间又不固定,还常常有临时课程的添加,这就更增加了我们的学习压力。基于以上原因,开发出这么一款集来电智能拒接和课程提醒于一身的软件。这款软件不仅可以上课期间自动静音或者振动,而且还可以对来电进行礼貌拒接。同时还具有上课、作业、日程等提醒功能。为老师和同学的学习生活提供方便,使我们更充分的利用课堂时间,规划我们的生活。目前,Android市场上,来电拒接的软件很多,但针对上课期间礼貌拒接的软件几乎没有。这款软件在实现普通课程表的基础之上,再创新性地结合来电的处理,从而更适应校园用户使用。Android技术和配置安装1.1Android系统概述Android系统是目前最流行的手机智能平台,在智能手机领域掀起了一股“Android风暴”。Google在2007年11月5日宣布与包括摩托罗拉、HTC、LG、三星等33家手机厂商、手机芯片提供商、软硬件供货商、移动运营商联合组成开放手机联盟(OpenHandsetAlliance),并发布了名为Android的开放手机软件平台。Android号称是首个为移动终端打造的真正开放和完整的移动软件,它主要包括应用程序、应用程序框架、Android运行时和库、Linux内核四部分组成。从目前的发展形势来看,Android系统因为它的开源性得到了很多移动设备生产商以及网络运营商的青睐,并大量运用到手机和平板电脑领域,有很好的发展前景。相比于其他的手机操作系统,Android有着自己非常巨大的优势:开放性:开发的平台允许任何移动终端厂商加入到Android联盟中来,并允许不同厂商可以根据自己的需求对平台进行定制和扩展,无需任何授权许可费用;挣脱运营商的束缚:随着EDGE、HSDPA这些2G至3G移动网络的逐步过渡和提升,手机可以随意接入网络。丰富的硬件选择:由于Android的开放性,众多的厂商会推出各具特色的多种产品,却不会影响到数据同步、甚至软件的兼容。不受任何限制的开发商:Android平台提供给第三方开发商一个十分宽泛、自由的环境,不会受到各种条条框框的阻扰。安装和配置在开始做项目之前,首先要搭建Android坏境,主要有以下几个步骤:JDK安装:Java运行的环境;Eclipse的安装:Android开发的平台;AndroidSDK安装:Android运行的环境;AndroidADT安装:安卓开发工具插件;创建AVD:创建模拟器。环境搭建完成之后,就可以开发Android项目,为了更好的效果,可以采用真机演示。系统分析2.1可行性分析Android系统发展十分迅速,不仅作为手机的操作系统,还快速发展到平板电脑领域,今后将会逐渐代替传统的手机桌面操作系统,这就意味着需要大量的移动应用程序。目前,Android市场上,也有很多类似课程提醒的软件,如影响力比较大的智能课程表、课程格子等,在课程的管理和提醒方面做得很完善,对人们生活学习的带来了很大的便捷。但是,这类软件往往只考虑到课程的管理和提醒功能,并没有涉及到对来电和手机情景模式的处理,而这恰恰是本软件的创新之处。在安卓市场上,也有很多软件涉及到对来电的处理,如来电智能应答、短信来电拦截专家、礼貌挂机、摩贝来电秘书等,这类软件在对来电的处理及回复方面都做得非常优秀,特别是礼貌挂机,不仅可以实现短信回复,还能实现免费语音回复。但是,此类软件针对的是大众人群,对于老师和学生,使用起来还是不方便。老师和学生的作息安排,是基于课程安排而定的,但是在目前安卓市场上并没有一款软件是根据课程安排而对来电的进行处理。因此,对于课程安排的开发和应用的改善就显得尤为重要。这款软件立足于课程表基本功能的实现,创新性的结合对来电的处理,旨在尽心为老师和同学服务,提高教学质量,为同学和老师打造一个相对安静的课堂环境。2.2需求分析这款软件是以Eclipse为开发平台,用Java语言开发的一个针对课堂来电拒接的应用程序。该软件不仅可以根据课程表时间段,对来电进行礼貌拒接并回复,而且还可以对课程和作业进行提醒,是一软方便又实用的应用程序,该应用程序要求能对来电进行判断,可以自定义回复内容,并对应用程序的数据可以实现增、删、改、查,从而实现应用程序的相关功能。根据软件的设计目标,可以把软件分成以下几个模块:课程表模块:主要实现一周课程的管理,并可以显示当天课程,具有提醒的功能。来电处理模块:根据课程表的时间段,实现对来电的处理并可以自定义回复内容。日程安排模块:显示当月的日历,可以管理日程。定时情景模块:根据课程表的时间段,定时切换手机的情景模式。倒计时模块:可以实现作业和考试倒计时,具有提醒功能。2.3系统功能分析2.3.1系统功能结构 根据本项目需求,我们可以把系统的总体功能分为课程表、倒计时、日程管理、来电处理、定时情景等五大功能。功能结构图如下图所示:图1系统功能结构图2.3.2系统功能需求课程管理:要求显示当天课程,按上课时间顺序排列,并提供管理一周课程的功能,实现课程的倒计时和定点提醒功能。来电处理:根据上课时间,智能拒接来电,并提供自定义回复内容。倒计时:用户可以根据自己的需求来设置倒计时,比如作业,考试等等,实现提醒功能。定时情景:根据上课时间来设置情景模式,比如振动、静音等。日程管理:能够显示当月日期和当天日程,并实现管理和提醒功能。系统设计3.1概要设计本系统主要采用SQLite数据库存储数据,使用多线程技术实现倒计时功能,结合Android闹钟机制实现定点提醒功能,采用Service服务实现上课静音功能,并结合上课时间对PhoneManager类进行处理,实现来电拒接功能。根据需求,设计的系统数据流图如下所示:图2系统数据流图3.2数据库设计3.2.1SQLite概述SQLite是一个轻量级关系型数据库,用于实现自包含、非服务式、零配置、事务化的SQL数据库引擎。它在2000年由D.RichardHipp发布,与其他的关系型数据库不同的是,它可以减少应用程序管理数据的开销,并且因为SQLite是嵌入式的,所以可移植性、跨平台性都很好,很容易使用。它能够支持Windows/Linux/Unix等主流的操作系统,同时能够跟很多程序语言相结合,比如C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。目前,SQLite已经成为世界上部署最为广泛的SQLite数据库引擎,常用在桌面电脑、移动终端手机、掌上电脑和MP3等领域。最近,搭载SQLite数据库的Android手表正在迅速发展,其强大的可视化性能和操作便利,给手表领域掀起了不小的风暴。3.2.2数据库表的设计对该软件所要实现的功能需求分析和设计,确定了软件数据库共需四张表,课程表(Course)、倒计时表(Alarm),日程表(Schedule),用户表(User)等。下面是数据库表的详细设计:Course表主要存储课程相关信息,包括名称、上课地点、上下课时间等,同时还把用户设定的提前提醒时间和是否需要开启提醒功能的数据存入当中。表1课程数据库表的设计(Course)列名数据类型说明c_idinteger课程编号c_nametext课程名称c_placetext上课地点c_teachertext授课老师c_time_startlong上课时间c_time_endlong下课时间c_weekinteger周次c_jieciinteger节次c_tiqianlong设置提前提醒的时间c_taginteger判断提醒是否打开Alarm表是倒计时表,里面存储的是需要倒计时的事件的一些信息,比如倒计时名称、地点、设定的时间,需要提前提醒的时间,还有判断提醒是否打开的标志位等。表2倒计时表的设计(Alarm)列名数据类型说明a_idinteger倒计时编号a_nametext计时名称a_placetext地点a_timetext设定的时间a_remarktext备注a_taginteger判断提醒是否打开Schedule是日程表,采用从日历当中输入时间,并存入日程的内容,设置提醒。表3日程表的设计(Schedule)列名数据类型说明s_idinteger日程编号s_contenttext日程内容s_timetext日程时间s_taginteger判断提醒是否打开User表是为了满足用户个性化需求,可以自己设置自己喜欢的风格,提高用户体验性。里面存储了一些用户的基本信息。表4用户表的设计(User)列名数据类型说明u_idinteger用户编号u_nametext用户名称u_qianmingtext个性签名u_agetext用户年龄u_remarktext备注编码及实现类4.1.1数据库操作类(db包): db包主要包括数据库创建类DBHelper.java、课程表的操作类CourseDBOperater.java、倒计时的操作类(AlarmDBOperater.java)等。DBHelper.java是创建数据库和更新数据库版本类,主要方法有:publicvoidonCreate(SQLiteDatabasedb):创建数据库onUpgrade:删除以前版本的数据库并建立新的数据库。CourseDBOperater.java是课程表操作类,里面封装了各种对课程表的操作方法,如:insert():添加课程表数据update():修改课程表数据updateTag(Stringid,intbooleanid):修改提醒标志位query():查询课程表数据,并实现升序排列ASD,返回值是Cursor类型。queryByWeek(Stringweek):根据星期查询数据,返回值是Cursor类型。getClassCount(Stringweek):获取每天的课程数,返回值是int类型。getClassById(Stringid):通过id获取对象,返回值是Cursor。queryboolean(Stringweek,intjieci_start,intjieci_end):判断某节课是否已经存在。Remindboolean():判断提醒是否已经开启,返回值是Boolean类型。delete(intid):通过id删除对象。AlarmDBOperater.java里封装的方法和CourseDBOperater.java差不多。4.1.2数据库常量类(volues包)和常用方法类(tools包): 项目开发过程中,有很多东西都是要重复使用的,为了减少代码的重复使用,将一些常用的数据和方法提取出来,单独存放。 Volues包存放的是一些常量数据,其中AlarmList和CourseList是存放倒计时和课程表的集合类,方便界面的调用。DBVolue.java封装的是课程表和倒计时表的名称,防止手动输入错误。 Tools包里主要包括Format.java、GetData.java、Lunar、TimeCountView,其中Format.java封装的是格式化时间的各种方法,GetData.java封装的是获取数据的方法,比如获取星期等。Lunar封装的是获取农历日期的方法。TimeCountView.java封装倒计时方法。 Format.java封装的方法主要有:jugeNumber(intnum):格式化输入的数字,输出格式mm。getFormatInputTime(inthour,intminute):把输入的时间转换为hh:mm格式。getAlarmTiqian(Stringtiqian):把提前设置转换为秒,返回值是long类型。getRemind(Longtiqian):获取提前设置时间的String类型。getStringDate(Longdate):把时间转换成hh:mm:ss格式。getTimeInterval(Stringdate):获取两个时间差,返回值是long类型。4.1.3广播接收类(receiver): 本项目的提醒功能都是基于广播实现的,比如实现上课提前提醒功能,通过值传递把上课时间和提前提醒的时间传递到广播实现类,广播实现类通过对时间的处理,结合Android闹钟机制,实现提醒功能。 其中,课程表广播实现类CourseReceiver.Java部分代码如下:publicclassCourseReceiverextendsBroadcastReceiver{ /** *所需要的值:1.上课时间时分2.提前提醒时间 */ longstart_time,tiqian_time; Stringweek,current_week,id; @Override publicvoidonReceive(Contextcontext,Intentintent) { start_time=Long.parseLong(intent.getStringExtra("start_time")); tiqian_time=Long.parseLong(intent.getStringExtra("tiqian_time")); week=intent.getStringExtra("week"); id=intent.getStringExtra("id"); current_week=GetData.GetWeek(); inthour=(int)(start_time/(60*60*1000));//拆分时分 intminite=(int)(start_time/(60*1000)%60); Calendarc=Calendar.getInstance(); intcurrent_hour=c.get(Calendar.HOUR_OF_DAY); //获取当前的时和分 intcurrent_minute=c.get(Calendar.MINUTE); intcurrent_time=current_hour*60*60+current_minute*60; longremind_time=start_time-tiqian_time; //减去提醒的时间Intentremind_intent=newIntent(context,CourseReceiverActivity.class);//跳转到AlarmReceiverActivity界面 remind_intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); booleanflag=true; //如果到了设定的提醒时间,就启动提醒的activity if(week==current_week)//判断当天 { if(remind_time<=current_time)//判断时间 { if(flag) { remind_intent.putExtra("tiqian_time",tiqian_time+"");//传递提醒时间便于设置提醒 context.startActivity(remind_intent); flag=false; } } }}4.1.4服务类(Service): 实现上课静音功能通过Service实现,首先现在Manifest.xml文件中注册:<serviceandroid:name="com.wwm.weike.service.QuietService"><intent-filter><actionandroid:name="com.wwm.service.QUIET_SERVICE"/></intent-filter></service>然后再需要启动服务的地方,开启Service。Intentintent2=newIntent();//启动自动静音的service intent2.putExtra("c_time_start",c_time_start+""); intent2.putExtra("c_time_end",c_time_end+""); intent2.putExtra("c_week",c_week+""); intent2.setAction("com.wwm.service.QUIET_SERVICE");其中开启静音模式在Service包中的QuietService.java类中:publicclassQuietServiceextendsService{ longcourse_start_time,course_end_time; Stringweek,current_week; @Override publicintonStartCommand(Intentintent,intflags,intstartId) { //声明一个获取系统音频服务的类的对象finalAudioManageraudioManager=(AudioManager)getSystemService(Service.AUDIO_SERVICE); //获取手机之前设置好的铃声模式 finalintorgRingerMode=audioManager.getRingerMode(); course_start_time=Long.parseLong(intent.getStringExtra("course_start_time"));//单位秒 course_end_time=Long.parseLong(intent.getStringExtra("course_end_time")); week=intent.getStringExtra("week"); current_week=GetData.GetWeek(); Calendarc=Calendar.getInstance(); intcurrent_hour=c.get(Calendar.HOUR_OF_DAY); //获取当前的时和分 intcurrent_minute=c.get(Calendar.MINUTE); intcurrent_time=current_hour*60*60+current_minute*60;//转换为秒 intcurrentRingerMode=audioManager.getRingerMode();//获取手机当前的铃声模式 if(week==current_week)//先判断星期 { if(course_start_time==current_time&¤tRingerMode!=AudioManager.RINGER_MODE_VIBRATE)//设置静音模式 { audioManager.setRingerMode(AudioManager.RINGER_MODE_VIBRATE); } elseif(course_end_time==current_time&¤tRingerMode==AudioManger.RINGER_MODE_VIBRATE) { audioManager.setRingerMode(orgRingerMode);//恢复之前的模式 } returnsuper.onStartCommand(intent,flags,startId);}系统功能的具体实现5.1课程表实现5.1.1课程操作实现 课程表的操作主要有增加、修改、删除、设置提前提醒时间、设置来电拒接功能、设置上课静音模式。 下图是本功能的用例图:5.1.2课程显示实现 主要功能是显示当天的课程,即根据星期来读取数据对象,并按照上课时间的前后顺序排列。同时,能够显示距离距离上课还有多长时间。 主界面主要功能:显示当天课程,并按上课时间升序排列。对课程进行增删查改。开启上课提醒服务。主界面采用图片轮播,并有时间日期查看,方便师生的使用。5.2来电设置实现 这是本系统的一大亮点之一,能够根据上课时间来设定是否开启来电拒接。同时可以设置自己的短信回复内容。主要功能有:选择短信回复内容;自定义回复内容;开启来电拒接服务,并有通知栏提醒。注:来电拒接服务需要系统权限。5.3日程管理实现 日程管理,是用户规划时间一个非常重要的概念,主要是将每天的日程安排在日期之中,便于随时查看。 日程管理所需要的功能如下,主要包括显示当月日期,并对有事件的日期进行标志,便于查看,同时还射有管理日程的操作方法和设置提醒功能。 为了符合本系统的风格特点,作者设计的日程管理界面如右图所示。 本模块主要包括的功能有:显示当月日期,左右滑动可以显示月份日期。对有事件的日期进行标志。对事件进行到点提醒。对事件进行操作管理。5.4倒计时实现 这一模块有较好的提醒界面和方便的操作性,主要服务于有倒计时需求的师生,比如作业提醒、考试提醒等等。当用户设定好提醒时间,系统会自动开启倒计时功能,在设定时间到来之前还可以设置提前提醒。 操作用例图如下:本模块主要的功能有:设置倒计时;倒计时的操作,包括增删查改。倒计时提醒。5.5定时情景实现 本模块是默认启动的,上课时间是学生和老师最重要的时间段,在此范围内不予许有闹钟铃声等打断上课,影响课堂质量。为了老师和同学能有一个良好的课堂环境,本系统默认启动上课自动静音功能。 其用例图如下图所示:系统特色6.1功能特色 目前在Android市场上,结合上课时间对来电处理的应用很少很少,而大量的课程表软件几乎没有涉及到对来电和情景模式的处理,这恰恰是本系统的一大特色。老师和学生的作息安排,是基于课程安排而定的,有效利用课程时间是非常重要的一个环节。本系统立足于此目标之上,能够帮助老师和同学有效利用课堂时间,并保证课堂质量,同时为了使用户更方便的规划自己的时间,还附带了一些很实用的功能,比如倒计时、日程管理等等,其目的就是为了更好的服务广大的校园用户。6.2界面特色6.2.1UI美化如今Android市场非常火爆,各种应用层出不穷,但人们对于应用的挑剔却越来越强烈,这得益于人们的审美观在不停的上升。一款好的软件,给人的第一印象就是界面的UI设计比其他软件较美观,同时还具有良好的操作性,这样使用的人数就会上升。UI美化是评价一款软件好与不好的一个非常重要且直观的因数。比如一款软件在功能上设计的非常完善,但在界面的美观方面做得不好,那么使用的人数肯定不会太多。从而可以看出,人们对于美学是非常挑剔的。本系统运用一些主流UI技术,如图片轮播、左右抽屉滑动效果等,在实现主要功能的目标上,尽量的使得界面更加简洁和美观。为此,作者花费了大量的时间来设计界面。所设计的界面比较美观大方,能够把主要的功能凸显出来,具有较高的用户体验性。6.2.2自定义对话框 对话框是一个优秀系统必须考虑和着重设计的一个环节,良好的选择框不仅可以大大提高输入数据的效率,并获得用户的好感,还可以减少界面的排布,是的界面更加简洁美观。为了使本系统使用性和用户体验性更具有特色,作者为系统量身设计了一套选择对话框,比如时间选择对话框、节次选择框、提醒时间对话框等。关键技术和实现难点7.1关键技术多线程处理技术。Broadcast广播机制。ITelephony反射原理。Notification管理器。Alarm闹钟机制。时间段的处理。对PhoneManager类处理。Service服务处理。7.2实现难点数据库的存储和操作,表与表之间的联系。由于涉及表的操作比较大,处理起来很麻烦。多线程倒计时的应用。在倒计时的处理上面,采用多线程技术,但由于接触的比较少,处理起来很困难。对来电的处理。包括获取来电号码、通话状态(响铃、通话、挂断)、实施挂断及自定义回复信息等。由于Androidsdk升级到2.0后,没有现成的API来挂断电话。调用ITelephony的隐藏方法来实现,用ITelephnoy接口类型对象调用endCall()方法挂断电话。对时间段的处理。对时间的处理一直是Android开发的一个很大的难题,包括对时间的存储、转换、求差、倒计时、定点等等。定点提醒的实现。采用闹钟机制来实现定点提醒,但要灵活的根据课程表的时间来处理很困难。广播接收的实现。使用长驻型广播来实现课前提醒功能,结合Alarm机制,每隔一分钟发送一次广播,定时刷新数据库数据。广播接收要结合时间的处理,就变得很困难。结语经过了一个学期的努力,在指导老师的帮助下,该系统的设计与实现已经基本完成。本次开发的是一个手机客户端的Android类应用软件,主要功能在于实现上课与来电拒接功能的结合。此次开发由于用到的技术多而杂,一直在边学边做,在开发进度上面比较缓慢。本次论文主要从该系统的设计背景、可行性分析、需求分析及软件的总体设计上面进行分析研究,并完成了软件的设计实现,总结了该系统的特色之处和实现的难点。总结起来,主要完成以下工作:1、分析了该类软件的市场需求,明确了该系统的设计目标。2、根据需求分析,完善系统功能,画出系统功能结构图和数据流图。3、分析系统各个模块的功能需求,确定系统开发所需要的技术,并设计相关数据库。4、编码实现系统的功能,并美化界面,提高用户体验性。5、总结系统开发的关键技术和实现难点。6、总结该系统的特色之处。 这次毕业设计,很考验自己的解决问题的能力,在设计过程中,碰到了很多难题,走了不少的弯路,最后都通过认真的排查和上网搜集资料等方法逐一解决。但很享受解决问题的过程,不仅可以提升自己实践动手能力,还学会了很多学习的方法,更弥补了自己在专业知识上的缺陷。虽然,毕业设计已经初步完成,但还有很多改善之处:软件操作不够简单。界面设计不够简洁。可以拓展语音回复。完善软件功能设计。参考文献吴亚峰,杜化美,苏亚光.Android编程典型实例与项目开发.电子工艺出版社,2011年10月.李金霖,赖超,龙曦,吴林志.基于Android平台的手机日程管理系统.《计算机与数字工程》2011年03期.高亮.基于Android平台的日历提醒软件的设计与实现.《中原工学院学报》2011年03期.王石磊,吴峥.Android多媒体应用开发实战详解.人民邮电出版社.2012年8月.吴亚峰,索依娜.Android核心技术与实例详解.电子工艺出版社,2012年9月.HYPERLINK"/Article/%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20http://Sea
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 危废仓库防雷防静电方案
- PETB全国英语等级考试二级模拟试题(含详细答案解析)
- 2026注册安全工程师《建筑施工安全》考试真题及答案解析
- 地下管线巡检工安全操作规程
- 功能性消化不良合并失眠综合干预共识
- 2025-2026学年河北省沙河市初中政治七年级期末上册自测高频题(附答案)
- (2026)新版保安员考试试题附含答案
- OCP 19c 数据库认证考试试题及详细答案解析
- 电力防汛排涝应急处置方案
- 带状疱疹后神经痛全程管理专家共识(2025版)
- 皮肤沙龙活动方案
- 防火门更换施工方案
- 货物买卖合同模板(CIF条款)4篇
- 贵州措施计价管理办法
- 学堂在线 海权与制海权 结业考试答案
- 2023版押品考试题库含答案
- 2024年房地产经纪协理考试题库(考试直接用)
- 水利建设管理
- 冲上云霄-飞机鉴赏知到智慧树章节测试课后答案2024年秋上海工程技术大学
- 手术三方核查正确执行率
- 百乐眠胶囊治疗失眠症临床应用专家共识-公示稿
评论
0/150
提交评论