导航:首页 > 工程技术 > 软件工程工程学生选课系统顺序图

软件工程工程学生选课系统顺序图

发布时间:2021-08-13 15:45:24

⑴ 软件工程专业(本科)的课程设置

软件工程主要学科:马克思主义理论、大学外语、高等数学、大学物理、物理实验、线性代数、概率论与数理统计、编程语言、数据结构、离散数学、操作系统、编译技术、软件工程概述、统一建模语言,软件架构,软件需求,软件项目管理。

就业方向:

1、Java方向:Java初级程序员、Java计算程序员、Java工程师、J2EE系统工程师等。

2、网络方向:网络程序员、网站开发工程师、网络工程师等。

3、其他方向:简单管理信息系统开发和维护人员、网页制作和客户端脚本编程人员、主要数据库管理和维护人员、数据库开发工程师、系统分析和设计工程师、软件项目配置经理,以及文件写作工程师。

(1)软件工程工程学生选课系统顺序图扩展阅读:

软件工程,涉及到编程语言、数据库、软件开发工具、系统平台、标准、设计模式等。在现代社会,软件被应用于许多方面。典型软件如电子邮件、嵌入式系统、人机界面、办公套件、操作系统、编译器、数据库、游戏等。

同时,几乎所有的行业都有计算机软件应用,如工业、农业、银行、航空、政府部门等,这些应用促进了经济社会的发展,提高了人们的工作效率,提高了生活质量。

计算学科的分支,包括理论、抽象与设计、绑定、大问题复杂性、概念与形式模型、一致性与完整性、效率、进化、抽象层次、按空间排序、按时间排序、重用、安全性三种学科形式,数学方法和系统科学方法在软件工程中起着重要的作用。

此外,软件工程也非常重视管理过程,以提高软件产品的质量,降低开发成本,保证项目的及时完成。系统性、规范性和可测量性也是软件工程中的重要问题。

⑵ 急求c语言:学生选课系统程序设计(最好含流程图 的)

