南邮软件工程报告
南京邮电大学系统工程课内实验
课内实验报告
课程名:系统工程
任课教师:
专业:市场营销
学号:
姓名:
二○一三至二○一四年度第 1 学期南京邮电大学经济与管理学院
初始区域分布:
第一次执行go命令:
执行change-vote-if-tied为on 时的状态:setup按钮再次恢复状态:
执行change-vote-if-tied为on的状态:setup按钮再次回复状态:
执行change-vote-if-tied为on,以及change-vote-if-tied为on时的状态:
模型中首先分别为参数0、1代表两种选举情况的分布结果图,结果图是用蓝色与绿色来进行代表。
如果是参数1,则显示的是绿色,反则是蓝色。
初始时屏幕的显示区域是呈现的两者均分的情况,当按下setup按钮时,显。
软件工程实验报告实验二
软件工程实验报告实验二实实验报告课程名称软件工程实验项目实验二面向对象分析及面向对象设计实验仪器个人电脑系别___计算机科学与技术系____专业_____计算机科学与技术___组长姓名王海阔2010011187小组成员刘大伟_2010011195郑晓驰2010011192实验日期________2013-5-15_______成绩_______________________指导教师_田英爱1实验内容对航空客运订票系统,利用面向对象的软件工程思想和技术,对该系统进行分析。
2实验要求需要利用UML语言描述分析结果,完成系统的需求分析,并书写实验报告。
3实验工具与方法Micriosoftofficevisio2010画图工具Rationalroseenterpriseedition4实验结果系统名称:航空售票系统4.1根据选定系统,做出问题陈述,给出系统的用例图。
问题陈述:该航空客运售票系统能够实现旅客的订票、退票、查询余票、查询已经订票的旅客的信息、查询航班信息,旅客订票时提供的信息包括旅客姓名、身份证号、座位号、电话、航班号、起飞时间等,退票时提供的信息包括旅客姓名、身份证号、航班号、座位号、起飞时间等,查询余票时需要提供航班号以及飞机起飞时间,查询客户的信息需要提供旅客的姓名以及身份证号,查询航班信息需要提供航班号,下面是该系统的用例图注册收费系统收费退票旅客用户信息用户登录查询机票查询航班查询旅客信息查询现金支付POS机POS机支付自动售票机售票员订票注册成功4.2根据系统用例图,分别给出场景描述说明。
旅客买票前先注册,即在航空售票系统中录入自己的信息,注册成功之后,便可订票。
订票可以在柜台通过售票员直接订票,也可以在自动售票机上自己订票,当然都得先注册。
不管通过哪种方式订票都要缴费,收费系统会将旅客的现金或是通过POS机交的费用录入系统。
旅客退票时要先登录,在柜台或是在自动售票机输入自己的姓名等信息,然后系统会在旅客确认之后删除旅客的信息。
高级语言程序设计实验报告 c语言程序设计实验报告 大一 南邮
{
int i;
for (i=2;i<x;i++)
{
if(x%i==0)
{
return 0;
}
if(i>=x)
{
return 1;
}
}
}
void main()
{ int x;
int i;
int j=0;
printf("请输入一正整数:\n");
scanf("%d",&x);
printf("您输入的内容中数字有%d个;\n",j);
}
7:
#include<stdio.h>
int sum(int n)
{ int r=0;
if (n==1)
{
return 1;
}Байду номын сангаас
else
{
r=n+sum(n-1);
return r;
}
}
int fac(int n)
{
int r=1;
if(n==1)
分析:程序运行正常,这里要注意有关细节,比如符号的使用,中英字符的混淆,和连接时文件的问题。
签名:
日期:年月日
4:
1*1=1
2*1=2 2*2=4
3*1=3 3*2=6 3*3=9
4*1=4 4*2=8 4*3=12 4*4=16
5*1=5 5*2=10 5*3=15 5*4=20 5*5=25
6*1=6 6*2=12 6*3=18 6*4=24 6*5=30 6*6=36
7*1=7 7*2=14 7*3=21 7*4=28 7*5=35 7*6=42 7*7=49
南京邮电大学软件设计实验报告
通信与信息工程学院2012/2013学年第二学期软件设计实验报告模块名称Visual C++专业广播电视工程学生班级B100117学生学号B10011714学生姓名王建明指导教师田炜题目一:P021E实验要求:设计一个简单的文本编辑器,该系统要求对一个文本文件中的容进行各种常规操作,例如:(1)编辑文本;(2)保存、打开指定位置的文本文件;(3)具有输入输出界面。
1、问题分析与方案设计。
本次程序主要为了让我们了解C语言中对于文件的一般操作。
文件是程序设计中的一个重要概念。
操作系统是以文件为单位对数据进行管理的,也就是说,如果想找外部介质上的数据,必须先按文件名找到所指定的文件,然后再从该文件中读取数据。
C语言把文件看作是一个字符(字节)的序列,即由一个一个字符(字节)数据顺序组成。
根据数据的组织形式,可分为ASCII文件和二进制文件。
ASCII文件又称文本(text)文件,他的每一个字节放一个ASCII代码,代表一个字符。
二进制文件是把存中的数据按其在存中的存储形式原样输出到磁盘上存放。
在文件系统中,“文件指针”是一个非常重要的概念,通常在进行关于文件操作的C程序时,会定义一个结构体变量的文件指针(FILE *fp),以便于C语言程序能够准确的对文件进行访问及操作。
本次实验程序包含了简单地对于文件的打开、插入、删除、查找、替换、显示、保存的操作,通过对于文件指针的运用以及各种文件指令的运用,基本达到了实验的要求。
在本次实验中,按照顺序程序的设计方法,加以熟练地运用C程序中主函数与一般函数之间的熟练调用,顺利的实现了实验要求的各种结果。
程序中用到的核心方法包括:文件的打开与关闭、文件的读写、文件的定位以及文件的出错检测等。
其中包括了fopen、fclose、fputc、fgetc、fread、fwrite、rewind、fseek、ftell和ferror等函数。
这些函数对算法的实现起了很大的作用具体算法实现过程如下图所示。
南邮编译原理报告实验二
实验报告(2015 / 2016 学年第二学期)课程名称编译原理实验名称语法分析器的构造实验时间2016 年5月26日指导单位计算机软件教学中心指导教师黄海平学生姓名班级学号学院 (系) 计算机学院、专业计算机科学软件学院与技术实验报告实验名称语法分析器的构造指导教师黄海平实验类型验证实验学时4实验时间2016.5.26 一、实验目的和要求实验目的:设计、编制、调试一个LL(1) 语法分析器,利用语法分析器对符号串的识别,加深对语法分析原理的理解。
实验要求:1、检测左递归,如果有则进行消除;2、求解 FIRST 集和 FOLLOW 集;3、构建 LL(1) 分析表;4、构建 LL 分析程序,对于用户输入的句子,能够利用所构造的分析程序进行分析,并显示出分析过程。
以上实验要求可分两个同学完成。
例如构建分析表一个同学完成、构建分析程序并分析符号串另一个同学完成。
二、实验环境 (实验设备 )硬件:计算机软件: Visual C ++6.0二、实验原理及内容实验内容:设计并实现一个LL(1) 语法分析器,实现对算术文法G[E]:E->E+T|TT->T*F|FF->(E)|i所定义的符号串进行识别,例如符号串abc+age+80为文法所定义的句子,符号串 (abc-80(*s5)不是文法所定义的句子。
实验代码:#include<cstdio>#include<string>#include<iostream>using namespace std;void input_grammer(string *G)// 输入文法 G,n个非终结符{int i=0;// 计数char ch='y';while(ch=='y'){cin>>G[i++];cout<<"继续输入 ?(y/n)\n";cin>>ch;}}void preprocess(string *G,string *P,string &U,string &u,int &n,int &t,int &k)// 将文法 G预处理产生式集合 P,非终结符、终结符集合 U、u,{int i,j,r,temp;// 计数char C;//记录规则中()后的符号int flag;// 检测到()n=t=k=0;for( i=0;i<50;i++) P[i]="";// 字符串如果不初始化,在使用P[i][j]=a 时将不能改变,可以用 P[i].append(1,a)U=u="";// 字符串如果不初始化,无法使用U[i]=a 赋值,可以用 U.append(1,a)for(n=0;!G[n].empty();n++){ U[n]=G[n][0];}// 非终结符集合, n为非终结符个数for(i=0;i<n;i++){for(j=4;j<G[i].length();j++){if(U.find(G[i][j])==string::npos&&u.find(G[i][j])==string::npos)if(G[i][j]!='|'&&G[i][j]!='^')//if(G[i][j]!='('&&G[i][j]!=')'&&G[i][j]!='|'&&G[i][j]!='^')u[t++]=G[i][j];}}// 终结符集合, t为终结符个数for(i=0;i<n;i++){flag=0;r=4;for(j=4;j<G[i].length();j++){P[k][0]=U[i];P[k][1]=':';P[k][2]=':';P[k][3]='=';/* if(G[i][j]=='('){j++;flag=1;for(temp=j;G[i][temp]!=')';temp++);C=G[i][temp+1];//C记录()后跟的字符,将 C添加到()中所有字符串后面}if(G[i][j]==')') {j++;flag=0;}*/if(G[i][j]=='|'){//if(flag==1) P[k][r++]=C;k++;j++;P[k][0]=U[i];P[k][1]=':';P[k][2]=':';P[k][3]='=';r=4;P[k][r++]=G[i][j];}else{P[k][r++]=G[i][j];}}k++;}// 获得产生式集合 P,k为产生式个数}int eliminate_1(string *G,string *P,string U,string *GG)//消除文法 G1中所有直接左递归得到文法G2,要能够消除含有多个左递归的情况){string arfa,beta;//所有形如 A::=A α |中β的α、β连接起来形成的字符串arfa、betaint i,j,temp,m=0;// 计数int flag=0;//flag=1 表示文法有左递归int flagg=0;//flagg=1 表示某条规则有左递归char C='A';//由于消除左递归新增的非终结符,从 A 开始增加,只要不在原来问法的非终结符中即可加入for(i=0;i<20&&U[i]!=' ';i++){flagg=0; arfa=beta="";for(j=0;j<100&&P[j][0]!=' ';j++){if(P[j][0]==U[i]){if(P[j][4]==U[i])// 产生式 j有左递归{flagg=1;for(temp=5;P[j][temp]!=' ';temp++) arfa.append(1,P[j][temp]);if(P[j+1][4]==U[i]) arfa.append("|");// 不止一个产生式含有左递归}else{for(temp=4;P[j][temp]!=' ';temp++) beta.append(1,P[j][temp]);if(P[j+1][0]==U[i]&&P[j+1][4]!=U[i]) beta.append("|");}}}if(flagg==0)// 对于不含左递归的文法规则不重写{GG[m]=G[i]; m++;}else{flag=1;//文法存在左递归GG[m].append(1,U[i]);GG[m].append("::=");if(beta.find('|')!=string::npos) GG[m].append("("+beta+")");else GG[m].append(beta);while(U.find(C)!=string::npos){C++;}GG[m].append(1,C);m++;GG[m].append(1,C);GG[m].append("::=");if(arfa.find('|')!=string::npos) GG[m].append("("+arfa+")");else GG[m].append(arfa);GG[m].append(1,C);GG[m].append("|^");m++;C++;}//A::=A α改|写β成 A::= β A,‘A’ =α A'|,β}return flag;}int* ifempty(string* P,string U,int k,int n){int* empty=new int [n];// 指示非终结符能否推导到空串int i,j,r;for(r=0;r<n;r++) empty[r]=0;// 默认所有非终结符都不能推导到空int flag=1;//1 表示 empty数组有修改int step=100;//假设一条规则最大推导步数为步while(step--){for(i=0;i<k;i++){r=U.find(P[i][0]);if(P[i][4]=='^') empty[r]=1;//直接推导到空else{for(j=4;P[i][j]!=' ';j++){if(U.find(P[i][j])!=string::npos){if(empty[U.find(P[i][j])]==0) break;}else break;}if(P[i][j]==' ') empty[r]=1;//多步推导到空else flag=0;}}}return empty;}string* FIRST_X(string* P,string U,string u,int* empty,int k,int n){int i,j,r,s,tmp;string* first=new string[n];char a;int step=100;//最大推导步数while(step--){//cout<<"step"<<100-step<<endl;for(i=0;i<k;i++){//cout<<P[i]<<endl;r=U.find(P[i][0]);if(P[i][4]=='^'&&first[r].find('^')==string::npos)first[r].append(1,'^');// 规则右部首符号为空else{for(j=4;P[i][j]!=' ';j++){a=P[i][j];if(u.find(a)!=string::npos&&first[r].find(a)==string::npos)//规则右部首符号是终结符{first[r].append(1,a);break;//添加并结束}if(U.find(P[i][j])!=string::npos)//规则右部首符号是非终结符,形如 X:: =Y1Y2...Yk{s=U.find(P[i][j]);//cout<<P[i][j]<<":\n";for(tmp=0;first[s][tmp]!='\0';tmp++){a=first[s][tmp];if(a!='^'&&first[r].find(a)==string::npos)//将FIRST[Y1] 中的非空符加入first[r].append(1,a);}}if(!empty[s]) break;// 若Y1不能推导到空,结束}if(P[i][j]==' ')if(first[r].find('^')==string::npos)first[r].append(1,'^');// 若Y1、Y2...Yk 都能推导到空,则加入空符号}}}return first;}string FIRST(string U,string u,string* first,string s)// 求符号串 s=X1X2...Xn 的FIRST集{int i,j,r;char a;string fir;for(i=0;i<s.length();i++){if(s[i]=='^') fir.append(1,'^');if(u.find(s[i])!=string::npos&&fir.find(s[i])==string::npos){fir.append(1,s[i]);break;}//X1 是终结符,添加并结束循环if(U.find(s[i])!=string::npos)//X1 是非终结符{r=U.find(s[i]);for(j=0;first[r][j]!='\0';j++){a=first[r][j];if(a!='^'&&fir.find(a)==string::npos)//将FIRST(X1)中的非空符号加入fir.append(1,a);}if(first[r].find('^')==string::npos) break;// 若X1不可推导到空,循环停止}if(i==s.length())// 若X1-Xk 都可推导到空if(fir.find(s[i])==string::npos)//fir 中还未加入空符号fir.append(1,'^');}return fir;}string** create_table(string *P,string U,string u,int n,int t,int k,string* first)// 构造-13-{int i,j,p,q;string arfa;//记录规则右部string fir,follow;string FOLLOW[5]={")#",")#","+)#","+)#","+*)#"};string **table=new string*[n]; for(i=0;i<n;i++)table[i]=new string[t+1]; for(i=0;i<n;i++)for(j=0;j<t+1;j++)table[i][j]="";//table存储分析表的元素,“”表示 errorfor(i=0;i<k;i++){arfa=P[i];arfa.erase(0,4);//删除前个字符,如: E::=E+T,则arfa="E+T"fir=FIRST(U,u,first,arfa);for(j=0;j<t;j++){p=U.find(P[i][0]);if(fir.find(u[j])!=string::npos){q=j;table[p][q]=P[i];}// 对first()中的每一终结符置相应的规则}if(fir.find('^')!=string::npos){follow=FOLLOW[p];// 对规则左部求 follow()for(j=0;j<t;j++){if((q=follow.find(u[j]))!=string::npos){q=j;table[p][q]=P[i];}// 对follow ()中的每一终结符置相应的规则}table[p][t]=P[i];// 对#所在元素置相应规则}}return table;}void analyse(string **table,string U,string u,int t,string s)//分析符号串 s {string stack;//分析栈string ss=s;//记录原符号串char x;//栈顶符号char a;//下一个要输入的字符int flag=0;// 匹配成功标志int i=0,j=0,step=1;// 符号栈计数、输入串计数、步骤数 int p,q,r;string temp;for(i=0;!s[i];i++){if(u.find(s[i])==string::npos)// 出现非法的符号cout<<s<<"不是该文法的句子 \n";return;}s.append(1,'#');stack.append(1,'#');//进入分’析#栈’stack.append(1,U[0]);i++;//文法开始符进入分析栈a=s[0];//cout<<stack<<endl;cout<<"步骤分析栈余留输入串所用产生式\n";while(!flag){// cout<<" 步骤分析栈余留输入串所用产生式 \n"cout<<step<<""<<stack<<""<<s<<"";x=stack[i];stack.erase(i,1);i--;//取栈顶符号 x,并从栈顶退出//cout<<x<<endl;if(u.find(x)!=string::npos)//x 是终结符的情况{if(x==a){s.erase(0,1);a=s[0];//栈顶符号与当前输入符号匹配,则输入下一个符号cout<<"\n";// 未使用产生式,输出空}else{cout<<"error\n";cout<<ss<<"不是该文法的句子 \n";break;}}if(x=='#'){if(a=='#') {flag=1;cout<<" 成功 \n";}// 栈顶和余留输入串都为#,匹配成功else{cout<<"error\n";cout<<ss<<"不是该文法的句子 \n";break;}}if(U.find(x)!=string::npos)//x 是非终结符的情况{p=U.find(x);q=u.find(a);if(a=='#') q=t;temp=table[p][q];cout<<temp<<endl;//输出使用的产生式if(temp[0]!=' ')// 分析表中对应项不为 error{r=9;while(temp[r]==' ') r--;while(r>3){if(temp[r]!='^'){stack.append(1,temp[r]);//将X::=x1x2... 的规则右部各符号压栈i++;}r--;}}else{cout<<"error\n";cout<<ss<<"不是该文法的句子 \n";break;}}step++;}if(flag) cout<<endl<<ss<<"是该文法的句子 \n";}int main(){int i,j;string *G=new string[50];// 文法 Gstring *P=new string[50];// 产生式集合 Pstring U,u;//文法 G非终结符集合 U,终结符集合 uint n,t,k;// 非终结符、终结符个数 ,产生式数string *GG=new string[50];// 消除左递归后的文法 GGstring *PP=new string[50];// 文法 GG的产生式集合 PPstring UU,uu;//文法 GG非终结符集合 U,终结符集合 uint nn,tt,kk;// 消除左递归后的非终结符、终结符个数,产生式数string** table;// 分析表cout<<"欢迎使用 LL(1) 语法分析器 !\n\n\n";cout<<"请输入文法(同一左部的规则在同一行输入,例如:E::=E+T|T;用 ^表示空串) \n";input_grammer(G);preprocess(G,P,U,u,n,t,k);cout<<"\n该文法有 "<<n<<" 个非终结符: \n";for(i=0;i<n;i++) cout<<U[i];cout<<endl;cout<<"该文法有 "<<t<<" 个终结符: \n";for(i=0;i<t;i++)cout<<u[i];cout<<"\n\n左递归检测与消除 \n\n";if(eliminate_1(G,P,U,GG)){preprocess(GG,PP,UU,uu,nn,tt,kk);cout<<"该文法存在左递归! \n\n消除左递归后的文法 :\n\n"; for(i=0;i<nn;i++)cout<<GG[i]<<endl;cout<<endl;cout<<"新文法有 "<<nn<<" 个非终结符: \n";for(i=0;i<nn;i++)cout<<UU[i];cout<<endl;cout<<"新文法有 "<<tt<<" 个终结符: \n";for(i=0;i<tt;i++)cout<<uu[i];cout<<endl;//cout<<" 新文法有 "<<kk<<" 个产生式: \n";//for(i=0;i<kk;i++)cout<<PP[i]<<endl;}else{cout<<" 该文法不存在左递归 \n";GG=G;PP=P;UU=U;uu=u;nn=n;tt=t;kk=k;}cout<<"求解 FIRST集\n\n";int *empty=ifempty(PP,UU,kk,nn);string* first=FIRST_X(PP,UU,uu,empty,kk,nn);string FOLLOW[5]={")#",")#","+)#","+)#","+*)#"};for(i=0;i<nn;i++)cout<<"FIRST("<<UU[i]<<"):"<<first[i]<<endl;cout<<"求解 FOLLOW 集\n\n";for(i=0;i<nn;i++)cout<<"FOLLOW("<<UU[i]<<"):"<<FOLLOW[i]<<endl; cout<<"\n\n构造文法分析表 \n\n"; table=create_table(PP,UU,uu,nn,tt,kk,first);cout<<"";for(i=0;i<tt;i++) cout<<""<<uu[i]<<"";cout<<"#"<<endl;for( i=0;i<nn;i++){cout<<UU[i]<<"";for(j=0;j<t+1;j++)cout<<table[i][j];cout<<endl;}cout<<"\n\n分析符号串 \n\n"; string s;cout<<"请输入要分析的符号串\n";cin>>s;analyse(table,UU,uu,tt,s); return 0;}实验结果:四、实验小结(包括问题和解决方法、心得体会、意见与建议等)在这次实验中,我又一次复习了,什么是LL( 1)语法分析器,如何对符号串进行分析。
南京邮电大学java实验报告面向对象
实验报告班级:姓名:学号:课程名称Java程序设计实验项目Java的面向对象编程实验项目类型验证演示综合设计指导教师吴伟敏成绩√一、实验目的1、掌握Java程序面向对象编程的基本架构;2、掌握有关面向对象的基本概念,如:类、对象、接口继承和多态等;3、掌握包程序设计的方法,了解大型软件的构造方式二、实验步骤1、录入并测试以下程序,说出此程序的作用,体会类和对象的关系。
程序如下:class CCircle{double pi;double radius;double getRadius(){return radius;}void setCircle(double r, double p){pi=p;radius=r;}}public class Ex2_1{public static void main(String args[]) {CCircle cir1=new CCircle();cir1.setCircle(2.0,3.1416);System.out.println("radius="+cir1.getRadius());}}[基本要求]运行程序并观察运行结果。
[思考问题]试述程序中每条语句的作用。
2、录入并测试和完善以下程序,体会接口的用法。
interface Sittable{void sit();}interface Lie{void sleep();}interface HealthCare{void massage();}class Chair implements Sittable{public void sit(){System.out.println("It is sittable!");};}class Sofa extends Chair implements Lie,HealthCare{ public void sleep(){System.out.println("It is sleep!");};public void massage(){System.out.println("give a message!");};public static void main(String[] args) {Sofa cottonSofa=new Sofa();System.out.println(" Sofa is ok!");}}[基本要求]运行程序并观察运行结果。
南邮单片机实验报告一
实验一C51集成开发环境的练习一、实验内容在Keil C51开发环境下新建一个工程并创建一个文件,在文件中输入汇编程序,并进行编译生成HEX文件。
二、实验要求熟悉Keil C51集成开发环境的使用方法;掌握汇编语言的基本调试方法。
三、实验设备和仪器硬件:微机软件:Keil C51集成开发软件四.实验程序清单ORG 8000HLJMP MainORG 80F0HMain:MOV R7, #0Loop:MOV R6, #0DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R6, $DJNZ R7, LoopCPL P1.0 ; P 1 .0 取反CPL P1.1 ; P 1 .1 取反CPL P1.2 ; P 1 .2 取反CPL P1.3 ; P 1 .3 取反CPL P1.4 ; P 1 .4 取反CPL P1.5 ; P 1 .5 取反CPL P1.6 ; P 1 .6 取反CPL P1.7 ; P 1 .7 取反SJMP MainEND五.实验结果在本试验中,我学会了在Keil C51在开发环境下新建工程并创建文件,调试直到出现0 error和0 warning就运行成功了。
另外需要更改该软件中output的设置,使得运行成功之后能够生成HEX文件(存放在文件夹“实验程序及运行结果”里面了)。
六.问题讨论与实验心得在新建工程并创建文件之后,程序开始调试会出现warning 提示code space memory overlap的问题,后来发现是地址重叠导致了警告的产生,将source group组下面的starup.A51删去就执行就没有问题了。
通过本实验,我初步学习了Keil C51的入门使用,在调试程序出现问题时积极思考,查阅资料,从而解决了问题,避免了以后再犯类似的错误。
这次实验不仅让我掌握了Keil C51使用的知识,也锻炼了我自主学习的能力。
南京邮电大学管理信息系统实验报告
课内实验报告课程名:管理信息系统任课教师:专业:学号:姓名:二○一○至二○一一年度第 1 学期南京邮电大学经济与管理学院《管理信息系统》课程实验第 1 次实验报告实验内容及基本要求:实验项目名称:用友ERP供应链管理综合实验实验类型:验证每组人数:1实验内容及要求:1. 基于用友ERP软件中供应链模块,完成企业中采购管理领域的各项业务的操作。
实验结果:一、实验操作步骤总结(限300字,对所做实验的主要流程进行总结,禁止复制实验指导书)1.进入系统管理进行建账工作,具体步骤如下:(1)注册“系统管理员”、(2)增加操作员、(3)创建账套(包括帐套号、单位名称、本位币、存货需要分类、编码方案、数据精度、系统启用)、(4)权限分配2.打开企业应用平台,输入登录信息后进行初始化设置,具体步骤如下:(1)输入基础档案(包括部门及志职员档案、供应商档案、存货信息、仓库档案和收发类别)。
(2)进行期初数据的录。
(填写采购入库单后需要记账)3.处理日常业务。
(操作时要注意细节问题)4.期末工作:月末结账。
5.账簿查询:查询未完成的业务明细表、订单执行情况统计表、暂估入库余额表、入库明细表及发票明细表。
二、实验中遇到的问题及解决方法1、输入基础档案时无法先输入人员档案。
解决方法:要先输入部门档案后再在人员档案中选择部门名称,才能完成输入。
2、在填制到货退回单数量时不知如何表示。
解决方法:在英文状态下在数字前加负号即可。
3、手工结算找不到对应具体的账单。
解决方法:筛选信息要具体,从时间、厂商等具体排除。
三、实验小结(写实验心得和体会)第一次使用ERP软件做的是采购管理练习,虽然老师有过介绍和一些步骤的说明,但是在做得过程中还是会出现很多问题,其实做练习的过程照书本按部就班的做是远远不够的。
在做得过程中我们需要思路清晰,要想明白每一步为什么要这样做,这样我们日后走向工作岗位才能做到脱离书本真正把学到的东西运用到工作上。
《软件工程》第一次实验报告
1.系统需求概述
主要功能:教师.学生可以通过用户名和密码认证进入该系统,学生可以自由选择教师公布的课题。
通达学院
实验报告
(2015 / 2016学年第1学期)
课程名称
软件工程
实验名称
实验1:软件需求规格说明书的设计和撰写
实验时间
2015
年
11
月
16
日
指导单位
物联网学院
指导教师
赵莎莎
学生姓名
汤勇
班级学号
13002918
学院(系)
物联网学院
专业
南京邮电大学软件工程实验报告
实验报告
( 2015 / 2016 学年第二学期)
课程名称软件开发技术基础
实验名称实验二小型MIS系统的分析与设计
实验时间2016 年 5 月18 日指导单位计算机学院
指导教师王传栋
学生姓名班级学号
学院(系) 通信学院专业电子信息工程
实验报告
三、实验原理及内容
1、理解需求进行数据建模
1) 绘制概念模型ER 图。
2) 将第1 步得到的ER 模型,转换为DB 的关系模型。
STUDENT(SNO,SNAME,SEX,CLASS_NO,DEPARTMENT_NO)
2、对需求进行用例建模
1) 绘制系统的用例图。
2) 特殊用例,要进行用例详述。
3、对数据进行DFD 建模
建模中分别以系统角色学生、教师和教务员绘制分层DFD 图。
顶层数据流图:
学生管理系统一层数据流图:
管理学生模块数据流图:
管理学生模块数据流图:
选课管理与成绩管理模块数据流图:
4、在第3 步骤的基础上,绘制系统的体系结构图:
5、绘制系统的对象模型,完成:
1) “类图”,可以针对不同的业务场景分别绘制;
在学生选课情况下,各个类之间的关系如下图所示:
学生管理系统
学生 教师 系统管理员
查询成绩
查询基本信息
录入成绩
修改成绩
删除成绩
查询成绩
录入基本信息
修改学生信息
删除学生信息
查询信息
2) 特殊的业务类,根据需要绘制“状态图”
教师录入成绩的状态图如下图所示:
3) 特殊的业务场景,根据需要绘制“顺序图”
教师成绩管理顺序图如下:。
南邮C语言程序设计(上机)报告
图 1.1:算法流程图
4、源代码: #include <stdio.h> void main() { int i,j,maxmin,minmax; int a[10][20]; int min[20],max[10]; printf("输入 10 行﹑20 列学生身高:\n"); for(i=0;i<10;i++) for(j=0;j<20;j++) { scanf("%d",&a[i][j]); //输入数组的值 }
R009M
Middle
2、课题分析: 根据题目要求,可知这题需要运用数组和比较大小。先建立一个 10 行 20 列的数组,然后通过置换 比较求得每一列的最小值和每一行的最大值,分别存入 min[j]和 max[i]中。再比较 min[j]中的数,求 得其中最大数 minmax;比较 max[i]中数,求得其中的最小数 maxmin.最后比较 minmax 和 maxmin,并输 出结果。 3、算法描述: 算法流程图如下图 1-1 所示:
南京邮电大学通达学院 程序设计(上机)报告
题 目: R009M R024M
专 学 班 指 日 生 级 导 姓 学 教
业 名 号 师 期
软件工程 xxx xxx 韦 剑 2016 年 6 月 6 日
1
评分项 评 分 细 则 评 分 等 级 备 注 平时成绩 软件验收 设计报告
优秀
良好
中等
及格
不及格
教师签名: 年 月 日
7
n=10,m=12,k = 4
8
4
根据输入的数值,可知数组 min[j]中存放的数按顺序为:157、154、158、159、157、157、159、 159、158、158、158、159、158、154、157、159、157、158、158、154,minmax 为 159,即矮人中的 高个子身高为 159cm.max[i]中存放的数按顺序为:185、190、190、196、186、197、187、191、187、 196, maxmin 为 185, 即高个子中的矮子的身高为 185cm.最后比较 minmax 和 maxmin, maxmin 大于 minmax, 所以高个子中的矮子比矮人中的高个子高。程序输出的结果与实际相符。 题目二: 1、问题描述: 题目编号 内容 要求 设有n个人围坐在圆桌周围,从某个位置开始用自然数进行编号为 1,2,…,n。然后从编号为k的人从1开始报数,数到m的人便出列; 下一个人(第m十1个)又从1开始报数, 数到m的人便是第二个出列的 人。如此继续下去,直到最后一个人出列为止。要求输出这个出列 的顺序。 这个问题称为雅瑟夫(Josephu)问题。 具体要求如下: (1)n、m、k由键盘输入,输入前要有提示。 (2)在输入n后,动态建立方法说明中所需要建立的数组空间; 程序运行结束时释放该存储空间。 (3)分别用n=8,m=4,k=1以及n=10,m=12,k = 4调试运 行你的程序。 难度
南邮软件工程课程设计实验报告材料-教务管理系统
南京邮电大学实验报告课程名称:软件工程课题名称教务系统课程设计专业:广播电视工程学生姓名:陈超班级学号: B13011413指导教师:范山岗日期: 2015 年 12 月 25 日实验面象对象软件设计一、实验目的用面象对象方法设计实用软件,掌握需求分析方法,掌握掌握UML设计方法。
二、实验性质验证、设计实验。
三、实验要求1、选定题目编写需求分析说明2、学习Rational Rose环境3、学习通过Rational Rose绘制各类框图的方法。
四、环境简介1、 Rational Rose可视化环境组成Rose界面的五大部分是浏览器、文档工具、工具栏、框图窗口和日志。
见图1-1。
图1-1:Rose界面浏览器:用于在模型中迅速漫游。
文档工具:用于查看或更新模型元素的文档。
工具栏:用于迅速访问常用命令。
框图窗口:用于显示和编辑一个或几个UML框图。
日志:用于查看错误信息和报告各个命令的结果。
1.2浏览器和视图浏览器是层次结构,用于在Rose模型中迅速漫游。
在浏览器中显示了模型中增加的一切,如参与者、用例、类、组件等。
浏览器中包含四个视图:Use Case 视图、Logical视图、Component视图和Deployment视图。
点击每个视图的右键,选择new就可以看到这个视图所包含的一些模型元素。
1.3框图窗口在框图窗口中,我们可以浏览模型中的一个或几个UML框图。
改变框图中的元素时,Rose自动更新浏览器。
同样用浏览器改变元素时,Rose自动更新相应框图。
这样,Rose就可以保证模型的一致性。
五、实验步骤1、编写需求分析说明书对系统需求进行初步的整理与分析,是后续建模和设计工作的基础。
需求分析说明书详情请见附录。
2、用UML语言对系统进行分析与建模(OOA)2.1建立用例图use case diagram从用例图中我们可以看到系统干什么,与谁交互。
用例是系统提供的功能,参与者是系统与谁交互,参与者可以是人、系统或其他实体。
【报告】南邮单片机实验报告
【报告】南邮单片机实验报告一、实验目的本次南邮单片机实验旨在通过实际操作和实践,深入了解单片机的工作原理、编程方法以及其在实际应用中的功能实现。
通过完成一系列实验任务,提高我们对单片机系统的设计、开发和调试能力,为今后在电子信息领域的学习和工作打下坚实的基础。
二、实验设备1、单片机开发板2、计算机3、编程软件(如 Keil C51)4、下载器5、示波器6、万用表三、实验内容(一)点亮 LED 灯1、原理通过控制单片机的引脚输出高低电平,来控制连接在引脚上的 LED 灯的亮灭。
2、编程实现使用 C 语言编写程序,设置相应引脚为输出模式,并通过循环语句实现 LED 灯的闪烁效果。
3、调试与观察将程序下载到单片机中,观察 LED 灯的闪烁情况,使用示波器测量引脚的电平变化,以验证程序的正确性。
(二)数码管显示1、原理数码管由多个发光二极管组成,通过控制不同段的发光二极管的亮灭,可以显示不同的数字和字符。
2、编程实现编写程序,实现数码管的动态扫描显示,将需要显示的数字或字符转换为对应的段码,并通过定时中断实现动态刷新。
3、调试与观察下载程序后,观察数码管的显示效果,检查是否能够正确显示预定的数字和字符。
(三)按键控制1、原理按键连接到单片机的引脚,当按键按下时,引脚的电平发生变化,通过检测引脚电平的变化来实现按键的识别和响应。
2、编程实现设置引脚为输入模式,采用查询或中断的方式检测按键状态,根据按键的不同操作执行相应的功能。
3、调试与观察按下不同的按键,观察系统的响应是否符合预期,如 LED 灯的状态改变、数码管显示内容的变化等。
(四)温度传感器采集与显示1、原理使用数字式温度传感器(如 DS18B20)采集环境温度,传感器将温度转换为数字信号,单片机通过特定的通信协议读取温度数据。
2、编程实现编写驱动程序,实现与温度传感器的通信,读取温度值,并将其转换为合适的显示格式。
3、调试与观察将传感器置于不同的温度环境中,观察数码管或液晶显示屏上显示的温度值是否准确。
南京邮电大学系统工程实验报告
课内实验报告课程名:系统工程任课教师:巩永华专业:学号:姓名:二○二○至二○二一年度第 1 学期南京邮电大学管理学院《系统工程》课程实验报告实验内容及基本要求:实验项目名称:基于Netlogo的狼吃羊生态系统仿真实验类型:设计每组人数: 1实验内容及要求:1) 了解Netlogo编程语言的特点和基本语法。
2) 用系统动力学建模工具完成狼吃羊生态系统模型的仿真和仿真流程分析。
羊群和狼群的初始数值设置分别为:学号尾数为1、6号:50, 152、7号:80,203、8号:60, 204、9号:90,305、0号:100,30实验过程与结果:(1)系统动力学建模一、建立羊群繁殖模型1.建立羊群模型并编辑其数值2.NetLogo集成3.建立完整狼羊模型wolves 的初值为30,wolf-deaths的表达式为 wolves * wolf-death-rate ,wolf-death-rate 是 0.15,predator-efficiency 是 .8,wolf-births的表达式是 wolves * predator-efficiency * predation-rate * sheep, predation-rate 是 3.0E-4,sheep-deaths 的表达式是 sheep * predation-rate * wolves.4.设置绘图、按钮、监视器、画笔等set-current-plot-pen "sheep"plotxy ticks sheep]if plot-pen-exists? "wolves" [set-current-plot-pen "wolves"plotxy ticks wolves]end(3)仿真结果(4)实验总结在本次实验中我学习了简单的NetLogo建模方法,在过程中遇到了程序错误、无狼的曲线图等问题,通过检查与询问老师,最后了解了自己的问题(连接线错误、缺少指令等)与解决办法,最后成功做出了实验。
南邮数据结构实验报告
南邮数据结构实验报告实验目的,通过本次实验,我们旨在加深对数据结构的理解,掌握数据结构的基本操作和算法设计能力,提高对数据结构的应用能力和实际问题的解决能力。
一、实验内容。
1. 实验一,线性表的基本操作。
本次实验中,我们首先学习了线性表的基本概念和操作,包括插入、删除、查找等操作,并通过实际编程操作来加深对线性表的理解。
2. 实验二,栈和队列的应用。
在实验二中,我们通过实际编程操作来学习栈和队列的应用,包括中缀表达式转换为后缀表达式、栈的应用、队列的应用等内容。
3. 实验三,树和二叉树的基本操作。
实验三中,我们学习了树和二叉树的基本概念和操作,包括树的遍历、二叉树的建立和遍历等内容,并通过实际编程操作来加深对树和二叉树的理解。
4. 实验四,图的基本操作。
最后,我们学习了图的基本概念和操作,包括图的存储结构、图的遍历等内容,并通过实际编程操作来加深对图的理解。
二、实验过程。
在实验过程中,我们首先对实验内容进行了深入的学习和理解,掌握了数据结构的基本概念和操作方法。
然后,我们通过实际编程操作来加深对数据结构的理解,并通过调试和修改程序来提高对数据结构的应用能力和实际问题的解决能力。
在实验过程中,我们遇到了一些问题,但通过不懈的努力和团队合作,最终顺利完成了实验任务。
三、实验结果与分析。
通过本次实验,我们深入理解了数据结构的基本概念和操作方法,掌握了线性表、栈、队列、树、二叉树和图的基本操作,并通过实际编程操作加深了对数据结构的理解。
同时,我们也提高了对数据结构的应用能力和实际问题的解决能力,为今后的学习和工作打下了坚实的基础。
四、实验总结。
通过本次实验,我们不仅加深了对数据结构的理解,还提高了对数据结构的应用能力和实际问题的解决能力。
在今后的学习和工作中,我们将继续努力,不断提升自己的专业能力,为将来的发展打下坚实的基础。
以上就是本次实验的报告内容,谢谢!。
南邮软件工程实验三
}
}
补充任务:为Triangle类编写测试用例。
实验代码:
package .njupt;
/**
* This is Triangle class
*
*/
public class tttt {
//定义三角形的三边
protected long lborderA=0;
}
return false;
}
public double getPrice(){
return price;
}
public void setPrice(double price){
this.price=price;
}
public String getTitle(){
return title;
}
public void setTitle(String title){
if ((triangle.lborderA>0&&triangle.lborderA<=Long.MAX_VALUE/2)
&&(triangle.lborderB>0&&triangle.lborderB<=Long.MAX_VALUE/2)
&&(triangle.lborderC>0&&triangle.lborderC<=Long.MAX_VALUE/2)
五、指导教师评语
成绩
批阅人
日期
this.lborderC = lborderC;
}
/**
*判断是否是三角形
*是返回true,不是返回false
南邮-软件体系结构 实验二《 用“4+1”视图描述体系结构》
南京邮电大学《软件体系结构》实验报告实验题目“4+1”视图描述体系结构实验 2 用“4+1”视图描述体系结构一、实验目的:理解“4+1 视图”建模思想,熟悉体系结构生命周期模型,掌握基于软件体系结构建模方法。
二、实验要求:实验课前完成实验报告的实验目的、实验环境、实验内容、实验操作过程等内容;实验课中独立/团队操作完成实验报告的实验操作、实验结果及结论等内容;每人一台PC 机,所需软件Win2003/XP、UML工具(EclipseUML/ Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6.0 等。
实验课后完成实验报告的心得体会内容,并及时提交实验报告。
三、实验内容及操作步骤:(一)实验内容根据“4+1”视图对KWIC(关键词索引系统)系统建模,完成KWIC 系统的逻辑视图、过程视图、物理视图、开发视图和场景视图。
(二)操作步骤基于“4+1”视图,对KWIC(关键词索引系统)系统进行视图建模:1.建立KWIC 的逻辑视图采用面向对象的设计方法时,逻辑视图即是对象模型。
逻辑视图( Logical view)是为了便于理解系统设计的结构与组织,在“分析设计”工作流程中使用了名为逻钭视图的构架视图。
可以用对象模型米代表逻辑视图,用类图来描述逻辑视图。
系统只有一个逻辑视图,该视图以图形方式说明关键的用例实现、子系统、包和类,它们包含了在构架方面具有币要意义的行为。
逻辑视图在每次迭代过程中都会加以改进。
KWIC的逻辑视图如下所示:2.建立KWIC 的过程视图描述系统的并发和同步方面的设计。
过程视图process view)侧重于系统的运动特性,主要关注一些非功能性的需求,例如系统的性能和可用性。
过程视图强调并发性、分布性、系统集成性和容错能力,以及从逻辑视图中的主要抽象如何适合进程结构。
它也定义了逻辑视图中的各个类的操作具体是在哪一个线程中被执行的。
KWlC的过程视图如下所示:3.建立KWIC 的物理视图描述软件到硬件之间的映射关系,反映系统在分布方面的设计。
南邮-软件体系结构 实验一《软件体系结构风格之应用》
《软件体系结构》实验:软件体系结构风格之应用一、实验目得通过KWIC 实例分析,理解与掌握软件体系结构风格设计与实现。
二、实验内容多种软件风格设计与实现之KWIC 实例:1.采用主/子程序体系结构风格实现KWIC 关键词索引系统2.采用面向对象体系架构风格实现KWIC 关键词索引系统3.采用管道过滤体系架构风格实现KWIC 关键词索引系统4.采用事件过程调用体系架构风格实现KWIC 关键词索引系统三、实验要求与实验环境熟练掌握基于主/子程序体系结构风格得KWIC 关键词索引系统,在此基础上,完成基于面向对象体系架构风格得KWIC 关键词索引系统设计与实现。
选做基于管道过滤体系架构风格得KWIC 关键词索引系统;选做基于事件过程调用体系架构风格得KWIC 关键词索引系统。
实验课前完成实验报告得实验目得、实验环境、实验内容、实验操作过程等内容;实验课中独立/团队操作完成实验报告得实验操作、实验结果及结论等内容;每人一台PC 机,所需软件Win2003/XP 、UML 工具( EclipseUML/Rose/Visio/StartUML/)、Eclipse/MyEclipse、JDK6、0 等。
四、实验操作1、采用主/子程序体系结构风格实现KWIC 关键词索引系统主程序/子程序风格(Main Program/Subroutine Style)将系统组织成层次结构,包括一个主程序与一系列子程序。
主程序就是系统得控制器,负责调度各子程序得执行。
各子程序又就是一个局部得控制器,调度其子程序得执行。
设计词汇表:主程序main, 子程序 shift, sort 方法,方法得调用,返回构件与连接件类型:构件:各类子程序,如shift,sort连接件:方法得调用基本得计算模型:子程序有shift, sort方法,shift 对单词进行移位,sort方法对单词进行排序风格得基本不变性:主程序有顺序地调用子程序,单线程控制。
南邮数据结构实验报告
南邮数据结构实验报告南邮数据结构实验报告一、实验目的和背景数据结构是计算机科学中非常重要的一门基础课程,它研究了数据的组织、存储和管理方式,是计算机程序设计的基础。
本次实验旨在通过对南京邮电大学数据结构实验的学习和实践,加深对数据结构相关概念和算法的理解,并掌握数据结构在实际问题中的应用。
二、实验内容本次实验涉及到以下几个数据结构的实现和应用:1. 线性表:线性表是最简单的一种数据结构,它包括顺序表和链表两种实现方式。
我们需要实现线性表的基本操作,如插入、删除、查找等,并通过实际案例加深对线性表的理解。
2. 栈和队列:栈和队列是两种特殊的线性表,它们的插入和删除操作都受限制。
我们需要实现栈和队列的基本操作,并通过实例分析它们在实际问题中的应用。
3. 二叉树:二叉树是一种重要的非线性数据结构,它具有良好的递归性质。
我们需要实现二叉树的创建、遍历和查找等操作,并通过实例研究二叉树在排序和搜索问题中的应用。
4. 图:图是一种复杂的非线性数据结构,它由节点和边组成。
我们需要实现图的创建、遍历和最短路径等操作,并通过实例研究图在网络和路径规划等问题中的应用。
三、实验过程和结果在实验过程中,我们首先学习了相关的数据结构概念和算法原理,并通过编程语言实现了上述数据结构的基本操作。
在实验过程中,我们遇到了一些问题,如内存泄漏、指针操作错误等,但通过调试和修改代码,最终成功实现了各个数据结构的功能。
在实验结果方面,我们通过自己编写的测试用例对实现的数据结构进行了验证。
例如,对于线性表的插入和删除操作,我们分别测试了在表头、表尾和表中插入或删除元素的情况,并验证了操作的正确性。
对于二叉树的遍历操作,我们通过构建不同形态的二叉树,验证了前序、中序和后序遍历的正确性。
四、实验总结和心得体会通过本次实验,我们深入了解了数据结构的基本概念和常用算法,掌握了数据结构在实际问题中的应用。
同时,我们也意识到了数据结构的重要性和实践的必要性。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
课程名:软件工程与数据库概论
任课教师:胥备
专业:信息工程
学号:14130130
姓名:马一鸣
二○一六至二○一七年度第 2 学期南京邮电大学通达学院
实验报告一
实验名称:SQL语言的应用
指导教师:胥备
实验类型:验证
实验学时:4*2
实验时间:2017.4.18
一、实验目的和要求
1、练习使用SQL SERVER数据库产品,熟练使用查询分析器和企业管理器;
2、掌握SQL语言中常用的语句:用DDL创建基本表;用DML插入、修改、删除数据;用QL查询数据等。
二、实验环境(实验设备)
硬件:个人计算机;
软件:MS SQL SERVER环境。
三、实验原理及内容
1.创建实验数据库
数据库名称:M14130112;
操作步骤:Create DataBase M14130112;
2.打开刚刚创建的数据库
操作步骤:Use M14130112
3.在查询分析器中要完成的实验内容
1.建立如下表,并插入数据:
说明:应为表建立主键、其他完整性约束可自己添加;
表中数据也可以自己设计
课程
use M14130112;
create table s
(sno char(20) not null unique,
sname char(20),
age int,
sex char(1),
primary key(sno));
create table c
(cno char(20),
cname char(20),
chour int,
credit int,
ctype char(20),
primary key(cno));
create table sc
(sno char(20),
cno char(20) ,
grade int,
primary key(sno,cno),
foreign key(sno) references s(sno),
foreign key(cno) references c(cno));
insert into s values('S1','WANG',20,'M'); insert into s values('S2','LIU',19,'F'); insert into s values('S3','CHEN',22,'M'); insert into s values('S4','WU',19,'M');
精选文库
insert into s values('S5','LI',21,'F');
insert into c values('C2','MATHS',64,4,'基础');
insert into c values('C4','PHYSICS',48,3,'基础');
insert into c values('C3','C',32,2,'专业基础');
insert into c values('C1','DB',48,3,'专业');
insert into c values('C5','OS',32,2,'专业');
insert into sc values('S1','C2',89);
insert into sc values('S2','C1',70);
insert into sc values('S3','C2',NULL);
insert into sc values('S1','C5',80);
insert into sc values('S4','C3',NULL);
insert into sc values('S5','C4',78);
insert into sc values('S2','C4',79);
2.对以上数据完成以下功能:
(1)把基础课的学分提高1学分,学时提高8学时;
update c
set credit=credit+1,chour=chour+8
where ctype='基础';
(2)把MATH课的非空成绩提高10%;
update sc
set grade=grade *1.1
where grade is not null and o in
(select cno from c where cname ='MATHS');
(3)当所有学生不选修PHYSICS课程时,删除相应数据;delete from c where cname='PHYSICS' and cno not in (select cno from sc) ;
(4) LIU同学因病退学,删除相应数据。
DELETE from sc where sno in
(select sno from s where sname='LIU'); delete from s where sname='LIU';
3.对数据库中数据进行检索,完成:
(1)检索课程性质中包含“基础”的课程信息;select *
from c
where ctype ='基础';
(2)检索WANG同学学习的所有课程信息;select *
from c
where cno in
(select cno
from sc
where sno in
(select sno
from s
where sname='WANG'));
(3)检索不学C2课程的学生学号与姓名;select sno,sname
from s
where sno not in
(select sno
from sc
where cno ='c2' );
(4)计算每个学生选修并参加了考试的课程门数和总成绩;
select sno, COUNT(cno),SUM(grade)
from sc
where grade is not null
group by sno;
select * from sc;
(5)查询平均成绩大于80分的学生学号、姓名和平均成绩,结果按平均成绩降序排列;
select s.sno, sname, AVG(grade)
from sc,s
where sc.sno=s.sno and grade is not null
group by s.sno,sname
having AVG(grade)>80
order by AVG(grade) desc;
select * from sc;
四、实验小结
通过本次实验,我们熟悉了SQL的实验环境。
在进行实验的过程中,建表是很简单的,包括对表中索引的创建和对表属性的更改设置。
对于选课表,在建立之前不能设置主键和外键,应首先删除UNIQUE KEY约束然后插入数据,最后再建立主键和外键,否则由于表中有重复的数据将导致插入失败。
自由字符变量定义长一点以防止溢出,导致错误结果。