2C#课室管理系统课程设计报告
2c是什么意思
2c是什么意思
1、2C意思是:是商家对顾客的意思,在英文中的2的发音同to 一样,Business-to-Customer是商家对顾客的意思,缩写为B2C,而其中文简称为“商对客”。
“商对客”是电子商务的一种模式,也就是通常说的商业零售,直接面向消费者销售产品和服务。
2、电子商务发展到目前为止,以B2B为代表的传统电子商务做的都是物质商品贸易,由B2B衍生出来的B2C、C2C等各种形式的电子商务做的都是产品交易。
随着互联网技术的高速突破、整个市场经济体制的不断完善以及社会对品牌文化这种无形资产的进一步认可与依赖。
pep四年级英语上册第二单元U2-C Story time
storybook
_____________________________
notebook
_____________________________
candy
_____________________________
put away意为“把……收起来”,后面跟物,即 “put away+物”,如果“物”为代词,则必须 放在put与away中间。 Put it away. (把它收起来。) Put away the books. (把这些书收起来。)
课文讲解
Take out your books, please. 请把你们的书拿出来。
take out意为“拿出,取出”,其用法与put away相同,可 直接用“take out+某物”,当句中某物为人称代词宾格时, 要放在take与out中间。
Take it out. (把它拿出来。) Take out the tomatoes. (把这些西红柿拿出来。)
Summary
介绍自己拥有某物 I have a new schoolbag. 我有一个新书包。
Role-play
Role-play the story in groups.
Exercise
单元词汇听写。 schoolbag
_____________________________
English book
_____________________________
maths book
_____________________________
询问对方某处有什么物品 What's in your schoolbag? 你的书包里有什么?
全站仪2C和指标差
仪器的2C值(视准轴不垂直于横轴,在水平方向观测同一点时会产生一个C值,且盘左=盘右,符号相反)
操作方法:先用盘左、照准目标、水平制动
(VR竖直角度控制在0°-10°之间)
水平角置零,HR显示为0°0′0″,松开水平制动,转动180°,用盘右照准目标,理想角度HR显示180°0′0″,一般很难达到。
之间差为2C值
2C=(&左-&右)±180°
全站仪指标差也称i角误差(视准线与横轴不在90°或270°平面上)
指标差=
操作方法:用望远镜分别在正镜和倒镜位置瞄准(垂直角控制在±10°左右的平行光管分划板或远处目标
THANKS !!!
致力为企业和个人提供合同协议,策划案计划书,学习课件等等
打造全网一站式需求
欢迎您的下载,资料仅供参考。
产品经理在2B和2C之间,还有一个2H
在2B和2C之间,还有一个2LC(低时延)、mMTC(海量连接)等特性并没有包含在这一版本中,所以即便在试验网中运营商和设备商合作,提供了部分功能,也不排除最终标准发布之后还要再调整。
由于存在风险,运营商并不敢大规模建网和商用,而企业客户在5G上的谨慎也就可以理解了。
好在,不需要等很久,R16计划明年3月份就发布了。
第二是技术成熟度和稳定性问题。
技术标准既是通信产业基础,又是设备厂商研发的目标,要实现技术标准里定义的指标和参数并非易事。
无线空口(空中接口,就是无线通信终端用户与基站的无线传输)保持稳定很难,抖动对于通信质量的影响很难控制,尤其是5G的高频段,更容易受到各种因素的影响。
但一些企业应用对于无线的抗干扰能力要求很高,如何提供稳定可靠低时延不间断的通信连接,对于设备商和运营商来说,都是巨大的挑战。
网络切片是5G非常重要的特性,在一系列科普和宣传材料中被反复提及,也是众多企业客户最期待的通信能力。
但同时网络切片是一个端到端的复杂的系统工程,实现起来相当复杂。
核心网需要进行NFV(网络功能虚拟化),支持SDN(软件定义网络),还要把接入网、核心网、数据和服务网络组合在一起。
不仅是一系列技术的组合,也还需要复杂的运营管理。
第三是个性化需求的实现成本问题。
把蒸汽机的发明归功于瓦特,并不是因为他发明了第一台蒸汽机,而是因为他的一系列创新提高了蒸汽机的运行效率,带来了运营成本的大幅下滑。
这一质变,使蒸汽机可以离开煤矿、河流这些资源地,安装在任何一个地方,才让蒸汽机带来的动力提高了千行百业的工作效率,带来了人类历史上的第一次工业革命。
将新技术应用于实际生产中,最大的挑战是把成本降到客户能接受的程度。
如今5G的网络建设成本和运营成本还都很高,企业客户不愿意支付高额的通信费用,运营商不愿意为巨额的投入买单,这种形态下5G的发展很容易陷入僵局。
无论是电信运营商还是移动互联网企业,他们在2C领域的成功都是先形成一个产品,然后面向海量客户进行复制和营销,靠规模摊薄了成本。
2024最新人教版三年级英语上册unit2 C
( A )3. I have ___ uncle.
A. an
B. a
二、判断句子和图片是否相符。
This is my aunt.
(√ )
I have a big family.
(× )
I have a baby brother.
(× )
Homework
ONE
熟练朗读Unit 2内容。
TWO
想一想:以后如何 和自己的家人和睦 相处。
Summary
1.复习了下列单词: mother(mum), father(dad), grandmother(grandma), grandfather(grandpa), sister, me, cousin, brother, baby sister, aunt, uncle 2.复习了下列句型: Look! This is my family. / Sarah, you have a big family. / My family is big./ I have a brother. / This is my ... / Nice to meet you. / -Is this/that your...? -Yes, it is./ No, it isn’t. 3.学习了如何制作家庭树。
Let’s read the poem.
This is my family. I play with my brothers. I share with my sisters. I talk with my cousins.
We listen with care. I have a big family. I love my big family.
I have a brother. And a baby sister. They can play with me.
2b和2c
2b英文为to business,汉语翻译为“面向企业”,比如生产芯片、轴承等零部件企业,生产的产品明显是面向其他企业的,就可以说这些公司是“2B”的公司,也可以说这些公司生产的产品是2B 的。
2B一般等同于B2B。
2c英文为to customer,汉语翻译为“面向消费者”,比如生产冰激凌、水饺等食品企业,生产的产品明显是面向普通消费者的,就可以说这些公司是“2C”的公司,也可以说这些公司生产的产品是2C 的。
2C一般等同于B2C。
软件行业也是同样的道理,商用软件如CRM、排队系统等是2B;民用软件如美图工具、抖音等娱乐软件明显就是2C的。
h3y-2-c说明书
h3y-2-c说明书
1、额定电源电压:AC110V(50/60Hz),AC220V(50/60Hz),
DC24V
使用电压范围:额定电源电压的85%-110%
复位电压:最小为额定电源电压的10%
功率消耗AC110V:继电器ON:大约1.8VA(1.6W),50/60Hz
继电器OFF:大约1VA(0.6W),50/60Hz
AC220V:继电器ON:大约2.2VA(1.8W),50/60Hz
继电器OFF:大约1.5VA(1.1W),50/60Hz
DC24V:继电器ON:大约1.1W
继电器OFF:大约0.1W
控制输出H3Y-2-C:AC250V时为5A,电阻负载
最小适用负载DC5V1mA(P水准、参考值)
接点材质:Ag
H3Y-4-C:AC250V时为3A,电阻负载(cosφ=1)
最小适用负载DC1V1mA(P水准、参考值)
接点材质:金包层+银合金
2、工作时:-10°C-50°C(无结冰)
保存时:-25°C-65°C(无结冰)
工作时:35%-85%
机械:1000万次以上(无负载时频率为1800次/小时)
电气:H3Y-2-C:400000次以上(AC250V5A电阻负载1,800次/
小时)(常温时)
H3Y-4-C:160000次以上(AC250V3A电阻负载1,800次/小时)(常温时)
电源端子之间:3kV(AC110V,AC220V)1kV(DC24V)
外露的非导电金属部件之间:4.5kV(AC110V,AC220V),1.5kV(DC24V)
防护等级:IP40
质量:大约50g。
仁爱版七年级英语下册说课稿:Unit7Topic2SectionC
在总结反馈阶段,我会引导学生进行自我评价,并提供有效的反馈和建议。首先,我会让学生回顾和总结本节课所学的知识点,鼓励他们分享自己的理解和体会。然后,我会根据学生的回答和表现,给予积极的反馈和鼓励,同时指出他们需要改进的地方,并提供具体的建议和指导。通过这种方式,学生能够更好地自我评价和反思,提高他们的学习效果。
3.情感态度与价值观目标:通过本节课的学习,学生能够增强对英语学习的兴趣和自信心,培养积极的学习态度。同时,学生能够理解和尊重不同的文化背景,提高自己的跨文化交际能力。
(三)教学重难点
1.教学重点:本节课的教学重点是一般现在时态的构成和用法,疑问句和否定句的构成和用法,以及被动语态的构成和用法。这些知识点是英语学习的基础,对于学生的语言运用和思维发展具有重要意义。
仁爱版七年级英语下册说课稿:Unit7Topic2SectionC
一、教材分析
(一)内容概述
本节课的教学内容为仁爱版七年级英语下册Unit 7 Topic 2 Section C。整个课程体系中,本节课位于第三册教材的中段部分。主要知识点包括:一般现在时态的构成和用法,一般现在时的疑问句和否定句的构成和用法,以及一般现在时态的被动语态的构成和用法。此外,本节课还涉及一些与日常生活相关的词汇和短语,如“go to school”,“do homework”,“play basketball”等。
(三)巩固练习
为了帮助学生巩固所学知识并提升应用能力,我计划设计多样化的巩固练习和实践活动。首先,我会设计一些填空题和选择题,让学生通过选择正确的动词形式和构造疑问句或否定句来巩固所学的语法知识。然后,我会组织学生进行小组讨论和角色扮演,让他们在实际语境中运用所学知识进行交流和表达。此外,我还会让学生完成一些实际任务,如编写小故事、制作海报等,让他们在实际操作中运用所学知识,提高他们的综合应用能力。
导线测量2c值计算公式
导线测量2c值计算公式导线测量是测量工作中的一项重要内容,而 2c 值的计算更是其中的关键环节。
在实际操作中,准确计算 2c 值对于提高测量精度、保证测量结果的可靠性具有重要意义。
先来说说啥是 2c 值。
简单来讲,2c 值就是视准轴误差的两倍。
在测量过程中,由于仪器的制造、调整等原因,望远镜的视准轴可能会存在一定的偏差。
这个偏差会影响测量结果的准确性,所以我们得通过计算 2c 值来进行修正。
那 2c 值到底咋算呢?其实公式很简单:2c = 盘左读数 - (盘右读数± 180°)。
这里要注意一下,盘右读数加上或者减去 180°,要根据具体的仪器和测量方法来确定。
我给您讲讲我之前在一次实际测量中的经历吧。
那次我们去测量一个新开发的小区的地形,任务挺艰巨的。
到了现场,我和同事们架好仪器,就开始认真测量。
我负责读取数据,当进行到一个关键测点时,我按照流程进行了盘左和盘右的观测。
盘左读数还算顺利,可到了盘右,我不知咋的,心里突然有点紧张,手都有点抖了。
等把数据都记录下来,开始计算 2c 值的时候,我发现自己好像算错了。
当时那叫一个着急啊,脑门都冒汗了。
我赶紧重新核对数据,重新计算,才发现是自己在计算的时候把符号搞混了。
这可给我敲了个警钟,让我深刻认识到在测量工作中,任何一个小的失误都可能导致结果的偏差。
再回到2c 值的计算公式,这里面的每个数据都得精确读取和记录。
比如说盘左读数和盘右读数,差之毫厘谬以千里。
在实际操作中,我们还得注意仪器的校准和保养,确保仪器本身的精度。
而且测量环境也会对结果产生影响,比如大风天气、温度变化大等,都可能导致仪器的稳定性受到影响,从而影响 2c 值的准确性。
另外,对于初学者来说,可能会觉得这个公式有点复杂,不好理解。
但只要多实践、多操作,慢慢地就能熟练掌握了。
千万不要害怕出错,出错是成长的机会。
就像我那次在小区测量中的小失误,虽然当时很紧张,但事后让我学到了很多,也让我在之后的测量工作中更加谨慎和细心。
2C开叫后的叫牌解析
叫牌练习
在下列各题中你如何开叫?
1) SAQ86 H1063 D7 CKQJ95, • 开叫2C。12大牌点,C为好的5张套,并另有一4 张的高级花 不叫。C花色太弱,不够在2副水平上开叫的要求 条件。此外,两个红花色的大牌都没有护张,还 是不叫更为稳妥。 3) SK3 HQ103 DK83 CAQJ87, • 开叫1NT。当牌型为5-3-3-2,牌力13-15大牌点, 且5张套为低级花色时,最好的选择就是开叫1NT。
4) SKQ532 H7 DA CKJ8643, • 开叫2C。在持有两色套牌时,开叫较长的 一个花色。 5) SAK H87 DAJ86 CQ10752, • 开叫1D。此例不开叫2C有两个理由:C花 色太弱,并且C花色只有5张而又没有一4张 的高级花色。
同伴开叫2C,你如何应叫
6) SA64 H72 DK832 CQ1084, • 叫3C。表示8-10P,并对C有好的支持。 7) SAQ865 H7 DAQ3 C532, • 叫2D。若叫2S,则只能表示8-10大牌点;若叫 3S,则又表示14以上大牌点。 • 下一轮有机会再叫出S,表示11-13P,5张以上S。 8) SKQ10862 H7 DA53 C642, • 叫2S。表示8-10点,S为5张以上长套。 9) SA98 HAKQ92 DAQ3 C62, • 叫3H。表示至少14大牌点,H至少是好的5张套。
应叫人应叫2D
约定性应叫,逼叫。至少11大牌点
• 2H或2S=4张以上花色,11-13大牌点。 • 2NT=C为6张套,在另外三门副牌花色中 有两门花色有止张,11-13大牌点。这时应 叫人可叫3D,用以询问在哪两门花色中有 止张。开叫人再按下述方式答叫: 3H=H和D花色有止张。 3S=S和D花色有止张。 3NT=S或H花色有止张。
c语言2进制表示
c语言2进制表示
C语言是当今广泛使用的编程语言,由于其强大的功能,常用于计算机程序的开发和编写。
为了方便在计算机系统中传输、储存和处理数据,C语言中的所有数据都是以二进制的形式表示的。
二进制是指计算机中最基本的运算格式,其中的每一位数字都是0或1,它的数字的表示是由二进制的8位组成的,每一位可以表示出2的幂次方,例如,一个八位的二进制数10000011,可以表示成: 2^7 + 2^3 + 2^1 + 2^0 = 128 + 8 + 2 + 1 = 139 在C语言中,数据可以用多种格式来表示,最常用的是二进制格式,它可以比其他格式储存更多的数据,而且比较简单,容易理解。
C语言中有几种不同的数据类型,例如整型int、浮点型float、双精度型double等。
每一种数据类型都有自己的二进制表示格式,下面是一些常见的数据类型的二进制表示:
int:有符号的4字节,可表示-2147483648 2147483647 之间的整数;
float:4字节,可表示-3.4E+38 3.4E+38 之间的小数;
double:8字节,可表示-1.7E+308 1.7E+308 之间的小数。
在计算机中,数据以二进制的形式储存,所以在开发程序时,使用二进制格式来表示数据是必不可少的。
二进制格式更方便更高效地储存和处理数据。
此外,由于二进制数据的储存方式是有序的,因此可以用来作为键存储,这在查询数据的时候可以减少搜索的时间,大大提高查询的
效率。
因此,了解C语言中的二进制表示,并运用它来处理数据,是必不可少的。
通过学习二进制表示,可以深入了解C语言,从而更好地开发程序。
C语言快速取以2为底的对数的方法
C语言快速取以2为底的对数的方法在C语言中,如果要快速计算以2为底的对数,可以利用二进制的性质来进行计算,具体方法如下:1.对数的定义:对数的定义是指数与底数的关系,对于以2为底的对数,可以用公式表示为log2(x) = y,其中x为真数,y为对数。
我们的目标就是快速求解y的值。
2.二进制表示法:在计算机中,数字通常以二进制形式表示。
二进制数是由0和1组成的数,每位表示一个2的幂次。
例如,二进制数110即表示2^2+2^1=6 3.对数的性质:对于以2为底的对数,有一个重要的性质:log2(x) = log2(2^y) = y。
也就是说,如果一个数x等于2的y次方,那么它的对数就是y。
4.利用二进制性质计算对数:根据对数的性质,我们可以将一个数x转换为二进制形式,然后找到二进制数的最高位的1所在的位置,这个位置就是x的以2为底的对数的整数部分。
举个例子,假设x = 9,那么它的二进制形式是1001,最高位的1的位置是3,所以log2(9) ≈ 35.代码实现:下面是一个实现快速计算以2为底的对数的C语言函数的示例代码:```c#include <stdio.h>int log2(int x)int result = 0;while (x >>= 1)result++;}return result;int maiint x = 9;int logarithm = log2(x);printf("log2(%d) ≈ %d\n", x, logarithm);return 0;```在上面的代码中,log2函数接收一个整数x作为参数,然后通过不断地右移x的位,同时计数器result进行累加,直到x的所有位都被右移到0为止。
最后返回计数器的值作为x的以2为底的对数的整数部分。
6.性能分析:这种方法的时间复杂度是O(log n),其中n是x的位数。
由于在循环中,每次操作都将x右移1位,所以执行的次数不会超过x的位数,因此该算法的效率相对较高。
HXD2C机车操作使用说明
17
二. 机车操纵
6 电气制动操作 6.1 机车可以方便地使用再生制动。 6.2 速度调节手柄从“0”位置推到制动位置,电气制动开始作用。 6.3 当机车处于定速控制,机车速度比目标速度低时,电气制动不起作 用。 6.4 当机车处于定速控制,机车速度比目标速度高时,电气制动起作用 ,以维持目标速度。
3
二. 机车操纵
1.2 机车内部的检查 1.2.1 司机室的检查:各设备、仪器、显示器均无异 常;各个接线端子、端子排等的配线无异常。确认各 类开关的动作灵活,无阻滞。 1.2.2 机械室的检查:确认机械室内全部装置完备, 无异常情况。确认外观上无变形、变色、异味等。确 认各插头连接牢靠不松动。目视确认空气压缩机的油 位计的油位应在油位线上,油量要充分。主变压器油 位、主变流装置水位正常。确认制动器单元的阀门应 该全部处于正常位置。
11
二. 机车操纵
行 灯 插 座
辅 压 机 按 钮
加 热 开 关
紧 急 隔 离 开 关
库 用 开 关
电 压 表
12
二. 机车操纵
3.4 主断路器闭合后,辅助电源装置APU2开始运行,油泵、水泵、辅助 变流风机等定频负载开始工作。 3.5 将主空气压缩机扳键开关SA1-CPR(或SA2-CPR)置于“运行压缩机” 位。当总风缸压力低于680kPa时,两个空气压缩机依次起动(间隔5s) ,当总风缸压力升至900±20kPa时,空气压缩机自动停止工作。当风压 降至750kPa时,只有靠近操纵端的空气压缩机工作。将主空气压缩机扳 键开关[SA1-CPR(或SA2-CPR)]置于“强泵”位,总风缸压力低于680kPa 时,两个空气压缩机依次起动,当风压降至750kPa时,只有靠近操纵端 的空气压缩机工作,,此时,不受总风缸压力继电器控制,待总风缸压 力上升至950±20kPa时,高压安全阀运作,不断排风,此时应当人为断 开“强泵”扳键开关。 3.6 将主控制器换向手柄由“0”位转换为前进或后退,此时辅助电源装 置APU1开始工作,牵引风机、冷却塔风机均采用软起动方式投入工作。
同样都是产品,2B和2C产品的区别在哪里
当然,SAAS产品(2B产品的一种)由于免实施的特点,决定了功能要够全,学习又要够简单,所以SAAS产品是2B产品中最难设计的一种。
流程既然2B产品要满足组织完成业务信息化的需求,那就必然涉及到流程。
2B系统必须能够贴合组织用户的业务流程才能正常运行,而不同企业的流程又是不同的,所以2B产品的流程设计是一个非常大的挑战。
以ERP为代表的管理软件希望覆盖所有用户的全流程,但随着客户量增加,复杂度几何级增加,最终伴随着用友和金蝶的标准化和个性化之争而集体沉默。
同时,聚焦于局部流程的2B的互联网产品却异军突起,如B2B电商和Salesforce等SAAS产品。
目前立足于垂直领域应用的SAAS产品(如一禾美云),由于往往涉及到跨部门、全流程,在流程设计上就必须有足够的灵活性,又必须保持较低的学习门槛。
效率2B的产品涉及的业务经常涉及海量数据,所以在2B产品中,效率要远远比用户体验重要。
比如要上传1000个产品档案,那么批量上传等高效率的工具化设计就比优化上传界面的用户体验重要得多。
至今我们仍然可以看到有些商超还在用一些DOS平台上开发的收银系统,虽然这些系统非常老旧,用户体验已经很差了。
但是,由于使用时间很长,而且效率非常高,所以依然保持着旺盛的生命力。
二、2C关注人性2C产品因为用户直接是用户个人,所以更关注人性。
2C产品强调刚需,痛点,高频,体验。
刚需在2B产品中,产品经理面对的往往都是刚需。
用户会很明确地告诉你,有这个功能我就付费,没有这个功能我就不付款,非常明确,几乎无需挖掘(当然用户所讲并非用户所需,需求仍需要梳理和澄清)。
为什么2C产品强调“刚需”?因为2C产品的需求不同于2B产品,2C产品的用户量大而且分散,缺乏组织性,需求具有模糊性,所以需要去挖掘。
经常看到一些产品YY出一些客户的需求,其实这些需求用户根本不需要。
痛点在2B产品中,在用户选择产品的决策过程中,有较多的时间接触,有足够的说服时间和机会,另外价格也会是一个非常重要的参考因素。
关于全站仪2C的问题
关于全站仪2C的问题2C的问题,恐怕要从源头说起,大家知道,视准轴不垂直于横轴便产生视准误差2C,它对读数的影响是:盘右方向值:A=R-ΔC盘左方向值:A=L+ΔC而ΔC=C/COSαΔC--视准轴误差影响,C为视准误差。
从上式可以看出,ΔC随垂直角α的增大而增大,高等级控制测量中,理论上假定α≈0°,此时ΔC≈C,则L-R=2C,这就是2C的概念。
但实际工作中,控制点间的高差可能比较大,即同一测站照准各方向的垂直角α之差相差较大,因而各方向的2C本身就相差大。
所以规范规定,当照准方向的垂直角超过±3°时,该方向的2C变化按同一观测时段内的相邻测回单独比较,因此,我认为2C的绝对值的大小人为无法完全控制。
我们知道,2C对水平角的影响可以通过正倒镜观测消除,也就是说2C绝对值的大小不影响观测结果的精度。
但规范和一般文献的解释是“2C的绝对值过大时给计算盘左、盘右的平均值带来不便”,所以规定J2经纬仪的2C绝对值不大于30”,J1经纬仪的2C绝对值不大于20”。
这样的解释显然有点勉强,况且一般的测角仪器通过了三轴鉴定和校正,在仪器鉴定条件下,2C的绝对值是能够控制的,事实上也有标准。
说了这么多,我的结论是:2C的绝对值大小,规范虽然有要求,不存在楼主说的“经纬仪(全站仪)的2C本身到底应该小于多少时,才可以使用的问题”,只要仪器经过三轴校正并鉴定合格,测量过程中,按规范严格控制2C互差范围,就可以使用。
另:竖盘指标差的绝对值一般不超过25″。
水平角观测(经纬仪原理)一、水平角测角原理如图3—9所示,A、B、C为地面三点,高程不相等。
将这三点沿铅垂线方向投影到PQ水平面上,在水平面上得到A1、B1、C1三点,则水平成B1A1与BlC1夹角β定义为地面上直线BA和BC间的水平角。
由此可见,地面任意两直线间的水平角度,为通过该两直线所作竖直面间的两面角。
为了能测出水平角的大小,可在此两竖直面的交线上任一高度0点水平地放置一刻度盘,通过BA和BC和一竖直面,与刻度盘的交线为0m、0n,在刻度盘上相应的读数为b 和a,从而求得水平角。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《C#程序设计》课程设计报告(2013—2014学年第二学期)题目:课室管理系统专业:通信工程班级:电通5B姓名学号:毛晓智20113100159李俊鹏20113100125许瑞峰20113100152指导教师:唐小煜成绩:目录摘要 (1)第一章绪论 (2)1.1设计目的 (2)1.2开发工具选择 (2)1.3开发环境 (2)1.4本报告的主要内容 (2)第二章需求分析 (3)2.1系统需求简介 (3)2.1.1系统目标 (3)2.1.2功能需求分析 (3)2.1.3性能需求分析 (3)第三章总体设计 (4)3.1设计概述 (4)3.2系统总体结构及功能模块划分 (4)3.2.1课室借用系统模块 (4)3.2.2管理员课室管理模块 (5)3.3系统数据库概念结构设计 (5)3.3.1数据库设计框图 (5)3.3.2系统数据库的设计 (6)3.4安全保密设计 (6)3.4.1用户登录安全性 (6)第四章详细设计 (7)4.1概述 (7)4.2系统程序流程图 (7)4.3系统主要功能模块简介 (8)4.3.1系统登录 (8)4.3.2学生注册 (8)4.3.3学生课室借用模块 (9)4.3.4管理员课室管理模块 (10)第五章主要功能模块代码 (13)5.1登录界面代码设计...........................................................................错误!未定义书签。
5.2管理员界面代码设计 (13)5.3注册新用户代码设计 (13)5.4学生界面代码设计 (15)第六章课程设计心得 (26)C#课室管理系统摘要本文描述的是基于Windows环境的学生信息管理系统,主要功能模块包括:学生借用课室,管理员管理课室,主要工具Microsoft Visual Studio2012设计窗体,SQL server2008建立数据库,实现课室信息管理的各个功能。
第一章绪论1.1设计目的本课程设计的目的是使学生能熟练掌握简单的Windows窗体应用程序的设计和数据库的应用,希望通过本次课程设计锻炼学生使用C#语言解决实际问题的能力。
1.2开发工具选择本系统后台数据库采用Microsoft SQL Server数据库,该数据库系统在安全性、准确性和运行速度方面有绝对的优势,并且处理数据量大,效率高;前台采用Microsoft公司的Visual Studio2012作为主要开发工具,可与SQL Server2008数据库无缝链接。
1.3开发环境系统开发平台:Microsoft Visual Studio2012系统开发语言:C#数据库管理软件:SQL Server20081.4本报告的主要内容本报告详细的介绍了课室信息管理系统的开发过程,主要涉及到的工作如下:系统的需求分析、系统的总体设计、系统的概念设计、系统各模块的详细设计、系统运行与测试。
第二章需求分析2.1系统需求简介2.1.1系统目标(1)管理员对课室信息和用户信息的添加、修改、删除和查找(2)学生能添加、修改借用的课室信息2.1.2功能需求分析本系统的功能需求分析如下:(1)学生课室借用:学生可以注册用户根据学号姓名借用教学楼课室并能对其进行修改和及时的信息更新;(2)管理员课室管理:用于管理员对课室和用户的管理,能进行相应的添加、修改、删除和查找,用户信息也能及时更新;2.1.3性能需求分析(1)登录、注册、用户界面和管理界面需求:简洁、易懂、易用、友好。
(2)安全保密性需求:学生和管理员只有凭借用户名和密码登陆系统,才能对信息进行相应的操作;第三章总体设计3.1设计概述根据需求把整个系统分化成不同的模块,每个模块完成一个特定的子功能。
把这些模块结合起来组成一个整体。
逐一实现各个功能;3.2系统总体结构及功能模块划分经过对系统的需求分析,学生课室借用系统主要划分为:学生信息和课室信息的填写入三个功能模块。
如图3.2.1系统的总体结构。
学生课室借用系统学生对课室借用的添加和修改管理员对课室和学生信息的添加、修改、删除和查找图3.2.1系统的总体结构3.2.1课室借用系统模块课室借用系统:学生可以添加或修改借用的课室的信息。
如图3.2.2学生信息查询模块结构。
图3.2.2课室借用系统模块结构课室借用系统信息添加信息修改3.2.2管理员课室管理模块管理员课室管理:主要是用于管理员对学生信息和课室信息的添加、修改、删除和查找,如图3.2.3管理员课室管理模块结构。
管理员课室管理系统对学生信息和课室信息的添加对学生信息和课室信息的修改对学生信息和课室信息的删除对学生信息和课室信息的查找图3.2.3管理员课室管理模块结构3.3系统数据库概念结构设计根据对数据项与数据结构的分析,设计出能够满足系统需求的各种实体,及它们之间的关系,为后面的逻辑结构设计打下基础。
3.3.1数据库设计框图数据库设计框图可以将各个实体之间的关系显示出来,将各个实体间的属性依赖表示明白。
如图3.3.1数据库设计框图结构。
管理员管理课室总表用户注册学生借用课室图3.3.1数据库设计框图结构3.3.2系统数据库的设计综合以上分析,要实现上面的所有功能模块,主要设计表如下:3.4安全保密设计3.4.1用户登录安全性系统设计了登录界面,每个合法用户和管理员有用户名及一个密码,只有当用户输入正确的用户名及密码组合后才能够对课室信息进行操作。
第四章详细设计4.1概述详细设计阶段的根本目标是确定应该怎样具体的实现所要求的系统,也就是说,经过这个阶段的设计工作,应该得出目标系统的精确描述,从而在编码阶段可以把这个描述直接翻译成用某种程序设计语言书写的程序。
4.2系统程序流程图程序流程图又称为程序框图,它是历史悠久使用最广泛的描述软件设计的方法。
它可将整个程序的总体流程清楚明白的显示出来。
如图4.2.1系统总流程图结构。
登录界面登录注册界面是否注册用户操作界面YN 修改返回添加管理员界面查找添加删除串口查找关闭登录界面学生课室借用流程图管理员课室管理流程图4.3系统主要功能模块简介4.3.1系统登录用户凭借用户名及密码登录,成功登录后可对学生信息进行操作。
用户界面如图4.3.1用户登录界面所示。
图4.3.1用户登录界面4.3.2学生注册用户注册用户名和密码。
注册界面如图4.3.2用户登录界面所示。
图4.3.2用户注册界面4.3.3学生课室借用模块用户填写相应的信息录入到数据库就可以借用到需要的课室,并能进行所需要的修改。
并且能及时查看该信息。
用户操作界面如图4.3.3所示。
图4.3.3用户操作界面4.3.4管理员课室管理模块管理员可以根据需要对数据库的数据进行相应的查找、添加和删除,并能利用串口通信来实现数据的查找。
管理员界面如图4.3.4所示。
图4.3.4管理员界面图4.3.5管理员查找功能图4.3.6管理员添加功能图4.3.7管理员删除功能图4.3.7串口查找功能第五章主要功能模块代码5.1登录界面代码设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace diyige{public partial class Form1:Form{public Form1(){InitializeComponent();}private void Form1_Load(object sender,EventArgs e){}private void button1_Click(object sender,EventArgs e){SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge");con.Open();SqlDataAdapter dap=new SqlDataAdapter("SELECT*FROM student WHERE 用户名='"+textBox1.Text+"'and密码='"+textBox2.Text+"'",con);DataSet ds=new DataSet("student");dap.Fill(ds);if(ds.Tables[0].Rows.Count>0&&this.radioButton1.Checked==true){erName=textBox1.Text;this.Hide();Form4form4=new Form4();form4.Visible=true;}elseif(textBox1.Text=="mao"&&textBox2.Text=="123"&& this.radioButton3.Checked==true){this.Hide();Form2form2=new Form2();form2.Visible=true;}else{if(MessageBox.Show("输入错误,请重新输入","Error", MessageBoxButtons.OKCancel)==DialogResult.OK){//delete}}}private void button3_Click(object sender,EventArgs e){this.Close();}private void button2_Click(object sender,EventArgs e){this.Hide();Form3form3=new Form3();form3.Visible=true;}private void Form1_FormClosed(object sender,FormClosedEventArgs e){if(MessageBox.Show("你要退出系统吗?退出请选择‘确定’","Error", MessageBoxButtons.OKCancel)==DialogResult.OK)System.Environment.Exit(0);}}public static class CurrentOperator{private static string_userName;public static string UserName{get{return_userName;}set{_userName=value;}}}}5.2管理员界面代码设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;using System.IO;using System.IO.Ports;namespace diyige{public partial class Form2:Form{string rstr;public delegate void ReadSptEventHandler();SerialPort sp=new SerialPort();DataTable dt=new DataTable();public static string str="";public Form2(){InitializeComponent();}private void Form2_Load(object sender,EventArgs e){showinf();comboBox1.DataSource=SerialPort.GetPortNames();}private void showinf(){using(SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge")){//DataTable dt=new DataTable();SqlDataAdapter da=new SqlDataAdapter("select*from student",con);da.Fill(dt);this.dataGridView1.DataSource=dt.DefaultView;}}private void button1_Click_1(object sender,EventArgs e){if(MessageBox.Show("您确定要删除本条信息吗?","提示", MessageBoxButtons.YesNo,MessageBoxIcon.Warning)==DialogResult.Yes){if(str!=""){using(SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress;Integrated Security=True;database=maoge")){con.Open();SqlCommand cmd=new SqlCommand("delete from student where 学号='"+str+"'",con);cmd.Connection=con;cmd.ExecuteNonQuery();con.Close();DataTable ds=new DataTable();SqlDataAdapter da=new SqlDataAdapter("select*from student", con);da.Fill(ds);this.dataGridView1.DataSource=ds.DefaultView;MessageBox.Show("删除成功");}}}}private void dataGridView1_Click_1(object sender,EventArgs e){str=this.dataGridView1.SelectedCells[0].Value.ToString();}private void button2_Click(object sender,EventArgs e){SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge");con.Open();SqlCommand cmd=new SqlCommand();mandType=CommandType.Text;mandText="INSERT INTO student(学号,姓名,性别,教学楼,课室,用户名,密码)values('"+textBox1.Text+"','"+textBox2.Text+"','"+textBox3.Text+"','"+ textBox4.Text+"','"+textBox5.Text+"','"+textBox7.Text+"','"+textBox8.Text+"')";cmd.Connection=con;cmd.ExecuteNonQuery();//添加记录MessageBox.Show("添加成功");DataTable dg=new DataTable();SqlDataAdapter dap=new SqlDataAdapter("select*from student",con);dap.Fill(dg);this.dataGridView1.DataSource=dg.DefaultView;}private void button3_Click(object sender,EventArgs e){SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge");con.Open();SqlDataAdapter dap=new SqlDataAdapter("SELECT*FROM student WHERE 学号='"+textBox6.Text+"'",con);DataSet ds=new DataSet();dap.Fill(ds);dataGridView2.DataSource=ds.Tables[0].DefaultView;}private void comboBox1_SelectedIndexChanged(object sender,EventArgs e){//打开新串口前,先关闭之前已打开的串口,避免长期占用系统资源if(spt.IsOpen){spt.Close();}//重新设置选定串口spt.PortName=comboBox1.Text;//指定要使用的串口号spt.BaudRate=9600;//设定波特率spt.DataBits=8;//设定字长spt.StopBits=System.IO.Ports.StopBits.One;//设定停止位spt.Parity=System.IO.Ports.Parity.None;//设定奇偶验证协议spt.Encoding=Encoding.UTF8;//设定通信中使用的字符集spt.DtrEnable=true;//数据终端准备就绪(可以接收数据)spt.ReadTimeout=1000;//设置数据读取超时为1秒spt.WriteTimeout=1000;//设置数据发送超时为1秒//打开串口try{spt.Open();if(spt.IsOpen){CloseSpt.Enabled=true;msgshow.Text="成功打开串口"+spt.PortName;}}catch(Exception msg){msgshow.Text=msg.Message;}}private void button4_Click(object sender,EventArgs e){spt.Close();if(!spt.IsOpen){CloseSpt.Enabled=false;msgshow.Text="已成功关闭串口"+spt.PortName;}}private void Serial_Load(object sender,EventArgs e){//将可用的串口名填充到下拉菜单中comboBox1.DataSource=SerialPort.GetPortNames();//如果sp/spt对象没有绑定spt_DataReceived事件,则要执行以下语句//当串口有数据要接收时,将触发该事件,执行绑定到该事件委托的方法//this.sp.DataReceived+=new System.IO.Ports.SerialDataReceivedEventHandler(this.spt_DataReceived);}private void spt_DataReceived(object sender,SerialDataReceivedEventArgs e){//当发生串口数据接收事件时,创建一个自定义委托对象,执行该委托所绑定的方法//在Logs控件所在的句柄上启动该异步委托,允许该线程修改Logs的属性//IAsyncResult ir=Logs.BeginInvoke(new ReadSptEventHandler(ReadSpt));//等待该委托线程完成//Logs.EndInvoke(ir);//把BeginInvoke和EndInvoke紧挨着放在一起,相当启动了一个异步线程,又一直等待该线程返回(这不就变成同步方法了吗?)//本例中,可以考虑直接使用同步的方法启动一个委托//程序会在此处等待,直至全部数据读取完毕,效果与上面BeginInvoke和EndInvoke两句一样ReadSptEventHandler rse=new ReadSptEventHandler(ReadSpt);Logs.Invoke(rse);//Logs.AppendText("hahahaha");//以下不调用异步委托,而是直接执行处理数据读取和显示任务//由于spt读取串口数据在一个独立的线程中进行,系统将会抛出“线程安全”问题而报错//ReadSpt();//绘图//DrawC();}void ReadSpt(){//以字符的方式读取串口的全部数据rstr=spt.ReadExisting().Trim();//读取串口接收到的数据的一个字符(字符的整型值),并以文本显示//string rstr=spt.ReadChar().ToString();//将数据添加到Logs控件Logs.AppendText(rstr);//将Logs控件的光标移到最末尾处Logs.ScrollToCaret();//DrawC();}private void button4_Click_1(object sender,EventArgs e){SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge");con.Open();SqlDataAdapter dap=new SqlDataAdapter("SELECT*FROM student WHERE 学号='"+rstr+"'",con);DataSet ds=new DataSet();dap.Fill(ds);dataGridView2.DataSource=ds.Tables[0].DefaultView;}private void button5_Click(object sender,EventArgs e){this.Hide();Form form1=new Form1();form1.Show();}private void Form2_FormClosed(object sender,FormClosedEventArgs e){if(MessageBox.Show("你要退出系统吗?退出请选择‘确定’","Error", MessageBoxButtons.OKCancel)==DialogResult.OK)System.Environment.Exit(0);}}}5.4注册新用户代码设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace diyige{public partial class Form3:Form{DataTable dt=new DataTable();public Form3(){InitializeComponent();}private void Form3_Load(object sender,EventArgs e){showinf();}private void showinf(){using(SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge")){SqlDataAdapter da=new SqlDataAdapter("SELECT*FROM student", con);da.Fill(dt);}}private void button3_Click(object sender,EventArgs e){this.Hide();Form form1=new Form1();form1.Show();}private void button1_Click(object sender,EventArgs e){SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress;Integrated Security=True;database=maoge");con.Open();SqlDataAdapter da=new SqlDataAdapter("SELECT*FROM student", con);//Add the parameters for the InsertCommand.DataSet ds=new DataSet("student");da.Fill(ds);if(textBox2.Text==textBox3.Text){SqlCommand cmd=new SqlCommand();mandType=CommandType.Text;mandText="INSERT INTO student(用户名,密码) values('"+textBox1.Text+"','"+textBox2.Text+"')";cmd.Connection=con;cmd.ExecuteNonQuery();//添加记录MessageBox.Show("注册成功");}else{MessageBox.Show("输入错误,请重新输入");}}private void button2_Click(object sender,EventArgs e){this.Close();}private void Form3_FormClosed(object sender,FormClosedEventArgs e){if(MessageBox.Show("你要退出系统吗?退出请选择‘确定’","Error", MessageBoxButtons.OKCancel)==DialogResult.OK)System.Environment.Exit(0);}}}5.5学生界面代码设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using System.Data.SqlClient;namespace diyige{public partial class Form4:Form{DataTable dt=new DataTable();public Form4(){InitializeComponent();}private void Form4_Load(object sender,EventArgs e){textBox6.Text=erName;SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge");con.Open();SqlCommand command=new SqlCommand("select*from student where用户名='"+textBox6.Text+"'",con);SqlDataReader reader=command.ExecuteReader();while(reader.Read()){this.textBox1.Text=reader["学号"].ToString();this.textBox2.Text=reader["姓名"].ToString();this.textBox3.Text=reader["性别"].ToString();this.textBox4.Text=reader["教学楼"].ToString();this.textBox5.Text=reader["课室"].ToString();}}private void button3_Click(object sender,EventArgs e){this.Hide();Form form1=new Form1();form1.Show();}private void button1_Click(object sender,EventArgs e){SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress;Integrated Security=True;database=maoge");con.Open();SqlDataAdapter da=new SqlDataAdapter("SELECT*FROM student where用户名='"+textBox6.Text+"'",con);//Add the parameters for the InsertCommand.DataSet ds=new DataSet("student");da.Fill(ds);if(ds.Tables[0].Rows.Count>0){SqlCommand cmd=new SqlCommand();mandType=CommandType.Text;mandText="update student set学号='"+textBox1.Text+ "',姓名='"+textBox2.Text+"',性别='"+textBox3.Text+"',教学楼='"+textBox4.Text+"',课室='"+textBox5.Text+"'where用户名='"+textBox6.Text+"'";cmd.Connection=con;cmd.ExecuteNonQuery();//添加记录MessageBox.Show("添加成功");}}private void button2_Click(object sender,EventArgs e){if(this.textBox1.Text==""||this.textBox2.Text==""||this.textBox3.Text==""|| this.textBox4.Text==""||this.textBox5.Text==""){MessageBox.Show("输入的学生信息不完整");}else{SqlConnection con=new SqlConnection("Data Source=(local)\\sqlexpress; Integrated Security=True;database=maoge");con.Open();SqlDataAdapter da=new SqlDataAdapter("select*from student where用户名='"+textBox6.Text+"'",con);DataSet ds=new DataSet("student");da.Fill(ds);if(ds.Tables[0].Rows.Count>0){SqlCommand cmd=new SqlCommand();mandType=CommandType.Text;mandText="update student set学号='"+textBox1.Text+"',姓名='"+textBox2.Text+"',性别='"+textBox3.Text+"',教学楼='"+textBox4.Text+"',课室='" +textBox5.Text+"'where用户名='"+textBox6.Text+"'";cmd.Connection=con;cmd.ExecuteNonQuery();//添加记录MessageBox.Show("修改成功");con.Close();}else{MessageBox.Show("此记录不存在");textBox1.Text="";textBox2.Text="";}}}}}第六章C#课程设计心得为期一周的课程设计结束了,在老师和同学的帮助下,我基本完成系统的设计。