⑴ 简述一个数据库应用系统的建立过程
数据库建立过程包括六个主要步骤:
1.需求分析:了解用户的数据需求、处理需求、安全和完整性需求。
2.概念设计:通过数据抽象,设计系统的概念模型,一般为e-r模型。
3.逻辑结构设计:设计系统的模式和外部模式,特别是关系模型的基本表和视图。
4.物理结构设计:设计数据的存储结构和访问方法,如索引的设计。
5.系统实现:组织数据存储,编写应用程序,试运行。
6.运维:系统投入运行,进行长期维护。
(1)编译条件筛选扩展阅读:
数据库设计技巧:
1.原始文档与实体之间的关系
它可以是一对一、一对多、多对多。一般来说,它们是一对一的关系:也就是说,原始文档只对应于一个实体,而且只对应于一个实体。在特殊情况下,它们可能是一对多或多对一的,其中一个原始文档对应多个实体,或者多个原始文档对应一个实体。
这里的实体可以理解为基本表。在明确了这些对应关系之后,这对于输入接口的设计是非常有益的。
2.主键和外键
通常,实体不能同时没有主键和外键。在e-r关系图中,叶中的实体可以定义主键,也可以不定义主键(因为它没有后代),但是它必须有外键(因为它有父键)。
主键和外键的设计在全局数据库的设计中起着重要的作用。当全球数据库的设计完成后,一位美国的数据库设计专家说:“钥匙,钥匙无处不在,只有钥匙”,这是他的数据库设计经验,也是他高度抽象的信息系统核心思想(数据模型)的体现。
因为:主键是实体的高度抽象,主键和外键对,表示实体之间的连接。
3.基本表的属性
基表不同于中间表和临时表,因为它有以下四个特点:
原子性。基表中的字段没有分解。
原始性。基表中的记录是原始数据(底层数据)的记录。
先验性。所有输出数据都可以从基表和代码表中的数据派生出来。
稳定。表的基本结构比较稳定,表中的记录保存时间较长。
一旦理解了基本表的性质,就可以在设计数据库时将它们与中间表和临时表区分开。
⑵ vb中,差、交、并、自然连接、选择、投影、笛卡尔积分别都是什么运算
交(Intersection)
关系R与关系S的交由既属于R又属于S的元组组成,即R与S中相同的元组,组成一个新关系,其结果仍为n目关系。记作:R∩S={t|t∈R ∧ t∈S}。
并(Union)
关系R和关系S的并由属于R或属于S的元组组成,即R和S的所有元组合并,删去重复元组,组成一个新关系,其结果仍为n目关系(“n目”指关系模式中属性的数目为n) 。记作:R∪S={t|t∈R∨t∈S}。
差(Difference)
关系R与关系S的差由属于R而不属于S的所有元组组成,即R中删去与S中相同的元组,组成一个新关系,其结果仍为n目关系。记作:R-S={t|t∈R∧┐t∈S}。
广义笛卡尔积(Extended Cartesian Proct)
两个分别为n目和m目关系R和S的广义笛卡尔积是一个(n+m)列的元组的集合,元组的前n列是关系R的一个元组,后m列是关系S的一个元组。
若R有k1个元组,S有k2个元组,则关系R和关系S的广义笛卡尔积有k1*k2个元组,记作:R×S={tr⌒ts| tr∈R∧ts∈S}或记做R×S={(r1,…,rn ,s1,…,sm)∣((r1,…,rn)∈R∧(s1,…,sm)∈S)。
选取(Selection)
选取运算是单目运算,是根据一定的条件在给定的关系R中选取若干个元组,组成一个新关系,记作:σF(R)={t|t∈R∧F(t)为真}。
投影(Projection)
关系R上的投影是从R中选择出若干属性列,组成新的关系,即对关系在垂直方向进行的运算,从左到右按照指定的若干属性及顺序取出相应列,删去重复元组。记作:ΠA(R)={t[A]|t∈R}。
连接(Join)
当连接属性X与Y具有相同属性组时,把在连接结果中重复的属性列去掉。即如果R与S具有相同的属性组Y,则自然连接可记作:R*S={t r⌒ts |tr∈R∧ts∈S∧tr[Y]=ts[Y]}。
(2)编译条件筛选扩展阅读
语言编程,VB是世界上使用人数最多的语言——不仅是盛赞VB的开发者还是抱怨VB开发者的数量。它源自于BASIC编程语言。
VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。
优点:
1、Visual Basic 提供了强大的可视化编程能力,可以让你轻松地做出漂亮的程序。
2、众多的控件让编程变得象垒积木一样简单。
3、Visual Basic 全部汉化,对于不会英语的人也能轻松使用。
缺点:
1、Visual Basic 不是真正的面向对象的开发工具。
2、Visual Basic 的数据类型太少,而且不支持指针,这使得它的表达能力很有限。
3、Visual Basic 不是真正的编译型语言,它产生的最终代码不是可执行的,是一种伪代码。它需要一个动态链接库去解释执行,这使得Visual Basic 的编译速度大大变慢。
(Visual Basic 5以及以前的版本产生的代码是伪代码,Visual Basic 6 编译出来的代码是真正的可执行代码。)
⑶ C语言 完全平方数
之前的是不对,对题理解错误,谢谢一楼的指正哈
修改后如下:
#include<stdio.h>
intfun(intarray[])
{
inti=0;
intk=0;
intm=0,n=0,l=0;
for(i=10;;i++)
{
if(100<i*i&&i*i<=999)
{
m=(i*i)/100;
n=((i*i)%100)/10;
l=(i*i)%10;
if(m==n||m==l||n==l)
array[k++]=i*i;
}
if(i*i>999)break;
}
returnk;
}
voidmain()
{
intarray[30]={0};
intcount=0;
inti=0;
count=fun(array);
printf("符合条件的数如下:");
for(i=0;i<count;i++)
{
printf("%d",array[i]);
}
printf(" ");
printf("符合条件的数的个数=%d ",count);
}
⑷ 如何理解C语言任何文件的动作都要检查两次
实际并不是检查两次,是分编译和链接两个步骤。
以VS工程为例介绍如下:
主要工程文件作用如下:
.vcxproj:工程配置文件
.props:使用项目属性表可以为生成工具(如编译器或链接器)指定开关并创建用户定义的宏。
.vcxproj.user:用户文件,存储特定于用户的属性,例如调试和部署设置。vcxproj.user 文件应用于特定用户的所有项目。
.vcxproj.filters:当使用解决方案资源管理器向项目中添加文件时,筛选器文件 (.vcxproj.filters) 会基于该文件的文件扩展名定义在解决方案资源管理器树视图的哪个位置添加该文件。
整个生成过程可分为如下几步:
1、获取配置
当编译程序时,会把上面几个文件中所有信息输入到编译器中,结合目前编译器的全局参数include files lib files source files等等,从配置文件中确定标准库和头文件的位置,使所有参与编译的依赖关系都找清楚。
2、编译预处理阶段
读取源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理;
将所有的“#define”指令删除,并且将宏定义展开;
处理所有的条件编译指令;
处理#include预编译指令,将被包含的头文件插入到预编译指令的位置。这可能是一个递归操作,如果被包含的头文件中又包含其他头文件;
删除所有的注释;
添加行号和文件标识;
保留所有的#program编译器指令,后续的编译步骤中要用到该指令。
经过预编译的处理以后,头文件被合并到源文件中,并且所有的宏定义都被展开。
3、编译阶段
依赖于编译器,英文是compile,编译阶段将源程序(*.c 或者*.cpp)转换成为目标代码*.obj;
以预编译的输出为输入,将C++源代码翻译成计算机系统应将能够识别的二进制机器指令,并将编译的输出结果存储在COFF格式的目标文件中。在编译的中间过程中,还可以通过cl命令选择性地输出汇编语言格式的中间文件。
在执行编译的时候,编译器以“.cpp”文件为单位,对于每一个“.cpp”文件,编译器都会输出一个目标文件。
4、链接阶段
连接阶段是把源程序转换成的目标代码(obj文件)与你程序里面调用的库函数对应的代码连接起来形成对应的可执行文件(exe文件)就可以了;
5、生成
指的是链接的过程,英文是build.依赖于链接器. vc中在这一阶段将所有的目标文件和所有需要用到的组件组合成一个整体,例如需要生成的是windows系统下的PE可执行文件,链接器会依照特定格式将目标文件组合,最后生成PE格式的.exe或.dll文件。
C语言工程的生成过程与C++相同。
⑸ 这是C语言编译的一个成绩筛选程序,为什么最后输出是0怎么改呢
你的Input函数有问题啊
你只判断了max<score的情况,当你的score小于0的时候,没有处理,而且也没有返回
上面估计默认就当你返回0了,因此你最后的时候y=0,而且max是个局部变量,你每次比较x都是与0比较,并没有起到每次获取大值的目的。
main函数中,你应该先判断x是否小于0,然后调用Input
Input可以这样用:
y=y>Input(x)?y:Input(x);
其实不都不用使用Input函数,直接在main中就能实现
intmain()
{
intx,y;
printf("pleaseinputscores(-1tobreak):");
y=0;
for(;;)
{
scanf("%d",&x);
if(x<0)
break;
y=y>x?y:x;
printf("%d已键入",x);
}
printf("最高成绩为%d",y);
}
⑹ 请教一个excel筛选方法
如果可以用辅助的话完全可以做到(第一行从A2开始的话)
第一步
B2:F2={=VALUE(TRIM(MID(SUBSTITUTE($A4,",",REPT(" ",100)),((COLUMN()-2)*100)+1,100)))} 向后拉(注{}是由SHIFT+CTRL+回车产生非直接输入)
第二步
用VB或直接复制以上分解出来的数据到另一个表格(设从A1开始)
用VB写以上的条件:如if
Sheetworkfunction.countif(range("A" & i & "E" & i),>=11) <1 then
.rows(i).delete
⑺ 用“筛选法”找出100以内的所有素数(C语言怎么编译)
#include "stdio.h"
#include"math.h"
main()
{
int i,j,flag;
for(i=1;i<=100;i++){
flag=0;
for (j=2;j<=sqr(i);j++){
if (i%j==0) {flag++;break;}
}
if(flag==0)printf ("%d\t",i);
flag=0;
}
⑻ .Single()方法是什么
single表示返回唯一的一个对象,后面跟的是能够筛选出唯一对象的条件,要注意的是如果筛选条件检索出的必须为单个对象。如果 为空对象或者多个对象集合 的话会编译错误。
你可以看看这个:
http://..com/link?url=SzxillDZvbltbJflzs32YmzXFDm_xVNuhH97dWLrNxibUgu6AqzTmLLi3-M-oTkgP4vGy0IIEmHhyaP3Ce_Zwa
⑼ 我的电子表格突然出现编译错误,有没有高手帮帮我!!!
使用高级条件筛选
在可用作条件 (条件:所指定的限制查询或筛选的结果集中包含哪些记录的条件。)区域的区域上方插入至少三个空白行。条件区域必须具有列标签。请确保在条件值与区域之间至少留了一个空白行。
外观示例
类型 销售人员 销售
类型 销售人员 销售
饮料 Suyama 5122
肉类 Davolio 450
农产品 Buchanan 6328
农产品 Davolio 6544
在列标志下面的一行中,键入所要匹配的条件。
条件示例
单列上具有多个条件
如果对于某一列具有两个或多个筛选条件,那么可直接在各行中从上到下依次键入各个条件。例如,下面的条件区域显示“销售人员”列中包含“Davolio”、“Buchanan”或“Suyama”的行。
销售人员
Davolio
Buchanan
Suyama
多列上具有单个条件
若要在两列或多列中查找满足单个条件的数据,请在条件区域的同一行中输入所有条件。例如,下面的条件区域将显示所有在“类型”列中包含“农产品”、在“销售人员”列中包含“Davolio”且“销售额”大于 $1,000 的数据行。
类型 销售人员 销售
农产品 Davolio >1000
某一列或另一列上具有单个条件
若要找到满足一列条件或另一列条件的数据,请在条件区域的不同行中输入条件。例如,下面的条件区域将显示所有在“类型”列中包含“农产品”、在“销售人员”列中包含“Davolio”或销售额大于 $1,000 的行。
类型 销售人员 销售
农产品
Davolio
>1000
两列上具有两组条件之一
若要找到满足两组条件(每一组条件都包含针对多列的条件)之一的数据行,请在各行中键入条件。例如,下面的条件区域将显示所有在“销售人员”列中包含“Davolio”且销售额大于 $3,000 的行,同时也显示“Buchanan”销售商的销售额大于 $1,500 的行。
销售人员 销售
Davolio >3000
Buchanan >1500
一列有两组以上条件
若要找到满足两组以上条件的行,请用相同的列标包括多列。例如,下面条件区域显示介于 5,000 和 8,000 之间以及少于 500 的销售额。
销售 销售
>5000 <8000
<500
将公式结果用作条件
可以将公式 (公式:单元格中的一系列值、单元格引用、名称或运算符的组合,可生成新的值。公式总是以等号 (=) 开始。)的计算结果作为条件使用。用公式创建条件时,不要将列标签作为条件标签使用;应该将条件标签置空,或者使用区域中的非列标签。例如,下面的条件区域显示在列 C 中,其值大于单元格区域 C7:C10 平均值的行。
=C7>AVERAGE($C$7:$C$10)
注释
用作条件的公式必须使用相对引用 (相对单元格引用:在公式中,基于包含公式的单元格与被引用的单元格之间的相对位置的单元格地址。如果复制公式,相对引用将自动调整。相对引用采用 A1 样式。)来引用列标签(例如,“销售”),或者引用第一个记录的对应字段。公式中的其他所有引用都必须为绝对引用 (绝对单元格引用:公式中单元格的精确地址,与包含公式的单元格的位置无关。绝对引用采用的形式为 $A$1。),并且公式的计算结果必须为 TRUE 或 FALSE。在本公式示例中,“C7”引用区域中第一个记录(行 7)的字段(列 C)。
可在公式中使用列标签来代替相对单元格引用或区域名称。当 Microsoft Excel 在包含条件的单元格中显示错误值 #NAME? 或 #VALUE! 时,可忽略这些错误,因为它们不影响区域的筛选。
Microsoft Excel 在计算数据时不区分大小写。
所有以该文本开始的项都将被筛选。例如,如果您键入文本“Dav”作为条件,Microsoft Excel 将查找“Davolio”、“David”和“Davis”。如果只匹配指定的文本,可键入下面的公式,其中“text”是需要查找的文本。 =''=text''
如果要查找某些字符相同但其他字符不一定相同的文本值,则可使用通配符。
通配符
以下通配符可作为筛选以及查找和替换内容时的比较条件 (条件:所指定的限制查询或筛选的结果集中包含哪些记录的条件。)。
请使用 若要查找
?(问号) 任何单个字符
例如,sm?th 查找“smith”和“smyth”
*(星号) 任何字符数
例如,*east 查找“Northeast”和“Southeast”
~(波形符)后跟 ?、* 或 ~ 问号、星号或波形符
例如,“fy91~?”将会查找“fy91?”
单击区域中的单元格。
在“数据”菜单上,指向“筛选”,再单击“高级筛选”。
若要通过隐藏不符合条件的数据行来筛选区域,请单击“在原有区域显示筛选结果”。
若要通过将符合条件的数据行复制到工作表的其他位置来筛选区域,请单击“将筛选结果复制到其他位置”,然后在“复制到”编辑框中单击鼠标左键,再单击要在该处粘贴行的区域的左上角。
在“条件区域”编辑框中,输入条件区域的引用,并包括条件标志。
如果要在选择条件区域时暂时将“高级筛选”对话框移走,请单击“压缩对话框” 。
若要更改筛选数据的方式,可更改条件区域中的值,并再次筛选数据。
提示
您可以将某个区域命名为“Criteria”,此时“条件区域”框中就会自动出现对该区域的引用。您也可以将要筛选的数据区域命名为“Database”,并将要粘贴行的区域命名为“Extract”,这样,这些区域就会相应地自动出现在“数据区域”和“复制到”框中。
将筛选所得的行复制到其他位置时,可以指定要复制的列。在筛选前,请将所需列的列标复制到粘贴区域的首行。而当筛选时,请在“复制到”框中输入对被复制列标的引用。这样,复制的行中将只包含已复制过列标的列。
⑽ VBS 中的函数常见的有多少个 分别有啥 还有那些已经赋值了的函数,例如time
Abs 函数:返回数的绝对值。
Array 函数:返回含有数组的变体。
Asc 函数:返回字符串首字母的 ANSI 字符码。
Atn 函数:返回数值的反正切。
CBool 函数:返回已被转换为 Boolean 子类型的变体的表达式。
CByte 函数:返回已被转换为字节子类型的变体的表达式。
CCur 函数:返回已被转换为货币子类型的变体的表达式。
CDate 函数:返回已被转换为日期子类型的变体的表达式。
CDbl 函数:返回已被转换为双精度子类型的变体的表达式。
Chr 函数:返回与指定的 ANSI 字符码相关的字符。
CInt 函数:返回已被转换为整形子类型的变体的表达式。
CLng 函数;返回已被转换为Long子类型的变体的表达式。
Cos 函数:返回角度的余弦。
CreateObject 函数:创建并返回对“自动”对象的引用。
CSng 函数:返回已被转换为单精度子类型的变体的表达式。
CStr 函数:返回已被转换为字符串子类型的变体的表达式。
Date 函数:返回当前系统日期。
DateAdd 函数:返回的日期已经加上了指定的时间间隔。
DateDiff 函数:返回两个日期之间的间隔。
DatePart 函数:返回给定日期的指定部分。
DateSerial 函数:返回指定年月日的日期子类型的变体。
Datevalue 函数:返回日期子类型的变体。
Day 函数:返回日期,取值范围为 1 至 31。
Eval 函数:计算表达式并返回结果。
Exp 函数:返回 e (自然对数的底) 的多少次方。
Filter 函数:根据指定的筛选条件,返回含有字符串数组子集的、下限为 0 的数组。
Fix 函数:返回数的整数部分。
FormatCurrency 函数:返回的表达式为货币值格式,其货币符号采用系统控制面板中定义的。
FormatDateTime 函数:返回的表达式为日期和时间格式。
FormatNumber 函数:返回的表达式为数字格式。
FormatPercent 函数:返回的表达式为百分数(乘以 100)格式,后面有 % 符号。
GetObject 函数:返回从文件对“自动”对象的引用。
GetRef 函数:返回对能够绑定到一事件的过程的引用。
Hex 函数:返回一字符串,代表一个数的十六进制值。
Hour 函数:返回表示钟点的数字,取值范围为 0 至 23。
InputBox 函数:在对话框中显式一提示,等待用户输入文本或单击按钮,并返回文本框的内容。
InStr 函数:返回一个字符串在另一个字符串中首次出现的位置。
InStrRev 函数;返回一个字符串在另一个字符串中出现的位置,但是从字符串的尾部算起。
Int 函数:返回数的整数部分。
IsArray 函数:返回 Boolean 值,反映变量是否为数组。
IsDate 函数:返回 Boolean 值,反映表达式能否转换为日期。
IsEmpty 函数:返回 Boolean 值,反映变量是否已被初始化。
IsNull 函数:返回 Boolean 值,反映表达式是否含有无效数据(Null)。
IsNumeric 函数:返回 Boolean 值,反映表达式能否转换为数字。
IsObject 函数:返回 Boolean 值,反映表达式是否引用了有效的“自动”对象。
Join 函数:返回通过连接许多含有数组的子串而创建的字符串。
LBound 函数;返回指定维数数组的最小有效下标。
LCase 函数:返回的字符串已被转换为小写字母。
Left 函数:返回字符串最左边的指定数量的字符。
Len 函数:返回字符串中的字符数或存储变量所需的字节数。
LoadPicture 函数:返回图片对象。只用于 32 位平台。
Log 函数:返回数的自然对数。
LTrim 函数;返回去掉前导空格的字符串。
Mid 函数:从字符串中返回指定数量的字符。
Minute 函数:返回分钟数,取值范围为 0 至 59。
Month 函数:返回表示月份的数,取值范围为 1 至 12。
MonthName 函数:返回表示月份的字符串。
MsgBox 函数:在对话框中显示消息,等待用户单击按钮,并返回表示用户所击按钮的数值。
Now 函数:返回计算机的当前系统日期和时间。
Oct 函数:返回表示该数八进制数值的字符串。
Replace 函数:返回一字符串,其中指定的子串已被另一个子串替换了规定的次数。
RGB 函数:返回代表 RGB 颜色值的数字。
Right 函数:返回字符串最右边的指定数量的字符。
Rnd 函数:返回随机数。
Round 函数:返回指定位数、四舍五入的数。
RTrim 函数:返回去掉尾部空格的字符串副本。
ScriptEngine 函数:返回反映使用中的脚本语言的字符串。
ScriptEngineBuildVersion 函数:返回使用中的脚本引擎的编译版本号。
ScriptEngineMajorVersion 函数:返回使用中的脚本引擎的主版本号。
ScriptEngineMinorVersion 函数:返回使用中的脚本引擎的次版本号。
Second 函数:返回秒数,取值范围为 0 至 59。
Sgn 函数:返回反映数的符号的整数。
Sin 函数:返回角度的正弦值。
Space 函数:返回由指定数量的空格组成的字符串。
Split 函数:返回下限为 0 的、由指定数量的子串组成的一维数组。
Sqr 函数:返回数的平方根。
StrComp 函数:返回反映字符串比较结果的数值。
String 函数:返回指定长度的重复字符串。
StrReverse 函数:返回一字符串,其中字符的顺序与指定的字符串中的顺序相反。
Tan 函数:返回角度的正切值。
Time 函数:返回表示当前系统时间的“日期”子类型的“变体”。
Timer 函数:返回时经子夜 12:00 AM 后的秒数。
TimeSerial 函数:返回含有指定时分秒时间的日期子类型的变体。
Timevalue 函数:返回含有时间的日期子类型的变体。
Trim 函数:返回去掉前导空格或尾部空格的字符串副本。
TypeName 函数:返回一字符串,它提供了关于变量的变体子类型信息。
UBound 函数:返回指定维数数组的最大有效下标。
UCase 函数:返回的字符串已经被转换为大写字母。
VarType 函数:返回标识变体子类型的数值。
Weekday 函数:返回表示星期几的数值。
WeekdayName 函数:返回表示星期几的字符串。
Year 函数:返回表示年份的数值。