版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、-"移动通信程序设计"课程设计题 目 基于andriod的记事功能的日历院 系专 业学生学 号二一四年六月九日. z-. z-目录1概述12 总体设计23详细设计33.1、绘画根底53.2框架绘画53.3 核心技术103.4 触摸事件143.5 键盘操作164进展编码:184.1登录184.2事情记录204.3 对闹铃的设置214.4记事列表234.5 闹铃244.6 对记事的编辑255 完毕语266参考文献27实现基于Android 的日历及记事功能系统摘要:Android 作为目前较为流行的智能手机操作系统已成为大多数人的首选。在美国乃至世界的很多地方的出货量已经超越I
2、phone,成为世界上最大智能手机操作系统。因此,世界各地的程序员都跃跃欲试地想学习Android 的开发,并希望从中捞得属于自己的第一桶金。在此给出一个基于Android 的日历系统的完整实现过程。关键词:Android;日历;记录;提醒1概述在日常工作中,特别强调时间的重要性,需要完成的事情也越来越多,因此对日历的需求也是巨大的,由于在日常生活中我们不可能将随身携带,我们可以将软件做到移动终端,在此情形下,基于andriod的技术带有记事功能的日历就诞生。要实现的日历除了常规的日历功能外, 还可以显示与当前日期相关的信息, 如今天是今年的第几周等等。效果如图1、图2 所示。图1 在手机上所
3、显示的日历图标图2 日历的主界面2总体设计对于andriod的开发的日历的应该一开场显示日历,然后登陆,进展记事,主要流程图如下:开场日历界面是否记事 N Y是否首次登陆输入密码 N Y设置密码需要做的事情是否设置闹铃设置闹铃 Y N记事列表是否编辑 Y是否闹铃设置闹铃 Y是否删除 N删除 Y N退出完毕3详细设计3.1、绘画根底由于实现的日历系统要涉及文本技术,因此,要简单介绍Android 的文本技术。通常在Android.view.View 或其子类的onDraw 方法中进展。该方法的定义如下:protected void onDraw(Canvas canvas);其中Canvas 对
4、象提供了大量用于绘图的方法,这些方法主要包括绘制像素点、直线、圆形、弧、文本,这些都是组成复杂图形的根本元素。如果要画更复杂的图形,可以采用组合这些图形根本元素的方式来完成,下面来看一下文本根本方法。绘制te*t 指定的文本方法是:public native void drawTe*t (String te*t, float *, float y, Paintpaint);绘制te*t 指定的文本。文本中的每一个字符的起始坐标由pos 数组中的值决定方法是:public void drawPosTe*t(String te*t, float pos, Paint paint);绘制te*t 指
5、定的文本。te*t 中的每一个字符的起始坐标由pos 数组中的值决定。并且可以选择te*t 中的*一段连续的字符绘制的方法是:public void drawPosTe*t(char te*t, int inde*, int count, float pos,Paint paint);参数的含义如下:(1) te*t: drawTe*t 方法中的te*t 参数表示要绘制的文本。drawPostTe*t 方法中的te*t 虽然也表示要绘制的文本,但每一个字符的坐标需要单独指定。如果未指定*个字符的坐标,系统会抛出异常。(2) *:绘制文本的起始点的横坐标。(3) y:绘制文本的起始点的纵坐标。(
6、4) inde*:选定的字符集合在te*t 数组中的索引。(5) count:选定的字符集中字符个数。3.2框架绘画从图2可以看出,日历的上部是3 行文字,显示了当前日期的相关信息。下面来看看如何布局显示这些文字的组件。在日历主界面的上半部需要放置4 个组件, 1 个ImageView组件和3 个Te*tView 组件。其中ImageView 组件用于显示左上角的图像。3 个Te*tView 组件用于显示当前日期的信息。由于目前还没有当前日期的信息。因此,这3 个Te*tView组件暂时设置了固定的信息。下面开场在main.*ml 文件中设置这4 个组件。在修改main.*ml 文件的容之前,
7、先复制一个calendar.png 文件,作为日历的logo 修改AndroidManifest.*ml 文件中的应用程序图标。建立一个Calendar 工程,并编写main.*ml 文件。<"*ml version="1.0" encoding="utf-8"><LinearLay out *mlns:android = "schemas.android./apk/res/android"android:orientation = "vertical" android:layout_w
8、idth = "fill_parent"android:layout_height="fill_parent" android:background="color/calendar_background" >< ! - android:background = "drawable/background" -><RelativeLayout android:id = " +id/calHeader" android:layout_width="fill_paren
9、t"android:layout_height="70dp"><ImageView android:id = " +id/ivLogo" android:src="drawable/calendar_bak"android:layout_width="dimen/logo_size" android:layout_height="dimen/logo_size"android:layout_margin="dimen/margin" /><L
10、inearLayout android:layout_width="fill_parent"android:layout_height = "wrap_content" android:layout_toRightOf="id/ivLogo"android:layout_marginTop = "dimen/margin"android:orientation="vertical" ><Te*tView android:id = " +id/tvMsg1" and
11、roid:layout_width="fill_parent"android:layout_height = "wrap_content"android:te*tColor="color/te*t_color" /><Te*tView android:id = " +id/tvMsg2"android:layout_width="fill_parent"android:layout_height = "wrap_content"android:te*tColor=
12、"color/te*t_color" /><Te*tView android:id = " +id/tvMsg3" android:layout_width="fill_parent"android:layout_height = "wrap_content"android:te*tColor="color/te*t_color" /></LinearLayout></RelativeLayout></LinearLayout>下面在Main
13、 类的Oncreate 方法中编写代码装载main.*ml:public void onCreate(Bundle savedInstanceState)super.onCreate(savedInstanceState);LinearLayout mainLayout = (LinearLayout) getLayoutInflater().inflate(R.layout.main, null);setContentView(mainLayout);/ 需要向mainLayout 中参加日历网络在绘制日历之前,要先介绍一下日历绘制的方法。虽然从底层技术来看,绘制日历是在onDraw 方法中
14、完成的。但在本系统中将要绘制的局部分成了很多块。而这些要绘制的块都需要放在一个叫CalendarView 的类中,代码如下:public class CalendarView e*tends Viewprivate Activity activity;Overrideprotected void onDraw(Canvas canvas)public CalendarView(Activity activity)super(activity);this.activity = activity;在编写完CalendarView 类后,需要在Main 类中定义该类的变量,并在onCreate 方法
15、中创立类的对象实例,代码如下:private CalendarView calendarView;calendarView = new CalendarView(this);mainLayout.addView(calendarView);在前面已经介绍过,在本系统中会将要绘制的日历分成假设干块,而每一块都需要有同样的接口,以便统一绘制它们。因此,这些块都要实现一个CalendarElement 接口。这些要绘制的块包括日历边框、网络、日历头等,而在CalendarElement 接口中有一个draw 方法。在绘制日历元素时只需调用draw 方法即可。在后面的实现中会看到更多实现Calenda
16、rElement接口的类,下面先来编写CalendarElement 接口。package erfaces;import android.graphics.Canvas;public interface CalendarElementpublic void draw(Canvas canvas);package erfaces;import android.graphics.Canvas;public interface CalendarElementpublic void draw(Canvas canvas);
17、现在需要一个总的类来绘制上述的这些块。这个功能由Calendar 类来完成。Calendar 是一个总的日历元素类,在该类的draw 方法中绘制了所有的日历元素。Calendar 是第一个实现CalendarElement 接口的类,代码如下:public class Calendar e*tends CalendarParent/ elements 用于保存多功能日历中所有的日历元素private ArrayList <CalendarElement > elements = newArrayList<CalendarElement>();public Calenda
18、r(Activity activity, View view)super(activity, view);Overridepublic void draw(Canvas canvas)/ 在draw 方法过扫描elements 变量来获得所/有日历元素的对象,并调用draw 方法绘制这些日历元素for (CalendarElement ce : elements)ce.draw(canvas);在CalendarView 类中需要调用Calendar 类来绘制日历,因此,需要在CalendarView 类中创立Calendar 类的对象实例,并调用draw 进展绘制,代码如下:public C
19、alendar ce;Overrideprotected void onDraw(Canvas canvas)ce.draw(canvas);public CalendarView(Activity activity)ce = new Calendar(activity, this);下面编写第一个绘制元素类: Border。Border 类用于绘制日历的边框,该类是日历元素类,需要实现CalendarElement接口,不过该类只要继承刚实现的CalendarParent 类即可。public class Border e*tends CalendarParentpublic Border(
20、Activity activity, View view)super(activity, view);/ 注意,一定要4 个字节的颜色值,包括一个透明色paint.setColor(0*FFFFFFFF);Overridepublic void draw(Canvas canvas)float left = borderMargin;float top = borderMargin;float right = view.getMeasuredWidth() - left;float bottom = view.getMeasuredHeight() - top;canvas.drawLine(
21、left, top, right, top, paint);canvas.drawLine(right, top, right, bottom, paint);canvas.drawLine(right, bottom, left, bottom, paint);canvas.drawLine(left, bottom, left, top, paint);Log.d("draw",String.valueOf(right);Grid 类用于绘制日历的网格,该类是日历元素类,需要继承CalendarParent 类。public class Grid e*tends Cal
22、endarParentprivate float top, left;Overridepublic void draw(Canvas canvas)left = borderMargin;top = borderMargin + weekNameSize + weekNameMargin *2 + 4;float calendarWidth = view.getMeasuredWidth() - left * 2;float calendarHeight = view.getMeasuredHeight () - top -borderMargin;float cellWidth = cale
23、ndarWidth / 7;float cellHeight = calendarHeight / 6;paint.setColor(0*FFFFFFFF);canvas.drawLine(left, top, left + view.getMeasuredWidth()- borderMargin * 2, top, paint);paint.setColor(0*FF666666);/ 画横线for (int i = 1; i < 6; i+)canvas.drawLine (left, top + (cellHeight) * i, left + calendar-Width,to
24、p + (cellHeight) * i, paint);/ 画竖线for (int i = 1; i < 7; i+)canvas.drawLine(left + cellWidth * i, top, left + cellWidth * i,view.getMeasuredHeight() - borderMargin, paint);public Grid(Activity activity, View view)super(activity, view);/ TODO Auto-generated constructor stubWeek 类用于显示日历网格上方的星期文本:pu
25、blic class Week e*tends CalendarParentprivate String weekNames = new String "日", "一", "二", "三", "四", "五", "六" ;private int weekNameColor;public Week(Activity activity, View view)super(activity, view);weekNameColor = Color.WHITE;pa
26、int.setTe*tSize(weekNameSize);Overridepublic void draw(Canvas canvas)float left = borderMargin;float top = borderMargin;float everyWeekWidth = (view.getMeasuredWidth () - borderMargin* 2) / 7;paint.setFakeBoldTe*t(true);for (int i = 0; i < weekNames.length; i+)if (i = 0 | i = weekNames.length - 1
27、)paint.setColor(sundaySaturdayColor);elsepaint.setColor(weekNameColor);left = borderMargin + everyWeekWidth * i+ (everyWeekWidth - paint.measureTe*t (weekNames i) /2;canvas.drawTe*t(weekNamesi, left, top + paint.getTe*tSize()+weekNameMargin, paint);3.3核心技术前面介绍了绘制日历的根本方法,现在将逐步接触到日历系统的核心技术。首先来看一下日历中如何
28、表示日期。在Grid 类中的days 数组保存了42 个数字。这42 个数字就是日历主界面中的6*7 个方格中的数字。这些数字分为两局部,中间的局部就是当前月中的天数。这些天数最小是28 天,最大是31 天。在这组数字的前后可以包含了上月的局部月末天数和下月局部月初天数。当单击或触摸上月或下月的天数时,日历会跳到上月或下月。这里容在后面将详细介绍。只介绍如何将这些数字绘制到这42 个方格中。为了区别这两类数字。将在上月和下月的相应天数中加星号*,代码如下:private String days = new String42;public int currentYear, currentMont
29、h;public int currentDay = -1, currentDay1 = -1, currentDayInde*= -1;private java.util.Calendar calendar = java.util.Calendar.getInstance();在Grid 类的构造方法中初始化变量的代码如下:currentYear = calendar.get(calendar.YEAR);currentMonth = calendar.get(calendar.MONTH);下面来编写一个getMonthDays 方法,该方法用来获得指定月份的天数。这个方法也是绘制指定月份的
30、日历的根底,代码如下:private int getMonthDays(int year, int month)month+;switch (month)case 1:case 3:case 5:case 7:case 8:case 10:case 12:return 31;case 4:case 6:case 9:case 11:return 30;case 2:if (year % 4 = 0) && (year % 100 ! = 0) | (year %400 = 0)return 29;elsereturn 28;return 0;下面到了关键时刻,需要根底出当前月的
31、天数,以及上一月和下一月落在本月初和本月末的天数。并将其放在days 数组中。代码如下:private void calculateDays()/ 将当前日历设为指定月份的第一天calendar.set(currentYear, currentMonth, 1);/ 获得指定月份的第1 天是当前周的第几天int week = calendar.get(calendar.DAY_OF_WEEK);int monthDays = 0;int prevMonthDays = 0;/ 获得当前月有多少天monthDays = getMonthDays(currentYear, currentMonth
32、);/ 如果当前月是一年中的第一个月,则获得上一年最后一月/也就是12 月的天数if (currentMonth = 0)prevMonthDays = getMonthDays(currentYear - 1, 11);/ 否则,获得指定月上一月的天数elseprevMonthDays = getMonthDays (currentYear, current-Month - 1);for (int i = week, day = prevMonthDays; i > 1; i-, day-)daysi - 2 = "*" + String.valueOf(day);
33、/ 设置指定月在这里是当前月的天数for (int day = 1, i = week - 1; day <= monthDays; day+,i+)daysi = String.valueOf(day);if (day = currentDay)/ 获得当前日在days 数组中的索引currentDayInde* = i;/ 设置下一月显示在本月日历后面的天数for (int i = week + monthDays - 1, day = 1; i < days.length;i+, day+)daysi = "*" + String.valueOf(day)
34、;下面的代码是本例中最核心的局部,在onDraw 方法中绘制日历的主界面,代码如下:/ 填充days 数组calculateDays();java.util.Calendar calendar = java.util.Calendar.getInstance();int day = calendar.get(calendar.DATE);int myYear = calendar.get(calendar.YEAR),Int myMonth = calendar.get(calendar.MONTH);calendar.set(myYear, myMonth,1);int week = cal
35、endar.get(calendar.DAY_OF_WEEK);boolean flag = false;在ondraw 方法中添加绘制日历的代码2:for (int i = 0; i < days.length; i+)today = false;int row = i / 7;int col = i % 7;String te*t = String.valueOf(daysi);/ 如果日历是周日、周六,并且是上一月和下一月的周六和周/日if (i % 7 = 0 | (i - 6) % 7 = 0) && te*t.startsWith("*")
36、paint.setColor(0*FF990000);else if (i % 7 = 0 | (i - 6) % 7 = 0)paint.setColor(sundaySaturdayColor);else if (te*t.startsWith("*") / 非周六周日,但为上一月的日期paint.setColor(0*FF999999);elsepaint.setColor(0*FFFFFFFF); / 普通日历/ 去掉上月一下月日期前的星号te*t = te*t.startsWith("*") " te*t.substring(1) :
37、 te*t;paint.setTe*tSize(15);float te*tLeft = left + cellWidth * col+ (cellWidth - paint.measureTe*t(te*t) / 2;float te*tTop = top + cellHeight * row+ (cellHeight - paint.getTe*tSize() / 2 + 11;/ 绘制方格中的文字canvas.drawTe*t(te*t, te*tLeft, te*tTop, paint);/ 会战表示当前日历的图像if (myYear = currentYear &&
38、myMonth = currentMonth&& i = todayInde*)paint.setColor(Color.RED);Bitmap bitmap = BitmapFactory.decodeResource(activity.getResources(), R.drawable.day);Rect src = new Rect();src.left = 0;src.top = 0;src.right = bitmap.getWidth();src.bottom = bitmap.getHeight();Rect dst = new Rect();dst.left
39、= (int) (left + cellWidth * col);dst.top = (int) (top + cellHeight * row);dst.bottom = (int) (dst.top + cellHeight + 1);dst.right = (int) (dst.left + cellWidth + 1);/ 绘制表示当前日期的图像canvas.drawBitmap(bitmap, src, dst, paint);3.4触摸事件现在为日历添加一系列动画。首先需要添加的是日历的触摸事件。由于所实现的日历都是通过绘制完成的,因此,在触摸时必须要判断触摸的位置,以确定触摸的是
40、日历的哪一局部。例如,触摸的是哪一天。下面来看看如何为日历添加触摸事件。首先添加两个变量,用于保存当前触摸的坐标。默认值都是-1,表示用户还未触摸:private float cell* = -1, cellY = -1;再加两个setter 方法用来设置这个值:public void setCell*(float cell*)this.cell* = cell*;public void setCellY(float cellY)this.cellY = cellY;下面来编写一个isBoundary 方法,用来判断用户是否触摸了非日历网络局部。public boolean inBoundar
41、y()/ 判断边界if (cell* < borderMargin| cell* > (view.getMeasuredWidth() - borderMargin)| cellY < top| cellY > (view.getMeasuredHeight() - borderMargin)return false;elsereturn true;下面在CalendarView 类中添加一个触摸事件方法public boolean onTouchEvent(MotionEvent motion)ce.grid.setCell*(motion.get*();ce.gri
42、d.setCellY(motion.getY();if (ce.grid.inBoundary()this.invalidate();return super.onTouchEvent(motion);现在来修改Grid 类,在该类中需要获得农历信息,这是一个现成的类库在文中提供的源代码中可以找到, Lunar类,可以直接使用。private Lunar lunar = new Lunar();private int today;/ 保存月的名称一至十二月private String monthNames = new String12;private Te*tView tvMsg1;priva
43、te Te*tView tvMsg2;private Te*tView tvMsg3;由于系统中需要使用月份信息,因此,需要在resvalues目录中建立一个values.*ml 文件,并输入要用到的月份信息。<string-array name="month_name"><item>一月</item><item>二月</item><item>三月</item><item>四月</item><item>五月</item><item>
44、六月</item><item>七月</item><item>八月</item><item>九月</item><item>十月</item><item>十一月</item><item>十二月</item></string-array>下面继续修改Grid 类,在构造方法中添加如下代码:today = currentDay;tvMsg1 = (Te*tView) activity.findViewById(R.id.tvMsg1);
45、tvMsg2 = (Te*tView) activity.findViewById(R.id.tvMsg2);tvMsg3 = (Te*tView) activity.findViewById(R.id.tvMsg3);/ 装载刚刚定义的资源monthNames = activity.getResources().getStringArray(R.array.month_name);在切换到相应的日期后,需要在屏幕的正上方显示当前日期的信息。显示的容如图1 所示。这些功能由updateMsg 方法实现,代码如下:private void updateMsg(boolean today)Stri
46、ng monthName = monthNamescurrentMonth;String dateString = "SimpleDateFormat sdf = new SimpleDateFormat ("yyyy年m 月d 日");java.util.Calendar calendar = java.util.Calendar.getInstance();calendar.set(currentYear, currentMonth, currentDay);dateString = sdf.format(calendar.getTime();String l
47、unarStr = "lunar.setDate(calendar.getTime();lunarStr = lunar.getAnimalString() + "年("lunarStr += lunar.getCyclicaYear() + "年)"lunarStr += lunar.getLunarMonthString() + "月"lunarStr += lunar.getLunarDayString();String term = lunar.getTermString();if (! ".equals(
48、term)term += " "monthName += " 本月第" + calendar.get(java.util.Calendar.WEEK_OF_MONTH)+ "周"tvMsg1.setTe*t(monthName);if (today)dateString += "(今天)"dateString += " 本年第" + calendar.get(java.util.Calendar.WEEK_OF_YEAR)+ "周"tvMsg2.setTe*t(dateStr
49、ing);tvMsg3.setTe*t(term + lunarStr);3.5键盘操作介绍如何通过手机按键来操作日历,也就是通过按建来移动日历。另外一个功能是当日历移动到上月或下月的日期时切换到上月或下月的日历。下面看看如何通过按键来操作日历,首先要在Grid 类中添加几个变量,用来控制当前的日历坐标。private int currentRow, currentCol;private boolean redrawForKeyDown = false;在使用键盘来控制日历时,当按下手机按键的上、下、左、右时,会调用setCurrentRow、setCurrentCol 方法来更新当前的坐标横
50、、纵坐标。setCurrentRow 方法的代码如下:public void setCurrentRow(int currentRow)redrawForKeyDown = true;cell* = -1;cell* = -1;if (currentRow >= 0 & currentRow < 6)this.currentRow = currentRow;setCurrentCol 方法的代码如下:public void setCurrentCol(int currentCol)redrawForKeyDown = true;cell* = -1;cell* = -1;i
51、f (currentCol < 0)if (currentRow > 0)this.currentCol = 6;setCurrentRow(-currentRow);elsethis.currentCol = 0;else if (currentCol > 6)this.currentCol = 0;setCurrentRow(+currentRow);elsethis.currentCol = currentCol;最后修改CalendarView 类的代码,参加键盘触摸事件,代码如下:Overridepublic boolean onKeyDown(int keyCod
52、e, KeyEvent event)switch (keyCode)case KeyEvent.KEYCODE_DPAD_UP:ce.grid.setCurrentRow(ce.grid.getCurrentRow() - 1);break;case KeyEvent.KEYCODE_DPAD_DOWN:ce.grid.setCurrentRow(ce.grid.getCurrentRow() + 1);break;case KeyEvent.KEYCODE_DPAD_LEFT:ce.grid.setCurrentCol(ce.grid.getCurrentCol() - 1);break;c
53、ase KeyEvent.KEYCODE_DPAD_RIGHT:ce.grid.setCurrentCol(ce.grid.getCurrentCol() + 1);break;invalidate();return true;4进展编码:4.1登录进入一天记事的功能,在一开场设置密码,到达的保护个人的隐私的效果。我们先看看效果是怎么样的,如图3所示:图3 设置密码将获取的密码进展匹配,只有在两次密码一样才能跳转到记事页面,否则提出错误的信息:主要代码如下:public void onCreate(Bundle bundle)super.onCreate(bundle);db = new DB
54、Oper(this);setContentView(R.layout.password_manage);et1 = (EditTe*t)findViewById(R.id.new_password);et2 = (EditTe*t)findViewById(R.id.repeat_password);button = (Button)findViewById(R.id.save_password);button.setOnClickListener(new Button.OnClickListener()public void onClick(View v) String new_pwd =
55、et1.getTe*t().toString();String repeat_pwd = et2.getTe*t().toString();if(new_pwd=null|new_pwd.equals(")Toast.makeTe*t(PasswordManage.this, R.string.password_is_null, Toast.LENGTH_LONG).show();elseif(new_pwd.equals(repeat_pwd)if(db.getPwd().equals(")db.insertPwd(new_pwd);Toast.makeTe*t(Pass
56、wordManage.this, R.string.password_set_success, Toast.LENGTH_LONG).show();toNoteList();elsedb.updatePwd(new_pwd);Toast.makeTe*t(PasswordManage.this, R.string.password_change_success, Toast.LENGTH_LONG).show();PasswordManage.this.setResult(CHANGE_PWD_SUCCESS);PasswordManage.this.finish();elseToast.makeTe*t(PasswordManage.this, R.string.p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《天地为庐 赵士林》现代文阅读答案
- 2025年服装电商运营(线上店铺运营)试题及答案
- 保洁员办公区域清洁评估试题及答案
- LED灯管检验考试试题及答案
- 2026年辽宁省锦州市高职单招职业技能考试模拟试卷及答案详解(典优)
- 2024年陕西国防工业职业技术学院高职单招职业适应性测试考试模拟试卷及参考答案详解(黄金题型)
- 2024年四川邮电职业技术学院高职单招职业技能考试题库及参考答案详解(培优)
- 2025年铜川药王山技师学院单招综合素质考试模拟试卷【有一套】附答案详解
- 2024年浙江省高职单招职业适应性测试考试题库附完整答案详解【夺冠系列】
- 2026环保工程师考试报名费用标准试题及答案
- 拆除储罐施工方案
- 防范非法网贷培训课件
- 2025年文化旅游项目申报材料撰写指南方案
- 逆向退货管理办法
- 农村儿童手机依赖问题小组干预策略研究
- 防灾避难场所设计规范
- 口服给药操作技能
- DL∕T 5097-2014 火力发电厂贮灰场岩土工程勘测技术规程
- 照明与健康人因工程学研究
- 山东会展业发展研究
- 房屋装修简单合同
评论
0/150
提交评论