用XML做通讯录实验报告
XML同学录实验报告

二 实验要求
设计一个同学通讯录显示网页,以表格的形式进行显示,并能够
分页显示。当点击表格中某个同学的通讯信息时,能够单独显示该同
学的详细通讯信息。同学的通讯信息用 XML 文档存储。
也可以设计其它信息的显示网页,要求同上通讯录显示网页。
三 实验原理
XML 数据岛是指嵌入 HTML 文档中的扩展标记信息。XML 数据
信息科学与工程学部 XML 基础 实验报告
年级 学号
姓名
成绩
专业
实验地点
指导教师
实验项目 XML 数据岛与 HTML 的绑定 实验日期
一 实验目的
1.理解 XML 数据岛和数据源对象的概念;
2.掌握数据绑定的方法;
3.熟悉 HTML 文档中嵌入 XML 数据的方法;
4.掌握 HTML、脚本语言与 XML 结合的方法。
<QQ>53726486</QQ> </student > <student id="0036" sex="男" amount="100" remain="无" discount="8.3">
<name>王铭铭</name> <banji>软件 1 班</banji> <add>河大新区</add> <tel>15837264527</tel> <hometown>唐山</hometown>
<QQ>7346383</QQ> </student > </students> 2、HTML 文档中嵌入 XML 数据,XML 数据岛与 HTML 的绑定主要代码如下:
安卓通讯录实训报告

安卓实训设计报告安卓通讯录设计题目:安卓通讯录班级:姓名:学号:指导老师:日期: 2012年6月7日容要求一、题目分析,功能要求。
1.1 实验目的熟悉Android软件开发的基本架构利用Eclipse和ADT插件设计通讯录1.2 功能本手机通讯录工具主要实现五大功能:联系人的查询:字段查询,分组查询,字母排序查询;增加、删除联系人以及修改联系人信息;导入、导出联系人;发送联系人信息;设置。
二、实验设计2.1 UI设计我们用一个ListView来显示整个通讯录,其中用TextView显示每一记录,他们的xml文件分别为:main.xml(通讯录主界面),addres.xml(添加联系人界面),list_item.xml(浏览联系人界面),find.xml(查找联系人界面)。
2.2功能的设计为了在主界面中浏览联系人的信息,并且创建主要菜单栏,我们设计了MainActivity类,主要用于显示联系人信息和菜单栏,通过菜单栏,实现通讯录的相关功能。
AddressBook类主要是为了实现联系人的添加功能,并且实现信息的保存后跳转到主界面。
Findactivity类主要是为了实现联系人的查找功能,输入联系人的,点击查找按钮,显示所查联系人的相关信息。
三、实验程序四、实验效果图五、总结通过设计该通讯录,主要学习了UI设计、数据库的综合操作、动态菜单的使用以及各种权限的注册。
通过本次设计,使我对Android平台的数据库操作有了更进一步的理解,同时也对Android系统有了更深入的了解。
附录一//定义数据public class ContactColumn implements BaseColumns{public ContactColumn(){}//列名public static final String NAME = "name"; //public static final String MOBILENUM = "mobileNumber"; //移动public static final String HOMENUM = "homeNumber"; //家庭public static final String ADDRESS = "address"; //地址public static final String EMAIL = "email"; //public static final String BLOG = "blog"; //博客//列索引值public static final int_ID_COLUMN = 0;public static final int NAME_COLUMN = 1;public static final int MOBILENUM_COLUMN = 2;public static final int HOMENUM_COLUMN = 3;public static final int ADDRESS_COLUMN = 4;public static final int EMAIL_COLUMN = 5;public static final int BLOG_COLUMN = 6;//查询结果public static final String[] PROJECTION ={_ID,NAME,MOBILENUM,HOMENUM,ADDRESS,EMAIL,BLOG,};}public class DBHelper extends SQLiteOpenHelper{public static final String DATABASE_NAME = "mycontacts.db";//数据库名public static final int DATABASE_VERSION = 2; //版本public static final String CONTACTS_TABLE = "contacts"; //表名//创建表private static final String DATABASE_CREATE ="CREATE TABLE " + CONTACTS_TABLE +" ("+ ContactColumn._ID+" integer primary key autoincrement,"+ +" text,"+ ContactColumn.MOBILENUM+" text,"+ ContactColumn.HOMENUM+" text,"+ ContactColumn.ADDRESS+" text,"+ ContactColumn.EMAIL+" text,"+ ContactColumn.BLOG+" text);";public DBHelper(Context context){super(context, DATABASE_NAME, null, DATABASE_VERSION);}public void onCreate(SQLiteDatabase db){db.execSQL(DATABASE_CREATE);}public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE);onCreate(db);}}// URI类型转换public String getType(Uri uri){switch (uriMatcher.match(uri)){case CONTACTS:return"vnd.android.cursor.dir/vnd.yarin.android.mycontacts";case CONTACT_ID:return"vnd.android.cursor.item/vnd.yarin.android.mycontacts";default:throw new IllegalArgumentException("Unsupported URI: " + uri);}}// 删除指定数据列Overridepublic int delete(Uri uri, String where, String[] selectionArgs){int count;switch (uriMatcher.match(uri)){case CONTACTS:count = contactsDB.delete(CONTACTS_TABLE, where, selectionArgs);break;case CONTACT_ID:String contactID = uri.getPathSegments().get(1);count = contactsDB.delete(CONTACTS_TABLE,ContactColumn._ID+ "=" + contactID+ (!TextUtils.isEmpty(where) ? " AND (" + where + ")" : ""),selectionArgs);break;default:throw new IllegalArgumentException("Unsupported URI: " + uri);}getContext().getContentResolver().notifyChange(uri, null);return count;}// 插入数据public Uri insert(Uri uri, ContentValues initialValues){if (uriMatcher.match(uri) != CONTACTS){throw new IllegalArgumentException("Unknown URI " + uri);}ContentValues values;if (initialValues != null){values = new ContentValues(initialValues);Log.e(TAG + "insert", "initialValues is not null");}else{values = new ContentValues();}// 设置默认值if (values.containsKey() == false){values.put(, "");}if (values.containsKey(ContactColumn.MOBILENUM) == false){values.put(ContactColumn.MOBILENUM, "");}if (values.containsKey(ContactColumn.HOMENUM) == false){values.put(ContactColumn.HOMENUM, "");}if (values.containsKey(ContactColumn.ADDRESS) == false){values.put(ContactColumn.ADDRESS, "");}if (values.containsKey(ContactColumn.EMAIL) == false){values.put(ContactColumn.EMAIL, "");}if (values.containsKey(ContactColumn.BLOG) == false){values.put(ContactColumn.BLOG, "");}Log.e(TAG + "insert", values.toString());long rowId = contactsDB.insert(CONTACTS_TABLE, null, values);if (rowId > 0){Uri noteUri = ContentUris.withAppendedId(CONTENT_URI, rowId);getContext().getContentResolver().notifyChange(noteUri, null);Log.e(TAG + "insert", noteUri.toString());return noteUri;}throw new SQLException("Failed to insert row into " + uri);}// 更新数据库public int update(Uri uri, ContentValues values, String where, String[] selectionArgs){int count;Log.e(TAG + "update", values.toString());Log.e(TAG + "update", uri.toString());Log.e(TAG + "update :match", "" + uriMatcher.match(uri));switch (uriMatcher.match(uri)){case CONTACTS:Log.e(TAG + "update", CONTACTS + "");count = contactsDB.update(CONTACTS_TABLE, values, where, selectionArgs);break;case CONTACT_ID:String contactID = uri.getPathSegments().get(1);Log.e(TAG + "update", contactID + "");count = contactsDB.update(CONTACTS_TABLE, values, ContactColumn._ID + "=" + contactID+ (!TextUtils.isEmpty(where) ? " AND (" + where + ")" : ""), selectionArgs);break;default:throw new IllegalArgumentException("Unsupported URI: " + uri);}getContext().getContentResolver().notifyChange(uri, null);return count;}}public boolean onPrepareOptionsMenu(Menu menu){super.onPrepareOptionsMenu(menu);final boolean haveItems = getListAdapter().getCount() > 0;if (haveItems){Uri uri = ContentUris.withAppendedId(getIntent().getData(), getSelectedItemId());Intent[] specifics = new Intent[2];specifics[0] = new Intent(Intent.ACTION_EDIT, uri);specifics[1] = new Intent(Intent.ACTION_VIEW, uri);MenuItem[] items = new MenuItem[2];//添加满足条件的菜单Intent intent = new Intent(null, uri);intent.addCategory(Intent.CATEGORY_ALTERNATIVE);menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items);if (items[0] != null){//编辑联系人items[0].setShortcut('1', 'e').setIcon(R.drawable.edituser).setTitle(R.string.editor_user);}if (items[1] != null){//查看联系人items[1].setShortcut('2', 'f').setTitle(R.string.view_user).setIcon(R.drawable.viewuser);}}else{menu.removeGroup(Menu.CATEGORY_ALTERNATIVE);}return true;}<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="schemas.android./apk/res/android"package=".yarin.android.MyContacts"android:versionCode="1"android:versionName="1.0"><application android:icon="drawable/icon" android:label="string/app_name"><provider android:name="ContactsProvider"android:authorities=".yarin.android.provider.ContactsProvider"/><activity android:name=".MyContacts"android:label="string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/></intent-filter></activity><activity android:name=".ContactEditor"android:label="string/editor_user"><intent-filter><action android:name="android.intent.action.EDIT"/><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.item/vnd.yarin.android.mycontacts"/> </intent-filter><intent-filter><action android:name="android.intent.action.INSERT"/><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.dir/vnd.yarin.android.mycontacts"/> </intent-filter></activity><activity android:name=".ContactView"android:label="string/view_user"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.item/vnd.yarin.android.mycontacts"/> </intent-filter><intent-filter><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.dir/vnd.yarin.android.mycontacts"/> </intent-filter></activity></application><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission><uses-permission android:name="android.permission.SEND_SMS"></uses-permission><uses-permission android:name="android.permission.RECEIVE_SMS"/><uses-sdk android:minSdkVersion="5"/></manifest>。
xml实验报告

