学生选课系统.docx

上传人:b****6 文档编号:7016985 上传时间:2023-01-16 格式:DOCX 页数:33 大小:105.19KB
下载 相关 举报
学生选课系统.docx_第1页
第1页 / 共33页
学生选课系统.docx_第2页
第2页 / 共33页
学生选课系统.docx_第3页
第3页 / 共33页
学生选课系统.docx_第4页
第4页 / 共33页
学生选课系统.docx_第5页
第5页 / 共33页
点击查看更多>>
下载资源
资源描述

学生选课系统.docx

《学生选课系统.docx》由会员分享,可在线阅读,更多相关《学生选课系统.docx(33页珍藏版)》请在冰豆网上搜索。

学生选课系统.docx

学生选课系统

数据结构课程设计报告

 

《学生选课系统》

 

目录

摘要3

第1章概述4

1.1系统实现的目标4

1.2系统实现方案4

1.3系统实现环境4

1.4具体的开发方法4

第2章系统设计5

2.1系统功能设计5

2.2数据库设计5

2.3界面的设计5

第3章系统实现6

参考文献7

摘要

随着课程改革的不断深入,学校规模不断扩大、课程项目不断增多,为解决学生选课管理上的复杂的人工操作,减轻重复工作,使学校管理以及学校管理人员能够有效方便的管理学生信息,我们设计开发了本学生选课系统。

本系统实现了对课程的基本信息以及学生选课、学生和教师用户进行管理。

我们通过课本与实际了解的知识,利用计算机软件,实现了该系统。

通过采用本系统可实现对所有的学生信息进行统一管理,使得操作简单、方便化。

关键词:

选课、JSP、B/S

第1章概述

1.1系统实现的目标

该学生选课系统需求分析报告的目的在于通过该报告,可以使系统实现如下功能:

学生选课,成绩录入,成绩查询,课程信息管理,用户信息管理,成绩信息管理。

使用户的需求能够清晰的呈现出来。

1.2系统实现方案

(1)登录与注销

(2)修改密码

(3)系统管理员功能

1.3系统实现环境

表1.3.1

硬件

处理器

AMD3000+或者更加高级

 

服务器

 

 

软件

内存:

512M或更高

硬盘:

80G或更高

MicrosoftWindowsxp

MicrosoftSQLServer2000

MicrosoftIIS6.0

客户机

硬件

连接互联网

软件

MicrosoftWindowsxp

MicrosoftIE6.0

1.4具体的开发方法

1.4.1JSP简介

JSP技术使用Java编程语言编写类XML的tags和scriptlets,来封装产生动态网页的处理逻辑。

网页还能通过tags和scriptlets访问存在于服务端的资源的应用逻辑。

JSP将网页逻辑与网页设计和显示分离,支持可重用的基于组件的设计,使基于Web的应用程序的开发变得迅速和容易。

Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户。

插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

JSP与JavaServlet一样,是在服务器端执行的,通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。

JSP的1.0规范的最后版本是1999年9月推出的,12月又推出了1.1规范。

目前较新的是JSP1.2规范,JSP2.0规范的征求意见稿也已出台。

JSP页面由HTML代码和嵌入其中的Java代码所组成。

服务器在页面被客户端请求以后对这些Java代码进行处理,然后将生成的HTML页面返回给客户端的浏览器。

JavaServlet是JSP的技术基础,而且大型的Web应用程序的开发需要JavaServlet和JSP配合才能完成。

JSP具备了Java技术的简单易用,完全的面向对象,具有平台无关性且安全可靠,主要面向因特网的所有特点。

自JSP推出后,众多大公司都支持JSP技术的服务器,如IBM、Oracle、Bea公司等,所以JSP迅速成为商业应用的服务器端语言。

JSP可用一种简单易懂的等式表示为:

HTML+Java=JSP。

1.4.2SQLServer2000简介

SQLServer是一个关系数据库管理系统,它最初是由MicrosoftSybase和Ashton-Tate三家公司共同开发的,于1988年推出了第一个OS/2版本。

在WindowsNT推出后,Microsoft与Sybase在SQLServer的开发上就分道扬镳了。

Microsoft将SQLServer移植到WindowsNT系统上,专注于开发推广SQLServer的WindowsNT版本;Sybase则较专注于SQLServer在UNIX操作系统上的应用。

在本书中介绍的是MicrosoftSQLServer以后简称为SQLServer或MSSQLServer。

  SQLServer2000是Microsoft公司推出的SQLServer数据库管理系统的一个版本。

该版本继承了SQLServer7.0版本的优点同时又比它增加了许多更先进的功能,具有使用方便,可伸缩性好与相关软件集成程度高等优点,可跨越从运行MicrosoftWindows98的膝上型电脑到运行MicrosoftWindows2000的大型多处理器的服务器等多种平台使用。