#include<stdio.h>
#include<stdlib.h>
int N1,N2,kk1,kk2,kk3;
struct couse * head1;
struct student * head2;
struct couse//课程信息结构体
{
int num1;
char name1[20];
int score;
int nelepeo;//课程已选人数
int Melepeo;//课程人数上限
struct couse * next;
};
struct student//学生信息结构体
{
int num2;
char name2[20];
int nelenum[50];//已选课程编号
int nelen;//已选课程数量
struct student * next;
};
void Ms()
{
for(kk1=0;kk1<1100;kk1++)
for(kk2=0;kk2<1200;kk2++)
for(kk3=0;kk3<1200;kk3++);
}
void keyboardc()//录入课程子函数(从键盘录入)
{
struct couse *p1,*p2;
N1=0;
p1=p2=(struct couse*)malloc(sizeof(struct couse));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
head1=NULL;
while(p1->num1!=0)
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);
p1->nelepeo=0;
}
p2->next=NULL;
}
void filec()//录入键盘子函数(从文件录入)
{
FILE * fp;
char filepath[20];
struct couse *p1,*p2;
N1=0;
printf("输入要读入的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct couse*)malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
head1=NULL;
while(!feof(fp))
{
N1=N1+1;
if(N1==1)head1=p1;
else p2->next=p1;
p2=p1;
p1=(struct couse * )malloc(sizeof(struct couse));
fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);
}
p2->next=NULL;
}
void inputc()//录入课程主函数
{
int i;
printf("\t\t\t录入课程信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboardc();break;
case(2):filec();break;
case(3):break;
}
}
void insertc(struct couse *incouse)//课程管理子函数(增加课程)
{
struct couse *p0,*p1,*p2;
p1=head1;
p0=incouse;
if(head1==NULL)
{
head1=p0;
p0->next=NULL;
}
else
{
while((p0->num1 > p1->num1) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num1 <= p1->num1)
{
if(head1==p1) head1=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N1=N1+1;
}
void delc(int num1)//课程管理子函数(删除课程)
{
struct couse *p1,*p2;
if(head1==NULL)
{
printf("\n没有课程,无法删除!\n");
goto end;
}
p1=head1;
while(num1!=p1->num1 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num1==p1->num1)
{
if(p1==head1) head1=p1->next;
else p2->next=p1->next;
printf("已删除该编号课程!\n");
N1=N1-1;
}
else printf("无该编号的课程!\n");
end:;
}
void managementc()//课程管理主函数
{
struct couse * incouse;
int i,num1;
printf("\t\t\t课程管理\n");
printf("1.新增课程\n");
printf("2.删除课程\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct couse *)malloc(sizeof(struct couse));
printf("课程编号\t课程名称\t学分\t课程人数上限\n");
scanf("%d%s%d%d",&incouse->num1,incouse->name1,&incouse->score,&incouse->Melepeo);
incouse->nelepeo=0;
insertc(incouse);
break;
}
case(2):
{
printf("请输入要删除课程的编号:\n");
scanf("%d",&num1);
delc(num1);
break;
}
case(3):break;
}
}
void keyboards()//录入学生信息子函数(从键盘录入)
{
int i;
struct student *p1,*p2;
N2=0;
p1=p2=(struct student *)malloc(sizeof(struct student));
printf("学生学号\t学生姓名\n");
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
head2=NULL;
while(p1->num2!=0)
{
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
scanf("%d%s",&p1->num2,p1->name2);
p1->nelen=0;
for(i=0;i<20;i++) p1->nelenum[i]=0;
}
p2->next=NULL;
}
void files()//录入学生信息子函数(从文件录入)
{
int i=0;
FILE * fp;
char filepath[20];
struct student *p1,*p2;
N2=0;
printf("输入要读入的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"r"))==NULL)
{
printf("找不到%s文件!\n",filepath);
exit(0);
}
p1=p2=(struct student*)malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
head2=NULL;
while(!feof(fp))
{
i=0;
N2=N2+1;
if(N2==1)head2=p1;
else p2->next=p1;
p2=p1;
p1=(struct student * )malloc(sizeof(struct student));
fread(p1,sizeof(struct student),1,fp);
}
p2->next=NULL;
}
void inputs()//录入学生信息主函数
{
int i;
printf("\t\t\t录入学生信息\n");
printf("\n1.从键盘录入\n");
printf("2.从文件录入\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):keyboards();break;
case(2):files();break;
case(3):break;
}
}
void inserts(struct student * incouse)//学生信息管理子函数(填加学生信息)
{
struct student *p0,*p1,*p2;
p1=head2;
p0=incouse;
if(head2==NULL)
{
head2=p0;
p0->next=NULL;
}
else
{
while((p0->num2 > p1->num2) && (p1->next!=NULL))
{
p2=p1;
p1=p1->next;
}
if(p0->num2 <= p1->num2)
{
if(head2==p1) head2=p0;
else p2->next=p0;
p0->next=p1;
}
else
{
p1->next=p0;
p0->next=NULL;
}
}
N2=N2+1;
}
void dels(int num2)//学生信息管理子函数(删除学生信息)
{
struct student *p1,*p2;
if(head2==NULL)
{
printf("\n没有该学生信息,无法删除!\n");
goto end;
}
p1=head2;
while(num2!=p1->num2 && p1->next!=NULL)
{
p2=p1;
p1=p1->next;
}
if(num2==p1->num2)
{
if(p1==head2) head2=p1->next;
else p2->next=p1->next;
printf("已删除该学生信息!\n");
N2=N2-1;
}
else printf("无该学号的学生!\n");
end:;
}
void managements()//学生信息管理主函数
{
struct student * incouse;
int i,num2;
printf("\t\t\t学生信息管理\n");
printf("1.新增学生信息\n");
printf("2.删除学生信息\n");
printf("3.返回主菜单\n");
printf("请选择(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):
{
incouse=(struct student *)malloc(sizeof(struct student));
incouse->nelen=0;
incouse->nelenum[0]=0;
printf("学生学号\t学生姓名\n");
scanf("%d%s",&incouse->num2,incouse->name2);
inserts(incouse);
break;
}
case(2):
{
printf("请输入要删除学生的学号:\n");
scanf("%d",&num2);
dels(num2);
break;
}
case(3):break;
}
}
void elect(struct student * s)//选课
{
struct couse * p;
int num1,i;
printf("请输入要选课的编号:\n");
scanf("%d",&num1);
for(i=0;s->nelenum[i]!=0;i++);
s->nelenum[i]=num1;
(s->nelen)++;
p=head1;
while(p->num1!=num1) p=p->next;
(p->nelepeo)++;
}
void cheak()//学生选课子函数(查询可选课程)
{
char e;
struct couse * c;
struct student * s;
int num2,i,j=0,t=0;
printf("请输入你的学号:");
scanf("%d",&num2);
s=head2;
while(s->num2!=num2 && s->next!=NULL) s=s->next;
if(s->num2!=num2)
{
printf("不存在你的信息,请进入主菜单录入你的信息!\n");
goto end;
}
c=head1;
printf("你的可选课程编号:\n");
while(c!=NULL)
{
for(t=0,i=0;s->nelenum[i]!=0;i++)
{
if(c->num1==s->nelenum[i]) t=1;
}
if(t==0 && (c->nelepeo!=c->Melepeo))
{
printf("%d\n",c->num1);
j++;
}
c=c->next;
}
if(j==0)
{
printf("你已选完所有课程,无法再多选!\n");
goto end;
}
printf("选课(y/n)?:\n");
getchar();
e=getchar();
i=0;
while(e=='y')
{
elect(s);
printf("继续选课(y/n)?:\n");
getchar();
e=getchar();
}
end:;
}
void back(struct student * p)//退课
{
struct couse * p1;
int num1,i,j;
printf("请输入你要退掉的课程编号:\n");
scanf("%d",&num1);
p1=head1;
while(p1->num1!=num1) p1=p1->next;
for(i=0;p->nelenum[i]!=num1;i++);
for(j=i;p->nelenum[j]!=0;j++) p->nelenum[j]=p->nelenum[j+1];
p->nelenum[--j]=0;
(p1->nelepeo)--;
printf("退课成功!\n");
}
void hcheak()//学生选课子函数(查询已选课程)
{
char c;
struct couse * p0;
struct student * p;
int num2,i,f=0;
printf("请输入学号:\n");
scanf("%d",&num2);
p=head2;
while(p->num2!=num2 && p!=NULL) p=p->next;
if(p==NULL)
{
printf("不存在你的信息,请回主菜单录入信息:\n");
goto end;
}
printf("已选课程编号:\n");
if(p->nelenum[0]==0)
{
printf("你还没选课!\n");
goto end;
}
for(i=0;p->nelenum[i]!=0;i++)
{
printf("%d\n",p->nelenum[i]);
p0=head1;
while(p0->num1!=p->nelenum[i]) p0=p0->next;
f=f+p0->score;
}
printf("总学分:%d\n",f);
printf("是否进行退课(y/n)?");
getchar();
c=getchar();
while(c=='y')
{
back(p);
printf("继续退课(y/n)?");
getchar();
c=getchar();
(p->nelen)--;
}
end:;
}
void elective()//学生选课主函数
{
int i;
printf("\t\t\t学生选课\n");
printf("1.查询可选课程\n");
printf("2.查询已选课程\n");
printf("3.返回主菜单\n");
printf("请输入(1~3):\n");
scanf("%d",&i);
switch(i)
{
case(1):cheak();break;
case(2):hcheak();break;
case(3):break;
}
}
void listc()//输出课程信息
{
struct couse * p;
p=head1;
printf("课程编号 课程名称 学分 课程已选人数 课程人数上限\n");
while(p!=NULL)
{
printf("%-8d%10s%6d%8d%12d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
}
void lists()//输出学生信息
{
struct student * p;
p=head2;
printf("学生学号 学生姓名 已选课程数量\n");
while(p!=NULL)
{
printf("%-4d %10s %6d\n",p->num2,p->name2,p->nelen);
p=p->next;
}
}
void intoc()//存储课程信息
{
FILE * fp;
struct couse * p;
char filepath[30];
printf("输入课程信息要保存的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
p=head1;
while(p!=NULL)
{
fprintf(fp,"%d %s %d %d %d\n",p->num1,p->name1,p->score,p->nelepeo,p->Melepeo);
p=p->next;
}
fclose(fp);
printf("课程信息已保存在%s中!\n",filepath);
}
void intos()//存储学生信息
{
FILE * fp;
struct student * p;
char filepath[30];
printf("输入学生信息要保存的文件路径:");
getchar();
gets(filepath);
if((fp=fopen(filepath,"w"))==NULL)
{
printf("\n保存失败!");
exit(0);
}
p=head2;
while(p!=NULL)
{
fwrite(p,sizeof(struct student),1,fp);
p=p->next;
}
fclose(fp);
printf("学生信息已保存在%s中!\n",filepath);
}
void into()//存储信息
{
int i;
printf("1.存储课程信息\n");
printf("2.存储学生信息\n");
printf("3.返回主菜单\n");
printf("请输入(1~3)\n");
scanf("%d",&i);
switch(i)
{
case(1):intoc();break;
case(2):intos();break;
case(3):break;
}
}
void store()//信息主函数
{
int i;
printf("\t\t系统信息查看及存储\n");
printf("1.查看课程信息\n");
printf("2.查看学生信息\n");
printf("3.存储信息\n");
printf("4.返回主菜单\n");
printf("请输入(1~4):\n");
scanf("%d",&i);
switch(i)
{
case(1):listc();break;
case(2):lists();break;
case(3):into();break;
case(4):break;
}
}
int main()//主函数
{
int i;
start:
printf("\n\t\t\t欢迎使用学生选课系统!\n");
printf("菜单:\n");
printf("1.录入课程信息\n");
printf("2.课程管理\n");
printf("3.录入学生信息\n");
printf("4.学生信息管理\n");
printf("5.学生选课\n");
printf("6.系统信息查看及存储\n");
printf("7.退出系统\n");
printf("\n请输入菜单选项(1~7):\n");
scanf("%d",&i);
if(i<1 || i>7)
{
printf("输入错误,请重输:\n");
goto start;
}
switch(i)
{
case(1):
{
system("cls");
inputc();
goto start;
break;
}
case(2):
{
system("cls");
managementc();
goto start;
break;
}
case(3):
{
system("cls");
inputs();
goto start;
break;
}
case(4):
{
system("cls");
managements();
goto start;
break;
}
case(5):
{
system("cls");
elective();
goto start;
break;
}
case(6):
{
system("cls");
store();
goto start;
break;
}
case(7):
{
system("cls");
printf("感谢使用本系统!\n\n再见!\n");
}
}
return(0);
}

⑶ 软件工程学生选课系统所使用的开发工具

问题不清楚啊
看样子应该是要做个网站
但这个要看开发的环境和语言的
如一楼所说,一般用java ,开发工具用myeclipse

⑷ 学生选课子系统流程图

大概模块就这样。

⑸ 软件工程顺序图怎么画

1. 在VP官网下载 Simple-Registration.vpp 。
2. 在Visual Paradigm中打开已下载的vpp文件。通过工具栏中的 Project > Open 可打开这个项目。
3. 打开类图 Registration ,通过对图表内容的查看,我们了解到这里有三个类——RegistrationUI 、 RegistrationController 和 User 。

4. 现在我们想要对在运行时这些类的对象实例间的交互进行建模。由于控制器类负责控制登记流程,因此添加一个它的子顺序图。将鼠标指针移动到 RegistrationController ,点击底部右下角的资源图标然后从弹出菜单中选择 New Diagram... 。

5. 在 New Diagram 窗口,选择 Sequence Diagram ,然后点击 Next 。保持默认图标名称不变,然后点击 OK 进行确认。

6. 一个空的UML顺序图创建以后,从图表工具栏中选择 Boundary LifeLine (B) 。

7. 点击图表创建生命线的分界线。

8. 输入 registrationUI 作为生命线名称,然后敲击回车键进行确认。

9. 右键点击生命线,然后从弹出菜单中选择 elect Class > Select Class... 。

10. 在 Select Class 窗口,选择 RegistrationUI 类,然后点击 OK 进行确认。

然后所绘制的生命线就:

11. 创建一个控制生命线( Control LifeLine ): registrationController : RegistrationController 和一个实体生命线(Entity LifeLine): user : User 。不要忘了为它们选择合适的类。所绘制的图表如下图所示:

12. 让我们为生命线之间所调用的方法进行建模,将鼠标指针移动到生命线 registrationUI 。

13. 按住资源 Resource Catalog ,然后进行拖动。

14. 移动到生命线 registrationController ,然后释放鼠标按钮。

15. 从Resource Catalog中选择 Message 。

16. 这会弹出一个可供你选择的新的序列信息的列表名称。你可以看到这些选项都是classRegistrationController的操作,在其中选择 createUser(name, password) 。

17. 关联生命线 registrationController 和 user ,我们可以看到是 registrationController 创建了user生命线。因此,我们需要创建一条信息来关联这两者。将鼠标指针移动激活生命线 registrationController 。

18. 按住资源 Resource Catalog 进行拖动。
19. 在生命线 user 处放开鼠标指针。
20. 从Resource Catalog中选择 Create Message 。

于是信息就被创建好了,所得的图像如下图所示:

21. 创建从生命线 registrationController 到user的信息 setName 和 setPassword ,到目前为止,图表如下图所示:

22. 您还可以指定操作的参数,以信息 createUser(name, password) 为例。右键点击它,然后从下拉菜单中选择 Open Specification... 。

23. 通过点击按钮上的省略号对行为属性进行编辑,跳转到 Action type 。

24. 在 Call Action Specification 窗口,点击 Add > Text... 添加参数。在本例中,点击 Add > Text... 添加参数 peter 。再次点击 Add > Text... 添加参数 mypwd 。注意,这里的两个参数指的是两个通过操作赋予的参数,如果你再添加第三个参数,它将被自动忽略(因为只定义了两个操作)。

25. 点击 OK 关闭窗口,然后返回图表。添加的参数被呈现在了图表上

⑹ 软件工程如何用顺序图说明类之间的工作流程及状态

顺序功能图(Sequeential Function Chart)是一种新颖的、按工艺流程图进行编程的图形化编程语言,也是一种符合国际电工委员会(IEC)标准,被首选推荐地用于可编程控制器的通用编程语言,现在,在PLC的应用领域中得到广泛的推广和应用。 采用SFC进行PLC应用编程的优点是: 1、在程序中可以直观地看到设备的动作顺序。因为SFC程序是按照设备(或工艺)的动作顺序编写的,所以程序的规律性较强,容易读懂,具有一定的可视性。 2、在设备发生故障时能很容易的找出故障所在位置。 3、不需要复杂的互锁电路,更容易设计和维护系统。 根据国际电工委员会(IEC)标准,SFC的标准结构是: 步 该步工序中的动作或命令+有向连接+转换和转换条件=SFC,参见图1: 图1 SFC程序的运行规则是:从初始步开始执行,当每步的转换条件成立时,就由当前步转为执行下一步,在遇到END时结束所有步的运行。 现在大多PLC制造公司,都为自己的工控产品提供了相关的编程软件,以便利用计算机实现在线编程。三菱公司提供的编程软件GX Developer(版本号8) 对转换条件梯形图的编辑,可按PLC编程的要求,按上面的叙述可以自己完成,需注意的是,每编辑完一个条件后应按F4快捷键转换,转换后梯形图则由原来的灰色变成亮白色,完成转换后再看SFC程序编辑窗口中1前面的问号(?)会消失。 8、通用状态的编辑。 在左侧的SFC程序编辑窗口中把光标下移到方向线底端,按工具栏中的工具按钮或单击F5快捷键弹出步序输入设置对话框见图14。 图14 SFC符号输入 输入步序标号后点击确定,这时光标将自动向下移动,此时,可看到步序图标号前面有一个问号(?),这是表明此步现在还没进行梯形图编辑,同时右边的梯形图编辑窗口呈现为灰色也表明为不可编辑状态,见图15。 下面对通用工序步进行梯形图编程。将光标移到步序号符号处,在步符号上单击后右边的窗口将变成可编辑状态,现在,可在此梯形图编辑窗口中输入梯形图。需注意,此处的梯形图是指程序运行到此工序步时所要驱动哪些输出线圈,在本例中,现在所要获得的通用工 图15 还没有编辑的状态步 序步20是驱动输出线圈Y0以及T0线圈,参见图2程序梯形图和指令表。 用相同的方法把控制系统一个周期内所有的通用状态编辑完毕。需说明的是,在这个编辑过程中,每编辑完一个通用步后,不需要再操作“程序”\“MAIN”而返回到块列表窗口(见图6),再次执行块列表编辑,而是在一个初始状态下,直接进行SFC图形编辑。 9、系统循环或周期性的工作编辑。 SFC程序在执行过程中,无一例外的会出现返回或跳转的编辑问题,这是执行周期性的循环所必须的。要在SFC程序中出现跳转符号,需用或(JUMP)指令加目标号进行设计。 现在进行返回初始状态编辑见图16所示。输入方法是:把光标移到方向线的最下端,按F8快捷键或者点击按钮,在弹出的对话框中填入要跳转到的目的地步序号,然后单击确定按钮。 图16 跳转符号输入 说明:如果在程序中有选择分支也要用JUMP “标号”来表示。 当输入完跳转符号后,在SFC编辑窗口中我们将会看到,在有跳转返回指向的步序符号方框图中多出一个小黑点儿,这说明此工序步是跳转返回的目标步,这为我们阅读SFC程序也提供了方便,参见图18。(信息来源.cn) 10,程序变换。 当所有SFC程序编辑完后,我们可点击变换按钮进行SFC程序的变换(编译),如果在变换时弹出了块信息设置对话框,可不用理会,直接点击执行按钮即可。经过变换后的程序如果成功,就可以进行仿真实验或写入PLC进行调试了。 如果想观看SFC程序所对应的顺序控制梯形图,我们可以这样操作:点击工程\编辑数据\改变程序类型,进行数据改变(见图19)。 图18 完整的SFC程序 图19数据变换 执行改变数据类型后,可以看到由SFC程序变换成的梯形图程序见图20。 图20 转化后的梯形图 小结:以上介绍了单序列的SFC程序的编制方法,通过学习,我们已经基本了解了SFC程序中状态符号的输入方法。需要强调的是两点:(1)在SFC程序中仍然需要进行梯形图的设计;(2)SFC程序中所有的状态转移需用TRAN表示。

⑺ 学生选课系统的分析与设计

我们可以根据你的题目提供一套与需求相适应的源程序(教学版,个人版,专业版,企业版)
为获取建议,你需要提供可用的电子信箱地址。

您还能直接通过网络Hi联系我们, 或使用网络知道向我求助, 或凭借网络知道发送短消息
或QQ:六五七幺五六幺五('幺'读 yao 一声)
有时间能搞定你的题目

ES:\
交易提醒:预付订金是陷阱
开发MIS系统,,B2B/B2C电子商务,企业/个人网站更有优惠

⑻ 求学生选课系统的ER图

学工部:

学生基本情况(学号、姓名、性别、班级、班主任、照片、入学年份)


教务处:

选课情况(学号、姓名、班级、课程名称、任课老师、学分、成绩、学期)


教师:

成绩情况(学号、姓名、班级、课程名称、成绩、班平均分、最高分、最低分、不及格人数)


学生:

综合信息(学号、姓名、班级、已修课程门数、总学分、平均成绩、每门课成绩、不及格门数)

与软件工程工程学生选课系统顺序图相关的资料

热点内容
苏州假山景观设计工程 浏览:862
哈尔滨工程造价招聘 浏览:937
建筑工程土建劳务分包 浏览:632
道路监理工程师 浏览:476
安徽工程大学机电学院在本校吗 浏览:370
河北工程大学保研率多少 浏览:287
有学质量工程师的书吗 浏览:479
康乐县建筑工程公司 浏览:569
助理工程师二级 浏览:872
注册安全工程师初级考试时间 浏览:901
食品科学与工程专业课题研究 浏览:881
工程造价图纸建模 浏览:888
辽宁恒润建设工程有限公司 浏览:93
实行施工总承包的工程项目 浏览:737
道路桥梁工程技术兴趣爱好 浏览:316
密歇根理工大学电气工程专业 浏览:388
广西交通工程质量监督站 浏览:31
四川大学材料科学与工程学院考研参考书目 浏览:858
有线电视工程建设管理条例 浏览:270
云南工程监理公司排名 浏览:673