计算机与信息工程学院jsp数据库系统原理实验报告
专业:计算机科学与技术 年级/班级:13级计科2班 20##—20##学年第二学期
一、实验目的
一个学生成绩管理系统,能够实现对学生、老师基本信息、课程信息、成绩信息的管理。
学生端:
(1)学生信息查询,可根据学号、姓名及专业分别对学生信息进行查询
(2)学生信息修改,可在数据库中插入、删除和修改学生记录
(3)学生成绩录入,可录入每个学生的某门课成绩
老师端:
(1)能够让老师查看学生的信息
(2)查看学生的成绩
(3)输入学生的成绩;
管理员端:
能够实现对学生和老师的综合管理,能查看所有的学生、老师的基本信息和课程信息,能够添加、修改老师学生的课程信息和密码等。
二、总体设计
1、设计原理
2、业务流程分析图
3、数据流图
三、实验步骤
1、数据库设计
(1).数据库概念结构设计(ER图)
(2)逻辑结构设计
以下是最终的数据库表:
2、系统设计
(1). 模块结构设计
由前面的系统需求分析得到实体主要有5个:教师、学生、管理员、课程、成绩。
学生有属性:学号、姓名、性别、系名、专业、出生日期
教师有属性:教师号、姓名、性别、院系、联系电话
管理员属性:用户名、密码
课程有属性:课程号、课程名、学分、教师
成绩有属性:学号、姓名、课程号、课程名、成绩、授课老师
学生功能模块:
1、修改密码:学生进入页面后可以修改自己的密码,以达到保密性;
2、学籍维护:学生可以查看自己的基本信息(基本信息由管理员录入不能修改);
3、查看成绩:学生可以查看自己的必修课成绩。
教师功能模块
1、学生管理:该模块的主要功能是查询学生基本信息和对学生选课的管理以及成绩的录入修改。
2、 教师进入页面后可以查看自己的基本资料和修改自己的密码,以达到保密性;
管理员功能模块:
1、 进入页面后可以修改自己的密码,以达到保密性
2、 教师管理,对教师和课程进行修改和添加删除信息
3、 学生管理, 查询修改添加学生基本信息
(2)代码设计
第一部分是:教师个人管理
包括:1)查看个人资料
2)修改密码
第二部分是:学生信息管理
包括:1)学生信息查询
2)添加学生选课信息
3)学生成绩录入
教师个人管理:
1)查看个人资料
运行界面:
代码见文件夹部分1
2)修改密码
运行界面:
代码见文件夹部分2
学生信息管理:
1)学生信息查询
运行界面:
代码见文件夹部分3
2)添加学生选课信息
运行界面:
代码见文件夹部分4
3)学生成绩录入
运行界面:
代码见文件夹部分5
四、实验结果分析与总结
在此次实验课程设计中,我深刻的感受到了基础知识的重要性,记得在写一些简单的代码的时候,感觉脑子里竟然空空白白的,在程序开发过程中,最重要的还是基础知识,如果基础知识不牢固的话,以后开发大型的系统的时候会感觉很吃力,所以,一定要注重基础知识的学习。
此外,我还学到了很多在书本上学不到的东西,这些东西必须需要通过自己实践才能获得的,此次实验课程设计教给了我以后开发的一些步骤和经验,这些必将会使我受益良多。
第二篇:学生成绩管理系统实验报告
学生成绩管理系统
一、程序设计目的和要求
(1) 信息维护:
要求:学生信息数据要以文件的形式保存,能实现学生信息数据的维护。此模块包括子模块有:增加学生信息、删除学生信息、修改学生信息
(2) 信息查询:
要求:查询时可实现按姓名查询、按学号查询
(3) 成绩统计:
要求:A输入任意的一个课程名(如数学)和一个分数段(如60--70),统计出在此分数段的学生情况。
(4) 排序:能对用户指定的任意课程名,按成绩升序或降序排列学生数据并显示排序结果(使用表格的形式显示排序后的输出结果)(使用多种方法排序者,加分)
二、详细设计说明
1. 实验程序分为4个模块
如上图所示:
1. 信息维护
2. 信息查询
3. 成绩统计
4. 排序
2. 主函数定义:
int main()
{
int choose;
loop:
system("cls");
printf("***********************************\n");
printf("* 欢迎来到成绩管理系统! *\n");
printf("***********************************\n");
printf("请选择您所需要的服务项目:\n");
printf("1、信息维护\n");
printf("2、信息查询\n");
printf("3、成绩统计\n");
printf("4、排序\n");
printf("5、退出系统\n");
printf("您的选择:");
scanf("%d",&choose);
system("cls");/*跳到下一页*/
switch(choose)
{
case 1:Mngstudent();//信息维护
goto loop;/*返回到主菜单*/
break;
case 2:Mnginquire();//信息查询
goto loop;
break;
case 3:Mngcount();//成绩统计
goto loop;
break;
case 4:Mngsort();
goto loop;
break;
case 5:break;
}
return 0;
}
当为1选择信息维护
当为2选择信息查询
当为3选择成绩统计
当为4选择排序
当为5选择退出系统
3. 信息维护模块
函数定义:
void Addstudent()//增加学生信息
int Countstudent()//统计学生总数
void Deletestudent()//删除学生
void Modifystudent()//修改学生
void Mngstudent()//主页面显示部分
分为:
1、增加学生
2、修改学生
3、删除学生
4、统计学生
4. 信息查询
void SearchStudent() //查找学生
void Mnginquire() //显示部分
5. 成绩统计
void infcount() //统计
void Mngcount() //显示部分
6. 排序
void infsort() //排序
void Mngsort() //显示部分
7. 结构体定义
struct Student //图书信息
{
int studentnum;
char studentname[30];
char result[3];
};
三、软件使用说明
打开主函数main并且运行,
按照要求进行操作
四、实验总结
1.实验要注意实验的模块化,将每一个功能分块执行
2.写代码时候调理要清晰
3.对排序等基本操作要掌握清楚
附件:
主函数:
//成绩管理系统主函数
#include
#include
#include "Student.h"
#include "infinquire.h"
#include "infcount.h"
#include "insort.h"
//using namespace std;
int main()
{
int choose;
loop:
system("cls");
printf("***********************************\n");
printf("* 欢迎来到成绩管理系统! *\n");
printf("***********************************\n");
printf("请选择您所需要的服务项目:\n");
printf("1、信息维护\n");
printf("2、信息查询\n");
printf("3、成绩统计\n");
printf("4、排序\n");
printf("5、退出系统\n");
printf("您的选择:");
scanf("%d",&choose);
system("cls");/*跳到下一页*/
switch(choose)
{
case 1:Mngstudent();//信息维护
goto loop;/*返回到主菜单*/
break;
case 2:Mnginquire();//信息查询
goto loop;
break;
case 3:Mngcount();//成绩统计
goto loop;
break;
case 4:Mngsort();
goto loop;
break;
case 5:break;
}
return 0;
}
信息维护:
#include
#include
#include
#include
#include "Student.h"
void Addstudent() //增加学生信息
{
FILE *fp;
int number,result[4],i;
char name[30];
fp=fopen("students.txt","a");
if(fp==NULL)
printf("File open error!\n");
else
{
printf("请输入所增加学生的学号、姓名、语文、数学、英语 :(请按照顺序输入!)\n");
scanf("%d",&number);
scanf("%s",&name);
for(i=1;i<=3;i++)
scanf("%d",&result[i]);
fprintf(fp,"%d %s %d %d %d\n",number,name,result[1],result[2],result[3]);
fclose(fp);
}
printf("写入成功!\n");
}//end function Addstudent;
int Countstudent() //统计学生总数
{
FILE *fp;
int count=0;
char ch;
fp=fopen("students.txt","r");
if(fp==NULL)
printf("File open error!\n");
else
{
while((ch=fgetc(fp))!=EOF)
if(ch=='\n')
count++;
}
fclose(fp);
return count;
}//end function Countstudent
void Deletestudent() //删除学生
{
FILE *fp;
int number;
int count=0;
int i=0,j,k;
Student student[5000];
int allstudent;
allstudent=Countstudent();
fp=fopen("students.txt","r");
if(fp==NULL)
{
printf("Files open error!\n");
exit(0);
}
else
{
printf("请输入要删除的学生的编号:\n");
scanf("%d",&number);
while(!feof(fp))
{
fscanf(fp,"%d %s %d %d %d",&student[i].studentnum,&student[i].studentname,&student[i].result[1],&student[i].result[2],&student[i].result[3]);
i++;
}
for(j=0;j
{
if(student[j].studentnum==number)
{
for(k=j;k student[k]=student[k+1]; allstudent=allstudent-1; count=1; break; } } fclose(fp); if(count==0) printf("没有找到匹配的学生信息:\n"); else { fp=fopen("students.txt","w"); for(j=0;j fprintf(fp,"%d %s %d %d %d\n",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); fclose(fp); printf("删除成功!\n"); } } }//end function Deletestudent; void Modifystudent() //修改学生 { FILE *fp; fp=fopen("students.txt","r"); int number; int allstudent; allstudent=Countstudent(); int count=0; int i=0,j,t1,t2; Student student[5000]; if(fp==NULL) { printf("Files open error!\n"); exit(0); } else { printf("请输入要修改的学生的学号:\n"); scanf("%d",&number); while(!feof(fp)) { fscanf(fp,"%d %s %d %d %d",&student[i].studentnum,&student[i].studentname,&student[i].result[1],&student[i].result[2],&student[i].result[3]); i++; } for(j=0;j { if(student[j].studentnum==number) { printf("该学生的原始信息:(学号、姓名、语文、数学、英语)\n"); printf("%d %s %d %d %d",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); count=1; t1=j; printf("\n请重新输入学生信息:\n"); printf("\n学号:"); scanf("%d",&student[j].studentnum); printf("\n姓名:"); scanf("%s",&student[j].studentname); printf("\n语文:"); scanf("%d",&student[j].result[1]); printf("\n数学:"); scanf("%d",&student[j].result[2]); t2=student[t1+1].studentnum;//实验过程中发现数据莫名丢失 printf("英语:"); scanf("%d",&student[j].result[3]); while(getchar()!='\n'); break; } } student[t1+1].studentnum=t2;//上面程序结束后还原 fclose(fp); if(count==0) printf("没有找到匹配的学生信息!\n"); else { fp=fopen("students.txt","w"); for(j=0;j fprintf(fp,"%d %s %d %d %d\n",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); fclose(fp); printf("修改成功!\n"); } } }//end function Modifystudent(); void Mngstudent() //学生成绩管理系统 { int choose; int allstudent; int back=0; char c; printf("***********************************\n"); printf("* 欢迎来到学生成绩管理系统! *\n"); printf("***********************************\n"); while(back==0) { if(!back){ printf("请在下列项目中选择:\n"); printf("1、增加学生\n"); printf("2、修改学生\n"); printf("3、删除学生\n"); printf("4、统计学生\n"); printf("您的选择:"); scanf("%d",&choose); printf("\n"); switch(choose) { case 1:Addstudent();break; case 2:Modifystudent();break; case 3:Deletestudent();break; case 4:allstudent=Countstudent(); printf("书库中的学生总数为:%d\n",allstudent); break; } fflush(stdin);/*清除文件缓冲区*/ printf("您是否继续维护? scanf("%c",&c); printf("\n"); if(c=='n') back=1; else system("cls");/*清屏*/ } else{ printf("您输入的信息有误,无权对学生信息进行操作!\n"); back=1; } } }//end function Mngstudent; 信息查询: #include #include #include #include "infinquire.h" #include "Student.h" void SearchStudent() //查找学生 { FILE *fp; Student student[5000]; fp=fopen("students.txt","r"); int number,choose,i=0,j; int found=0; char studentname[10]; if(fp==NULL) { printf("Files open error!\n"); exit(0); } else { printf("请选择查询方式:\n"); printf("1、按学号查询\n"); printf("2、按姓名查询\n"); scanf("%d",&choose); switch(choose) { case 1:printf("请输入要查找的学生编号:\n"); scanf("%d",&number); while(!feof(fp)) { fscanf(fp,"%d %s %d %d %d\n",&student[i].studentnum,&student[i].studentname,&student[i].result[1],&student[i].result[2],&student[i].result[3]); i++; } for(j=0;j
if(student[j].studentnum==number){ printf("学生的学号、姓名、语文、数学、英语:\n"); printf("%d %s %d %d %d",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); found=1; break; } if(found==0) printf("没有找到编号为%d的学生!\n",number); break; case 2:printf("请输入要查找的学生姓名:\n"); scanf("%s",&studentname); while(!feof(fp)) { fscanf(fp,"%d %s %d %d %d",&student[i].studentnum,&student[i].studentname,&student[i].result[1],&student[i].result[2],&student[i].result[3]); i++; } for(j=0;j
if(strcmp(student[j].studentname,studentname)==0){ printf("学生的学号、姓名、语文、数学、英语:\n"); printf("%d %s %d %d %d",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); found=1; break; } if(found==0) printf("没有找到名称为%s的学生!\n",studentname); break; } fclose(fp); printf("\n"); } }//end function SearchStudent(); void Mnginquire() //查询系统 { int choose; int back=0; char c; printf("***********************************\n"); printf("* 欢迎来到查询系统! *\n"); printf("***********************************\n"); while(back==0) { printf("请在下列项目中选择:\n"); printf("1、查找学生\n"); printf("您的选择:"); scanf("%d",&choose); printf("\n"); switch(choose) { case 1:SearchStudent();break; } fflush(stdin); printf("您是否继续查询? scanf("%c",&c); printf("\n"); if(c=='n') back=1; else system("cls"); } }//end function MngLendStudent(); 成绩统计: #include #include #include #include #include "infcount.h" #include "Student.h" void infcount() //统计 { FILE *fp; int cla; int count=0; int i=0,j=0,k=0,h,l; int allstudent; char clas[10]; allstudent=Countstudent(); Student student[1000]; fp=fopen("students.txt","r"); if(fp==NULL) { printf("Files open error!\n"); exit(0); } else { printf("请输入要排序的课程:(1代表语文 2代表数学 3代表英语)\n"); scanf("%d",&cla); printf("请输入要统计的课程分数段:\n"); printf("<:\n"); scanf("%d",&h); printf(">:\n"); scanf("%d",&l); switch(cla) { case 1:strcpy(clas,"语文");break; case 2:strcpy(clas,"数学");break; case 3:strcpy(clas,"英语");break; default:printf("\n\n您的输入有误!请重新输入:\n\n");break; } while(!feof(fp)) { fscanf(fp,"%d %s %d %d %d\n",&student[i].studentnum,&student[i].studentname,&student[i].result[1],&student[i].result[2],&student[i].result[3]); i++; } for(j=0;j
if(student[j].result[cla]>l&&student[j].result[cla] { student[k]=student[j]; k++; } printf("%s成绩在%d到%d之间的学生数为:",clas,l,h); printf("%d\n",k); fclose(fp); fp=fopen("tongji.txt","w"); for(j=0;j fprintf(fp,"%d %s %d %d %d\n",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); fclose(fp); } }//end function infcount; void Mngcount() //统计 { int choose; int back=0; char c; printf("***********************************\n"); printf("* 欢迎来到成绩统计! *\n"); printf("***********************************\n"); while(back==0) { printf("请在下列项目中选择:\n"); printf("1、成绩统计\n"); printf("您的选择:"); scanf("%d",&choose); printf("\n"); switch(choose) { case 1:infcount();break; } fflush(stdin);/*清除缓冲区*/ printf("您是否继续统计y/n>"); scanf("%c",&c); printf("\n"); if(c=='n') back=1; else system("cls"); } }//end function Mngcount 排序: #include #include #include #include #include "insort.h" #include "Student.h" void infsort() //排序 { FILE *fp; int cla; int count=0; int i=0,j=0,temp,k=0,x=0; Student student[1000]; Student student1; fp=fopen("students.txt","r"); if(fp==NULL) { printf("Files open error!\n"); exit(0); } else { printf("请输入要排序的课程:(1代表语文 2代表数学 3代表英语)\n"); scanf("%d",&cla); switch(cla) { case 1:x=1;break; case 2:x=2;break; case 3:x=3;break; default:printf("\n\n您的输入有误!请重新输入:\n\n"); break; } while(!feof(fp))//判断文件到达末尾 { fscanf(fp,"%d %s %d %d %d\n",&student[i].studentnum,&student[i].studentname,&student[i].result[1],&student[i].result[2],&student[i].result[3]); i++; } for(j=0;j
for(k=j+1;k
if(student[j].result[x] { student1=student[k];student[k]=student[j];student[j]=student1;} printf("如下表:\n"); printf("学号 姓名 语文 数学 英语\n"); for(j=0;j
printf("%d %s %d %d %d\n",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); fp=fopen("students.txt","w"); for(j=0;j
fprintf(fp,"%d %s %d %d %d\n",student[j].studentnum,student[j].studentname,student[j].result[1],student[j].result[2],student[j].result[3]); fclose(fp); } } //end function infcount; void Mngsort() //排序 { int choose; int back=0; char c; printf("***********************************\n"); printf("* 欢迎来到成绩排序! *\n"); printf("***********************************\n"); while(back==0) { printf("请在下列项目中选择:\n"); printf("1、排序\n"); printf("您的选择:"); scanf("%d",&choose); printf("\n"); switch(choose) { case 1:infsort();break; } fflush(stdin);/*清除缓冲区*/ printf("您是否继续统计y/n>"); scanf("%c",&c); printf("\n"); if(c=='n') back=1; else system("cls"); } }//end function Mngsort 头文件: Student.h #include #ifndef students_H #define students_H struct Student //图书信息 { int studentnum; char studentname[30]; char result[3]; }; #endif int Countstudent(); void Addstudent(); void Deletestudent(); void Modifystudent(); void Mngstudent(); insort.h #include void infsort(); void Mngsort(); infinquire.h #include void SearchStudent() ; void Mnginquire(); incount.h #include void infcount(); void Mngcount();