第2章系统设计

2.1系统功能设计

1、用户登录模块

提供用户登录界面,输入用户名,密码进行登录。

2、学生信息管理模块

学生信息管理模块,用于管理学生的基本信息,所包括的字段有:

学号、姓名、性别、年龄、班级,提供对学生信息的录入、查询、修改和删除的操作。

3、课程信息管理模块

课程信息管理模块用于管理课程的信息,所包含的字段有:

课程号、课程号、先行课和学分,提供对课程信息的录入、查询、修改和删除的操作。

4、选课功能管理模块

选课功能管理模块用于管理学生的选课与成绩,所包含的字段有:

学号、课程号和成绩,提供对选课成绩信息的录入、查询、修改和删除的操作。

2.2数据库设计

教学管理系统

学生管理员教师

选个人学生教师课程查看选课

课信息管理管理管理选课学生

查询情况名单

图2.2.1总系统对用功能图

(1)系统的模块划分为如图所示,分别为:

学生登录、管理员信息管理、教师信息管理3个模块。

每个模块负责相应的功能。

系统采用ADO.NET技术实现对数据库的访问操作,使用Server2000作为后台数据库。

2.1系统功能表

表单名

表单名

功能

student

学生信息表

储存学生个人信息

course

课程信息表

储存每科课程的信息

sc

选课成绩表

储存学生所选修的课程的成绩

useers

用户表

储存用户的账号与密码

2.3界面的设计

(1)学生登录模块:

(2)学生信息管理模块

选1:

进入学生信息浏览,先看是否有记录,无则退出到学生信息界面,有则显示出来。

选2:

进入学生信息录入,录入学生编号,先看是否重复,若

有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表。

选3:

进入学生信息修改,录入学生编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息。

选4:

进入学生信息删除,录入要删除的学生编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,再提示是否确实要删除记录,要则删除。

选5:

进入学生信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录.

选6:

退出学生信息界面。

(3)课程信息管理模块

选1:

进入课程信息浏览,先看是否有记录,无则退出到课程信息界面,有则显示出来。

选2:

进入课程信息录入,入课程编号,先看是否重复,若

有重复,则提示错误,进行下次输入,无则输出一条记录,并添加记录到表。

选3:

进入课程信息修改,录入课程编号,看是否在表中有这条记录,无则提示错误,有则提示修改记录的相关信息。

选4:

进入课程信息删除,录入要删除的课程编号,看是否在表中有这条记录,无则提示错误,有则提示显示记录的相关信息,再提示是否确实要删除记录,要则删除。

选5:

进入课程信息查询,进行选择是按学号查询或学分查询,不管哪种方式,都查询一下表中有相关的记录,没有则重新选择,有刚显示相关记录。

选6:

退出课程信息界面。

(4)选课功能管理模块

选1:

进入选课信息浏览,先看是否有记录,无则退出到选课信息界面,有则显示出来.

选2:

进入学生选课,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入选课的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就选上,进行重复选择。

选3:

进入学生退选,录入学生编号,先看是否重复,若有重复,则提示错误,进行下次输入,无则进行选课提示,输入退选课程的编号,再看是否输入的编号是否存在,无则重新输入,有则看是否选了这门课,没有就提示错误信息,若有就进行退选.再进行重复选择.。

选4:

退出选课界面

第3章系统实现

(1)代码分析

structcouse

{

intnum1;

charname1[20];

intscore;

intnelepeo;

intMelepeo;

structcouse*next;

};

structstudent

{

intnum2;

charname2[20];

intnelenum[50];

intnelen;

structstudent*next;

};

在这个结构定义中,结构名为course,该结构由3个成员组成。

第一个成员为num,整型变量;第二个成员为name,字符数组;第三个成员为score,实型变量。

在实际问题中,一组数据往往具有不同的数据类型。

例如,在学生登记表中,姓名应为字符型;学号可为整型或字符型;年龄应为整型;性别应为字符型;成绩可为整型或实型。

显然不能用一个数组来存放这一组数据。

因为数组中各元素的类型和长度都必须一致,以便于编译系统处理。

为了解决这个问题,C语言中给出了另一种构造数据类型——“结构”。

它相当于其它高级语言中的记录。

intmain()

{

inti;

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");

gotostart;

}

本段代码为本系统的主函数。

main函数与用户自己定义的函数都是各自独立的模块,即函数不能嵌套定义,通俗的说,你不能在一个函数的函数体内定义另一个函数,即使在main函数中也不行。

但main函数可以对用户自己定义的函数进行调用(但main函数只能由系统调用)。

(2)运行结果

第四章总结

 

参考文献

1.黄建华等.《Delphi程序设计》.清华大学出版社。

2.[美]MarcoCantu.《Delphi7从入门到精通》.电子工业出版电子版本。

