问答题已知某教务管理系统的设计人员在需求分析阶段收集到下列原始数据表格:
教师
教师号
教师名
职称
工资
上级领导教师号
9868
王文华
教授
8000
null
9983
李一斌
副教授
6000
9868
9985
丁一
讲师
4000
9868
0783
王润泽
讲师
4000
9868
0899
欧阳丹妮
讲师
4000
9868
课程
课程号
课程名
学分
教材号
教材名
出版社名
任课教师号
C2006
计算机原理
3
11
计算机原理
清华大学出版社
9868
C2006
计算机原理
3
12
计算机原理与应用
高等教育出版社
9868
C2004
数据结构
3
13
数据结构
清华大学出版社
9868
C2010
数据库原理
3
14
数据库原理
清华大学出版社
9868
C2010
数据库原理
3
15
数据库原理与技术
高等教育出版社
9868
S3001
音乐欣赏
2
16
音乐欣赏
清华大学出版社
9983
已知该业务系统存在如下规则:
Ⅰ.每个教师有唯一的教师号,每个教师号对应唯一的一名教师;
Ⅱ.每门课程有唯一的课程号,每个课程号对应唯一的一门课程;
Ⅲ.每本教材有唯一的教材号,每个教材号对应唯一的一本教材;
Ⅳ.每个教师最多只有一个上级领导,也可以没有上级领导;
Ⅴ.一门课程仅由一名教师讲授;
Ⅵ.一本教材仅用于一门课程。
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数StrCharJR(),其函数的功能是:以行为单位把字符串中所有字符的ASCII值右移4位,然后把右移后的字符ASCII值再加上原字符的ASCII值,得到新的字符仍存入原字符串对应的位置上。最后把已处理的字符串仍按行重新存入字符串数组xx中,最后调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。
原始数据文件存放的格式是:每行的宽度均小于80个字符(含标点符号和空格)。
注意:部分程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx [50][80];
int maxline=0; /*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void StrCharjR(void)
{
void main()
{
if (ReadDat())
{
printf("数据文件IN.DAT不能打开!/n/007");
return;
}
StrCharjR();
WriteDat();
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if((fp=fopen("IN.DAT","r"))==NULL)
return 1;
while(fgets(xx[i],80,fp)!=NULL)
{
p=strchr(xx[i],'/n');
if(p)
i++;
}
maxline=i;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
for(i=0;i<maxline;i++)
{
fprintf(fp,"%s/n",xx[i]);
}
fclose(fp);
问答题已知数据文件IN.DAT中存有200个四位数,并已调用读函数readDat()把这些数存入数组a中。请编写函数jsval(),其功能是:把个位数字和千位数字重新组成一个新的两位数(新两位数的十位数字是原四位数的个位数字,新两位数的个位数字是原四位数的千位数字),以及把百位数字和十位数字组成另一个新的两位数(新两位数的十位数字是原四位数的百位数字,新两位数的个位数字是原四位数的十位数字),如果新组成的两个两位数均是偶数并且两个两位数中至少有一个数能被9整除,同时两个新数的十位数字均不为零,则将满足此条件的四位数按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt。最后main()函数调用写函数writeDat(),把结果cnt以及数组b中符合条件的四位数输出到OUT.DAT文件中。 注意:部分源程序已经给出。 程序中已定义数组:a[200],b[200];已定义变量:cnt。 请勿改动数据文件IN.DAT中的任何数据及主函数main()、读函数readDat()和写函数writeDat()的内容。 #include<stdio.h> #define MAX 200 int a[MAX],b[MAX],cnt=0; void jsVal() void readDat() int i; FILE *fp; fp=fopen("IN.DAT","r"); for(i=0;i<MAX;i++) fscanf(fp,"%d,",&a[i]); fclose(fp); void writeDat() FILE *fp; int i; fp=fopen("OUT.DAT","w"); fprintf(fp,"%d/n",cnt); for(i=0;i<cnt;i++) fprintf(fp,"%d/n",b[i]); fclose(fp); void main() int 1; readDat(); jsVal(); printf("满足条件的数=%d/n",cnt); for(i=0; i<cnt;i++) printf("%d",b[i]); printf("/n"); writeDat();
问答题已知在文件IN42.DAT中存有N个实数(N<200),函数ReadDat()读取这N个实数并存入数组xx中。请编制程序CalValue(),其功能要求: (1)求出这N个实数的平均值aver。 (2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数 WriteDat()把所求的结果输出到文件OUT42.DAT中。 注意:部分源程序已给出。 请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。 试题程序: #include<stdio.h> #include<conio.h> #define MAXNUM 200 float xx[MAXNUM]; int N=0; double aver=0.0; double sumint=0.0; double sumdec=0.0; int ReadDat( ); void WriteDat( ); void CalValue( ) void main( ) clrscr( ); if(ReadDat( ) printf ("数据文件IN42.DAT不能打开!/007/n" return; CalValue ( ); printf ("文件 IN42. DAT中共有实数%d个/n" ,N); printf ("平均值=%. 21f/n", aver); printf ("整数部分之和=%. 21f/n", sumint); printf ("小数部分之和=%.21f/n", sumdec); WriteDat( ); int ReadDat ( ) FILE *fp; int j; if((fp=fopen("in42.dat","r"))==NULL) return 1; while(!feof(fp)) fscanf ( fp, "%f", fclose(fp); return 0; void WriteDat() FILE *fp; fp=fopen("OUT42.DAT","w"); fprintf(fp,"%d/n%.21f/n%.21f/n%.21f/n",N, aver,sumint,sumdec); fclose(fp);
问答题某事务从账户A转出资金并向账户B转入资金,此操作要么全做,要么全不做。为了保证该操作的完整,需要利用到事务性质中的_________性。
问答题在SQL Server 2008中,能够出现在SELECT语句目标列中的用户自定义函数是_________函数。
问答题现有论文和作者两个实体,论文实体的属性包括题目、期刊名称、年份、期刊号;作者实体的属性包括姓名、单位、地址;一篇论文可以有多个作者,且每一位作者写过多篇论文,在每一篇论文中有作者的顺序号。请完成以下操作:
问答题已知在文件IN.DAT中存有N个实数(N<200),函数ReadDat()的功能是读取这N个实数并存入数组xx中。请编写程序CalValue(),其功能如下:
(1)求出这N个实数的平均值aver。
(2)分别求出这N个实数的整数部分值之和sumint及其小数部分之和sumdec,最后调用函数WriteDat(),把所求的结果输出到文件OUT.DAT中。
注意:请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
【试题程序】
#include < stdio.h >
#include < stdlib.h >
#define MAXNUM 200
float xx[MAXNUM] ;
int N =0;
double aver =0.0 ;
double sumint =0.0 ;
double sumdec =0.0 ;
int ReadDat () ;
void WriteDat () ;
void CalValue ()
{
void main ()
{
system ("CLS") ;
if (ReadDat () )
{
printf ("数据文件IN.DAT无法打开!
/007 /n") ;
return;
}
CalValue () ;
printf ("文件IN.DAT中共有实数%d个
/n", N) ;
printf ("平均值=% .21f/n", aver) ;
printf ("整数部分之和=% .2lf/n", sumint) ;
printf ("小数部分之和=%.21f/n", sum-
dec) ;
WriteDat () ;
int ReadDat ()
{
FILE * fp;
if ( (fp = fopen ( "IN.DAT", "r") ) ==
NULL )
return 1 ;
while (! feof (fp))
{
fscanf (fp, "%f",
if (xx[N] >0.001) N++;
}
fclose (fp) ;
return 0 ;
}
void WriteDat ()
{
FILE * fp;
fp = fopen ("OUT. DAT", "w") ;
fprintf (fp, "%d/n%.21f/n%.21f/n%.21f
/n", N, aver, sumint, sumdec ) ;
fclose (fp) ;
}
问答题函数ReadDat()实现从IN.DAT文件中读取一篇英文文章并存入字符串数组xx中。请编写函数StrOR(),其函数的功能是:以行为单位,依次把字符串中所有小写字母o左边的字符串内容移到该串的右边,然后把小写字母o删除,余下的字符串内容移到已处理字符串的左边,之后,把已处理的字符串仍按行重新存入字符串数组xx中。最后main()函数调用函数WriteDat(),把结果xx输出到OUT.DAT文件中。
例如,原文: n any field.Yu can create an index
you have the correct record.
结果: n any field.Yu can create an index
rd.yu have the crrect rec
原始数据文件存放的格式是:每行的宽度均小于80个字符,含标点符号和空格。
注意:部分源程序已经给出。
请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <conio.h>
char xx[50][80];
int maxline=0; /*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void StrOR(void)
{
}
void main ()
{
if (ReadDat())
{
printf("数据文件IN.DAT不能打开!/n/007");
return;
}
StrOR();
WriteDat();
}
int ReadDat(void)
{
FILE *fp;
int i=0;
char *p;
if ((fp=fopen("IN.DAT","r"))==NULL)
return 1;
while (fgets(xx[i],80,fp)!=NULL)
{
p=strchr(xx[i],'/n');
if(p)
i++;
}
maxline=i;
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("OUT.DAT","w");
for (i=0;i<maxline;i++)
{
printf("%s/n",xx[i]);
fprintf(fp,"%s/n",xx[i]);
}
fclose(fp);
}
问答题数据库管理系统提供了数据定义语言(DDL),用于定义各种数据库对象。数据定义语句经DDL编译器编译后,各种对象的描述信息存放在数据库的_______中。
问答题下列程序的功能是:把s字符串中的所有字符左移一个位置,字符串中的第一个字符移到最后。请编写函数chg(char*s)实现程序要求,最后调用函数readwriteDAT()从in.dat文件中读取50组数据,分别得出结果,且把结果输出到out.out文件中。 例如:s字符串中原有内容为:Mn.123xyZ,调用该函数后结果为:n.123xyZM。 注意:部分源程序已经给出。 请勿改动主函数main()和输出数据函数readwriteDAT()的内容。 #include<string.h> #include<stdio.h> #define N 81 void readwriteDAT(); void chg(char*s) main() char a[N]; printf("Enter a string:"); gets(a); printf("The original string is:"); puts(a); chg(a); printf("The string after modified:"); puts(a); readwriteDAT(); void readwriteDAT() int i; char a[N]; FILE *rf,*wf; rf=fopen("in.dat","r"); wf=fopen("out.dat","w"); for(i=0;i<50; i++) fscanf(rf,"%s",a); chg(a); fprintf(wf,"%s/n",a); fclose(rf); fclose(wf);
问答题已知某教务管理系统的设计人员在需求分析阶段收集到下列原始数据表格:已知该业务系统存在如下规则:Ⅰ.每个教师有唯一的教师号,每个教师号对应唯一的一名教师;Ⅱ.每门课程有唯一的课程号,每个课程号对应唯一的一门课程;Ⅲ.每本教材有唯一的教材号,每个教材号对应唯一的一本教材;Ⅳ.每个教师最多只有一个上级领导,也可以没有上级领导;Ⅴ.一门课程仅由一名教师讲授;Ⅵ.一本教材仅用于一门课程。
问答题已知在IN.DAT文件中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位)、产品名称mc(字符型10位)、单价dj(整型)、数量sl(整型)、金额je(长整型)五部分组成。其中:金额=单价×数量。函数ReadDat()是读取这100个销售记录并存入结构数组sell中。请编写函数SortDat(),其功能是:按产品代码从小到大进行排列,若产品代码相同,则按金额从小到大进行排列,最终排列结果仍存入结构数组sell中,最后调用函数WriteDat(),把结果输出到OUT.DAT文件中。 注意:部分程序已经给出。 请勿改动主函数main()、读数据函数ReadDat()和输出数据函数WriteDat()的内容。 #include<stdio.h> #include<string.h> #include<conio.h> #include<stdlib.h> #define MAX 100 typedef struct char dm[5]; /*产品代码*/ char mc[11]; /*产品名称*/ int dj; /*单价*/ int sl; /*数量*/ long je; /*余额*/ PRO; PRO sell[MAX]; void ReadDat(); void WriteDat(); void SortDat() void main() memset(sell,0,sizeof(sell))* ReadDat()* SortDat()* WriteDat()* void ReadDat() FILE *fp; char str[80],ch[11]; int i; fp=fopen("IN.DAT","r"); for(i=0;i<100;i++) fgets(str,80,fp); memcpy(sell[i].dm,str,4); memcpy(sell[i].mc,str+4,10); memcpy(ch,str+14,4); ch[4]=0; sell[i].dj=atoi(ch); memcpy(ch,str+18,5); ch[5]=0; sell[i].sl=atoi(ch); sell[i].je=(long)sell[i].dj*sell[i].sl; fclose(fp); void WriteDat(void) FILE *fp; int i; fp=fopen("OUT.DAT","w"); for(i=0;i<100;i++) printf("%s%s%4d%5d%5d/n", sell[i].dm,sell[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fprintf(fp,"%s%s%4d%5d%5d/n", sell[i].dm,sel.l[i].mc,sell[i].dj,sell[i].sl,sell[i].je); fclose(fp);
问答题数据库管理员要随时观察数据库的动态变化,并在数据库出现错误、故障或产生不适应的情况时能够随时采取有效措施保护数据库。这种监控机制称为_________。
问答题己知在文件in.dat中存有100个产品销售记录,每个产品销售记录由产品代码dm(字符型4位),产品名称mc(字符型10位),单价dj(整型),数量s1(整型),金额je(长整型)五部分组成。其中:金额=单价+数量。函数ReadDat()读取这100个销售记录并存入结构数组sell中。请编制函数SortDat(),其功能要求:按金额从小到大进行排列,若金额相等,则按产品代码从小到大进行排列,最终排列结果仍存入结构数组sell中。最后main()函数调用函数WriteDat()把结果输出到文件out.dat中。
提示:若中间变量为PRO temp,则可以直接使用结构赋值语句进行解题。
例如:sell[i]=temp;
请勿改动主函数main()、读函数ReadDat()和输出函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 100
typedef struct
{
char dm[5]; /*产品代码*/
char mc[11]; /*产品名称*/
int dj; /*单价*/
int sl; /*数量*/
long je; /*金额*/
} PRO;
PRO sell[MAX];
void ReadDat();
void WriteDat();
void SortDat()
{
}
void main()
{
memset(sell, 0, sizeof(sell));
ReadDat();
SortDat();
WriteDat();
}
void ReadDat()
{
FILE *fp;
char str[80], ch[11];
int i;
fp=fopen("in.dat", "r");
for(i=0; i<100; i++)
{
fgets(str, 80, fp);
memcpy(sell[i].dm, str, 4);
memcpy(sell[i].mc, str+4, 10);
memcpy(ch,str+14,4); ch[4]=0;
sell[i].dj=atoi(ch);
memcpy(ch, str+18,5); ch[5]=0;
sell[i].sl=atoi(ch);
sell[i].je= (long) sell [i].dj * sell[i].sl;
}
fclose(fp);
}
void WriteDat()
{
FILE *fp;
int i;
fp=fopen("out.dat", "w");
for(i=0; i<100; i++)
{
fprintf(fp, "%s %s %4d %5d %10ld/n", sell[i] .dm, sell[i].mc, sell[i] .dj, sell[i].sl,sell[i] .je);
}
fclose (fp);
}
问答题请编写程序,从in.dat文件中读取200个整数至数组xx中,求出奇数的个数cnt1和偶数的个数cnt2以及数组xx下标为偶数的元素值的算术平均值pj(保留2位小数)。结果cnt1、cnt2、pj输出到out.dat文件中。
注意:部分程序、读数据函数read_dat(int xx[200])及输出格式已给出。
#include <conio.h>
#include <stdio.h>
#define N 200
void read dat(int xx[N])
{
int i,j;
FILE *fp;
fp=fopen("in.dat","r");
for(i=0;i<20;i++)
{
for(j=0;j<10;j++)
{
fscanf(fp,"%d,",
printf("%d",xx[i*10+j]);
}
printf("/n");
}
fclose(fp);
}
void main()
{
int i;
int cnt1,cnt2,xx[N];
long j=0;
float pj;
fw=fopen("out.dat","w");
read dat(xx);
printf("/n/ncnt1=%d,cnt2=%d,pj=%6.2f/n",cnt1,cnt2,pj);
fprintf(fw,"%d/n%d/n%6.2f/n",cnt1,cnt2,pj);
fclose(fw);
}
问答题对10个候选人进行选举,现有一个存有100条记录的选票数据文件IN.DAT,其数据存放的格式是每条记录的长度均为10位,第一位表示第一个人的选中情况,第二位表示第二个人的选中情况,依此类推。每一位内容均为字符0或1,1表示此人被选中,0表示此人未被选中,若一张选票中选中人数小于等于5个人时,则被认为是无效的选票。给定函数ReadDat()的功能是把选票数据读入到字符串数组xx中。请编写函数CountRs()来统计每个人的选票数,并把得票数依次存入yy[0]~yy[9]中,最后调用函数WriteDat(),把结果yy输出到文件OUT.DAT中。
请勿改动主函数main()、读函数ReadDat()和写函数WriteDat()的内容。
[试题程序]
#include<stdio.h>
#include<memory.h>
char xx[100][11];
int yy[10];
int ReadDat(void);
void WriteDat(void);
void CountRs(void)
{
}
void main()
{
int i;
for(i=0; i<10; i++)
yy[i]=0;
if(ReadDat())
{
printf("选票数据文件IN.DAT无法打开!/007/n");
return;
}
CountRs();
WriteDat();
}
int ReadDat(void)
{
FILE*fp;
int i;
char tt[13];
if((fp=fopen("IN.DAT", "r"))==NULL)
return 1;
for(i=0; i<100; i++)
{
if(fgets(tt, 13, fp)==NULL)
return 1;
memcpy(xx[i], tt, 10);
}
fclose(fp);
return 0;
}
void WriteDat(void)
{
FILE*fp;
int i;
fp=fopen("OUT.DAT", "w");
for(i=0; i<10; i++)
{
fprintf(fp, "%d/n", yy[i]);
printf("第%d个人的选票数=%d/n", i+1, yy[i]);
}
fclose(fp);
}
问答题函数ReadDat()实现从文件in.dat中读取一篇英文文章,存入到字符串数组xx中;请编制函数encryptChar(),按给定的替代关系对数组xx中的所有字符进行替代,仍存入数组xx对应的位置上,最后调用函数WriteDat()把结果xx输出到文件out.dat中。
替代关系:f(p)=p*11 mod 256,mod为取余运算,p是数组xx中某一个字符的ASCII值,f(p)是计算后的无符号整型值(注意:中间变量定义成整型变量),如果原字符的ASCII值是偶数或计算后f(p)值小于等于32,则该字符不变,否则用f(p)替代所对应的字符。
请勿改动主函数main()、读函数ReadDat()和输出函数WriteDat()的内容。
#include <stdio.h>
#include <string.h>
#include <ctype.h>
unsigned char xx[50][80];
int maxline=0; /*文章的总行数*/
int ReadDat(void);
void WriteDat(void);
void encryptChar()
{
}
void main()
{
if(ReadDat())
{
printf("数据文件in.dat不能打开!/n/007");
return;
}
encryptChar();
WriteDat();
}
/*从文件in.dat中读取一篇英文文章, 存入到字符串数组xx中*/
int ReadDat(void)
{
FILE *fp;
int i=0;
unsigned char *p;
if((fp=fopen("in.dat", "r"))==NULL)
return 1;
while(fgets(xx[i], 80, fp)!=NULL)
{
p=strchr(xx[i], "/n");
if(p) *p=0;
i++;
}
maxline=i;
fclose(fp);
return 0;
}
/*把结果xx输出到文件out.dat中*/
void WriteDat(void)
{
FILE *fp;
int i;
fp=fopen("out.dat", "w");
for(i=0; i<maxline; i++)
{
printf("%s/n", xx[i]);
fprintf(fp, "%s/n", xx[i]);
}
fclose(fp);
}
问答题某商场新购了一套商品经营管理系统,此系统使用SQL Server 2008数据库管理系统。此系统上线运行前,需将商场原有的数据导入到新系统中。原有系统使用SQL Server 2000,数据结构与新系统不完全一致。为了保证数据一致性,数据导入过程中要求暂停业务且必须在2小时内完成。
①在原有数据导入新系统的过程中,实施人员发现原有数据量很大,导入数据需要4小时,业务无法接受。经分析某工程师认为,数据导入过程中数据库系统10很高,但导入数据的程序本身对系统资源占用很低。该工程师建议将数据导入过程中的数据库恢复模式从“完整”模式改为“简单”模式以提高数据导入速度;而另一位工程师则认为此方法未必能提高数据导入速度,而且还可能导致数据丢失,不建议使用此方法。
请分析此方法是否能够提高数据导入速度并给出理由,同时请分析此操作的数据丢失风险。
②在成功导入历史数据后,此系统顺利上线运行。在上线运行的第一周,发现数据库服务器CPU使用率很高,达到近90%,高峰期间达到100%,且系统内存使用率达到90%,但系统I/O很轻。业务人员反映系统操作速度很慢。为了提高系统运行速度,在不修改应用程序的前提下,两位工程师提出了不同的解决方法:
i.为服务器增加2颗CPU,缓解CPU使用率很高的问题。
ii.为服务器增加一倍内存,缓解内存使用率很高的问题。
考虑成本,现阶段只能按照一种方案实施。请指出在现有情况下,哪种方案更合理并给出理由。
问答题下图为关系表Students(专业,姓名,学号,年龄)在对应的数据文件中的物理存储结构示意图:
专业
姓名
学号
年龄
电子
张家力
D-002
19
计算机
苏永军
J-100
18
自动化
邓秀娟
Z-58
23
计算机
叶浩伟
J-206
21