xml实验报告XML实验报告一、引言XML(可扩展标记语言)是一种用于描述、存储和传输数据的标记语言。
它具有自我描述性、可扩展性和跨平台性的特点,被广泛应用于各种领域。
本实验旨在通过实际操作,深入了解XML的基本概念、语法和应用。
二、实验目的1. 掌握XML的基本语法和标记规则;2. 学会使用XML解析器解析和处理XML文档;3. 熟悉XML的应用场景,如数据存储、数据交换等。
三、实验环境与工具实验环境:Windows 10实验工具:文本编辑器、XML解析器四、实验过程1. 创建XML文档在文本编辑器中创建一个新的文件,并保存为"experiment.xml"。
XML文档的根元素应该使用尖括号括起来,并且以问号结尾。
在根元素内部,可以定义各种元素和属性。
2. 定义元素和属性在XML文档中,元素用于表示数据的结构和层次关系,属性则用于描述元素的特性和属性值。
通过在尖括号内添加元素名和属性名,可以定义元素和属性。
3. 编写文档内容在XML文档中,可以使用文本、标记和注释等方式来编写文档内容。
文本用于表示实际的数据值,标记用于表示数据的结构,注释则用于添加对文档的说明和解释。
4. 保存并验证XML文档在完成XML文档的编写后,保存文件并使用XML解析器进行验证。
XML解析器可以检查文档的语法和结构是否符合XML规范,以确保文档的正确性。
五、实验结果与分析通过以上实验步骤,我们成功创建了一个简单的XML文档,并使用XML解析器进行验证。
在实际应用中,XML可用于数据存储、数据交换和配置文件等多个场景。
例如,在Web开发中,XML可用于存储和传输网页内容、配置文件和用户数据等。
在移动应用开发中,XML可用于定义应用界面、数据传输和应用配置等。
此外,XML还广泛应用于企业数据交换、电子商务和科学研究等领域。
六、实验总结通过本次实验,我们深入了解了XML的基本概念、语法和应用。
XML作为一种通用的数据描述语言,具有自我描述性、可扩展性和跨平台性的特点,被广泛应用于各个领域。
xml实验报告

目录第一章实验课程基本信息 (2)第二章如何编写格式良好的XML文档 (2)2.1实验目的 (2)2.2实验要求 (2)2.3实验过程 (3)2.3.1分析过程 (3)2.3.2XML文档编写过程 (3)2.4注意事项 (4)第三章编写DTD和有效的XML实例文档 (5)3.1实验目的 (5)3.2实验要求 (5)3.3实验过程 (5)3.3.1分析过程 (5)3.3.2DTD文档的编写过程 (6)3.4注意事项 (10)第四章编写Schema和有效的XML文档 (10)4.1实验目的 (10)4.2实验要求 (10)4.3实验过程 (11)4.3.1分析过程 (11)4.3.2Schema的编写方式 (11)4.4注意事项 (13)第五章XML文档的转换 (13)5.1实验目的 (13)5.2实验要求 (13)5.3实验过程 (14)5.3.1分析过程 (14)5.3.2XHTML实验编写基本过程 (14)5.4注意事项 (18)第六章DOM编程 (18)6.1实验目的 (18)6.2实验要求 (18)6.3实验过程 (18)6.3.1分析过程 (18)6.3.2DOM编写的基本过程 (19)6.4注意事项 (22)XML编程实验摘要XML自推出以来,尤其是在1998年2月成为W3C推荐标准以来,受到了广泛的支持。
各大软件厂商如IBM、Microsoft、Oracle、Sun等都积极支持并参与XML的研究和产品化工作,先后推出了支持XML的产品或者将改造原有的产品以支持XML,W3C也一直致力于完善XML的整个理论体系。
XML虽然获得了极大的支持,但是它还有很长的路要走。
首先,XML的规则只是迈出了第一步,还有许多技术细节没有解决。
其次,现在虽然出现了一些XML工具和应用,但是其市场反应还有待进一步观察。
另外如何让更多的人迅速学会使用XML,并利用它进行开发,进而促进XML的应用也是一个问题。
XML实验报告

XML实验报告计算机系实验报告实验课程:XML实验班级:⽹⼯(2)班学⽣姓名:学⽣学号:实验成绩:⼀、实验⽬的综合验证以下课程主要知识点:1.XML语法熟悉XML语法规范、能够编写形式良好的XML⽂档;2.DTD和xml Schema⽂档约束熟练使⽤DTD和XML Schema定义基本的XML元素、属性、限定等⽅⾯的模式约束。
3.SAX解析、DOM解析以及JAXP了解SAX和DOM解析原理,能够使⽤JAXP接⼝完成对XML⽂档的解析和转换。
4.XSLT和XPath能够使⽤XSLT和XPath完成从XML⽂档到HTML格式的转换。
⼆、实验内容1.编写XML⽂档约束根据下图中显⽰的信息,编写⼀个DTD⽂档,其内容要求能够包含图中所有的信息点。
2.编写⼀个XML⽂档,使其在DTD约束下是有效的假设上⼀步编写的DTD⽂档⽂件名为:books.dtd,编译⼀个XML⽂档使其在books.dtd ⽂件的约束下成为⼀个有效的XML⽂档。
然后,使⽤xmllint程序对你编写的XML⽂档进⾏有效性验证,具体如果使⽤,请参看“《XML》课程教案”中的相关内容。
3.使⽤JAXP接⼝,对上⼀步完成的XML⽂档进⾏解析假设上⼀步编写的XML⽂档名为books.xml。
1)使⽤SAX⽅式解析从XML⽂档books.xml中获得“书名”、“书号”、“作者”、“出版社”、“出版⽇期”这5个记录项的信息,并将其格式化输出到⼀个⽂件books.txt中。
books.txt中的信息格式如下所⽰:书名书号作者出版社出版⽇期--------------------------------------------------------------------name 1234 Tom 清华20112)使⽤DOM⽅式解析从XML⽂档books.xml中获取“书名”、“书号”、“作者”、“出版社”、“出版⽇期”,并将它们封装到⼀个javabean类中,然后利⽤该类中的数据,通过DOM构造⼀棵DOM⽂档树,并将其序列化到⼀个XML⽂件中simplebooks.xml。
《XML技术及应用》实验报告

《XML技术及应用》实验报告学生姓名:学生学号:指导教师:实验成绩:一、实验内容:1、通过Java 编程实现对“通讯录”的XML 文档的解析,并把解析结果存到数据库的表中。
2、进一步实现相反的过程,即将数据库表的内容读出来,并将其转化为XML 文件存储起来。
二、XML文档代码Student.xml<?xml version="1.0" encoding="GB2312"?><StudentInfo><student><name>Jimmey</name><sex>男</sex><address>台湾台北</address><phone>011-2857</phone></student><student><name>华晨宇</name><sex>男</sex><address>湖北武汉</address><phone>1809210</phone></student><student><name>Victorian</name><sex>女</sex><address>上海</address><phone>725120</phone></student><student><name>尼坤</name><sex>男</sex><address>韩国首尔</address><phone>9218337</phone></student></StudentInfo>三、对student.xml进行解析1、配置Access数据库控制面板----系统和安全------管理工具-----数据源(ODBC)-----系统DSN-----添加Access驱动程序-----填写数据源名、路径等。
西安邮电大学xml实验报告

一. 实验目的及实验环境
1.实验目的
(1)熟悉XML的文档结构和书写规则。
(2)熟悉DTD的文档规则和基本元素属性
2.实验环境
Dreamweaver、
二. 实验内容
(1)用XML来描述两个职工的信息,职工信息如实验表3.1所示。
实验表3.1 职工信息表
(2)试写一个DTD来检测描述学生信息的XML文档结构的正确性,具体文档要求为:学生包含姓名、年龄、电话号码等信息,其中电话号码可以有零个也可以有多个。
三.方案设计
四.测试数据及运行结果
1.正常测试数据(3组)及运行结果;
2.非正常测试数据(2组)及运行结果。
五.总结
1.实验过程中遇到的问题及解决办法;2.对设计及调试过程的心得体会。
六.附录:源代码(电子版)。
xml个人通讯薄设计实验报告