3.《Delphi7数据库开发技术与工程实践》.人民邮电出版社。

4.李维.《Delphi5.XADO/MTS/COM+高级程序设计篇》.机械工业出版社。

5.《Delphi7程序设计实例导航》.清华大学出版社。

6.王姗.陈红.《数据库系统原理教程》。

7.《最新Delphi7数据库开发指南》.清华大学出版社。

8.徐人凤.曾建华.《SQLServer2000数据库及应用基础》.高等教育出版.2004年。

 

附录代码

#include

#include

intN1,N2,kk1,kk2,kk3;

structcouse*head1;

structstudent*head2;

structcouse

{

intnum1;

charname1[20];

intscore;

intnelepeo;

intMelepeo;

structcouse*next;

};

structstudent

{

intnum2;

charname2[20];

intnelenum[50];

intnelen;

structstudent*next;

};

voidMs()

{

for(kk1=0;kk1<1100;kk1++)

for(kk2=0;kk2<1200;kk2++)

for(kk3=0;kk3<1200;kk3++);

}

voidkeyboardc()

{

structcouse*p1,*p2;

N1=0;

p1=p2=(structcouse*)malloc(sizeof(structcouse));

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;

elsep2->next=p1;

p2=p1;

p1=(structcouse*)malloc(sizeof(structcouse));

scanf("%d%s%d%d",&p1->num1,p1->name1,&p1->score,&p1->Melepeo);

p1->nelepeo=0;

}

p2->next=NULL;

}

voidfilec()

{

FILE*fp;

charfilepath[20];

structcouse*p1,*p2;

N1=0;

printf("输入要读入的文件路径:

");

getchar();

gets(filepath);

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!

\n",filepath);

exit(0);

}

p1=p2=(structcouse*)malloc(sizeof(structcouse));

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;

elsep2->next=p1;

p2=p1;

p1=(structcouse*)malloc(sizeof(structcouse));

fscanf(fp,"%d%s%d%d%d",&p1->num1,p1->name1,&p1->score,&p1->nelepeo,&p1->Melepeo);

}

p2->next=NULL;

}

voidinputc()

{

inti;

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;

}

}

voidinsertc(structcouse*incouse)

{

structcouse*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;

elsep2->next=p0;

p0->next=p1;

}

else

{

p1->next=p0;

p0->next=NULL;

}

}

N1=N1+1;

}

voiddelc(intnum1)

{

structcouse*p1,*p2;

if(head1==NULL)

{

printf("\n没有课程,无法删除!

\n");

gotoend;

}

p1=head1;

while(num1!

=p1->num1&&p1->next!

=NULL)

{

p2=p1;

p1=p1->next;

}

if(num1==p1->num1)

{

if(p1==head1)head1=p1->next;

elsep2->next=p1->next;

printf("已删除该编号课程!

\n");

N1=N1-1;

}

elseprintf("无该编号的课程!

\n");

end:

;

}

voidmanagementc()

{

structcouse*incouse;

inti,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=(structcouse*)malloc(sizeof(structcouse));

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;

}

}

voidkeyboards()

{

inti;

structstudent*p1,*p2;

N2=0;

p1=p2=(structstudent*)malloc(sizeof(structstudent));

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;

elsep2->next=p1;

p2=p1;

p1=(structstudent*)malloc(sizeof(structstudent));

scanf("%d%s",&p1->num2,p1->name2);

p1->nelen=0;

for(i=0;i<20;i++)p1->nelenum[i]=0;

}

p2->next=NULL;

}

voidfiles()

{

inti=0;

FILE*fp;

charfilepath[20];

structstudent*p1,*p2;

N2=0;

printf("输入要读入的文件路径:

");

getchar();

gets(filepath);

if((fp=fopen(filepath,"r"))==NULL)

{

printf("找不到%s文件!

\n",filepath);

exit(0);

}

p1=p2=(structstudent*)malloc(sizeof(structstudent));

fread(p1,sizeof(structstudent),1,fp);

head2=NULL;

while(!

feof(fp))

{

i=0;

N2=N2+1;

if(N2==1)head2=p1;

elsep2->next=p1;

p2=p1;

p1=(structstudent*)malloc(sizeof(structstudent));

fread(p1,sizeof(structstudent),1,fp);

}

p2->next=NULL;

}

voidinputs()

{

inti;

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;

}

}

voidinserts(structstudent*incouse)

{

structstudent*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;

elsep2->next=p0;

p0->next=p1;

}

else

{

p1->next=p0;

p0->next=NULL;

}

}

N2=N2+1;

}

voiddels(intnum2)

{

structstudent*p1,*p2;

if(head2==NULL)

{

printf("\n没有该学生信息,无法删除!

\n");

gotoend;

}

p1=head2;

while(num2!

=p1->num2&&p1->next!

=NULL)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 成人教育 > 电大

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1