南邮软件工程报告
南京邮电大学系统工程课内实验

课内实验报告
课程名:系统工程
任课教师:
专业:市场营销
学号:
姓名:
二○一三至二○一四年度第 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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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约束然后插入数据,最后再建立主键和外键,否则由于表中有重复的数据将导致插入失败。
自由字符变量定义长一点以防止溢出,导致错误结果。