版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库系统课程设计报告题目:通讯录管理系统课程代号: 06888116 课程名称:数据库系统课程设计学号: 姓名 班级: 指导教师: 完成日期:2012年12月 目录第一章 引言31.1 通讯录系统设计开发的意义31.2设计通讯录系统的任务及目标31.3通讯录系统开发及运行的软硬件环境3第二章 通讯录系统的分析与设计42.1 通讯录系统需求分析4通讯录系统的目标任务4 通讯录系统的数据流图4通讯录系统的数据字典52.2 通讯录系统概念结构设计72.3 通讯录系统逻辑结构设计72.4通讯录系统物理结构设计82.5 通讯录系统数据库创建92.6 通讯录系统总体结构设计10第三章 通讯录系统的开发及
2、实现113.1 通讯录系统的登录模块113.2 通讯录系统的主界面11 管理员登录界面12 领导登录界面133.3通信录系统的插入界面153.4 通讯录系统的修改界面153.5 通讯录系统的分组管理163.6 通讯录系统分组信息的插入和修改17第四章 通讯录系统设计开发总结19参考文献20附录 21引言1.1 通讯录系统设计开发的意义进入了高科技飞速发展的时代,人们的交往圈子也在不断的扩大,与此同时,人们的交流工具已经不仅仅局限于电话,QQ、电子邮件等成为了大众现在必不可少的通信工具。但是,随着交流信息量的不断增大,并且计算机网络的飞速发展,人们的生活摆脱了传统式的记事本、电话簿,越来越多的靠
3、计算机来帮助人们记住这些事情。这就需要有一个可供人们快速查询的通讯录管理系统,用户可以方便的通过自己安装的通讯录管理系统,来查阅信息。1.2设计通讯录系统的任务及目标通讯录管理系统以方便人们的联系而创建的一个系统。在此系统中,为每个使用此系统的用户开发了用户名和密码,保证了用户的信息安全性。与此同时,此系统用于储存用户的基本信息和常用的联系方式,它方便了用户个人信息的储存和快速查阅的功能。1.3通讯录系统开发及运行的软硬件环境开发通讯录系统开发平台及运行环境如下:系统开发平台:Microsoft Visual Studio 2010系统开发语言:C#数据库管理软件:SQL Server 200
4、5(精简版)运行平台:Windows XP运行环境:Microsoft.NET Framework SDK 4.0第二章 通讯录系统的分析与设计2.1 通讯录系统需求分析通讯录系统的目标任务通讯录管理系统主要功能分为七个模块:用户登录、用户查询、添加记录、修改记录、删除记录、分组信息的查询以及分组信息的增删。用户登录:实现不同用户登录通讯录。显示全部:实现用户对所有存在于数据库中的数据的显示,方便用户了解数据存储的情况。查找记录:实现用户在本软件数据库中查找自己需要的数据功能。添加记录:实现用户添加一条完整的记录,包括姓名、生日、电话、邮箱。修改记录:用户对数据库中已存在的记录进行修改,然后保
5、存已经修改过的数据。删除记录:用户对数据库中已经存在的记录进行行删除操作,然后保存修改过的数据。分组信息查询:方便用户对通讯录的管理,针对通讯录中的人进行分组。分组信息的增删:实现用户增加、删除、修改联系人分组。 通讯录系统的数据流图用户登录通讯录系统主页面图2.1 登录界面 Fig.2.1 login查询显示通讯录系统主界面插入修改删除分组信息图2.2数据库信息主界面Fig.2.2 main分组信息主界面重命名增加删除修改图2.3分组信息主界面Fig.2.3 group通讯录系统的数据字典1.数据项数据项名含义数据类型长度(字节)数据项之间的联系用户名用户的唯一标识char10用户名不同管理
6、级别密码登录时对应用户唯一的标示char10姓名联系人姓名char10性别联系人性别char10姓名性别出生日期联系人出生日期datetime姓名出生日期email联系人emailchar50姓名email电话号码联系人电话号码char50姓名电话号码分组名称分组的名称char10姓名分组名称工作地点联系人工作地点char10(姓名,分组名称)工作地点2.数据结构数据结构名含义说明组成users表用户基本信息用户名+密码联系人表联系人的各项基本信息姓名+性别+出生日期+email+电话号码分组信息分组信息姓名+分组名称+工作地点3.数据流数据流名说明数据流来源数据流去向组成登录用于登录通讯录系
7、统登录数据流通讯录用户名,密码联系人信息用于查询、插入、删除、修改联系人信息联系人数据流联系人模块姓名、性别、出生年月、email、电话号码分组信息用于查询、插入、删除、修改联系人分组分组数据流分组信息模块姓名、分组名称、工作地点4.数据存储编号数据存储名说明输入的数据流输出的数据流组成1登录信息存储用于存储用户的信息登录的基本信息通讯录系统信息表用户名+密码2联系人信息存储用于存储联系人的各项信息用户的基本信息联系人基本信息表姓名+性别+出生日期+email+电话号码3分组信息存储用于存储分组的各项信息联系人的基本信息分组信息表姓名+分组名称+工作地点5.处理过程处理过程名说明输入数据流输出
8、数据流处理登录界面用户登录时候的界面输入用户名和登录密码进入联系人信息界面登录成功,进入联系人管理界面;登录失败,则退出系统联系人信息界面查询、插入、删除、修改联系人信息时候的界面姓名、性别、出生年月、email、电话号码进入联系人信息界面查看联系人各项基本信息分组信息界面查询分组信息时候的界面姓名、分组名称、工作地点进入分组信息界面查看分组的各项基本信息2.2 通讯录系统概念结构设计由需求分析的结果可知,本系统设计的实体包括:(1)登录基本信息:用户名,密码。(2)联系人基本信息:姓名,性别,出生日期,email,电话号码 (3)分组人基本信息:姓名,分组名称,工作地点。这些实体间的联系包括
9、:每位用户可以有多位联系人,多位联系人也可属于多个用户每位联系人属于一个分组。由上述分析可得到系统的ER图:登录用户密码用户名姓名性别生日email电话联系人工作工作分组分组名称工作地点姓名图2.4 E-R图Fig2.4 E-R2.3 通讯录系统逻辑结构设计由系统ER图转化而得到的关系模式如下:(1)users(用户名,密码),其用户名为主键。(2)联系人表(姓名,性别,出生日期,email,电话号码),其姓名为主键。 (3)分组信息(姓名,分组名称,工作地点),(姓名,分组名称)为主键。数据库中用到的表:表 2.1 users表Table 2.1 users属性名字段类型完整性约束用户名ch
10、arPrimary key密码charNot Null表 2.2 联系人表Table 2.2 Linkman属性名字段类型完整性约束姓名charPrimary key性别charnot null出生日期datetimenot nullemailcharnot null电话号码charnot null表 2.3 分组信息表Table 2.3 Group属性名字段类型完整性约束姓名charPrimary key分组名称charPrimary key工作地点charNot null2.4通讯录系统物理结构设计在分组信息表的分组编号上创建索引。2.5 通讯录系统数据库创建Users表联系人表分组信息表
11、Users表联系人表分组信息表2.6 通讯录系统总体结构设计登录通讯录管理系统分组管理修改删除添加查找显示全部退出图 2.5 总体结构Fig 2.5 Form第三章 通讯录系统的开发及实现3.1 通讯录系统的登录模块打开此系统,我们先看到的是欢迎界面。从欢迎界面中,我们可以选择以管理员或是领导的身份进入通讯录系统。若以管理员身份登录,在textbox中输入用户名和密码,点击登录按钮,与数据库的users表连接,验证输入的用户名和密码是否都正确。另外,当用户名和密码输入不正确或者为空时,都会弹出提示框来提示操作错误,重新输入。如果输入正确,则可以进入通讯录系统的主界面1。若以领导的身份登录,验证
12、方法同上,进入通讯录系统主界面2.3.2 通讯录系统的主界面 管理员界面把数据库中的表导入datagridview中:在姓名栏输入想要查询的姓名,点击查询出现该人的信息。选中想要删除的人,点击删除。点击确定,若删除成功,可以看到: 领导界面点击查询,可以查到某一分组的全部人:点击打印报表打印水晶报表。点击导入,将选中系统中已有的excel导入进来。点击导出,将系统的通讯录导出,保存。3.3通信录系统的插入界面进入插入界面后,按照顺序将要添加的联系人信息填写完整,如果信息输入不完整,拒绝插入,反之,可以完成插入,显示插入成功的提示。可以返回通讯录系统登录主界面刷新查看,添加完成。3.4 通讯录系
13、统的修改界面进入修改界面,修改要修改的信息,要提示的是,在数据库中,姓名为主键,在此不做修改。修改完成后,点击确定,返回一个修改成功的提示。此时,回到通讯录系统的主界面刷新查询,可以看到修改完成。3.5 通讯录系统的分组管理把分组信息表中的信息读到分组管理界面的datagridview中。选中某一行,点击删除。若删除成功,可以看到:3.6 通讯录系统分组信息的插入和修改为了方便操作,让插入和修改使用同一个显示界面,在分组管理的主界面点击修改按钮时,弹出插入窗口,将此窗口的名字改为“修改”。第四章 通讯录系统设计开发总结 为期三周的课程设计结束了,我从中也收获了不少。对于这学期初刚刚接触数据库和
14、c#课程设计的我,此次的设计课程是有一定难度的。最初,是选题阶段,我选取了业务较为简单明确的通讯录管理系统。在选定了题目之后,我进行了数据库的构想与设计。在我最初认为的通讯录系统中,我觉得通讯录就是实现对于姓名和电话号码的查找,随着设计的深入和不断的学习,我又为通讯录管理系统加入了保障用户信息安全性的用户名和登录密码,为了保障用户使用此系统更加方便快捷,我又添加了用户分组,便于联系人的查找。确定了系统的基本模型后,我开始了设计。首先是学着画流程图和数据字典。在此过程中,我又查看了有关软件工程的书籍。之后,我开始用SQL Server 2005设计数据库中用到的各种表。在设计表的过程中,我又加深
15、了创建数据库的知识,例如,要注意完整性和安全性,还学会了创建索引。设计好数据库后,我开始了Microsoft Visual Studio 2010编程。这一阶段也是我课程设计中收获最大的阶段。从中学会了调用数据库中的内容,并且对内容进行增、删、改、查。在整体的通信录管理系统初步完成后,我又进行了反复的运行来测试系统是否稳定,最后,又再次对数据库中的信息进行了丰富。 这次我做的通信录管理系统,其实与别人的相比还是比较简单的,只是实现了对于数据库最基本的操作,但是对于我自身而言,是很大的进步,因为通过这几周的学习,起初我觉得编程是一件很难的事情,但在学习过程中,通过老师的教授、自己查阅书籍和与同学
16、的交流,逐渐让我觉得编程其实没有想象中的困难,是一件很有乐趣的事情。就我这次做得通讯录管理系统而言,当然还存在着不足,对此我还会再尽力完善。参考文献1 王珊 萨师煊.数据库系统概论.第四版.北京.高等教育出版社.2006年2 王超,潘杨.Visual C# 通用范例开发金典.北京.电子工业出版社.2008年3 马骏.c#程序设计及应用教程.第二版.北京.人民邮电出版社.2009年4 陈向群,陈鸣,戴葵等.高等院校计算机课程设计指导丛书.北京.机械工程出版社.2012年附录一Publicclass类源程序using System;using System.Collections.Generic;
17、using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace 通讯录 class publicclass public static SqlConnection createconn() string connStr = Data Source=ABLE-ABLE;Initial Catalog=tongxunlu;Integrated Security=True; SqlConnection conn = new SqlConnection(connStr); retur
18、n conn; public static DataTable gettable(string sql) SqlConnection conn = createconn(); SqlDataAdapter da=new SqlDataAdapter (sql,conn); DataTable dt = new DataTable(); da.Fill(dt); return dt; public static bool zhixingSQl(string sql) SqlConnection conn = createconn(); SqlCommand cmd = new SqlComman
19、d(sql, conn); if (conn.State != ConnectionState.Open) conn.Open(); if (cmd.ExecuteNonQuery() 0) return true; else return false; conn.Close(); public static bool checkUser(string userName, string passWord) string sql = select 密码 from users where 用户名= + userName + ; DataTable dt = gettable(sql); if (p
20、assWord = dt.Rows0密码.ToString().Trim() return true; else return false; 附录二welcome界面源程序using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 通讯录 public partial class wel
21、come : Form public welcome() InitializeComponent(); private void button1_Click(object sender, EventArgs e) login lo = new login(); lo.Show(); private void button2_Click(object sender, EventArgs e) login1 lo1 = new login1(); lo1.Show(); Login 界面源程序using System;using System.Collections.Generic;using S
22、ystem.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 通讯录 public partial class login : Form public login() InitializeComponent(); private void buttonok_Click(object sender, EventArgs e) if (textBoxname.Text.Length != 0 &
23、textBoxpwd.Text.Length != 0) if (publicclass.checkUser(textBoxname.Text.Trim(), textBoxpwd.Text.Trim() main formMain = new main(); formMain.Show(); else MessageBox.Show(用户名或密码不正确, 提示); else MessageBox.Show(用户名或密码不能为空, 提示); private void buttoncancel_Click(object sender, EventArgs e) Application.Exit(
24、); 附录三Main界面源程序using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 通讯录 public partial class main : Form public main() InitializeComponent(); private void main_Load(ob
25、ject sender, EventArgs e) DataTable dt = publicclass.gettable(select * from 联系人表); dataGridView1.DataSource = dt; private void 插入ToolStripMenuItem_Click(object sender, EventArgs e) insert forminsert = new insert(); forminsert.Show(); private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
26、 string name; int index = dataGridView1.CurrentRow.Index; name = dataGridView1姓名, index.Value.ToString().Trim(); string sql = delete 联系人表 where 姓名= + name + ; if (MessageBox.Show(是否要删除, 提示, MessageBoxButtons.YesNo) = System.Windows.Forms.DialogResult.Yes) if (publicclass.zhixingSQl(sql) MessageBox.S
27、how(删除成功|); else MessageBox.Show(删除失败); private void 修改ToolStripMenuItem_Click(object sender, EventArgs e) string name; int index = dataGridView1.CurrentRow.Index; name = dataGridView1姓名, index.Value.ToString().Trim(); modify formmodify = new modify(name); formmodify.Show(); private void 添加分组ToolStr
28、ipMenuItem_Click(object sender, EventArgs e) group formgroup = new group(); formgroup.Show(); private void 查询ToolStripMenuItem_Click(object sender, EventArgs e) string sql; if (textBoxname.Text.Length != 0) sql = select * from 联系人表 where 姓名= + textBoxname.Text.Trim() + ; else sql = select * from 联系人
29、表; DataTable dt = publicclass.gettable(sql); dataGridView1.DataSource = dt; 附录四Main1界面using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using Excel = Microsoft.Office.Interop
30、.Excel;using System.Data.OleDb;namespace 通讯录 public partial class main1 : Form public main1() InitializeComponent(); private void searchToolStripMenuItem_Click(object sender, EventArgs e) string sql; if (textBox1.Text.Length != 0) sql = select 联系人.姓名,性别,出生日期,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where
31、 分组名称 = + textBox1.Text.Trim() + and 联系人表.姓名=分组信息姓名; else sql = select 联系人表 姓名,性别,出生,email,电话号码,分组名称,工作地点 from 联系人表,分组信息 where 联系人表.姓名=分组信息姓名; DataTable dt = publicclass.gettable(sql); dataGridView1.DataSource = dt; private void printToolStripMenuItem_Click(object sender, EventArgs e) CrystalReport1
32、 rpt = new CrystalReport1(); rpt.SetDataSource(dt); Form1 frm = new Form1(); frm.crystalReportViewer1.ReportSource = rpt; frm.ShowDialog(); 点击导入,将系统已存的通讯录导入进来。private void 导入ToolStripMenuItem_Click(object sender, EventArgs e) Excel.Application excel = new Excel.Application(); excel.Application.Workb
33、ooks.Add(true); for (int i = 0; i dataGridView1.ColumnCount; i+) excel.Cells1, i + 1 = dataGridView1.Columnsi.HeaderText; for (int i = 0; i dataGridView1.RowCount - 1; i+) for (int j = 0; j dataGridView1.ColumnCount; j+) if (dataGridView1j, i.Value = typeof(string) excel.Cellsi + 2, j + 1 = + dataGr
34、idView1i, j.Value.ToString(); else excel.Cellsi + 2, j + 1 = dataGridView1j, i.Value.ToString(); excel.Visible = true; 点击导出,将系统的通讯录导出,保存。private void 导出ToolStripMenuItem_Click(object sender, EventArgs e) OpenFileDialog ofd = new OpenFileDialog(); ofd.Title = Excel文件t; ofd.FileName = ; ofd.InitialDir
35、ectory = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); ofd.Filter = Excel文件t(*.xls)|*.xls; ofd.ValidateNames = true; ofd.CheckFileExists = true; ofd.CheckPathExists = true; string strName = string.Empty; if (ofd.ShowDialog() = DialogResult.OK) strName = ofd.FileName; if (strName
36、= ) MessageBox.Show(没有选择Excel文件!无法进行数据导入); return; EcxelToDataGridView(strName, this.dataGridView1 ); public void EcxelToDataGridView(string filePath, DataGridView dgv) string strConn = Provider=Microsoft.Jet.OLEDB.4.0;Data Source = + filePath + ;Extended Properties =Excel 8.0;HDR=NO;IMEX=1; OleDbCo
37、nnection conn = new OleDbConnection(strConn); conn.Open(); string strExcel = ; OleDbDataAdapter myCommand = null; DataSet ds = null; strExcel = select * from sheet1$; myCommand = new OleDbDataAdapter(strExcel, strConn); ds = new DataSet(); myCommand.Fill(ds, table1); DataTable tb = new DataTable();
38、foreach (DataGridViewColumn dgvc in dgv.Columns) if (dgvc.Visible & dgvc.CellType != typeof(DataGridViewCheckBoxCell) DataColumn dc = new DataColumn(); dc.ColumnName = dgvc.DataPropertyName; tb.Columns.Add(dc); foreach (DataRow excelRow in ds.Tables0.Rows) int i = 0; DataRow dr = tb.NewRow(); foreac
39、h (DataColumn dc in tb.Columns) drdc = excelRowi; i+; tb.Rows.Add(dr); dgv.DataSource = tb; 附录五Insert界面源程序using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 通讯录 publ
40、ic partial class insert : Form public insert() InitializeComponent(); private void button2_Click(object sender, EventArgs e) this.Close(); private void in_insert_Click(object sender, EventArgs e) if (in_name.Text.Length != 0 & in_phone.Text.Length != 0 & in_email.Text.Length != 0 & in_datatime.Text.
41、Length != 0 & comboBox1.SelectedItem != null) string sql = insert into 联系人表 (姓名性别,出生日期,email,电话号码)values( + in_name.Text.Trim() + , + comboBox1.SelectedItem.ToString() + , + in_datatime.Text.Trim() +, + in_email.Text.Trim() + , + in_phone.Text.Trim() + ); if (publicclass.zhixingSQl(sql) MessageBox.S
42、how(插入成功); else MessageBox.Show(插入失败); else MessageBox.Show(请完整填写信息); 附录六Modify界面源程序using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 通讯录 public partial class modif
43、y : Form string _name; public modify(string name) InitializeComponent(); _name = name; private void button2_Click(object sender, EventArgs e) this.Close(); private void mo_modify_Click(object sender, EventArgs e) if (mo_name.Text.Length != 0 & mo_phone.Text.Length != 0 & mo_email.Text.Length != 0 &
44、mo_datetime.Text.Length != 0 & mo_sex .Text .Length !=0) string sql = update 联系人表set 性别= + mo_sex .Text .Trim () + 出生日期 = + mo_datetime.Text.Trim() + ,email= + mo_email.Text.Trim() + ,电话号码= + mo_phone.Text.Trim() + where 姓名= + _name + ; if (publicclass.zhixingSQl(sql) MessageBox.Show(修改成功); else Mes
45、sageBox.Show(修改失败); else MessageBox.Show(请完整填写信息); private void modify_Load(object sender, EventArgs e) DataTable dt = publicclass.gettable(select * from 联系人表where 姓名 = +_name+); mo_name.Text = _name; mo_sex .Text = dt.Rows01.ToString().Trim(); mo_datetime.Text = dt.Rows02.ToString().Trim(); mo_emai
46、l.Text = dt.Rows03.ToString().Trim(); mo_phone.Text = dt.Rows04.ToString().Trim(); 附录七Group界面源程序using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;namespace 通讯录 public partial
47、 class group : Form public group() InitializeComponent(); private void group_Load(object sender, EventArgs e) DataTable dt = publicclass.gettable(select * from 分组信息); dataGridView1.DataSource = dt; private void 添加ToolStripMenuItem_Click(object sender, EventArgs e) group1 formgroup1 = new group1(); f
48、ormgroup1.Show(); private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) string name; int index = dataGridView1.CurrentRow.Index; name = dataGridView1姓名, index.Value.ToString().Trim(); string sql = delete 分组信息 where 姓名= + name + ; if (MessageBox.Show(是否要删除, 提示, MessageBoxButtons.YesNo) = System.W
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 河南省部分名校2024-2025学年高三上学期11月阶段性测试(三)(期中)生物 含答案
- 旋喷桩法地基加固方案-建筑实操
- 2023年中考物理总复习:压强(原卷版)
- 2025新译林版英语七年级下Unit 6 Beautiful landscapes单词表
- 南充2024年06版小学四年级英语第1单元真题
- 2024-2025学年六年级语文上册第四单元检测试卷(B)(有答案)
- 2024-2025学年八年级语文上册期末专项复习:综合性学习+口语交际【考点清单】
- 2023年显微镜资金筹措计划书
- 强化团内活动-转化学生思想
- 2024年留置导尿管项目资金需求报告代可行性研究报告
- 2023年阜阳职业技术学院人才招聘笔试真题
- 第三单元名著导读《骆驼祥子》整本书阅读教学设计+2023-2024学年统编版语文七年级下册
- 2024年中级电工考前必刷必练题库500题(含真题、必会题)
- 《第二单元测试卷》(单元练习)-2024-2025学年六年级上册数学北师大版
- 2024年员工向公司借款合同标准版本(六篇)
- DB11T 527-2021 配电室安全管理规范
- 2024-2030年中国铁路电力电气化行业运营动态及市场规模发展预测研究报告
- 《PLC应用技术(西门子S7-1200)第二版》全套教学课件
- 文物建筑和博物馆火灾风险指南及检查指引
- 河南省部分学校2024-2025学年高三上学期10月大联考物理试卷(无答案)
- 小学三年级数学口算 3位乘或除1位第1-10篇
评论
0/150
提交评论