




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
王L让我们弄个课程设计,才讲两节课就撒手不管了。还说简单,简单个JB。对他来说当然简单了,对我这样的菜鸟来说简直是难如登天,我相信像我这样的菜鸟肯定还有,只有菜鸟才知道菜鸟的辛苦,为了让这些菜鸟们不再辛苦了,我把所有的实验过程一步一步都给写了出来,细化到最简单,只要是个人都能看憧的。不能保证我的过程都是对了,我也是摸着石头过了河,在菜鸟们还没有看到桥的时候不妨也摸着石头走一趟吧。下面步骤中的一些东西是本人的看法,如果错了也不必吐糟,毕竟哥还是个初级菜鸟。【第一部分:创建数据库】在自己的E盘建立一个名为课程设计数据库的文件夹。打开sqlserver2008,点击新建查询,在右边的编辑框里输入如下代码一一》点击执行。createdatabasestudentprimary(name=student_dat,'E:\课程设计数据库\student.mdf,size=5MB,maxsize=50,=2MB)logon(name=教学管理数据库_log,'E:\课程设计数据库\student.ldf,size=5MB,maxsize=100MB,=2MB)gousestudentgoCREATETABLEstudent(snoNVARCHAR(IO)PRIMARYKEYsnameNVARCHAR(8),ssexNVARCHAR(l),sbirthdayNVARCHAR(IO))createtableuserlogin(usernameNVARCHAR(8)primarykey,passwordnvarchar(20)NOTNULL)insertintostudentvalues(,2012001,;许敏7女71992/03/18')insertintostudentvalues('20120027王鹏7男71996/12/28')insertintostudentvalues('2012003,;张垒7男','1988/01/13')insertintostudentvalues('2012004';李小红丁女71993/06/22')insertintostudentvalues('2012005','张哲?男71992/12/30')insertintostudentvalues('20120067张强丁男71989/01/06')insertintostudentvalues('2012007,;刘敏红7女71988/12/02*)insertintouserloginvalues('admin'/'123456,)insertintouserloginvalues('zhangsan7123456')insertintouserloginvalues('lisi,/'123456,)这里面有两张表,一张是学生表,一张是登录表,里面是用户名和密码。这是会发现在E盘创建的文件家里出现了两个文件,一个是数据库文件一个是数据库口志文件。就这样后台数据库就创建好了。(大家也可以根据自己的需要来修改)【第二部分:创建登陆窗「I】,打开isualstudio2008,文件》新建》项目。左边点击visualc#,右边点击window窗体应用程序。名称改为studentMIS,位置根据自己情况而定。一定要在创建解决方案的目录前面打钩。这时界面有一个Forml窗体了。下面我们要做的就是设置三层架构了。简单的说就是添加三个类库。三个类库分别是是BBL(逻辑判断层,我们一般用不到,也可以不添加),DAL(数据操作层,操作数据库的代码都写在这里),MODEL(联系层与层之间的关系)点击文件一一》添加一一》新建项目一》类库。名称改为DAL。点击文件一一》添加一一》新建项目一一》类库。名称改为MODEL。这里不需要用到BBL层,所以就不添加了。前面的步骤就把这次试验的基本架构弄好了,下面要弄的就是添加事件了,怎么登录和连接后台数据库,以及对数据库的修改。展开用边的studentMIS,选中Forml,重命名为formlogin.cs,双击formlogin,点击视图——》属性窗II。在出现的属性窗II中将text后面的Forml改为登录。看看(name)后面是否为formlogin,(这就相当与是这个登录窗II的ID,唯一表示这个窗体,以后所创建的每一个窗体都有一个在试验中唯一的名字来表示自己)。下面来添加窗体的控件按钮。点击视图一一》工具箱,展开所有windows窗体。左键单击Label控件,按后把鼠标放在我们登录窗体中空白位置左键点击一下,就会发现登录窗体中出现了一个labell的字样,用同样的办法就会发现出现了Iabel2.鼠标点中labell,在属性窗口将text后面的改为用户名。鼠标点中Iabel2,在属性窗II中将text后面的改为密码。在工具箱中找到TextBox控件。同样方法鼠标单击,然后在登录窗体中空白位置单击鼠标左键,就会出现编辑框,用鼠标左键选中编辑框,在属性窗II中将(name)后面的改为txtboxusername.用同样的方法再添加一个编辑框控件,在属性窗II中将(name)后面的改为txtboxpassword3现在添加按钮控件,在工具箱中找到Button控件,左键单击,然后在登录窗体中的空白位置单击左键,选中按钮控件,在他的属性窗II中将text后面的改为登录,将(name)后面的改为btnlogino用同样的方法再添加一个按钮控件,讲将text后面的改为取消,将(name)后而的改为btncancel。经过12个步骤我们就创建好了一个登陆窗IIo【第三部分:连接数据库登陆】在建立数据库的连接前先说一下本人对于这个连接后台数据库的原理的理解。在我们在登陆窗II的编辑框里输入用户名和密码后点击登陆时,在登陆事件里我们通过MODEL层函数Userinformation将我们输入的信息传到DAL层的getUserlnformation函数内,该函数的功能是传过来的信息与我们开始在后台数据库里保存的用户名和密码进行对比,如果对比成功就会显示登陆成功,这样就可以打开另一个窗II了,然后就可以进行操作,否则显示登陆失败。首先我们来实现后台数据库对比我们输入信息的代码。展开DAL层,删除classl.cs(其实我们也可以直接改名而不用删除的,为了更好的演示,我们还是自己创建比较好),选中DAL,点击右键一一》添加一一》新建项。在弹出的对话框左边选择C#项,右边选择类。名称改为Dal.cso展开DAL层,双击Dal.cs,进入了编辑框,这里面写一些操作数据库的代码,在class前面加上public,在Dal类中添加如下代码。卜•面代码的作用是将你输入的信息和数据库里信息对比,如果正确就返回1,显示登陆成功,如果不正确就不返回1,显示登陆失败。publicstaticintgetUserlnformation(Userlnformationuser)(stringconnstr=@Hserver=.;database=student;integratedsecurity=sspin;using(SqlConnectionconn=newSqlConnection(connstr))(conn.Open();using(SqlCommandcmd=conn.CreateCommand())(cmd.CommandText="selectcount(*)fromuserloginwhereusername=@nameandpassword=@pwd";cmd.Parameters.Add(newSqlParameter(,,@name,,/user.getUserName()));cmd.Parameters.Add(newSqlParameter(,,@pwd,,,user.getPassword()));intcount=Convert.Tolnt32(cmd.ExecuteScalar());returncount;}}}输入代码是要注意左边大括号和右边大括号的个数要相等。下面都是遵循这个原则的,在后面我就不多说了。接下来我们要在MODEL层里创建一个Userinformation类,方法如上,名称改为Userinformation.cso建好后双击进入编辑框,在classUserinformation前加上public,类中添加如下代码privatestringusername;privatestringpassword;publicUserlnformation(stringusername,stringpassword)this.username=username;this.password=password;publicstringgetUserName()(returnusername;}publicstringgetPassword(){returnpassword;}在我们点击登陆时如果登陆成功,应该跳转到另一个窗II,多以首先我们应该创建一个新窗体,学生管理系统。选中studentMIS,右键》添加》新建项。选择windows窗体。名称改为formmain.cs。创建好后在属性框中将text后面改为学生管理系统。双击formlogin.cso双击登陆按钮进入编辑框,输入如下代码Userinformationuser=newUserlnformation(txtboxusername.Text.Trim(),txtboxpassword.Text.TrimO);intcount=DAL.Dal.getUserlnformation(user);if(count==l){newformmain().Show();this.Hide();}else{MessageBox.Show("错误的用户名或密码!”);txtboxusername.Text=〃清空txtboxpassword.Text=txtboxusername.Focus();//获取焦点}双击formlogin放回到登陆窗口,双击取消,输入代码this.Close();«现在我们可以开始调试了,看看能不能成功,左键选中studentMIS,点击调试一一》启动调试。这是我们会发现调试不成功,点击否,出现4个错误,什么缺少应用之类的。出现这样的错误原因是,我们没有应用,这就好像我们写程序而没有写头文件一样。该怎么解决呢,很简单。选中DAL,右键——》添加引用——》项目,点击MODEL,确定。选中studentMIS,右键——》添加引用——》项目,点击DAL,确定,选中studentMIS,右键——》添加引用一—》项目,点击MODELo确定10,进过第九步还没有解决问题,双击Dal.cso在最上面加上usingMODEL;usingSystem.Data.SqlClient;o双击登陆进入编辑框,在最上面添加usingDAL;usingMODEL;11,这时我们早调试一遍,在弹出的登陆窗I】中输入用户名和密码,点击登陆后会弹出一个新的窗「1,学生管理系统。12到这里我们连接后台数据库登陆就做成功了。卜面我们需要做的就是在学生管理系统窗II添加一些控件来显示后台数据库的学生表信息,以及对数据库增删查改操作的控件。【第四部分数学生管理系统添加控件】1,现在我们先来试一试在学生管理系统显示数据库中学生表中的信息,双击formmain.cs,在工具箱中找到DataGridView控件,在学生管理系统窗体中添加这个控件,在属性窗II中将(name)后面的改为dgv.下面我,们就开始来写代码了。需要输出数据库中的表,对数据库操作,需要在DAL中写代码。展开DAL,双击Dal,cs进入编辑页面,添加下面代码publicstaticDataTablereturnTable()stringconnstr=@"server=.;database=student;integratedsecurity=sspi";stringsql="select*fromstudent";using(SqlConnectionconn=newSqlConnection(connstr))//连接数据库的字符串{conn.Open();//打开对数据库的连接using(SqlDataAdapteradapter=newSqlDataAdapter(sql,connstr)){〃数据的适配器,负责填充数据DataTabletable=newDataTable();adapter.Fill(table);returntable;}}}代码的作用是返回数据库中的学生表。鼠标选中学生管理系统窗体,双击进入编辑页面,输入一下代码。dgv.DataSource=DAL.Dal.returnTable();在最上面添加usingSystem.Data;o下面我们就可以来调试一下,发现在学生管理系统上出现了数据库中的学生表了。调试成功。虽然调试成功了,只是显示学生表,我们可以加一些修饰来移动表里的记录,比如说上一记录,下一记录,首记录,尾记录等等。下面我们就开始来实现这些功能。首先在DataGridView控件下面添加4个Button按钮控件,属性框的text分别为首记录,尾记录,上一■记录,卜一•记录o(name)后面分别改为btnfirst,btnlast,btnprevious,btnnexto下面就来实现事件了,首先鼠标选中学生管理系统窗体,双击进入编辑页面,在studentMIS的命名空间先添加如下代码,值得注意的是不是添加在studentMIS的命名空间的里面任何一个类里。BindingSourcebs=newBindingSource();返回学生管理系统窗体,双击首记录进入代码编辑区,添加代码bs.MoveFirst。;。双击尾记录进入代码编辑区,添加代码bs.MoveLast();o双击上一记录进入代码编辑区,添加代码bs.MovePrevious();a双击下一记录进入代码编辑区,添加代码bs.MoveNext。;。下面我们来调试一下看看怎么样。发现四个按钮没用,怎么回事??不急,这是因为我们在显示学生表示是直接调用returnTable();的。双击dgv控件进入编辑区,用bs.DataSource=DAL.Dal.returnTable();dgv.DataSource=bs;来替换原来的gv.DataSource=DAL.Dal.returnTable()。下面我们再来调试一下,成功了。这回我们再来添加一个修饰,显示当前用户。首先在学生管理系统窗体添加一个label控件(放在什么地方随便你们),在属性框中将text改为当前用户。再添加一个label控件放在其后,将属性框中的text后面字母删除o(name)后面改为Ibltip。显示当前用户为静态的,所以需要在studentMIS下创建一个类,右键一一》添加一一》新建项》类。名称改为common。双击common,添加代码publicstaticstringusername;0在classcommon前添加public,和上面一样,把这些类设为公共类,这样别的函数就可以访问了。返回学生管理系统窗体,双击窗体添加代码,Ibltip.Text=common.username;o调试一下看看结果怎么样。【数据库的增删查改操作】1,前面我们实现了连接数据库的登陆以及显示数据库中的表。这回我们来实现如何操作数据库中的数据。首先我们双击formmain进入学生管理系统窗体,在工具箱中的菜单和工具栏中点击MenuStrip控件,添加到窗体的dgv控件的上面。我们可以在第一个标题中输入“系统”,在其下拉空格中输入,注销和退出。在第二个标题中输入“信息管理”,在其下拉空格中输入四个菜单选项,插入学生信息,删除学生信息,修改学生信息,查询学生信息。(大家还可以根据自己的需要来添加菜单项,我们这里主要是实现增删查改,所以我们就不添加很多了。)到这一步了我们就可以为增删查改来添加窗体了,但是在这之前我要说一声,实现增删查改的过程中我们会不停的调试,如果每一次调试都需要输入用户名和密码会很麻烦的,既然我们的登陆窗II己经设计成功了,呢么接下来我们就不必每次太调试都运行登陆窗II了,我们可以暂时跳过这个窗II,等到程序完全结束后我们再来运行它。双击studentMISF面的Program.cso在代码Application.Run(newformlogin());前添加〃,表示不运行他了,在其卜面添加代码Application.Run(newformmain());,便是直接运行formmain这个窗11,也就是学生管理系统窗体。下面天使一下看看,没有了登陆窗「I,直接进入了学生管理窗口。前面我们说过MODEL层是联系层与层之间联系的,我们登陆的用户名和密码先传到MODEL层中的Userlnformation.cs中然后才传到DAL层中与数据库做对比的。我们添加删除等操作也是这样的,比如我们添加学生信息,首先我们把信息传到MODEL层中的Studentinformation中最后DAL层中的StudentDAO调用Studentinformation就把我们输入的学生信息添加到数据库了。那么首先我们要在MODEL层下面添加一个类名称为Studentlnformation.cs。双击进入编辑界面,在其前面添加public。类中添加如下代码privatestringsno;privatestringsname;privatestringsex;privatestringbirthday;publicStudentlnformation(stringsno,stringsname,stringsex,stringbirthday){this.sno=sno;this.sname=sname;this.sex=sex;this.birthday=birthday;}publicstringgetSno()(returnsno;}publicstringgetSname()(returnsname;)publicstringgetSex()(returnsex;}publicstringgetBirthday(){returnbirthday;}代码的作用是,如果给Studentinformation创建一个对象,这个对象可以调用这个类里的函数输出参数。当我们出入一条学生信息到数据库时我们需要在dgv控件中显示出来,那么我们就需要及时刷新数据库显示在dgv中。我们可■以学生管理系统窗体下创建一个刷新函数mybinding()o双击学生管理窗体进入编辑页面,将privatevoidformmain_Load(objectsender,EventArgse)中的代码bs.DataSource=DALDal.returnTable();dgv.DataSource=bs;替换成mybinding();,在其上面输入以下代码publicvoidmybinding。//刷新网格{bs.DataSource=DAL.Dal.returnTable();dgv.DataSource=bs;}代码的功能是在后面的程序中只要调用mybinding()就可以刷新表格了,而不需要从新打开数据库才能显示操作的数据。接下来我们要做的就是如何当我们点击插入学生信息按钮时就会弹出一个输入信息的对话框。下面我们就在studentMIS卜•面添加一个windows窗体,名称改为formadd.cs,在属性框中将(name)后面改为formadd。为其添加四个label控件分别命名为学号,姓名,性别,出生口期。添加三TextBox控件分别放在学号,姓名出生日期后面(name)后面分别改为txtboxsno,txtboxsname,txtboxsbirthday,选择ComboBox控件放在性别后面,在属性框中将(name)后面改为cmbboxsex,text后面改为男。再添加两个Button按钮,text后面改为录入,取消,(name)后面改为btninsert,btncanceL双击插入学生信息,输入以卜代码if(newformadd().ShowDialog()==DialogResult.OK){mybindingO;)代码的作用是显示我们创建的添加学生信息窗体,目前还不执行mybindingO;,也就是说不能刷新数据库。为什么呢???当我们录入数据后点击录入按钮,这样添加信息窗体就会消失,这时我们开始调用mybinding();,但这我们还需要添加一行代码,当窗体消失时返回值为DialogResult.OK。双击formadd,点击属性框上面的闪电标志,找到FormClosed,双击进入编辑页面,添加代码this.DialogResult=DialogResult.OK;。这样当我们录入好学生信息后就会自动刷新网格了。到这我们应该双击录入写代码了,可■是大家别忘了,我们还没有对DAL层进行操作呢。我们只是创建了模板,而没有真正实现插入数据到数据库中。如果我们现在就调试录入信息,我们的信息只能传到MODEL层中的一个类中而不能被真正录入到数据库中,应为DAL层中还没有函数调用MODEL层中的学生信息。卜.面我们就开始来实现怎么出入传来的数据到数据库中。先在DAL层下面添加一个类名称改为StudentDAO.cSo这是来实现插入数据到数据库的。双击进入编辑区在类classStudentDAO前加上public,然后在类中添加如下代码publicstaticvoidinserStudent(Studentlnformationstudent)(stringstrsql="insertintostudentvalues(@sno,@sname,@sex,@birthday)”;SqlParameter[]para=newSqlParameter[]{newSqlParameter("@sno",SqlDbType.NVarChar),newSqlParameter("@sname",SqlDbType.NVarChar),newSqlParameter("@sex”,SqlDbType.NVarChar),newSqlParameter("@birthday",SqlDbType.NVarChar));inti=0;para[i++].Value=student.getSno();para[i++].Value=student.getSname();para[i++].Value=student.getSex();para[i++].Value=student.getBirthday();DaLExecuteNonQuery(strsql,para);}在最上面添加usingMODEL;usingSystem.Data.SqlClient;usingSystem.Data;o这是添加学生的代码,删除修改之类的代码课依次向下添加。11,现在我们可以调试一下,发现显示一个错误,显示'DAL.Dal”并不包含%xecuteNonQuery”的定义。这时我们需要在Dal.cs中添加一■个ExecuteNonQuery。双击Dal进入编辑区,添加代码publicstaticvoidExecuteNonQuery(stringstrsql,paramsSqlParameter[]para)(stringconnstr=@Hserver=.;database=student;integratedsecurity=sspin;using(SqlConnectionconn=newSqlConnection(connstr))(conn.Open();using(SqlCommandcmd=conn.CreateCommand())(cmd.CommandText=strsql;cmd.Parameters.AddRange(para);cmd.ExecuteNonQuery();}}}一定要记住的是左大括号和右大括号个数要相等。现在我们调试一下发现成功了,接下来我们的任务就是编写录入事件的代码了,双击录入按钮进入编辑区。添加如下代码if(txtboxsno.Text=="H){MessageBox.Show(”学号不能为空");txtboxsno.Focus();return;)if(txtboxsname.Text==,H,)MessageBox.Show("姓名不能为空");txtboxsname.Focus();return;)〃其实,还需要进一步判断:输入的学号与数据库中的学号是否重复stringsno=txtboxsno.Text.Trim();stringsname=txtboxsname.Text.Trim();stringsex=cmbboxsex.Text.Trim();stringday=txtboxsbirthday.Text.Trim();Studentinformationstudent=newStudentlnformation(sno,sname,sex,day);DAL.StudentDAO.inserStudent(student);txtboxsno.Text=txtboxsname.Text=,n,;txtboxsbirthday.Text=IH,;txtboxsno.Focus();在最上面添加usingMODEL;,因为要使用到Studentinformation,添加后表示引用了MODELS下面来调试一下,随便添加一个就可以了。下•面我们来实现删除事件。首先在studentMIS卜面添加一个windows窗体,名称改为formdelete.cso在窗体添加一个label控件,text改为请输入要删除学生的学号。添加一个TextBox控件,将(name)后面改为txtboxsno。再添加两个Button控件,text分别为删除当前学生,清空数据库。首先我们要早DAL中的studentDAO中添加删除学生信息的代码。双击studentDAO,cs进入编辑区,添加代码publicstaticvoiddeleteStudent(stringstudentno)(stringstrsql="deletefromstudentwheresno=@noH;SqlParameter[]para=newSqlParameter[](newSqlParameter(,l@no,\SqlDbType.NVarChar)};para[O].Value=studentno;Dal.ExecuteNonQuery(strsql,para);}publicstaticvoidclear()(stringstrsql="deletefromstudent";SqlParameter[]para=newSqlParameter[]();Dal.ExecuteNonQuery(strsql,para);}14,双击菜单栏中的删除学生信息,添加代码if(newformdelete().ShowDialog()==DialogResult.OK){mybinding();}双击formdelete,点击属性框上而的闪电标志,找到FormClosed,双击进入编辑页面,添加代码this.DialogResult=DialogResult.OK;。这样当我们录入好学生信息后就会自动刷新网格了。,15,双击删除当前学生按钮进入编辑框,添加代码if(txtboxsno.Text==""){MessageBox.Show("请输入要删除的学生的学号:");txtboxsno.Focus();return;}〃第二步:还要进一步判断输入的学号在数据库中能否找到〃大家自行完成DAL.StudentDAO.deleteStudent(txtboxsno.Text.Trim());MessageBox.Show("删除完毕");txtboxsno.Text=txtboxsno.Focus();双击清空数据库,添加代码DialogResultdr=MessageBox.Show("请确认是否真的要清空学生数据库警告",MessageBoxButtons.OKCancelzMessageBoxlcon.Information);if(dr==DialogResult.OK){DAL.StudentDAO.clear();}else{〃不清空,什么都不做}这样我们的删除窗I】也做好了,接下来我们要做的是查询窗II。在studentMISb'面添加一个windows窗体名称改为formserch.cs。在窗体中加入一个TextBox控件(name)后面改为textBoxsno。添加一•个Button控件,text改为确定,(name)后面改为stsercho添加一个label控件text改为学号。再添加一个dgv控件,(name)后面改为dgvL双击确定按钮,进入编辑页面,添加如下代码。if(textBoxsno.Text==""){MessageBox.Show("学号不能为空");textBoxsno.Focus();return;}else{bs.DataSource=DALStudentDAO.returnTablel(textBoxsno.Text.Trim());dgvl.DataSource=bs;)代码的作用是在dgvl上显示returnTablel里面的内容,相信大家都可能猜到了returnTablel里的内容是什么了,对就是我们用学号查出来的学生信息。卜.面我们就来创建returnTablel,该函数的功能是当我们输入的学号传过来时,在后台数据库中查找并返回信息。双击StudentDAO.cs进入编辑框,添加如下代码publicstaticDataTablereturnTablelfstringsno){DataTabletable=newDataTable();stringconnstr=@nserver=.;database=student;integratedsecurity=sspin;using(SqlConnectionconn=newSqlConnection(connstr)){conn.Open();using(SqlCommandcmd=conn.CreateCommand()){cmd.CommandText=nselect*fromstudentwheresno=@sno";cmd.Parameters.Add(newSqlParameter(,,sno,,/@sno));SqlDataAdapteradapter=newSqlDataAdapter(cmd);adapter.Fill(table);returntable;}}}现在大家来调试一下发现,OK。查询窗体做成了。还有最后一个窗体就是修改窗体,首先创建一个窗体,名为formmdf.cs。在窗体中添加四个label控件,属性的text分别改为学号,姓名,性别,出生日期。添加三个TextBox控件(name)分别为textBoxsno,textBoxsname,textBoxsbirthday。再添加一个ComboBox控件o(name)后而改为comboboxsex。再添加两个Button按钮,text改为确定,取消。双击确定按钮进入编辑框添加如下代码stringsno=textBoxsno.Text.Trim();stringsname=textBoxsname.Text.Trim();stringsex=comboBoxsex.Text.Trim();stringsbirthday=textBoxsb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国有机大豆行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国月桂油市场销售模式分析及供需平衡研究报告
- 2025-2030中国智能防盗锁市场深度调研与发展趋势研究研究报告
- 2025-2030中国智能腕表行业市场深度调研及发展潜力与投资研究报告
- 2025-2030中国智能卡行业市场深度调研报告
- 2025-2030中国时装上衣行业供需分析及发展前景研究报告
- 2025-2030中国无麸质宠物食品行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国无机胶粘剂行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030中国无叶风扇行业市场发展现状及发展趋势与投资前景研究报告
- 2025-2030中国新能源客车行业市场全景调研及投资价值评估咨询报告
- 综采电缆修复工艺
- 汽修维修费用统计表报价单
- 用电量与气温变化关系分析
- GB/T 8545-2012铝及铝合金模锻件的尺寸偏差及加工余量
- GB/T 7113.1-2014绝缘软管第1部分:定义和一般要求
- 水工建筑钢结构钢闸门图文讲义
- 幼儿园《幼小衔接》课件
- 《梅花》 完整版课件
- 房地产抖音短视频培训课件
- 苏教版数学二年级下册《数学绘本:公主殿下来的那一天》区级展示课(定稿)
- 中国传媒大学-导演手册-课件
评论
0/150
提交评论