xml个人通讯薄设计实验报告xml个人通讯薄设计实验报告计算机与信息技术学院综合性、设计性实验报告专业:计算机科学与技术Java方向年级/班级:09级201*201*学年第一学期课程名称Xml基础指导教师本组成员学号姓名实验地点实验时间项目名称个人通讯薄设计实验类型综合性/设计性一、实验目的(1)掌握XML文档的基本语法,能够得到格式良好的XML文档;(2)掌握使用CSS显示XML文件的基本方法;(3)理解CSS与XSL的区别;(4)熟练掌握XSL不同的方式选择节点;(5)掌握XSL与CSS的结合使用;(6)通过上机操作可以了解自己对所学内容的掌握程度;二、实验仪器或设备实验仪器与设备:一台计算机xmlspy软件三、总体设计(设计原理、设计方案及流程等)(1)设计原理:利用CSS控制XML文档的显示;(2)设计方案:首先,要编写一个XML文档,文档主要包含通讯录里的内容。
然后,要编写CSS,CSS直接影响通讯录的显示情况。
所以,要重视它;(3)流程:自学CSS这一章的内容;收集要使用的图片;根据实验要求编写XML文档;编写CSS来确定通讯录的显示样式;实验步骤(包括主要步骤、代码分析等)四、(1)首先规划一下,编写XSL所需要的资源。
(2)创建CSS,使用基本语法编写,部分代码如下:通讯薄CLASSLYNAMESEXCONTACT河南师范大学计算机与信息技术学院ADDRESSSCHOOLPHOTOFriend姓名女15234304河南.郑州郑州大学Friend姓名伟男18756182河南..虞城吉大学Classmate姓名琳女1591264河南.河大学Classmate姓名心河南师范大学计算机与信息技术学院女159********河南.河大学Family行名霞女159********河虞一高Css代码如下:.span1{color:blue;font-size:2cm;face:华文楷体;margin-left:40%;}.tag_box{width:100%;height:90%;border:1pxsolid#B0BEC7;font:12pxArial,Helvetic a,sans-serif;margin:5%;background-image:url(3.gif);}.tag_boxul.menulist{width:100%;hmargin-top:1px;border:1pxsolid#788a98;}五、结果分析与总结河南师范大学计算机与信息技术学院(1)通过该实验,学会了XSL与css文档的书写。
手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)自查报告。
标题,手机通讯录实验报告及使用说明(附源代码)。
自查报告:在进行手机通讯录实验及使用说明的撰写过程中,我对手机通讯录的功能和操作进行了深入的研究和实践。
在实验中,我首先对手机通讯录的基本功能进行了分析和总结,包括添加联系人、编辑联系人信息、删除联系人等操作。
然后,我利用编程知识,编写了手机通讯录的源代码,并进行了测试和调试。
在实验中,我发现手机通讯录的功能十分实用,可以帮助用户轻松管理联系人信息,提高工作效率。
通过对手机通讯录的操作和源代码的编写,我对手机通讯录的原理和实现方式有了更深入的了解,也增强了我的编程能力和实际操作能力。
在使用说明的撰写过程中,我详细介绍了手机通讯录的各项功能操作和使用方法,并附上了源代码的下载链接,方便读者进行学习和实践。
我还对手机通讯录的使用注意事项进行了说明,帮助用户更好地使用手机通讯录,并避免操作失误。
总的来说,通过本次实验和使用说明的撰写,我对手机通讯录有了更深入的了解,也提高了我的编程能力和文档撰写能力。
我相信这份实验报告和使用说明能够帮助更多的人学习和使用手机通讯录,提高工作和生活效率。
附源代码:```java。
public class Contact {。
private String name;private String phoneNumber;private String email;public Contact(String name, String phoneNumber, String email) {。
= name;this.phoneNumber = phoneNumber;this.email = email;}。
public String getName() {。
return name;}。
public void setName(String name) {。
= name;}。
public String getPhoneNumber() {。
安卓通讯录实训报告

安卓实训设计报告安卓通讯录设计题目:安卓通讯录班级:姓名:学号:指导老师:日期: 2012年6月7日内容要求一、题目分析,功能要求。
1.1 实验目的熟悉Android软件开发的基本架构利用Eclipse和ADT插件设计通讯录1.2 功能本手机通讯录工具主要实现五大功能:联系人的查询:字段查询,分组查询,字母排序查询;增加、删除联系人以及修改联系人信息;导入、导出联系人;发送联系人信息;设置。
二、实验设计2.1 UI设计我们用一个ListView来显示整个通讯录,其中用TextView显示每一记录,他们的xml文件分别为:main.xml(通讯录主界面),addres.xml(添加联系人界面),list_item.xml(浏览联系人界面),find.xml(查找联系人界面)。
2.2功能的设计为了在主界面中浏览联系人的信息,并且创建主要菜单栏,我们设计了MainActivity类,主要用于显示联系人信息和菜单栏,通过菜单栏,实现通讯录的相关功能。
AddressBook类主要是为了实现联系人的添加功能,并且实现信息的保存后跳转到主界面。
Findactivity类主要是为了实现联系人的查找功能,输入联系人的姓名,点击查找按钮,显示所查联系人的相关信息。
三、实验程序四、实验效果图五、总结通过设计该通讯录,主要学习了UI设计、数据库的综合操作、动态菜单的使用以及各种权限的注册。
通过本次设计,使我对Android平台的数据库操作有了更进一步的理解,同时也对Android系统有了更深入的了解。
附录一//定义数据public class ContactColumn implements BaseColumns{public ContactColumn(){}//列名public static final String NAME = "name"; //姓名public static final String MOBILENUM = "mobileNumber"; //移动电话public static final String HOMENUM = "homeNumber"; //家庭电话public static final String ADDRESS = "address"; //地址public static final String EMAIL = "email"; //邮箱public static final String BLOG = "blog"; //博客//列索引值public static final int_ID_COLUMN = 0;public static final int NAME_COLUMN = 1;public static final int MOBILENUM_COLUMN = 2;public static final int HOMENUM_COLUMN = 3;public static final int ADDRESS_COLUMN = 4;public static final int EMAIL_COLUMN = 5;public static final int BLOG_COLUMN = 6;//查询结果public static final String[] PROJECTION ={_ID,NAME,MOBILENUM,HOMENUM,ADDRESS,EMAIL,BLOG,};}public class DBHelper extends SQLiteOpenHelper{public static final String DATABASE_NAME = "mycontacts.db";//数据库名public static final int DATABASE_VERSION = 2; //版本public static final String CONTACTS_TABLE = "contacts"; //表名//创建表private static final String DATABASE_CREATE ="CREATE TABLE " + CONTACTS_TABLE +" ("+ ContactColumn._ID+" integer primary key autoincrement,"+ +" text,"+ ContactColumn.MOBILENUM+" text,"+ ContactColumn.HOMENUM+" text,"+ ContactColumn.ADDRESS+" text,"+ ContactColumn.EMAIL+" text,"+ ContactColumn.BLOG+" text);";public DBHelper(Context context){super(context, DATABASE_NAME, null, DATABASE_VERSION);}public void onCreate(SQLiteDatabase db){db.execSQL(DATABASE_CREATE);}public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion){db.execSQL("DROP TABLE IF EXISTS " + CONTACTS_TABLE);onCreate(db);}}// URI类型转换public String getType(Uri uri){switch (uriMatcher.match(uri)){case CONTACTS:return"vnd.android.cursor.dir/vnd.yarin.android.mycontacts";case CONTACT_ID:return"vnd.android.cursor.item/vnd.yarin.android.mycontacts";default:throw new IllegalArgumentException("Unsupported URI: " + uri);}}// 删除指定数据列@Overridepublic int delete(Uri uri, String where, String[] selectionArgs){int count;switch (uriMatcher.match(uri)){case CONTACTS:count = contactsDB.delete(CONTACTS_TABLE, where, selectionArgs);break;case CONTACT_ID:String contactID = uri.getPathSegments().get(1);count = contactsDB.delete(CONTACTS_TABLE,ContactColumn._ID+ "=" + contactID+ (!TextUtils.isEmpty(where) ? " AND (" + where + ")" : ""),selectionArgs);break;default:throw new IllegalArgumentException("Unsupported URI: " + uri);}getContext().getContentResolver().notifyChange(uri, null);return count;}// 插入数据public Uri insert(Uri uri, ContentValues initialValues){if (uriMatcher.match(uri) != CONTACTS){throw new IllegalArgumentException("Unknown URI " + uri);}ContentValues values;if (initialValues != null){values = new ContentValues(initialValues);Log.e(TAG + "insert", "initialValues is not null");}else{values = new ContentValues();}// 设置默认值if (values.containsKey() == false){values.put(, "");}if (values.containsKey(ContactColumn.MOBILENUM) == false){values.put(ContactColumn.MOBILENUM, "");}if (values.containsKey(ContactColumn.HOMENUM) == false){values.put(ContactColumn.HOMENUM, "");}if (values.containsKey(ContactColumn.ADDRESS) == false){values.put(ContactColumn.ADDRESS, "");}if (values.containsKey(ContactColumn.EMAIL) == false){values.put(ContactColumn.EMAIL, "");}if (values.containsKey(ContactColumn.BLOG) == false){values.put(ContactColumn.BLOG, "");}Log.e(TAG + "insert", values.toString());long rowId = contactsDB.insert(CONTACTS_TABLE, null, values);if (rowId > 0){Uri noteUri = ContentUris.withAppendedId(CONTENT_URI, rowId);getContext().getContentResolver().notifyChange(noteUri, null);Log.e(TAG + "insert", noteUri.toString());return noteUri;}throw new SQLException("Failed to insert row into " + uri);}// 更新数据库public int update(Uri uri, ContentValues values, String where, String[] selectionArgs){int count;Log.e(TAG + "update", values.toString());Log.e(TAG + "update", uri.toString());Log.e(TAG + "update :match", "" + uriMatcher.match(uri));switch (uriMatcher.match(uri)){case CONTACTS:Log.e(TAG + "update", CONTACTS + "");count = contactsDB.update(CONTACTS_TABLE, values, where, selectionArgs);break;case CONTACT_ID:String contactID = uri.getPathSegments().get(1);Log.e(TAG + "update", contactID + "");count = contactsDB.update(CONTACTS_TABLE, values, ContactColumn._ID + "=" + contactID+ (!TextUtils.isEmpty(where) ? " AND (" + where + ")" : ""), selectionArgs);break;default:throw new IllegalArgumentException("Unsupported URI: " + uri);}getContext().getContentResolver().notifyChange(uri, null);return count;}}public boolean onPrepareOptionsMenu(Menu menu){super.onPrepareOptionsMenu(menu);final boolean haveItems = getListAdapter().getCount() > 0;if (haveItems){Uri uri = ContentUris.withAppendedId(getIntent().getData(), getSelectedItemId());Intent[] specifics = new Intent[2];specifics[0] = new Intent(Intent.ACTION_EDIT, uri);specifics[1] = new Intent(Intent.ACTION_VIEW, uri);MenuItem[] items = new MenuItem[2];//添加满足条件的菜单Intent intent = new Intent(null, uri);intent.addCategory(Intent.CATEGORY_ALTERNATIVE);menu.addIntentOptions(Menu.CATEGORY_ALTERNATIVE, 0, 0, null, specifics, intent, 0, items);if (items[0] != null){//编辑联系人items[0].setShortcut('1', 'e').setIcon(R.drawable.edituser).setTitle(R.string.editor_user);}if (items[1] != null){//查看联系人items[1].setShortcut('2', 'f').setTitle(R.string.view_user).setIcon(R.drawable.viewuser);}}else{menu.removeGroup(Menu.CATEGORY_ALTERNATIVE);}return true;}<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="/apk/res/android"package="com.yarin.android.MyContacts"android:versionCode="1"android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><provider android:name="ContactsProvider"android:authorities="com.yarin.android.provider.ContactsProvider"/><activity android:name=".MyContacts"android:label="@string/app_name"><intent-filter><action android:name="android.intent.action.MAIN"/><category android:name="UNCHER"/></intent-filter></activity><activity android:name=".ContactEditor"android:label="@string/editor_user"><intent-filter><action android:name="android.intent.action.EDIT"/><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.item/vnd.yarin.android.mycontacts"/> </intent-filter><intent-filter><action android:name="android.intent.action.INSERT"/><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.dir/vnd.yarin.android.mycontacts"/> </intent-filter></activity><activity android:name=".ContactView"android:label="@string/view_user"><intent-filter><action android:name="android.intent.action.VIEW"/><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.item/vnd.yarin.android.mycontacts"/> </intent-filter><intent-filter><category android:name="android.intent.category.DEF AULT"/><data android:mimeType="vnd.android.cursor.dir/vnd.yarin.android.mycontacts"/> </intent-filter></activity></application><uses-permission android:name="android.permission.CALL_PHONE"></uses-permission><uses-permission android:name="android.permission.SEND_SMS"></uses-permission><uses-permission android:name="android.permission.RECEIVE_SMS"/><uses-sdk android:minSdkVersion="5"/></manifest>。
XML实验报告

XML应用基础专业:学生姓名:学号:湖南农业大学信息科学技术学院实验1,2 熟悉XML环境及编写XML文档一、目的和要求:1、掌握XML文档的基本结构2、掌握XML的基本语法规则3、掌握使用XML的开发工具XMLWriter4、掌握XML实体的简单使用5、掌握CDATA字符数据定界符的使用二、实验内容与要求:1、实验内容:(1)熟悉XML编辑器的基本使用方法(XMLWriter);(2)打开XMLWriter熟悉基本功能和界面组成;(3)为学生信息建立一个XML文档,结果应该为合法有效的。
2、程序的编写要求:(1)文档内容要求:05级(班级(学生信息(学号、姓名、班级、电子邮件、QQ、通信地址(省份(或州)、城市、街道、邮政编码))));(2)并且要求建立至少2个班级,每个班级至少五个学生的信息;(3)在使用过程中根据个人设计,使得XML文档中包含以下技术的使用:a、5个预定义实体引用的使用b、CDATA字符定界符的使用c、属性的简单使用d、注释的使用e、空元素的使用三、实验步骤:1、设计出各个元素之间个关系结构图;2、根据关系结构图生成相应的XML;3、为XML输入相应的学生数据;4、将该文档存为学生信息XML文档;5、修改调试,直到在浏览器中可以看到正确的结果;相关代码:<xml version="" encoding="UTF-8"><grade type="05"><class type="0501"><student><stuID>050101</stuID><name>张三</name></Email><QQ>1234567</QQ><adress><province>湖南省</province> <city>长沙市</city><street>金星路</street><post>410100</post></adress></student><student><stuID>050102</stuID><name>李四</name></Email><QQ></QQ><adress><province>湖南省</province> <city>长沙市</city><street>五一路</street><post>410100</post></adress></student><student><stuID>050103</stuID><name>王五</name></Email><QQ></QQ><adress><province>湖南省</province> <city>长沙市</city><street>万家丽路</street> <post>410100</post></adress></student><student><stuID>050104</stuID><name>罗莉</name></Email><QQ></QQ><adress><province>湖南省</province> <city>常德市</city><street>朗州路</street><post>415900</post></adress></student><student><stuID>050105</stuID><name>陈乐</name></Email><QQ>9</QQ><adress><province>海南省</province> <city>海口市</city><street>沿海路</street><post>490000</post></adress></student></class><class type="0502"><student><stuID>050201</stuID><name>刘英</name></Email><QQ>1</QQ><adress><province>湖南省</province> <city>长沙市</city><street>湘江中路</street> <post>410100</post></adress></student><student><stuID>050202</stuID><name>张超</name></Email><QQ>1</QQ><adress><province>湖南省</province> <city>长沙市</city><street>蔡锷路</street><post>410100</post></adress></student><student><stuID>050203</stuID><name>曾可</name></Email><QQ>7</QQ><adress><province>湖南省</province><city>常德市</city><street>步行街</street><post>415900</post></adress></student><student><stuID>050204</stuID><name>郭靖</name></Email><QQ>62</QQ><adress><province>河南省</province><city>郑州市</city><street>武阳路</street><post>413000</post></adress></student><student><stuID>050205</stuID><name>黄蓉</name></Email><QQ>48</QQ><adress><province>福建省</province><city>福州市</city><street>桃花岛路</street><post>430100</post></adress></student> </class></grade>四讨论与分析1、写出XML文档结构答:XML声明、根元素和代码2、什么是Well-Formed XML文档答:语法合乎XML规范;元素构成一个层次树,只有一个根节点;处分提供DTD外,没有其他对外部实体的作用。
XML实验2(XML文档 语法)

XML实验2(XML文档语法)----c60fbb80-6ea4-11ec-acb6-7cb59b590d7dxml实验2(xml文档-语法)实验报告实验项目名称xml实验2(xml文档-语法)所属课程名称xml设计技术班级07计算机(软件工程方向)学号姓名成绩实验说明2-1:编写通讯录XML文档在该实验中声明一个通讯录,每个联系人都包含姓名、地址、电话和e-mail。
注意在地址中不能出现空格,电话可以用连字符“-”表示。
?实验目标(1)掌握XML的语法结构。
(2)掌握XML属性的应用。
?实验步骤(1)打开windows的记事本,首先声明XML文档。
(2)创建一个根元素。
根元素下的子元素是地址簿中的联系人姓名。
(3)为每个子元素添加属性“relationship”和元素,如phone、address、e-mail。
详情如下:010-********电话>(4) XML文档内容完成后,使用file O save as打开“另存为”窗口口,选择要保存的目录,文件名为“do.xml”,保存类型为“所有文件”,编码为“utf-8”。
(5)单击〖保存〗按钮,保存一个名为do XML file of XML的目录,打开查看文档的运行结果,如图1所示。
图1:实验指南2-1的运行结果实验指导2-2:编写显示印刷厂库存信息的xml文档。
这个实验需要准备一个显示印刷厂仓库库存信息的XML文档。
每个仓库都是一个名称空间,每个名称空间根元素的子元素都有不同的项和属性。
?实验目标(1)掌握xml命名空间的声明。
(2)掌握xml命名空间的应用。
?实验步骤(1)打开记事本并声明XML文档。
(2)创建根元素仓库,声明xml文档的命名空间:原料仓库、成品仓库和废料仓库(3)分别在三个命名空间中创建子元素库存,原料仓库:库存、成品仓库:库仓库和废物仓库:库存。
在原材料仓库:在库存中创建子元素纸张和墨水;在成品仓库中创建子元素:库存中的书籍、杂志和报纸;在废品仓库中创建属性为“库存”的空元素纸张和空元素墨水残留物。
Java实现XML文件学生通讯录

Java实现XML⽂件学⽣通讯录java实现学⽣通讯录,使⽤XML⽂件作为数据存储,实现学⽣编号,姓名,年龄,住址,专业,⽣⽇等信息的添加,删除,修改,查找,备份,恢复,专业分类查找等功能。
项⽬需要导⼊dom4j.jar包。
/*添加学⽣记录*/import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import javax.swing.JOptionPane;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JTextField;import javax.swing.JRadioButton;import javax.swing.JButton;import javax.swing.JComboBox;public class AddPerson extends JFrame {private JPanel contentPane;private JTextField jt1;private JTextField jt2;private JTextField jt3;private JTextField jt4;private JTextField jt5;private JTextField jt6;private JTextField jt7;public AddPerson() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 450, 489);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));contentPane.setLayout(null);setContentPane(contentPane);JLabel jl1 = new JLabel("学⽣通讯录");jl1.setFont(new Font("宋体", Font.PLAIN, 16));jl1.setBounds(10, 0, 95, 29);contentPane.add(jl1);JLabel jl2 = new JLabel("学⽣编号");jl2.setFont(new Font("宋体", Font.PLAIN, 16));jl2.setBounds(51, 39, 65, 29);contentPane.add(jl2);JLabel jl3 = new JLabel("学⽣姓名");jl3.setFont(new Font("宋体", Font.PLAIN, 16));jl3.setBounds(51, 78, 65, 29);contentPane.add(jl3);JLabel jl4 = new JLabel("学⽣性别");jl4.setFont(new Font("宋体", Font.PLAIN, 16));jl4.setBounds(51, 117, 65, 29);contentPane.add(jl4);JLabel jl5 = new JLabel("学⽣年龄");jl5.setFont(new Font("宋体", Font.PLAIN, 16));jl5.setBounds(51, 163, 65, 29);contentPane.add(jl5);JLabel jl6 = new JLabel("出⽣⽇期");jl6.setFont(new Font("宋体", Font.PLAIN, 16));jl6.setBounds(51, 202, 65, 29);contentPane.add(jl6);JLabel jl7 = new JLabel("⼿机号码");jl7.setFont(new Font("宋体", Font.PLAIN, 16));jl7.setBounds(51, 250, 65, 29);contentPane.add(jl7);JLabel jl8 = new JLabel("电⼦邮箱");jl8.setFont(new Font("宋体", Font.PLAIN, 16));jl8.setBounds(51, 296, 65, 29);contentPane.add(jl8);JLabel jl9 = new JLabel("家庭住址");jl9.setFont(new Font("宋体", Font.PLAIN, 16));jl9.setBounds(51, 345, 65, 29);contentPane.add(jl9);JLabel jl10 = new JLabel("专业名称");jl10.setFont(new Font("宋体", Font.PLAIN, 16));jl10.setBounds(51, 389, 65, 29);contentPane.add(jl10);jt1 = new JTextField();jt1.setBounds(129, 38, 150, 34);contentPane.add(jt1);jt1.setColumns(10);jt2 = new JTextField();jt2.setColumns(10);jt2.setBounds(129, 83, 150, 34);contentPane.add(jt2);jt3 = new JTextField();jt3.setColumns(10);jt3.setBounds(129, 163, 150, 34);contentPane.add(jt3);jt4 = new JTextField();jt4.setColumns(10);jt4.setBounds(129, 201, 150, 34);contentPane.add(jt4);jt5 = new JTextField();jt5.setColumns(10);jt5.setBounds(129, 250, 150, 34);contentPane.add(jt5);jt6 = new JTextField();jt6.setColumns(10);jt6.setBounds(129, 301, 150, 34);contentPane.add(jt6);jt7 = new JTextField();jt7.setColumns(10);jt7.setBounds(129, 350, 150, 34);contentPane.add(jt7);JRadioButton radioButton = new JRadioButton("男",true);radioButton.setBounds(139, 121, 65, 23);contentPane.add(radioButton);JRadioButton radioButton_1 = new JRadioButton("⼥");radioButton_1.setBounds(221, 121, 121, 23);contentPane.add(radioButton_1);ButtonGroup bb=new ButtonGroup();bb.add(radioButton);bb.add(radioButton_1);JButton jb1 = new JButton("添加");jb1.setFont(new Font("宋体", Font.PLAIN, 16));jb1.setBounds(314, 78, 110, 61);contentPane.add(jb1);JButton jb2 = new JButton("关闭");jb2.setFont(new Font("宋体", Font.PLAIN, 16));jb2.setBounds(314, 167, 110, 61);contentPane.add(jb2);JButton jb3 = new JButton("清除");jb3.setFont(new Font("宋体", Font.PLAIN, 16));jb3.setBounds(314, 265, 110, 61);contentPane.add(jb3);String str1[]= {"计算机科学与技术","信息安全","电⼦信息科学与技术","⽹络⼯程"}; JComboBox comboBox=new JComboBox(str1); ;comboBox.setBounds(126, 400, 155, 29);contentPane.add(comboBox);jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {PersonOperatorDome ppp=new PersonOperatorDome();if(ppp.SerachPersonbool(jt1.getText())) {JOptionPane.showMessageDialog(null, "此ID已存在,请勿重复添加");}else {Person pp=new Person();PersonOperatorDome person=new PersonOperatorDome();String sex;if(radioButton.isSelected()) {sex=radioButton.getText();}else {sex=radioButton_1.getText();}pp.setId(jt1.getText());pp.setName(jt2.getText());pp.setSex(sex);pp.setBirthday(jt4.getText());pp.setAge(jt3.getText());pp.setPhone(jt5.getText());pp.setEmail(jt6.getText());pp.setAddress(jt7.getText());pp.setMajor(String.valueOf(comboBox.getSelectedItem()));person.addPerson(pp);JOptionPane.showMessageDialog(null, "添加成功");}}});jb3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubjt1.setText("");jt2.setText("");jt3.setText("");jt4.setText("");jt5.setText("");jt6.setText("");jt7.setText("");}});jb2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubdispose();}});}}/*⼈员信息类*/public class Person {private String id;private String name;private String sex;private String age;private String birthday;private String phone;private String email;private String address;private String major;public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) { = name;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getAge() {return age;}public void setAge(String age) {this.age = age;}public String getBirthday() {return birthday;}public void setBirthday(String birthday) {this.birthday = birthday;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getEmail() {return email;}public void setEmail(String email) {this.email = email;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getMajor() {return major;}public void setMajor(String major) {this.major = major;}}/*⼈员操作接⼝*/import org.dom4j.Document;public interface PersonOperator {public void addPerson(Person person);public void updatePerson(Person person); public void deletePerson(String id);public Person SerachPerson(String id);public boolean SerachPersonbool(String id); public void beifen();public void huifu();}import java.io.File;import java.io.FileOutputStream;import java.util.Iterator;import java.util.List;import org.dom4j.Document;import org.dom4j.DocumentHelper;import org.dom4j.Element;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class PersonOperatorDome {public void addPerson(Person person) {try {File file = new File("E:/person.xml");Document doc = null;Element rootElem = null;if(!file.exists()) {doc = DocumentHelper.createDocument();rootElem = doc.addElement("personlist");} else {doc = new SAXReader().read(file);rootElem = doc.getRootElement();}Element personElem = rootElem.addElement("person");personElem.addAttribute("id", person.getId());personElem.addElement("name").setText(person.getName());personElem.addElement("sex").setText(person.getSex());personElem.addElement("age").setText(person.getAge());personElem.addElement("birthday").setText(person.getBirthday()); personElem.addElement("phone").setText(person.getPhone());personElem.addElement("email").setText(person.getEmail());personElem.addElement("address").setText(person.getAddress()); personElem.addElement("major").setText(person.getMajor());XML.Writexml(doc);} catch (Exception e) {e.printStackTrace();}}public void UpdataPerson(Person person) {Document doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();for(int i=0;i<persons.size();i++) {Element test=(Element)persons.get(i);if(person.getId().equals(test.attributeValue("id"))) {for(Iterator it =test.elementIterator();it.hasNext();) {Element node=(Element)it.next();String type=node.getName();if("name".equals(type)) {node.setText(person.getName());}if("sex".equals(type)) {node.setText(person.getSex());}if("age".equals(type)) {node.setText(person.getAge());}if("birthday".equals(type)) {node.setText(person.getBirthday());}if("phone".equals(type)) {node.setText(person.getPhone());}if("email".equals(type)) {node.setText(person.getEmail());}if("address".equals(type)) {node.setText(person.getAddress());}if("major".equals(type)) {node.setText(person.getMajor());}}}}XML.Writexml(doc);}public void beifen() {Document doc1 = XML.getDocument();try {File file = new File("E:/persondome.xml");Document doc = null;Element rootElem = null;if(!file.exists()) {doc = DocumentHelper.createDocument();rootElem = doc.addElement("personlist");} else {doc = new SAXReader().read(file);rootElem = doc.getRootElement();}}catch (Exception e) {e.printStackTrace();}try {//3.把Document写到XML⽂件FileOutputStream out = new FileOutputStream("e:/persondome.xml"); //书写格式(优美的格式)OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter(out,format);writer.write(doc1);writer.close();} catch (Exception e) {e.printStackTrace();throw new RuntimeException();}}public void huifu() {Document doc1 = XML.getDocument1();try {FileOutputStream out = new FileOutputStream("e:/person.xml"); OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter(out,format);writer.write(doc1);writer.close();} catch (Exception e) {e.printStackTrace();throw new RuntimeException();}}public void deletePerson(String id) {Document doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();for(int i=0;i<persons.size();i++) {Element test =(Element)persons.get(i);if(id.equals(test.attributeValue("id"))) {test.detach();break;}}XML.Writexml(doc);}public boolean SerachPersonbool(String id) {Document doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();Person person=new Person();for(int i=0;i<persons.size();i++) {Element test =(Element)persons.get(i);if(id.equals(test.attributeValue("id"))) {return true;}}return false;}public Person SerachPerson(String id) {Document doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();Person person=new Person();for(int i=0;i<persons.size();i++) {Element test =(Element)persons.get(i);if(id.equals(test.attributeValue("id"))) {for(Iterator it =test.elementIterator();it.hasNext();) {Element node=(Element)it.next();String type=node.getName();if("name".equals(type)) {person.setName(node.getText());}if("sex".equals(type)) {person.setSex(node.getText());}if("age".equals(type)) {person.setAge(node.getText());}if("birthday".equals(type)) {person.setBirthday(node.getText());}if("phone".equals(type)) {person.setPhone(node.getText());}if("email".equals(type)) {person.setEmail(node.getText());}if("address".equals(type)) {person.setAddress(node.getText());}if("major".equals(type)) {person.setMajor(node.getText());}}}}return person;}}/*查找*/import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.ButtonGroup;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.JLabel;import javax.swing.JOptionPane;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JTextField;import javax.swing.JRadioButton;import javax.swing.JButton;import javax.swing.JComboBox;public class SerachPerson extends JFrame {private JPanel contentPane;private JTextField jt1;private JTextField jt2;private JTextField jt3;private JTextField jt4;private JTextField jt5;private JTextField jt6;private JTextField jt7;public SerachPerson() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 450, 489);contentPane = new JPanel();contentPane.setBorder(new EmptyBorder(5, 5, 5, 5)); contentPane.setLayout(null);setContentPane(contentPane);JLabel jl1 = new JLabel("学⽣通讯录");jl1.setFont(new Font("宋体", Font.PLAIN, 16));jl1.setBounds(10, 0, 95, 29);contentPane.add(jl1);JLabel jl2 = new JLabel("学⽣编号");jl2.setFont(new Font("宋体", Font.PLAIN, 16));jl2.setBounds(51, 39, 65, 29);contentPane.add(jl2);JLabel jl3 = new JLabel("学⽣姓名");jl3.setFont(new Font("宋体", Font.PLAIN, 16));jl3.setBounds(51, 78, 65, 29);contentPane.add(jl3);JLabel jl4 = new JLabel("学⽣性别");jl4.setFont(new Font("宋体", Font.PLAIN, 16));jl4.setBounds(51, 117, 65, 29);contentPane.add(jl4);JLabel jl5 = new JLabel("学⽣年龄");jl5.setFont(new Font("宋体", Font.PLAIN, 16));jl5.setBounds(51, 163, 65, 29);contentPane.add(jl5);JLabel jl6 = new JLabel("出⽣⽇期");jl6.setFont(new Font("宋体", Font.PLAIN, 16));jl6.setBounds(51, 202, 65, 29);contentPane.add(jl6);JLabel jl7 = new JLabel("⼿机号码");jl7.setFont(new Font("宋体", Font.PLAIN, 16));jl7.setBounds(51, 250, 65, 29);contentPane.add(jl7);JLabel jl8 = new JLabel("电⼦邮箱");jl8.setFont(new Font("宋体", Font.PLAIN, 16));jl8.setBounds(51, 296, 65, 29);contentPane.add(jl8);JLabel jl9 = new JLabel("家庭住址");jl9.setFont(new Font("宋体", Font.PLAIN, 16));jl9.setBounds(51, 345, 65, 29);contentPane.add(jl9);JLabel jl10 = new JLabel("专业名称");jl10.setFont(new Font("宋体", Font.PLAIN, 16));jl10.setBounds(51, 389, 65, 29);contentPane.add(jl10);jt1 = new JTextField();jt1.setBounds(129, 38, 150, 34);contentPane.add(jt1);jt1.setColumns(10);jt2 = new JTextField();jt2.setColumns(10);jt2.setBounds(129, 83, 150, 34);contentPane.add(jt2);jt3 = new JTextField();jt3.setColumns(10);jt3.setBounds(129, 163, 150, 34);contentPane.add(jt3);jt4 = new JTextField();jt4.setColumns(10);jt4.setBounds(129, 201, 150, 34);contentPane.add(jt4);jt5 = new JTextField();jt5.setColumns(10);jt5.setBounds(129, 250, 150, 34);contentPane.add(jt5);jt6 = new JTextField();jt6.setColumns(10);jt6.setBounds(129, 301, 150, 34);contentPane.add(jt6);jt7 = new JTextField();jt7.setColumns(10);jt7.setBounds(129, 350, 150, 34);contentPane.add(jt7);JRadioButton radioButton = new JRadioButton("男",true);radioButton.setBounds(139, 121, 65, 23);contentPane.add(radioButton);JRadioButton radioButton_1 = new JRadioButton("⼥");radioButton_1.setBounds(221, 121, 79, 23);contentPane.add(radioButton_1);ButtonGroup bb=new ButtonGroup();bb.add(radioButton);bb.add(radioButton_1);JButton jb1 = new JButton("查找");jb1.setFont(new Font("宋体", Font.PLAIN, 16));jb1.setBounds(314, 78, 110, 61);contentPane.add(jb1);JButton jb2 = new JButton("关闭");jb2.setFont(new Font("宋体", Font.PLAIN, 16));jb2.setBounds(314, 280, 110, 61);contentPane.add(jb2);JButton jb3 = new JButton("清除");jb3.setFont(new Font("宋体", Font.PLAIN, 16));jb3.setBounds(314, 357, 110, 61);contentPane.add(jb3);JButton jb4 = new JButton("修改");jb4.setFont(new Font("宋体", Font.PLAIN, 16));jb4.setBounds(314, 174, 110, 61);contentPane.add(jb4);String str1[]= {"计算机科学与技术","信息安全","电⼦信息科学与技术","⽹络⼯程"}; JComboBox comboBox = new JComboBox(str1);comboBox.setBounds(126, 394, 153, 29);contentPane.add(comboBox);jb1.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {PersonOperatorDome person=new PersonOperatorDome();String id=jt1.getText();Person pp=person.SerachPerson(id);jt2.setText(pp.getName());if(radioButton.getText().equals(pp.getSex())) {radioButton.setSelected(true);}else {radioButton_1.setSelected(true);}jt3.setText(pp.getAge());jt4.setText(pp.getBirthday());jt5.setText(pp.getPhone());jt6.setText(pp.getEmail());jt7.setText(pp.getAddress());if(pp.getMajor().equals("计算机科学与技术")) comboBox.setSelectedIndex(0); if(pp.getMajor().equals("信息安全")) comboBox.setSelectedIndex(1);if(pp.getMajor().equals("电⼦信息科学与技术")) comboBox.setSelectedIndex(2); if(pp.getMajor().equals("⽹络⼯程")) comboBox.setSelectedIndex(3);}});jb3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubjt1.setText("");jt2.setText("");jt3.setText("");jt4.setText("");jt5.setText("");jt6.setText("");jt7.setText("");}});jb2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubdispose();}});jb4.addActionListener(new ActionListener() {public void actionPerformed(ActionEvent arg0) {Person pp=new Person();PersonOperatorDome person=new PersonOperatorDome();String sex;if(radioButton.isSelected()) {sex=radioButton.getText();}else {sex=radioButton_1.getText();}pp.setId(jt1.getText());pp.setName(jt2.getText());pp.setSex(sex);pp.setBirthday(jt4.getText());pp.setAge(jt3.getText());pp.setPhone(jt5.getText());pp.setEmail(jt6.getText());pp.setAddress(jt7.getText());pp.setMajor(String.valueOf(comboBox.getSelectedItem()));person.UpdataPerson(pp);JOptionPane.showMessageDialog(null, "修改成功");}});}}import java.io.File;import java.io.FileOutputStream;import org.dom4j.Document;import org.dom4j.io.OutputFormat;import org.dom4j.io.SAXReader;import org.dom4j.io.XMLWriter;public class XML {public static Document getDocument() {try {Document doc = new SAXReader().read(new File("e:/person.xml"));return doc;} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}public static Document getDocument1() {try {Document doc = new SAXReader().read(new File("e:/persondome.xml")); return doc;} catch (Exception e) {e.printStackTrace();throw new RuntimeException(e);}}/** 写出XML⽂件*/public static void Writexml(Document doc) {try {//3.把Document写到XML⽂件FileOutputStream out = new FileOutputStream("e:/person.xml");//书写格式(优美的格式)OutputFormat format = OutputFormat.createPrettyPrint();format.setEncoding("utf-8");XMLWriter writer = new XMLWriter(out,format);writer.write(doc);writer.close();} catch (Exception e) {e.printStackTrace();throw new RuntimeException();}}}import java.awt.BorderLayout;import java.awt.EventQueue;import javax.swing.JFrame;import javax.swing.JPanel;import javax.swing.border.EmptyBorder;import javax.swing.ButtonGroup;import javax.swing.JButton;import java.awt.Font;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.util.List;import javax.swing.JTextArea;import javax.swing.JScrollBar;import javax.swing.JScrollPane;import javax.swing.JList;import javax.swing.JOptionPane;import javax.swing.JRadioButton;import javax.swing.JTable;import javax.swing.table.DefaultTableModel;import org.dom4j.Document;import org.dom4j.Element;public class MainContral extends JFrame {private JPanel contentPane;private JTable table;public MainContral() {setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);setBounds(100, 100, 1200, 392);contentPane = new JPanel();contentPane.setLayout(null);setContentPane(contentPane);JButton jb1 = new JButton("添加");jb1.setFont(new Font("宋体", Font.PLAIN, 16));jb1.setBounds(23, 10, 101, 48);contentPane.add(jb1);JButton jb3 = new JButton("删除");jb3.setFont(new Font("宋体", Font.PLAIN, 16));jb3.setBounds(134, 10, 101, 48);contentPane.add(jb3);JButton jb4 = new JButton("\u67E5\u627E\u4E0E\u4FEE\u6539");jb4.setFont(new Font("宋体", Font.PLAIN, 16));jb4.setBounds(245, 10, 139, 48);contentPane.add(jb4);JButton jb5 = new JButton("显⽰全部");jb5.setFont(new Font("宋体", Font.PLAIN, 16));jb5.setBounds(394, 10, 126, 48);contentPane.add(jb5);JRadioButton radioButton = new JRadioButton("计算机科学与技术");radioButton.setFont(new Font("宋体", Font.PLAIN, 16));radioButton.setBounds(23, 89, 161, 23);contentPane.add(radioButton);JRadioButton radioButton_1 = new JRadioButton("信息安全");radioButton_1.setFont(new Font("宋体", Font.PLAIN, 16));radioButton_1.setBounds(186, 89, 101, 23);contentPane.add(radioButton_1);JRadioButton radioButton_2 = new JRadioButton("电⼦信息科学与技术");radioButton_2.setFont(new Font("宋体", Font.PLAIN, 16));radioButton_2.setBounds(289, 89, 174, 23);contentPane.add(radioButton_2);JRadioButton radioButton_3 = new JRadioButton("⽹络⼯程");radioButton_3.setFont(new Font("宋体", Font.PLAIN, 16));radioButton_3.setBounds(465, 89, 101, 23);contentPane.add(radioButton_3);JRadioButton radioButton_4 = new JRadioButton("全部");radioButton_4.setFont(new Font("宋体", Font.PLAIN, 16));radioButton_4.setBounds(568, 89, 121, 23);contentPane.add(radioButton_4);ButtonGroup bb=new ButtonGroup();bb.add(radioButton);bb.add(radioButton_3);bb.add(radioButton_2);bb.add(radioButton_1);bb.add(radioButton_4);table = new JTable();table.setFont(new Font("宋体", Font.PLAIN, 16));table.setModel(new DefaultTableModel(new Object[][] {},new String[] {"\u7F16\u53F7", "\u59D3\u540D", "\u6027\u522B", "\u5E74\u9F84", "\u751F\u65E5", "\u7535\u8BDD", "\u90AE\u7BB1", "\u5730\u5740", "\u4E13\u4E1A" }));DefaultTableModel model = (DefaultTableModel) table.getModel();Object[] rowData= {"编号","姓名","性别","年龄","⽣⽇","电话","邮箱","地址","专业"};model.addRow(rowData);//JScrollPane scroll = new JScrollPane(table);table.setBounds(23, 131, 1100, 212);contentPane.add(table);JButton jb6 = new JButton("备份");jb6.setFont(new Font("宋体", Font.PLAIN, 16));jb6.setBounds(530, 10, 101, 48);contentPane.add(jb6);JButton jb7 = new JButton("恢复");jb7.setFont(new Font("宋体", Font.PLAIN, 16));jb7.setBounds(641, 10, 101, 48);contentPane.add(jb7);jb6.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubPersonOperatorDome p=new PersonOperatorDome();p.beifen();JOptionPane.showMessageDialog(null, "备份成功");}});jb7.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubPersonOperatorDome p=new PersonOperatorDome();p.huifu();JOptionPane.showMessageDialog(null, "恢复成功");}});jb1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubAddPerson test=new AddPerson();test.setVisible(true);}});jb3.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubint count1=table.getSelectedRow();String id= table.getValueAt(count1, 0).toString();PersonOperatorDome p=new PersonOperatorDome();p.deletePerson(id);JOptionPane.showMessageDialog(null, "删除成功");}});jb4.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubSerachPerson test=new SerachPerson();test.setVisible(true);}});jb5.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubPersonOperatorDome person=new PersonOperatorDome();Document doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();DefaultTableModel model = (DefaultTableModel) table.getModel();while(model.getRowCount()>1){model.removeRow(model.getRowCount()-1);}for(int i=0;i<persons.size();i++) {Element test=(Element)persons.get(i);Person person1=new Person();person1.setId(test.attributeValue("id"));person1.setName(test.elementText("name"));person1.setSex(test.elementText("sex"));person1.setAge(test.elementText("age"));person1.setPhone(test.elementText("phone"));person1.setEmail(test.elementText("email"));person1.setBirthday(test.elementText("birthday"));person1.setAddress(test.elementText("address"));person1.setMajor(test.elementText("major"));Object[] rowData = {person1.getId(), person1.getName(),person1.getSex(),person1.getAge(), person1.getBirthday(), person1.getPhone(), person1.getEmail(),person1.getAddress(),person1.getMajor()}; model.addRow(rowData);}radioButton_4.setSelected(true);}});radioButton.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubDocument doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();String str=radioButton.getText();Person person1=new Person();DefaultTableModel model = (DefaultTableModel) table.getModel();while(model.getRowCount()>1){model.removeRow(model.getRowCount()-1);}for(int i=0;i<persons.size();i++) {Element test =(Element)persons.get(i);if(str.equals(test.element("major").getText())) {person1.setId(test.attributeValue("id"));person1.setName(test.elementText("name"));person1.setSex(test.elementText("sex"));person1.setAge(test.elementText("age"));person1.setPhone(test.elementText("phone"));person1.setEmail(test.elementText("email"));person1.setBirthday(test.elementText("birthday"));person1.setAddress(test.elementText("address"));person1.setMajor(test.elementText("major"));Object[] rowData = {person1.getId(), person1.getName(),person1.getSex(),person1.getAge(), person1.getBirthday(), person1.getPhone(), person1.getEmail(),person1.getAddress(),person1.getMajor()}; model.addRow(rowData);}}}});radioButton_1.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubDocument doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();String str=radioButton_1.getText();Person person1=new Person();DefaultTableModel model = (DefaultTableModel) table.getModel();while(model.getRowCount()>1){model.removeRow(model.getRowCount()-1);}for(int i=0;i<persons.size();i++) {Element test =(Element)persons.get(i);if(str.equals(test.element("major").getText())) {person1.setId(test.attributeValue("id"));person1.setName(test.elementText("name"));person1.setSex(test.elementText("sex"));person1.setAge(test.elementText("age"));person1.setPhone(test.elementText("phone"));person1.setEmail(test.elementText("email"));person1.setBirthday(test.elementText("birthday"));person1.setAddress(test.elementText("address"));person1.setMajor(test.elementText("major"));Object[] rowData = {person1.getId(), person1.getName(),person1.getSex(),person1.getAge(), person1.getBirthday(), person1.getPhone(), person1.getEmail(),person1.getAddress(),person1.getMajor()}; model.addRow(rowData);}}}});radioButton_2.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent arg0) {// TODO Auto-generated method stubDocument doc = XML.getDocument();Element root=doc.getRootElement();List persons=root.elements();String str=radioButton_2.getText();Person person1=new Person();。
XML实验报告结果

XML实验报告结果XML实验报告学号:2012484306姓名:专业:2012级网络工程1班实验一在 XML 文档中使用 DTD一、实验目的(1)通过本实验,使学生能够了解并掌握XML DTD的定义方法及其用途(2)了解并掌握DTD元素声明的基本语法(3)了解并掌握DTD属性声明的基本语法(4)了解并掌握DTD实体声明的基本语法(5)了解并掌握DTD标记声明的基本语法(6)了解并掌握XMLSpy中基于DTD的XML文件输入二、实验条件配置有windows记事本、写字板或XMLSpy2013开发环境的计算机设备。
三、实验原理及相关知识(1)XML DTD是对XML结构进行定义的机制(2)XML DTD本身不符合XML语法四、实验内容及实验步骤分析下列XML实例,上机编写外部DTD文档,并进行验证。
1、XML实例如下:<学生名册><学生学号="A1"><姓名>张三<性别>男<年龄>20<学生学号="A2"><姓名>李四<性别>女<年龄>19<学生学号="A3"><姓名>王二<性别>男<年龄>212、XML外部DTD文档学号CDATA #REQUIRED>3、截图效果:4、使用XMLSpy 2013对“student.dtd”和“student.xml”进行合法性验证,结果正确。
五、实验总结这个单元,学到了DTD为XML提供了严格而精确的规则。
通过简单的标记声明,能够定义XML文档的结构以及它所允许使用的内容。
DTD提供了XML文档所包含的元素、属性、实体及相互关系的定义。
DTD满足了网络共享和数据交互。
实验二:在XML文档中使用Schema一、实验目的(1)通过本实验,使学生能够了解并掌握XML Schema的定义方法及其用途(2)了解并掌握Schema的基本结构(3)了解并掌握Schema的数据类型(4)了解并掌握Schema的元素声明(5)了解并掌握Schema的属性声明(6)了解并掌握XMLSpy中基于Schema的XML文件输入二、实验条件配置有windows记事本、写字板或XMLSpy 2013开发环境的计算机设备。
xml通讯录

X m l大作业设计报告课程名称:可扩展置标语言(XML)设计题目:XML通讯录院系:南昌大学软件学院专业:软件技术班级:学号:姓名:目录1.设计目的和任务 (1)2.开发环境 (1)2.1硬件环境 (1)2.2软件环境 (1)3.设计题目 (2)3.1题目名称 (2)3.2题目详细描述 (2)3.3功能要求 (3)4.相关技术及知识点 (6)4.1XML (6)4.2XSD (6)4.3 xsl (7)5.设计与实现 (7)5.1创建XML通讯录查看管理功能 (7)5.2通讯录数据修改功能 (8)5.3创建通讯录数据添加功能 (8)6.总结 (8)参考资料 (8)1.设计目的和任务本次期末大作业采用课程设计的形式进行,作为《XML》课程的期末考核。
要求综合运用XML相关知识,设计一个具有实用价值的CD目录应用程序,并撰写课程设计报告。
其目的和任务是:1、综述性部分:巩固和加深学生对本课程基本知识的理解和掌握,查阅相关文献资料,了解和掌握xml的当前研究现状,及实际的应用情况;2、掌握XML程序调试的基本技能,掌握设计XML应用软件的基本思路和方法,结合某个具体实例,进行方案分析和设计。
举例:若选择xml的CSS技术专题,则可选择做一个网上书屋的图书展示页面。
则,方案设计中必须阐明存放数据的xml文档如何设计(可参ch3)?以及你的xml文档的css样式表如何设计(可参ch4),最好给有项目系统结构图示。
3、编程:给出相应的xml文件和DTD设计(或Schema设计),以及有关键代码展示,提高运用XML解决实际问题的能力,培养撰写设计报告的能力。
4、给出主要参考文献目录。
凡是引用参考文献中的结论或结果应在大作业报告中具体注明。
推荐Xml技术专题:(本学期所学内容)1.基于css和xml的通讯录的实现2.基于xsl和xml的项目管理软件的实现(在大项目中分若干项目组,每个项目组的成员是变动的,记录每个程序员(有编号)的工时)2.开发环境2.1硬件环境计算机2.2软件环境工具:Visual Studio 语言:C#3.设计题目3.1题目名称xml通讯录3.2题目详细描述1)XML通讯录包含:联系人的添加于删除,联系人的修改,联系人查看于管理;2)要求对XML通讯录进行XSD验证:TITILE、ARTIST、COUNTRY、COMPANY为字符串格式;PRICE为正数;姓名输入长度在2至14个字符之间;联系地址输入长度在6至16哥字符之间;3)采用页面形式显示数据,同时可以查看详细信息,界面格式如下:通讯录主页面具有查看和管理在分页面双向进行的功能,从此给用户在使用上大大增加了方便度于视觉舒适度。
手机通讯录实验报告及使用说明(附源代码)

手机通讯录实验报告及使用说明(附源代码)自查报告。
标题,手机通讯录实验报告及使用说明(附源代码)。
自查报告:
在进行手机通讯录实验及使用说明的撰写过程中,我仔细阅读
了实验要求,并按照要求完成了实验报告的撰写和源代码的整理。
在此过程中,我遇到了一些困难,但通过查阅资料和请教老师同学,最终顺利完成了任务。
在实验报告中,我详细描述了手机通讯录的功能和使用方法,
包括添加联系人、查找联系人、编辑联系人信息、删除联系人等操作。
我还附上了源代码,并对关键部分进行了解释和注释,以便他
人能够理解和使用。
在整个实验过程中,我学习到了许多关于手机通讯录的知识,
包括数据库的设计和操作、用户界面的设计和实现等。
通过动手实践,我加深了对这些知识的理解,并提升了自己的编程能力。
在撰写实验报告的过程中,我也注意到了一些自己的不足之处,比如在代码注释和格式上还有待改进。
因此,我会继续努力学习,
不断提升自己的编程水平和文档撰写能力。
总的来说,通过这次实验和撰写实验报告,我收获颇丰,不仅
掌握了手机通讯录的设计和实现方法,还提升了自己的综合能力。
我会继续努力,为以后更多的实验和项目做好准备。
自查人,XXX。
日期,XXXX年XX月XX日。
Android编写的通讯录以及实验报告

课程名称Android高级编程班级11sf01 实验日期2013-09-10姓名学号指导教师周景实验成绩95一、实验名称Android开发基础实验二、实验目的及要求1,创建一个联系人的类Contact作为联系人对象的抽象,联系人类的可以包含属性包括:姓名,电话,手机号码,Email,QQ号码,备注信息等等;2,利用联系人类可以实例化联系人对象,例如一个联系人对象的信息可以是:(姓名,张三),(电话,12345678),(手机号码,133****5678),(Email,******************),其他的信息为空。
3,使用XML布局文件创建一个显示联系人信息的界面,在Activity中使用代码加载这个界面。
三、实验环境PC, Android SDK, Eclipse四、实验内容创建一个显示联系人信息的界面五、过程及实验结果1, 任务一:在Eclipse中创建一个Android Application Project,选择合适的应用名称,例如:Contacts、AddressBook或者其他有自己特色的名字,选择合适的Package名称,例如:su.contacts。
2,在工程中创建一个新的Class,名称是Contact,下面是Contact 类的参考实现。
3,实例化一个Contact对象。
4,任务三:使用XML布局文件创建一个显示联系人信息的界面,参考实现如下(注意:用于显示姓名,手机和电子邮件的三个TextView 控件设置了android:id属性,该属性的值作为参数来调用Activity 的findViewById方法就可以获取这三个TextView控件的引用)。
5,任务四:通过findViewById方法获取三个TextView对象,然后调用TextView的setText方法设置显示的文字信息。
六、实验小结1、任务一:在Eclipse中创建一个Android Application Project,名称:Contact;Package,名称:su.contacts。
制作XML通讯录

上一页
返回
第二节 止血方 ❖小蓟饮子 ❖【组成】生地黄30 g,小蓟15 g,滑石15 g
,木通6 g,蒲黄9 g,藕节9 g,淡竹叶9 g ,当归6 g,山栀子9 g,炙甘草6 g。 ❖【用法】水煎,分2次温服。 ❖【功用】凉血止血,利水通淋。 ❖【主治】血淋、尿血。尿中带血,小便频 数,赤涩热痛,舌红,脉数等。 ❖十灰散
❖【功效主治】收敛止血。用于出血证。
❖【用法用量】煎服,3~10 g;研末服1~1. 5 g。
❖【使用注意】出血兼有瘀滞,湿热下痢初 起者慎用。
❖三 七
❖【性味归经】甘、微苦,温。归肝、胃经 。
上一页 下一页 返回
第一节 止血药
❖【使用注意】孕妇慎用。
❖茜 草
❖【性味归经】苦,寒。归肝经。
❖【功效主治】凉血化瘀止血,通经。主治 :①出血证。②血瘀经闭,跌打损伤,风 湿痹痛。
_________________________________ ❖ 任务五:
_________________________________
❖ 【思考与练习】 ❖ 1.用XmlWriter类完成如下结构的XML文档:
❖ <?xml version="1.0" encoding="gb2312"?> ❖ <成绩单> ❖ <!-- 这里是男同学的情况 --> ❖ <学生 学号="xxxx001"> ❖ <姓名>张三哥</姓名> ❖ <性别>男</性别> ❖ <成绩> ❖ <语文>80</语文> ❖ <数学>70</数学> ❖ <外语>75</外语> ❖ </成绩> ❖ </学生> ❖ <!-- 这里是女同学的情况 --> ❖ <学生 学号="xxxx002"> ❖ <姓名>李四妹</姓名> ❖ <性别>女</性别> ❖ <成绩> ❖ <语文>100</语文> ❖ <数学>80</数学> ❖ <外语>85</外语> ❖ </成绩> ❖ </学生> ❖ </成绩单> ❖ 同时,请注意:相关的结点中的内容,来自于C#窗体和控件的设计,如FORM、TEXTBOX、GROUPBOX、
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
综
合
性
实
验
报
告
学院:
专业:
学号:
姓名:
计算机与信息技术学院综合性、设计性实验报告
专业:年级/班级:学年第学期
课程名称XML基础指导教师
本组成员
学号姓名
实验地点实验时间
项目名称个人通讯薄一的设计与实现实验类型综合性
一、实验目的
1、掌握XML文档的基本语法,能够得到格式良好的XML文档;
2、能够了解并掌握XML DTD的定义方法及其用途;
3、能够熟练使用XMLSPY来创建DTD文件及对应的有效的XML文件,并进行验证;
二、实验仪器或设备
学院提供公共机房,1台学生微型计算机。
三、总体设计(设计原理、设计方案及流程等)
设计原理:按照XML、DTD的语法规则来编写、保存文件XML、DTD文件。
设计方案及流程:
利用XML文档作为存储载体来存储个人通讯薄,按照以下要求设计并实现该通讯薄:
1、内含同学(classmate)、朋友(friend)、家人(home)等人员。
每条通讯录至少包
含以下信息:
a、姓名(name):必须有一个,其中包含一个枚举类型的性别(sex)属性;
b、性别(sex):必须有一个;
c、联系方式(tel):必须有一个;
d、QQ号:一个或多个;
e、地址(address):一个或多个;
f、备注(other):一个或多个;
g、根据需要可添加其它字段。
2、为该XML文档,编写DTD文档。
四、实验步骤(包括主要步骤、代码分析等)
1、按照以上设计编写一个规范的XML文档
<?xml version="1.0" encoding="UTF-8"?>
这句话放为XML文件的声明,作为文件的第一行,在其前面不能有空白、其他处理指令或注释。
XML声明以<?xml标识开始、以?>标识结束。
在该XML声明中,属性version 的值为1.0,指出了该XML文件使用的XML版本,目前该属性的值只可以取1.0。
属性encoding规定XML文件采用哪种字符集进行编码,在这encoding的值为“UTF-8”,那么标记的名字以及标记包含的文本内容中就可以使用汉字、日文、英文等。
最后,文件在保存的时候必须选择UTF-8编码来保存,否则会出错。
如果在XML声明中没有指定encoding的值,那么该属性的默认值为UTF-8。
在XML文档中,有且仅有一个根标记,其他标记都必须封装在根标记中如图所示:
在该XML文件中,根标记的名字为“txl”,在根标记中封装了一个或多个名字为“title”、“classmate”、“friend”、“home”的标记。
在名为“classmate”、“friend”、“home”
的标记下,又都包含了名为“name”、“sex”、“tel”、“QQ”、“address”、“other”的子标记,他们分别包含了姓名、性别、联系方式、QQ号、地址、备注这些信息。
至此,该XML文件可以称为一个规范的XML文件。
使用XMLSpy,使用按钮检验XML文件的规范性,所得结果为:
2、为该XML文档编写DTD文档,使其成为一个有效的XML文档
一个有效的XML文件如果和某个DTD文件相关联,并遵守该DTD文件规定的约束条件,就称为有效的XML。
DTD通过其中的元素来限制XML文件中的标记。
下列元素:<!ELEMENT txl (title,classmate+,friend+,home+)>约束XML文件的根标记“txl”可以有一个名为“title”的子标记,一个或多个名为“classmate”、“friend”、“home”的子标记,不可以有任何其他名称的子标记。
下列元素:<!ELEMENT classmate (name,sex,tel,QQ+,address+,other+)>
<!ELEMENT friend (name,sex,tel,QQ+,address+,other+)>
<!ELEMENT home (name,sex,tel,QQ+,address+,other+)>
约束了XML文件中名称为“classmate”、“friend”、“home”的标记恰好顺序地包含有名称分别为“name”、“sex”、“tel”、“QQ”、“address”和“other”子标记,而且约束名称为“classmate”、“friend”、“home”的标记包含的内容不可以有可显示的字符(允许含有空格、回行等空白字符)。
下列元素:<!ELEMENT title (#PCDATA)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT tel (#PCDATA)>
<!ELEMENT QQ (#PCDATA)>
<!ELEMENT address (#PCDATA)>
<!ELEMENT other (#PCDATA)>
分别约束了XML文件中名称为“name”、“sex”、“tel”、“QQ”、“address”和“other”的标记所包含的内容只可以是文本数据,不可以包含有子标记。
在该XML文档中,name的sex属性是枚举类型,那么该属性只可以是枚举给出的值,即属性可以取的值是用符号“|”分隔的几个字符串中的任何一个。
下列元素:
<!ATTLIST name sex (男|女) #REQUIRED>约束了约束了sex属性值可以是男/女。
在保存DTD文件时,要选择“UTF-8”编码方式保存(在保存DTD文件时所选择的编码必须和它要约束的XML文件保持一致)。
在XML文件中,可以使用“文档类型声明”使当前XML文件与一个DTD文件相关联。
如:<!DOCTYPE txl SYSTEM "TXL.dtd"> 其中txl为XML文件的根标记,“TXL.dtd”是与该XML文件相关连的DTD的URI,即使用SYSTEM文档类型声明的格式为:<!DOCTYPE 根标记的名称 SYSTEM “DTD文件的URI”>。
使用XMLSpy,用按钮检验XML文件的有效性,所得结果为:
,所以,现在得到的XML文件是一个有效的XML文件。
五、结果分析与总结
一个规范的XML文件,应当满足以下语法规则:XML文件用“XML声明”开始;XML 文件有且仅有一个根标记;XML的非根标记必须封装在根标记中;非空标记必须由“开始标签”和“结束标签”构成;空标记没有“开始标签”和“结束标签”;XML文件中的全体标记必须形成树形结构,即标记不允许出现交叉。
在编写的XML文件中,如果选择的编码方式为“UTF-8”,XML文件必须选择UTF-8编码来保存;如果选择的编码方式为“gb2312”或“ISO-8859-1”,XML文件必须选择ANSI编码保存。
如果不按以上方式保存,会出错。
如果在要XML文档中使用特殊字符,可以使用字符引用或CDATA段。
如以下代码(CDATA段)
在浏览器中显示效果如下:
以下代码(实体引用):
显示如下:
在DTD文件中,元素的定义以“<!ELEMENT”开始,以“>”结束,其中,“<!ELEMENT”中的“<”、“!”和“ELEMENT”之间不能有空格。
在DTD文件中,用关键字ELEMENT定义一个元素(<!ELEMENT 标记名称标记的约束条件>)时,“<!ELEMENT”、“标记名称”和“标记的约束条件”之间必须有空格,若没有,则会报错。
如:把以上DTD文件中的
<!ELEMENT other (#PCDATA)>改为<!ELEMENTother(#PCDATA)>,打开XML文件时,会出现以下结果:
除此之外,DTD文件中元素的作用与其在DTD文件中的书写位置无关,DTD文件中不允许使用多个元素约束同一个标记。
需要特别注意的是:DTD文件是由元素构成的文本文件,需要使用文本编辑器编写、保存,在保存DTD文件时,选择的编码必须和它要约束的XML文件保持一致。
如不一样,检验有效性时会报错,例如本应该以“UTF-8”编码保存的,用“ANSI”编码保存,在
有汉字的地方会报错:
要想完成一个规范的、有效的XML文件,必须要按照XML、DTD的语法规则来编写、保存文件,这样才能避免出错。
教师签名:
年月日。