当前位置:文档之家› 数据结构课程设计报告(学生作业完成情况管理系统)

数据结构课程设计报告(学生作业完成情况管理系统)

数据结构课程设计报告(学生作业完成情况管理系统)
数据结构课程设计报告(学生作业完成情况管理系统)

目录

1. 需求分析 (2)

2.概要设计 (2)

2.1 学生作业完成情况管理系统 (2)

2.1.1 程序设计说明 (2)

2.1.2 数据结构类型 (4)

2.2 图的建立及存储 (4)

2.2.1 程序设计说明 (4)

2.2.2 数据结构类型 (4)

3.详细设计 (5)

3.1 算法流程图 (5)

3.1.1 学生作业完成情况管理系统 (5)

3.1.2 图的建立及存储 (6)

4.调试分析(运行截图) (19)

4.1学生作业完成情况管理系统 (19)

4.2图的建立及存储 (30)

5.课程总结 (32)

6.参考文献 (33)

1.需求分析

(一)学生作业完成情况管理系统

假设某门课程一学期要留10次作业,每次老师要进行批改,给出分数后还要进行登记。学期期末要根据每次作业的成绩计算出最终的平时成绩(满分100)。

该程序应该具有下列功能:

(1) 输入信息;

(2) 输出信息;

(3) 给定条件,修改、删除相应信息;

(4) 按条件统计。

(二)图的建立及存储

建立图的存储结构(图的类型可以是有向图、无向图),能够输入图的顶点和边的信息,并存储到相应存储结构中,而后输出图的邻接矩阵。

应用环境设定给定某类图的顶点和边的相关信息,要求输出该图的邻接矩阵。

用户界面命令行界面,用户选择所要建立的图的类型,输入相关顶点和边的信息,然后输出该图的邻接矩阵。

输入方式首先输入所要建立的图形类型的代码,然后输入顶点vexnum和边的数量arcnum,再输入顶点信息,边的2个端点v1和v2,如果建立的是网则还要输入权值w。输出方式输出的是一个邻接矩阵,采用for循环嵌套,输出该图的邻接矩阵。

数据存储方式全部在内存存放,不使用硬盘上的文件或其他数据源,程序执行过程中和结束后不保存数据。

程序功能:

1. 输入图的类型;

2. 输入相应的图的顶点和边的相关信息;

3. 得到图的邻接矩阵。

2.概要设计

2.1学生作业完成情况管理系统

2.1.1程序设计说明

程序整体分为登录部分、获得数据部分、数据处理及处理信息反馈部分、数据导出保存部分,如下结构图1、2所示:

图 1

图 2该程序具有下列功能:

(1) 输入信息;

(2) 输出信息;

(3) 给定条件,修改、删除相应信息;

(4) 按条件统计。

2.1.2数据结构类型

typedef struct student //学生信息链表

{

char name[10];

int schoolnumber;

int classnumber;

float score[10];

struct student *next;

} stu,*stupt;

stupt st=NULL;//学生信息的头指针

stupt qt=NULL;//学生信息的尾指针

FILE* fp;//文件指针

2.2图的建立及存储

2.2.1程序设计说明

本程序通过输入有向图与无向图的顶点、边、权值等信息,存储至用数组建立的邻接矩阵,并输出该邻接矩阵图。

2.2.2数据结构类型

基本操作:

typedef enum

{

DG,UDG

}GraphKind;//有向图,无向图

typedef struct ArcCell

{

VrType adj; // 顶点关系类型。对无权图,用1或0表示相邻否;对带权图,则为权值类型。

InfoType *info; // 该弧相关信息的指针

}ArcCell, AdjMatrix[20][20];

typedef struct

{

VertexType vertex[20]; // 顶点向量

AdjMatrix arcs; // 邻接矩阵

int vexnum, arcnum; // 图的当前顶点数和弧(边)数

GraphKind kind; // 图的种类标志

}MGraph;

CreateGraph(MGraph &G)

初始条件:图G未创建。

操作结果:创建一个图G。

CreateUDG(MGraph &G);

初始条件:无向图G未创建。

操作结果:创建一个无向图并求出其邻接矩阵。

CreateDG(MGraph &G);

初始条件:有向图G未创建。

操作结果:创建一个有向图并求出其邻接矩阵。 Display(MGraph G)

初始条件:图G已创建。

操作结果:输出图G的邻接矩阵。

3.详细设计

3.1算法及流程图

3.1.1 学生作业完成情况管理系统

程序算法:

手动输入学生信息:

void inpu(stupt p)

{

int n;

int m=0;

int flag;

while(m<10)//成绩初始化为0

{

p->score[m]=0;

m++;

}

printf("请输入:姓名:");

scanf("%s",p->name);

clear();

printf("请输入:学号:");

scanf("%d",&p->schoolnumber);

clear();

printf("请输入:班级(如:101):");

scanf("%d",&p->classnumber);

clear();

do

{

printf("请输入:第几次作业(1~10):");

scanf("%d",&n);

clear();

printf("请输入:该次作业成绩:");

scanf("%f",&p->score[n-1]);

clear();//清空缓冲区

printf("是否继续输入该生成绩,退出请按q,其他键继续:");

flag=getchar();

clear();//清空缓冲区堆积

}

while(flag!='q');

}

从文件中导入学生信息:

void readfile(stupt &st,FILE* fp)

{

char flag,flag_1;

char filename[90];

printf("如导入前有过手动输入,请先导出至文件后再进行导入,否则输入部分的数据将丢失!\n");

printf("任意键继续,退出请按q:");

flag_1=getchar();//等待接收一个字符

clear();

if(flag_1=='q')

{

return;

}

lab_2:

printf("请选择:a.程序默认路径导入(之前导出时需要是默认导出) b.自定义导入路径(请确保导入路径合法):");

flag=getchar();

clear();

if(flag=='b')

{

printf("请输入导入路径(请确保导入路径合法!)(如c:.\\student_homework_infor.txt):");

scanf("%s",filename);

clear();

if(access(filename,0)==1)//确定文件或文件夹的访问权限即检查文件的存取方式,如果存取方式有效,则返回0,否则返回1

{

printf("路径不合法或文件不存在,请重新选择!\n");

goto lab_2;

}

fp=fopen(filename,"rb");

if(fp==NULL)

{

printf("打开%s文件失败,请返回主菜单重试!\n",filename);

return;

}

else

filep_read_to_st(st,fp);//导入文件

fclose(fp);

}

else if(flag=='a')

{

fp=fopen("student_homework_infor.txt","r");

if(access("student_homework_infor.txt",0)==1)

{

printf("文件不存在!\n");

}

if(fp==NULL)

{

printf("打开程序所在目录下的student_homework_infor.txt文件失败,请返回上层菜单重试!\n");

return;

}

else

filep_read_to_st(st,fp);

fclose(fp);

}

else

{

printf("非法输入!程序将返回上层菜单...\n");

}

}

查询某学生作业完成情况:

void search_1(stupt&st,int snum)

{

stupt p,q;

if(st==NULL)

{

printf("未建立学生信息表,请返回上层菜单输入或导入所有学生的信息\n");

return;

}

else

{

p=st;

q=p->next;

}

if(p->schoolnumber==snum)

{

printf_score(p); //查找成功输出并返回上级函数

return;

}

while(q!=NULL)

{

if(q->schoolnumber==snum)

{

printf_score(q); //查找成功输出并返回上级函数

return;

}

q=q->next;//下一个

}

printf("查询失败,该学号学生信息不存在\n");

}

查询某班级所有学生成绩:

void search_2(stupt st,int clnum)

{

stupt p,q;

int f=0;

if(st==NULL)

{

printf("未建立学生信息表,请返回主菜单输入所有学生的信息\n");

return;

}

else

{

p=st;

q=p->next;

}

printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");

printf("──────────────────────────────────────\n");

if(p->classnumber==clnum)

{

printf_infor(p);

f++;

}//查找成功输出

while(q!=NULL)

{

if(q->classnumber==clnum)

{

printf_infor(q);

f++;

}//查找成功输出

q=q->next;//下一个

}

if(f==0)

{

printf("没有该班级学生信息\n");

}

}

修改学生信息:

void change(stupt&p)

{

char a;

printf_help_2();

while((a=getchar())!='0')

{

clear();

printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");

printf("──────────────────────────────────────\n");

printf_infor(p);

switch(a)

{

case '1':

{

printf("您选择了:1.修改姓名\n");

change_name(p);

break;

}

case '2':

{

printf("您选择了:2.修改班级\n");

change_class(p);

break;

}

case '3':

{

printf("您选择了:3.修改成绩\n");

change_score(p);

break;

}

default:

{

printf("非法输入,请重新选择!\n");

break;

}

}

printf_help_2();

}

if(a=='0')

{

clear();

printf("您选择了:0.返回\n");

}

}

删除学生信息:

void delete_pt(stupt&st,int snum)

{

stupt p,q;

if(st==NULL)

{

printf("未建立学生信息表,请返回主菜单输入或导入所有学生的信息\n");

return;

}

else

{

p=st;

q=p->next;

}

if(p->schoolnumber==snum)

{

st=q; //查找成功删除并返回上级函数

printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");

printf("──────────────────────────────────────\n");

printf_infor(p);

free(p);

printf("上面信息删除成功!\n");

return;

}

while(q!=NULL)

{

if(q->schoolnumber==snum)

{

p->next=q->next; //查找,成功删除并返回上级函数

printf("班级姓名学号成绩1 成绩2 成绩3 成绩4 成绩5 成绩6 成绩7 成绩8 成绩9 成绩10\n");

printf("─────────────────────────────────

─────\n");

printf_infor(q);

free(q);

printf("上面信息删除成功!\n");

return;

}

else//下一个

{

p=q;

q=p->next;

}

}

printf("删除失败,该学号学生信息不存在\n");

}

显示各项统计数据:

void statistics_result(stupt &st)//统计结果

{

char flag;

printf_help_3();

while((flag=getchar())!='0')

{

clear();

switch(flag)

{

case '1':

{

printf("您选择了:1.按学号查看学生平均成绩\n");

snum_check_aver(st);

break;

}

case '2':

{

printf("您选择了:2.按班级查看学生平均成绩\n");

cnum_check_aver(st);

break;

}

case '3':

{

printf("您选择了:3.查看学生平均成绩降序序列\n");

descending_order_check(st);

break;

}

default:

{

printf("非法输入,请重新选择!\n");

clear();

break;

}

}

printf_help_3();

}

if(flag=='0')

{

printf("您选择了:0.返回主菜单\n");

clear();

Printf_help_1();

}

}

导出信息至文件:

void creat_files(stupt st,FILE* &fp)

{

char flag;

char filename[90];

lab_1:

printf("请选择:a.默认路径保存(为当前目录下的student_homework_infor.txt) b.自定义保存路径:");

flag=getchar();

clear();//清除缓存中的回车

if(flag=='b')

{

printf("请输入文件名及保存路径(如c:student_homework_infor.txt):");

scanf("%s",filename);

clear();

if(access(filename,0)==1)

{

printf("路径不合法,请重新输入!\n");

goto lab_1;

}

fp=fopen(filename,"ab+");

if(fp==NULL)

{

printf("创建文件至%s失败,请返回主菜单重试!\n",filename);

return;

}

else fileprintf(st,fp);

fclose(fp);

}

else if(flag=='a')

{

fp=fopen(".\\student_homework_infor.txt","a");

if(fp==NULL)

{

printf("创建文件至程序所在目录下的student_homework_infor.txt文件失败,请返回主菜单重试!");

return;

}

else fileprintf(st,fp);

fclose(fp);

}

else

{

printf("非法输入!程序将返回主菜单...\n");

}

}

学生作业完成情况管理程序流程概图

3.1.2 图的建立及存储

邻接矩阵表示法:

设G=(V,E)是一个图,其中V={V1,V2,V3…,Vn}。G的邻接矩阵是一个具有下述性质的n阶方阵:若(Vi,Vj)∈E或者∈E,则A[i,j]=1反之为0;

图5-2中有向图G1和无向图G2的邻接矩阵分别为 M1和 M2:

M1= ┌ 0 1 0 1 ┐

│ 1 0 1 0 │

│ 1 0 0 1 │

└ 0 0 0 0 ┘

M2= ┌ 0 1 1 1 ┐

│ 1 0 1 0 │

│ 1 1 0 1 │

└ 1 0 1 0 ┘

注意无向图的邻接是一个对称矩阵,例如 M2。

用邻接矩阵表示法来表示一个具有n个顶点的图时,除了用邻接矩阵中的n*n个元素存储顶点间相邻关系外,往往还需要另设一个向量存储n个顶点的信息。因此其类型定义如下:

VertexType vertex[MAX_VERTEX_NUM]; // 顶点向量

AdjMatrix arcs; // 邻接矩阵

int vexnum, arcnum; // 图的当前顶点数和弧(边)数

GraphKind kind; // 图的种类标志

若图中每个顶点只含一个编号i(1≤i≤vnum),则只需一个二维数组表示图的邻接矩阵。此时存储结构可简单说明如下:

type adjmatrix=array[1..vnum,1..vnum]of adj;

利用邻接矩阵很容易判定任意两个顶点之间是否有边(或弧)相联,并容易求得各个顶点的度。

对于无向图,顶点Vi的度是邻接矩阵中第i行元素之和,即

n

D(Vi)=∑A[i,j]

j=1

对于有向图,顶点Vi的出度OD(Vi)为邻接矩阵第i行元素之和,顶点Vi的入度ID(Vi)为第i列元素之和。即

n n

OD(Vi)=∑A[i,j], ID(Vi)=∑A[j,i])

j=1 j=1

用邻接矩阵也可以表示带权图,只要令

Wij, 若(Vi,Vj)∈或者∈E其中Wij为或(Vi,Vj)上的权值A[i,j]={

0 , 否则

1、无向图邻接矩阵的建立算法如下:

procedure build-graph;{建立无向图的邻接矩阵}

begin

for i:=1 to n do read(G.vertex[i]); {读入n个顶点的信息}

for i:=1 to n do

for j:=1 to e do

G.arcs[i][j] =0;

{将邻接矩阵的每个元素初始化成0}

for k:=1 to e do {e为边的数目}

[ read(i,j,w) {读入边和权}G.arcs[i][j]:=w]

G.arcs[i][j]=G.arcs[i][i]{置对称弧}

end;

该算法的执行时间是O(n+n2+e),其中消耗在邻接矩阵初始化操作上的时间是O(n2),而e

2、有向图邻接矩阵的建立算法如下:

procedure build-graph; {建立有向图的邻接矩阵}

begin

for i:=1 to n do read(G.vertex[i]); {读入n个顶点的信息}

for i:=1 to n do

for j:=1 to e do

G.arcs[i][j] =0;

{将邻接矩阵的每个元素初始化成0 }

for k:=1 to e do {e为边的数目}

[ read(i,j,w) {读入边和权}G.arcs[i][j]:=w]

G.arcs[i][j]=G.arcs[i][i]{置对称弧}

end;

该算法的执行时间是O(n+n2+e),其中消耗在邻接矩阵初始化操作上的时间是O(n2),而e

1)头文件:

#include ////包含了getchar();printf();feof();fopen() FILE 声明

#include ////包含了malloce();exit()

#include ////包含access()

#include ////包含strcmp()

#include ////包含了getch()

程序算法:

输出邻接矩阵:

void Display(MGraph G)

{

//输出图的邻接矩阵

int i,j;

printf("该图的邻接矩阵为:\n");

for(i=0;i

{

for(j=0;j

{

printf("%5d",G.arcs[i][j].adj);

}

printf("\n");

}

}

构造有向图:

void CreateDG(MGraph &G) // 采用数组(邻接矩阵)表示法,构造有向图//CreateDG

{

int i,j,k; //i,j,k为计数器

VertexType v1,v2; //用于放置输入的弧的两个顶点

printf("请输入有向图G的顶点数(不超过20个):\n");

scanf("%d",&G.vexnum);

printf("请输入有向图G的边数:\n");

scanf("%d",&G.arcnum);

printf("请输入%d个顶点的值:\n",G.vexnum);

for(i=0;i

{

scanf("%d",&G.vertex[i]);

if(G.vertex[i]>G.vexnum||G.vertex[i]<1)

{

printf("Sorry!您输入的顶点值错误,请重新输入第%d个顶点的值:\n",i+1);

scanf("%d",&G.vertex[i]);

}

}

for(i=0;i

for(j=0;j

{

G.arcs[i][j].adj=0;

G.arcs[i][j].info=NULL;

}

for(k=0;k

{

printf("请输入第%d条边的始点和终点:\n",k+1);//以空格作为间隔

scanf("%d %d",&v1,&v2);

if((v1>G.vexnum)||(v2>G.vexnum))

{

printf("对不起!您输入的边信息错误,请重新输入第%d条边的始点和终点:\n",k+1);

scanf("%d %d",&v1,&v2);

}

i=v1-1;

j=v2-1;

G.arcs[i][j].adj=1;

}

}

构造无向图:

void CreateUDG(MGraph &G) // 采用数组(邻接矩阵)表示法,构造无向图//CreateUDG

{

int i,j,k; //i,j,k为计数器

int v1,v2; //用于放置输入的弧的两个顶点

printf("请输入无向图G的顶点数:\n");

scanf("%d",&G.vexnum);

printf("请输入无向图G的边数:\n");

scanf("%d",&G.arcnum);

printf("请输入%d个顶点的值:\n",G.vexnum);

for(i=0;i

{

scanf("%d",&G.vertex[i]);

if(G.vertex[i]>G.vexnum||G.vertex[i]<1)

{

printf("Sorry!您输入的顶点值错误,请重新输入第%d个顶点的值:\n",i+1);

scanf("%d",&G.vertex[i]);

}

}

for(i=0;i

for(j=0;j

{

G.arcs[i][j].adj=0;

G.arcs[i][j].info=NULL;

}

for(k=0;k

{

printf("请输入第%d条边的2个端点:\n",k+1);//以空格作为间隔

scanf("%d %d",&v1,&v2);

if((v1>G.vexnum)||(v2>G.vexnum))

{

printf("对不起!您输入的边信息错误,请重新输入第%d条边的始点和终点:\n",k+1);

scanf("%d %d",&v1,&v2);

}

i=v1-1;

j=v2-1;

G.arcs[i][j].adj=G.arcs[j][i].adj=1; // 置的对称弧

}

}

图的构造流程图

4.调试分析

下面分别为学生作业完成情况管理系统和图的建立与存储程序的主程序菜单:

选择1进入学生作业完成情况管理系统

选择2进入图的建立及存储程序

选择0退出本界面,完成本次调试

图0 运行整个程序的主界面菜单

4.1(学生作业完成情况管理系统)

操作提示:

登录部分分为登陆、注册和退出三部分,本程序采取一次性注册,即用户名与密码不可修改(相对在程序中而言),需要先注册,否则登录时程序会提示“未注册”,第二次注册程序会提示“账户已存在,请返回登录”,登录成功后会提示登录时间,选择退出时,程序会结束。

第二部分为登录成功后,进入系统可进行的操作,建议先导入上次导出到文件学生信息,然后再进行其他操作(第一次使用不用导入);文件导入分为默认路径导入和自定义路径导入,导入方式决定于用户上次导出时(即保存信息时)的选择;导出部分和导入部分相同,为了不会在异常情况下导致数据丢失,导出时都采用追加式导入文件(之前导出信息不会被覆盖);可以自己进入导出文件或在程序中将无效信息删除;至于导出格式,我做过测试不会受到限制,可以使已有格式或自定义格式,在无法打开时选择记事本打开就可以了。

4.2(图的建立及存储)

选择操作1,进行有向图数据的输入

图1 选择有向图

输完信息后输出该有向图的邻接矩阵,并返回主界面

图2 输出邻接矩阵

数据库课程设计报告:学生成绩管理系统

《数据库系统原理》课程设计报告 学生成绩管理系统 设计成员 所在专业 所在班级 指导教师 提交时间

目录 卷首语:读书笔记 (4) 1、课程设计的目的 (6) 2、课题组成员的设计任务 (7) 3、学生信息管理系统概述 (8) 4、系统需求分析 (10) 5、数据库设计 (12) 6、系统模块详细设计 (17) 7、课程设计设计总结 (21) 8、程序源代码 (22) 参考文献 (50)

学生信息管理系统 班级:制作成员:指导教师:

卷首语: I、读书笔记 关于网上花店管理系统的读书笔记: 在网上购物逐步平民化的今天,网上购物人数不断增加,现代IT技术和互联网的结合。给了市场创造了无限商机!我阅读了一片“网上花店管理系统”的论文。该论文主要研究网上花店管理系统。该系统以MySQL作为后台数据库,JSP作为前台开发工具,通过Java中的JDBC连接数据库。提供给用户网上浏览,购买,支付等功能,同时.管理员对可以该系统进行维护和管理! SQL Server安全可靠,性能好,易用性强,JSP的Web运用跨平台,系统底层采用Java开发。Java语言简单,面向对象,安全性高的特点,运用Serlvet 模式和Tomcat服务器。这几点的综合搭配使得该系统灵活方便易用,简化了动态网站的开发。 网上花店管理系统实现了用户注册,网上订购支付,留言,购物车,鲜花资料管理和用户管理,订单管理等功能。SQl数据库实现了用户注册登记信息的存储,和网站资料维护,更新等使得数据的管理更加便利,高效…JSP则为用户提高动态图形界面,简化了操作,提高了易用性。论文还详细介绍了系统的逻辑结构设计,逻辑图,总功能设计,和数据库设计等。该系统即使是不懂web 技术的人也可以熟悉运用。 开发工具和数据库的工具有很多,各有各的优势。在互联网大行其道的时代,电脑技术顺应着时代的发展,只有我们把握运用好各类技术,相互结合与利用,才能制作出更好的软件和程序。 在现在信息化高速发展的时代,信息只有快,准,精才能发挥其价值。所以机器代替人力是必然的历史发展趋势,人工操作必将被计算机代替。计算机在我们的日常生活中的使用越来越不可或缺,计算机进行信息管理,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性. 数据库技术,已经成为先进信息技术的重要组成部分,是现代计算机信息系统和计算机应用系统的基础和核心。数据库技术从诞生到现在,在不到半个世纪

数据结构课程设计报告模板

《数据结构I》三级项目报告 大连东软信息学院 电子工程系 ××××年××月

三级项目报告注意事项 1. 按照项目要求书写项目报告,条理清晰,数据准确; 2. 项目报告严禁抄袭,如发现抄袭的情况,则抄袭者与被抄袭者均 以0分计; 3. 课程结束后报告上交教师,并进行考核与存档。 三级项目报告格式规范 1. 正文:宋体,小四号,首行缩进2字符,1.5倍行距,段前段后 各0行; 2. 图表:居中,图名用五号字,中文用宋体,英文用“Times New Roman”,位于图表下方,须全文统一。

目录 一项目设计方案 (3) 二项目设计分析 (4) 三项目设计成果 (4) 四项目创新创业 (5) 五项目展望 (6) 附录一:项目成员 (6) 附录二:相关代码、电路图等 (6)

一项目设计方案 1、项目名称: 垃圾回收 2、项目要求及系统基本功能: 1)利用数据结构的知识独立完成一个应用系统设计 2)程序正常运行,能够实现基本的数据增加、删除、修改、查询等功能3)体现程序实现算法复杂度优化 4)体现程序的健壮性 二项目设计分析 1、系统预期实现基本功能: (结合本系统预期具体实现,描述出对应基本要求(增、删、改、查等)的具体功能) 1. 2. 3. 4. 5. 6. 7. 2、项目模块功能描述 (基本分为组织实施组织、程序功能模块编写、系统说明撰写等。其中程序功能子模块实现) 模块一: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块二: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 模块n: 主要任务:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

数据库学生成绩管理系统课程设计

河南理工大学 计算机科学与技术学院 课程设计报告 200 7 — 200 8 学年第二学期 课程名称数据库课程设计 设计题目学生成绩管理系统 学生姓名 ^0^ 学号 专业班级 指导教师申自浩 2008 年 7 月 1 日

? 1 问题描述 1.1 背景 1)某大学有学生若干万名,每个学生每学期必须学习若干门课程。 2)每个学生有学号、姓名、性别、班级、出生日期等基本信息。 3)每门课程有课程号,课程名称、任课教师、学分等信息。 4)学校需要对每个学生的基本信息、所学课程、成绩进行统一管理,以便于对信息进行查询、浏览和修改。 1.2 数据需求 学生成绩管理系统主要用于学生成绩信息管理,据分析学生成绩管理系统的数据表可浓缩为:学生基本信息表、课程基本信息表和学生成绩信息表。根据学校的情况,可按下面的步骤来分析: (1) 确定学生所在的院系、所学的专业以及所在的班级。 (2) 确定学生所在班级的课程以及该课程学生的成绩;另外还需要知道学生所在 班级、学号和学期。 (3) 分析学生的基本信息,如姓名、性别、出生年月、家庭住址、联系电话。 (4) 用户信息分析,通常包括用户名和密码。 ? 2 解决方案 ( 或数据库系统设计 ) 2.1 E-R 模型设计 课程 学生 班级 学号 出生日期 姓名 查询成绩 任课教师 课程号 课程名称 学分 成绩 性别

根据E—R图,将其转化为如下数据实体,数据库:学生成绩管理系统.dbc,包括如下的表和视图: 1)学生登记表——学生表.dbf。 字段名称字段类型字段宽度 xh 字符型 10 xm 字符型 6 xb 字符型 2 csrq 日期型 8 bj 字符型 4 2)课程登记表——课程表.dbf。 字段名称字段类型字段宽度 kch 字符型 2 kcm 字符型 10 js 字符型 10 xf 字符型 10 3)成绩登记表——成绩表.dbf 字段名称字段类型字段宽度 xh 字符型 10 kch 字符型 2 cj 数值型 3 4) 借书视图(lyxview)。 为了进行浏览总表的需要,需要设计了一个总表浏览视图,该视图从学生表.dbf等3个表中提取了10个字段的数据: 学生表.xh 学生表.xm 学生表.xb 学生表.csrq 学生表.bj 课程表.kch 课程表.kcm 课程表.js 课程表.xf 成绩表.cj 其视图关系可由以下SQL语句定义: SELECT 学生表.*, 课程表.*, 成绩表.cj;

数据结构课程设计报告

《数据结构与算法》课程设计报告 学号: 班级序号: 姓名: 指导教师: 成绩: 中国地质大学信息工程学院地理信息系统系 2011年12 月

1.需求规格说明 【问题描述】 利用哈夫曼编码进行对已有文件进行重新编码可以大大提高减小文件大小,减少存储空间。但是,这要求在首先对一个现有文件进行编码行成新的文件,也就是压缩。在文件使用时,再对压缩文件进行解压缩,也就是译码,复原原有文件。试为完成此功能,写一个压缩/解压缩软件。 【基本要求】 一个完整的系统应具有以下功能: (1)压缩准备。读取指定被压缩文件,对文件进行分析,建立哈夫曼树,并给出分析结果(包括数据集大小,每个数据的权值,压缩前后文件的大小),在屏幕上输出。 (2)压缩。利用已建好的哈夫曼树,对文件进行编码,并将哈夫曼编码及文件编码后的数据一起写入文件中,形成压缩文件(*.Haf)。 (3)解压缩。打开已有压缩文件(*.Haf),读取其中的哈夫曼编码,构建哈夫曼树,读取其中的数据,进行译码后,写入文件,完成解压缩。 (4)程序使用命令行方式运行 压缩命令:SZip A Test.Haf 1.doc 解压缩命令:SZip X Test.Haf 2.doc或SZip X Test.Haf 用户输入的命令不正确时,给出提示。 (5)使用面向对象的思想编程,压缩/解压缩、哈夫曼构建功能分别构建类实现。 2.总体分析与设计 (1)设计思想: 1、压缩准备:1> 读文件,逐个读取字符,统计频率 2> 建立哈夫曼树 3> 获得哈弗曼编码 2、压缩过程: 1> 建立一个新文件,将储存权值和字符的对象数组取存储在文件头

数据结构实验总结报告

数据结构实验总结报告 一、调试过程中遇到哪些问题? (1)在二叉树的调试中,从广义表生成二叉树的模块花了较多时间调试。 由于一开始设计的广义表的字符串表示没有思考清晰,处理只有一个孩子的节点时发生了混乱。调试之初不以为是设计的问题,从而在代码上花了不少时间调试。 目前的设计是: Tree = Identifier(Node,Node) Node = Identifier | () | Tree Identifier = ASCII Character 例子:a(b((),f),c(d,e)) 这样便消除了歧义,保证只有一个孩子的节点和叶节点的处理中不存在问题。 (2)Huffman树的调试花了较长时间。Huffman编码本身并不难处理,麻烦的是输入输出。①Huffman编码后的文件是按位存储的,因此需要位运算。 ②文件结尾要刷新缓冲区,这里容易引发边界错误。 在实际编程时,首先编写了屏幕输入输出(用0、1表示二进制位)的版本,然后再加入二进制文件的读写模块。主要调试时间在后者。 二、要让演示版压缩程序具有实用性,哪些地方有待改进? (1)压缩文件的最后一字节问题。 压缩文件的最后一字节不一定对齐到字节边界,因此可能有几个多余的0,而这些多余的0可能恰好构成一个Huffman编码。解码程序无法获知这个编码是否属于源文件的一部分。因此有的文件解压后末尾可能出现一个多余的字节。 解决方案: ①在压缩文件头部写入源文件的总长度(字节数)。需要四个字节来存储这个信息(假定文件长度不超过4GB)。 ②增加第257个字符(在一个字节的0~255之外)用于EOF。对于较长的文件,

会造成较大的损耗。 ③在压缩文件头写入源文件的总长度%256的值,需要一个字节。由于最后一个字节存在或不存在会影响文件总长%256的值,因此可以根据这个值判断整个压缩文件的最后一字节末尾的0是否在源文件中存在。 (2)压缩程序的效率问题。 在编写压缩解压程序时 ①编写了屏幕输入输出的版本 ②将输入输出语句用位运算封装成一次一个字节的文件输入输出版本 ③为提高输入输出效率,减少系统调用次数,增加了8KB的输入输出缓存窗口 这样一来,每写一位二进制位,就要在内部进行两次函数调用。如果将这些代码合并起来,再针对位运算进行一些优化,显然不利于代码的可读性,但对程序的执行速度将有一定提高。 (3)程序界面更加人性化。 Huffman Tree Demo (C) 2011-12-16 boj Usage: huffman [-c file] [-u file] output_file -c Compress file. e.g. huffman -c test.txt test.huff -u Uncompress file. e.g. huffman -u test.huff test.txt 目前的程序提示如上所示。如果要求实用性,可以考虑加入其他人性化的功能。 三、调研常用的压缩算法,对这些算法进行比较分析 (一)无损压缩算法 ①RLE RLE又叫Run Length Encoding,是一个针对无损压缩的非常简单的算法。它用重复字节和重复的次数来简单描述来代替重复的字节。尽管简单并且对于通常的压缩非常低效,但它有的时候却非常有用(例如,JPEG就使用它)。 变体1:重复次数+字符 文本字符串:A A A B B B C C C C D D D D,编码后得到:3 A 3 B 4 C 4 D。

学生成绩管理系统设计报告

《学生成绩管理系统》 设计报告

摘要 本数据库的主要功能如下: 学生信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQL Sever 2000和前台Delphi都可实现这些功能;院系信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQL Sever 2000和前台Delphi都可实现这些功能;课程信息设置,该模块包括数据的添加、修改、删除、查询,数据库后台SQL Sever 2000和前台Delphi 都可实现这些功能;学生成绩查询,该模块包括学生各门课程成绩的查询,因为该模块是利用数据库视图,所以不能对数据进行修改、添加及删除。 关键字:教学管理数据库SQL Sever 2000 Delphi 表查询修改添加删除

第一章绪论 1.1数据库技术的现状 数据库技术是计算机科学技术的一个重要分支。从20世纪50年代中期开始,计算机应用从科学研究部门扩展到企业管理及政府行政部门,人们对数据处理的要求也越来越高。1968年,世界上诞生了第一个商品化的信息管理系统IMS(Information Management System),从此,数据库技术得到了迅猛发展。在互联网日益被人们接受的今天,Internet又使数据库技术、知识、技能的重要性得到了充分的放大。现在数据库已经成为信息管理、办公自动化、计算机辅助设计等应用的主要软件工具之一,帮助人们处理各种各样的信息数据。 在这30多年的历程中,人们在数据库技术的理论研究和系统开发上都取得了辉煌的成就,而且已经开始对新一代数据库系统的深入研究。数据库系统已经成为现代计算机系统的重要组成部分。 1.2、学生成绩管理系统开发的目的与意义 1.掌握数据库设计的基本技术,熟悉数据库设计的每个步骤中的任务和实施方案,并加深对数据库系统系统概念和特点的理解。 2.初步掌握数据库应用系统分析、设计和实现方法。 3.进一步提高学生的知识综合运用能力。 4.为学习更高深的计算机技术打下基础。提高其综合素质,便于未来就业以及更深发展。 第二章系统需求分析 2.1 概述 1.信息需求 高校学生的成绩管理工作量大、繁杂,人工处理非常困难。学生成绩管理系统借助于计算机强大的处理能力,大大减轻了管理人员的工作量,并提高了处理的准确性。学生成绩管理系统的开发运用,实现了学生成绩管理的自动化,不仅能使管理者从

UML期末大作业-教务信息管理系统

UML课程设计案例 教务管理系统 姓名:蒋小权 学号:201000403006 指导老师:欧阳浩 班级:计 Y101班 广西科技大学(筹) 2 0 12年 12 月

目录 UM L课程设计案例 (1) 1.问题描述 (2) 2. 教务管理的用例图 (3) 3. 教务管理系统的类图 (6) 4. 教务管理系统的顺序图 (8) 5. 教务管理系统的活动图 (10) 6. 教务管理系统的包图 (15) 7. 教务管理系统的部署图 (15)

1.问题描述: 教务管理是高校必不可少的管理内容,烦琐,复杂而准确度要求很高。随着高校扩招和信息化的过程,教务管理日趋复杂,尤其是选课、排课和成绩管理、传统的手工管理显然无法适应现代管理的需求,教务管理也是本科生比较熟悉的一个业务领域。高校教务管理管理业务涉及很多复杂方面的内容,本需求中以一个基本的选课业务为出发点,围绕选课业务所涉及的业务内容开发一个简单的教务选课系统,基于上述场景,教务系统业务包含如下内容。 (1)学生管理:系统管理员对学生基本的情况进行登记,删除和修改。学生可以查看自己的信息。(2)教师管理:系统管理员对所有专职教师进行登记、删除和修改。包含教师任课信息。教师可以查看自己的信息。 (3)课程管理:系统管理员对本校所有开过课程和新开课程进行登记、删除和修改、 (4)选课管理:每学期开学以前要进行学生选课工作。学生可以在所有开设课程中,选择自己尚未完成的课程。 (5)成绩管理:期末考试结束后,教师登记学生成绩,各学院(系)将学生成绩结果报教务处。学生可以查看自己的成绩。 要求: (1)采用面向对象的分析方式,得到系统的用例图。(要求写出主要用例的用例文档) (2)画出主要用例的活动图。 (3)创建主要用例的时序图或协作图。 (4)建立类模型。 (5)根据类图,完成数据库的定义。 (6)采用分层的方式进行软件设计,通过组件图表示出来。 (7)完成部署图。

数据结构课程设计报告模板

课程设计说明书 课程名称:数据结构 专业:班级: 姓名:学号: 指导教师:成绩: 完成日期:年月日

任务书 题目:黑白棋系统 设计内容及要求: 1.课程设计任务内容 通过玩家与电脑双方的交替下棋,在一个8行8列的方格中,进行棋子的相互交替翻转。反复循环下棋,最后让双方的棋子填满整个方格。再根据循环遍历方格程序,判断玩家与电脑双方的棋子数。进行大小判断,最红给出胜负的一方。并根据y/n选项,判断是否要进行下一局的游戏。 2.课程设计要求 实现黑白两色棋子的对峙 开发环境:vc++6.0 实现目标: (1)熟悉的运用c语言程序编写代码。 (2)能够理清整个程序的运行过程并绘画流程图 (3)了解如何定义局部变量和整体变量; (4)学会上机调试程序,发现问题,并解决 (5)学习使用C++程序来了解游戏原理。 (6)学习用文档书写程序说明

摘要 本文的研究工作在于利用计算机模拟人脑进行下黑白棋,计算机下棋是人工智能领域中的一个研究热点,多年以来,随着计算机技术和人工智能技术的不断发展,计算机下棋的水平得到了长足的进步 该程序的最终胜负是由棋盘上岗双方的棋子的个数来判断的,多的一方为胜,少的一方为负。所以该程序主要运用的战术有削弱对手行动战术、四角优先战术、在游戏开局和中局时,程序采用削弱对手行动力战术,即尽量减少对手能够落子的位置;在游戏终局时则采用最大贪吃战术,即尽可能多的吃掉对手的棋子;而四角优先战术则是贯穿游戏的始终,棋盘的四角围稳定角,不会被对手吃掉,所以这里是兵家的必争之地,在阻止对手进角的同时,自己却又要努力的进角。 关键词:黑白棋;编程;设计

学生教务管理系统

2任务二基于文件的学生/教务管理系统2.1 前言 为了巩固我们C语言知识,并了解其在生活中的应用,由老师为我们带来了这个题目。通过实训,学会为实际应用涉及的数据选择适当的逻辑结构、存储结构及相应的算法,从而对C语言程序设计这门课能有一个更深刻的理解和认识;再者,实训相对于平时试验课来说,要完成的是一个难度较大的可执行综合性程序,培养需求分析和系统架构等处理复杂问题的能力,从而极大的提高学生的编程能力以及撰写文档的能力;希望能通过实训,实际做到理论和实践紧密结合,同时也为后续课程打下坚实的基础知识。 2.2 系统需求分析 2.2.1 问题定义 本系统可以应用于教务处,进行对学生,教师,教务处人员的管理(添加,修改,删除,统计),人员查询,成绩查询(可以按照姓名查询,证件号查询)。 本系统主要面对学生,教师,教务处,所以进入该系统时可以选择不同的身份进入,若已存在账号,则可以直接进去选择自己的身份,若不存在账号,则需要管理员进入添加,管理员可以进行的功能有成绩管理,学生管理,教师管理,管理员管理,每个模块都有添加,删除,修改,统计,查询五个基本功能。而教师则可以进行成绩的添加,修改,查询,等功能。学生只有查询和修改个人信息的功能。

2.2.2需求分析 2.3 系统设计 2.3.1系统架构 将要实现的模块分级进行架构 学生管理系统 管理员模块: 管理教师:教师添加,教师修改,教师删除,教师统计,教师查询 管理学生:学生添加,学生修改,学生删除,学生统计,学生查询 管理管理员:管理员添加,管理员修改,管理员删除,管理员统计,管理

员查询 成绩管理:计算个人成绩,计算各科成绩,计算平均成绩,计算最高最低 分,排序 学生模块:查询个人成绩,查询个人信息,修改个人信息 教师模块:添加学生成绩,修改学生成绩,删除学生成绩,查询学生信息,查询个人信 息,修改个人信息。 2.3.2数据物理设计 学生 教师 管理员 成绩

数据结构课程设计报告

编号 课程设计 题目 1、一元稀疏多项式计算器 2、模拟浏览器操作程序 3、背包问题的求解 4、八皇后问题 二级学院计算机科学与工程学院 专业计算机科学与技术 班级 2011级 37-3班 学生姓名 XX 学号 XXXXXXXXXX 指导教师 XXXXX 评阅教师 时间 1、一元稀疏多项式计算器 【实验内容】 一元稀疏多项式计算器。

【问题描述】 设计一个一元稀疏多项式简单计算器。 【需求分析】 其基本功能包括: (1)输入并建立多项式; (2)输出多项式,输出形式为整数序列为:n,c1,e1,c2,e2,……,cn,en,其中n 是多项式的项数,ci,ei分别是第i项的系数和指数,序列按指数降序排序;(3)多项式a和b相减,建立多项a+b; (4)多项式a和b相减,建立多项式a-b; (5)计算多项式在x处的值; (6)计算器的仿真界面(选做); 【概要设计】 -=ADT=- { void input(Jd *ha,Jd *hb); void sort(dnode *h)

dnode *operate(dnode *a,dnode *b) float qiuzhi(int x,dnode *h) f",sum); printf("\n"); } 【运行结果及分析】 (1)输入多项式:

(2)输出多项式(多项式格式为:c1x^e1+c2x^e2+…+cnx^en): (3)实现多项式a和b相加: (4)实现多项式a和b相减: (5)计算多项式在x处的值:

2、模拟浏览器操作程序 【实验内容】 模拟浏览器操作程序 【问题描述】 标准Web浏览器具有在最近访问的网页间后退和前进的功能。实现这些功能的一个方法是:使用两个栈,追踪可以后退和前进而能够到达的网页。在本题中,要求模拟实现这一功能。 【需求分析】 需要支持以下指令: BACK:将当前页推到“前进栈”的顶部。取出“后退栈”中顶端的页面,使它成为当前页。若“后退栈”是空的,忽略该命令。 FORWARD:将当前页推到“后退栈”的顶部。取出“前进栈”中顶部的页面,使它成为当前页。如果“前进栈”是空的,忽略该命令。 VISIT:将当前页推到“后退栈”的顶部。使URL特指当前页。清空“前进栈”。 QUIT:退出浏览器。 假设浏览器首先加载的网页URL是:http:

最新数据结构实训总结

精品文档 这次课程设计的心得体会通过实习我的收获如下1、巩固和加深了对数据结构的理解,提高综合运用本课程所学知识的能力。2、培养了我选用参考书,查阅手册及文献资料的能力。培养独立思考,深入研究,分析问题、解决问题的能力。3、通过实际编译系统的分析设计、编程调试,掌握应用软件的分析方法和工程设计方法。4、通过课程设计,培养了我严肃认真的工作作风,逐步建立正确的生产观念、经济观念和全局观念。从刚开始得觉得很难,到最后把这个做出来,付出了很多,也得到了很多,以前总以为自己对编程的地方还不行,现在,才发现只要认真做,没有什么不可能。 编程时要认真仔细,出现错误要及时找出并改正,(其中对英语的要求也体现出来了,因为它说明错误的时候都是英语)遇到问题要去查相关的资料。反复的调试程序,最好是多找几个同学来对你的程序进行调试并听其对你的程序的建议,在他们不知道程序怎么写的时候完全以一个用户的身份来用对你的用户界面做一些建议,正所谓当局者迷旁观者清,把各个注意的问题要想到;同时要形成自己的编写程序与调试程序的风格,从每个细节出发,不放过每个知识点,注意与理论的联系和理论与实践的差别。另外,要注意符号的使用,注意对字符处理,特别是对指针的使用很容易出错且调试过程是不会报错的,那么我们要始终注意指针的初始化不管它怎么用以免不必要麻烦。 通过近两周的学习与实践,体验了一下离开课堂的学习,也可以理解为一次实践与理论的很好的连接。特别是本组所做的题目都是课堂上所讲的例子,在实行之的过程中并不是那么容易事让人有一种纸上谈兵的体会,正所谓纸上得来终觉浅绝知此事要躬行。实训过程中让我们对懂得的知识做了进一步深入了解,让我们的理解与记忆更深刻,对不懂的知识与不清楚的东西也做了一定的了解,也形成了一定的个人做事风格。 通过这次课程设计,让我对一个程序的数据结构有更全面更进一步的认识,根据不同的需求,采用不同的数据存储方式,不一定要用栈,二叉树等高级类型,有时用基本的一维数组,只要运用得当,也能达到相同的效果,甚至更佳,就如这次的课程设计,通过用for的多重循环,舍弃多余的循环,提高了程序的运行效率。在编写这个程序的过程中,我复习了之前学的基本语法,哈弗曼树最小路径的求取,哈弗曼编码及译码的应用范围,程序结构算法等一系列的问题它使我对数据结构改变了看法。在这次设计过程中,体现出自己单独设计模具的能力以及综合运用知识的能力,体会了学以致用、突出自己劳动成果的喜悦心情,也从中发现自己平时学习的不足和薄弱环节,从而加以弥补。 精品文档

学生成绩管理系统课程设计报告

计算机与软件工程学院 C++课程设计报告 选题:学生成绩管理系统 专业班级: 时间:2016/6/20——2016/6/29 指导教师: 完成日期:2016/6/27 一、课题描述

管理容包括:学号、姓名、班级、五门课成绩。 主要功能有:添加、修改、删除、读出、写入、查找、排序、计算总分、平均分、分类汇总等。 编写代码,运行程序后,显现下面的参考界面: 成绩管理 ============ 1.输入学生成绩 2.修改学生成绩 3.删除学生成绩 4.计算每位学生的总分 5.计算每位学生的平均分 6.按学号或姓名查询学生成绩 7.按班级查询学生成绩 8.成绩排序 9.按班级统计学科总分、平均分等 请选择(1~9,0:退出): 二、需求分析 开发一个学生成绩管理系统的目的,主要是对查询学生成绩过程中的所有信息进行更加科学、规和有效的综合管理,是为了让同学们能在任时候都能查阅到有关自己学科成绩有关

的信息,也有利于让他们充分了解有关自己在大学期间所有课程的学习情况,提高查询速度。该学生成绩管理系统主要包括期末成绩管理、具体的查询等。本系统还提供学生相关的基本信息统计、汇总、查询,这样便于辅助学校领导的学生管理工作,改善管理质量、提高管理效率包括本班的每一位学生在校期间的基本情况与课程绩汇总。 本系统利用C++面向对象的功能,实现对学生成绩的管理。主要功能为管理有关学生基本信息、成绩课程等,对每个学生的基本信息、专业成绩信息、选修课成绩信息、课程信息的查询、修改和删除。本系统的结构分为学生基本情况管理模块、学生成绩管理模块、学生课程管理模块。 这是一个很实际的编程实例。编程要求很详细,容也比较多,有一定难度。首先,学生成绩记录是一个复杂的数据结构,至少应包括学号,姓名,性别和成绩。所以,必须建立一个类student,用来记录班级,学号,姓名和成绩。此外还得建立一个类对象数组s1[80],用来记录多个学生的成绩记录。 模块设计与分析 (1)输入学生资料模块: 主要功能用来对学生的成绩进行收集和输入。在学生信息保存在系统中的前提下,成绩录入需要输入学生资料,比如班级,学号,姓名。在准确输入学生资料后,就可以对该学生的各科成绩进行录入。该学生各科成绩输入成功后,系统会提示是否继续进行操作,如果想继续输入学生成绩就输入y,不想再输入学生成绩的话就输入n,再输入n之后,系统返回到主菜单。 (2)输出学生资料模块:

C语言大作业学生信息管理系统

《程序设计综合课程设计》报告 学生姓名: ______ ______ ______ ______________________ 学生班级: ______________________ ____________ ____________ 学生学号: ____________ 指导教师: ______ 2014年6 月 22 日

目录 前言 (2) 第1章Visual C++6.0简介及其优点 (3) 第2章课程设计的目的和要求 (4) (4) 2.2课程设计的要求 (5) 第3章课程设计任务内容 (6) 3.1 需求分析 (6) 3.2可行性分析 (6) 第4章软件使用说明 (7) 第5章总结 .................................................. 错误!未指定书签。附录源程序 学生信息管理系统 前言 学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项 数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等 院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。 其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人 工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院 校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的 管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力 和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入 人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以 计算机为物质基础的信息管理方法所取代。 作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟 的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。 这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要 条件,更是各个高等院校与世界接轨的重要条件。

数据结构课程设计报告

数据结构课程设计 设计说明书 TSP 问题 起止日期:2016 年 6 月27 日至2016 年7 月 1 日 学生姓名 班级 学号 成绩 指导教师( 签字) 2016 年7 月 1 日

目录 第1 章需求分析.................................................................................1... 1.1 简介 (1) 1.2 系统的开发背景 (1) 1.3 研究现状 (1) 第2 章概要设计.................................................................................2... 2.1 系统开发环境和技术介绍 (2) 2.2 系统需求分析 (2) 2.2.1 总体功能分析 (2) 2.2.2 核心功能分析 (3) 第3 章详细设计...................................................................................4... 3.1 系统开发流程 (4) 3.2 系统模块设计 (4) 3.3 系统结构 (6) 3.2 系统流程图 (6) 第4 章调试分析...................................................................................7... 4.1 程序逻辑调试 (7) 4.2 系统界面调试 (8) 第5 章测试结果...................................................................................9... 5.1 测试环境 (9) 5.2 输入输出测试项目 (9) 5.3 测试结果 (10) 结论.....................................................................................................1..1.. 参考文献................................................................................................1..1. 附录.......................................................................................................1..2..

学生成绩管理系统课程设计报告

数据库系统原理及其应用教程 课程设计报告 题目名称:学生成绩管理系统 任课教师: 姓名: 学号:

一.概述 1.设计背景 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快 捷的查询手段,但是几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各 个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不 靠增加人力、物力来进行学生成绩管理。这种管理方式存在着许多缺点,如:效率低、保 密性差,另外所用其时间长,产生大量的文件和数据,这对于查找、更新和维护都带来了 不少的困难。如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的 弊端也越来越明显。随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为 人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。作为计算机 应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。 例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这 些优点能够极大地提高学生档案管理的效率。所以我想借本次课程设计之际,设计一个 简易的学生成绩管理系统。 2. 设计目的 1、掌握运用数据库原理进行系统分析和设计的方法; 2、掌握关系数据库的设计方法; 3、掌握利用SQL Server 2000技术; 4、加强C++的编程能力 3. 设计内容 1.设计一个简易学生成绩管理的数据库系统,包括数据库的建立的需求分析,数据的输 入输出。 2.设计用户的操作界面,主要实现数据的查询,添加,修改,删除基本功能。 二.需求分析 1.功能分析 在成绩管理系统中最主要的是对学生成绩的管理,管理主要包括:对学生成绩的录入,修改,删除,以及按不同的方式对学生成绩进行查询。系统中包括学生的

学生教务管理系统作业

实验十二某管理系统的后台数据库设计 实验名称:某管理系统的后台数据库设计 实验学时:8 实验目的: 本实验的目的是为了让学生能够全面了解数据库应用系统的整个开发过程,逐步掌握系统开发的以下相关技术: (1)巩固数据库理论知识,熟悉一种具体的数据库管理系统(例如:SQL Server)的使 用方法。 (2)掌握针对特定应用环境数据库的设计。 (3)综合使用SQL Server中数据库、表、视图、索引、触发器、存储过程的创建使用方 法。 (4)体会运用软件工程的设计思想进行软件系统开发的过程与方法。 通过本课程设计,有助于学生巩固数据库系统的理论,掌握数据库的设计方法及数据库的运用和开发技术. 实验内容及步骤: 针对某部门或公司的实践调研,通过系统需求分析、数据库概念设计、逻辑设计, 用SQL上机编程、调试和应用实现数据库的设计,最终完成某管理系统的后台数据库设计。 (1)系统需求分析和系统设计 用软件工程的方法进行系统需求分析和系统设计得出系统的数据流图数据字典和信息模型。 (2)数据库设计 按数据库设计方法和规范化理论得出符合3NF的逻辑模型,外模型和物理模型。 (3)数据库定义和数据安全性与完整性定义 定义SQL、Server 2000的基本表和安全性、完整性要求。 (4)应用程序设计和程序调试 设计并编写输入\输出、查询\统计、数据维护等功能模块的应用程序。 (5)撰写课程设计报告 对系统的各个功能模块进行集成、总调试,撰写课程设计报告。 参考选题: 1 民航售票系统的后台数据库设计 (系统简述) 民航订票系统主要分为机场、航空公司和客户三方的服务。航空公司提供航线和飞机的资料,机场则对在本机场起飞和降落的航班和机票进行管理,而客户能得到的服务应该有航班线路和剩余票数.的查询,以及网上订票等功能。客户又可以分为两类,一类是普通客户,对于普通客户只有普通的查询功能和订票功能,没有相应的机票优惠,另一种是经常旅客,需要办理注册手续,但增加了里程积分功能和积分优惠政策。机场还要有紧急应对措施,在航班出现延误时,要发送相应的信息。 2 图书管理系统的后台数据库设计 (系统简述) 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。

数据结构课程设计报告-学生成绩管理系统[]

武汉理工大学华夏学院课程设计报告书 课程名称:数据结构课程设计 题目:用C语言实现成绩统计程序的设计系名:信息工程系 专业班级:计算机1121 姓名:吴涛 学号:10210412104 指导教师:司晓梅 2016年3 月20日

武汉理工大学华夏学院信息工程系 课程设计任务书 课程名称:数据结构课程设计指导教师:司晓梅班级名称:计算机1121 开课系、教研室:信息系计算机 一、课程设计目的与任务 《数据结构》课程设计是为训练学生的数据组织能力和提高程序设计能力而设置的增强实践能力的课程。目的:学习数据结构课程,旨在使学生学会分析研究数据对象的特性,学会数据的组织方法,以便选择合适的数据的逻辑结构和存储结构以及相应操作,把现实世界中的问题转换为计算机内部的表示和处理,这就是一个良好的程序设计技能训练的过程。提高学生的程序设计能力、掌握基本知识、基本技能,提高算法设计质量与程序设计素质的培养就是本门课程的课程设计的目的。 任务:根据题目要求,完成算法设计与程序实现,并按规定写出课程设计报告。 二、课程设计的内容与基本要求 设计题目:用C语言实现成绩统计程序的设计 〔问题描述〕给出n个学生的m门课程的考试成绩信息,每条信息由姓名、课程代号与分数组成,要求设计算法: (1)输入每个人的各门课程的成绩,计算每人的平均成绩; (2)按平均成绩的高低次序,打印出个人的名次,平均成绩相同的为同一名次; (3)按名次列出每个学生的姓名和各科成绩; 〔基本要求〕学生的考试成绩必须通过键盘输入,且需对输出进行格式控制; 〔算法提示〕可以用选择排序、冒泡排序等多种排序算法求解; 具体要完成的任务是: A. 编制完成上述问题的C语言程序、进行程序调试并能得出正确的运行结果。 B. 写出规范的课程设计报告书; 三、课程设计步骤及时间进度和场地安排 时间:1周地点:现代教育中心 具体时间安排如下: 第一天:布置题目,确定任务、查找相关资料 第二天~第四天:功能分析,编写程序,调试程序、运行系统; 第五天上午:撰写设计报告; 第五天下午:程序验收、答辩。 四、课程设计考核及评分标准

关于数据结构课程设计心得体会范文

关于数据结构课程设计心得体会范文 心得体会是指一种读书、实践后所写的感受性文字。是指将学习的东西运用到实践中去,通过实践反思学习内容并记录下来的文字,近似于经验总结。下面是小编搜集的关于数据结构课程设计心得体会范文,希望对你有所帮助。 关于数据结构课程设计心得体会(1) 这学期开始两周时间是我们自己选题上机的时间,这学期开始两周时间是我们自己选题上机的时间,虽然上机时间只有短短两个星期但从中确实学到了不少知识。上机时间只有短短两个星期但从中确实学到了不少知识。 数据结构可以说是计算机里一门基础课程,据结构可以说是计算机里一门基础课程,但我觉得我们一低计算机里一门基础课程定要把基础学扎实,定要把基础学扎实,然而这次短短的上机帮我又重新巩固了 c 语言知识,让我的水平又一部的提高。数据结构这是一门语言知识让我的水平又一部的提高。数据结构这是一门知识,纯属于设计的科目,它需用把理论变为上机调试。 纯属于设计的科目,它需用把理论变为上机调试。它对我们来说具有一定的难度。它是其它编程语言的一门基本学科。来说具有一定的难度。它是其它编程语言的一门基本学科。我选的上机题目是交叉合并两个链表,对这个题目,我选的上机题目是交叉合并两个链表,对这个题目,我觉得很基础。刚开始调试代码的时候有时就是一个很小的错觉得很基础。 刚开始调试代码的时候有时就是一个很小的错调试代码的时候误,导致整个程序不能运行,然而开始的我还没从暑假的状导致整个程序不能运行,态转到学习上,每当程序错误时我都非常焦躁,态转到学习上,每当程序错误时我都非常焦躁,甚至想到了放弃,但我最终找到了状态,一步一步慢慢来,放弃,但我最终找到了状态,一步一步慢慢来,经过无数次的检查程序错误的原因后慢慢懂得了耐心是一个人成功的必然具备的条件! 同时,通过此次课程设计使我了解到,必然具备的条件! 同时,通过此次课程设计使我了解到,硬件语言必不可缺少,要想成为一个有能力的人,必须懂得件语言必不可缺少,要想成为一个有能力的人,硬件

学生成绩管理系统_课程设计报告

中南大学 《C语言程序设计》 课程设计报告课题名称:学生成绩管理系统 专业电气信息 学生姓名舒畅 班级0914 学号0909091424 指导教师穆帅 完成日期2010年7月10日 信息科学与工程学院

目录 1 课程设计的目的 (1) 2 设计内容与要求 (1) 3 主要技术指标及特点 (2) 3.1 登录界面显示 (2) 3.2登记学生资料 (4) 3.3保存学生资料 (5) 3.4 删除学生资料 (6) 3.5修改学生资料 (7) 3.6 查询学生资料 (8) 3.6统计学生资料(自加功能) (8) 3.8对学生资料进行排序 (9) 3.9程序主要代码 (9) 4 设计小结 (31)

成绩管理系统 1 课程设计的目的 1.加深对《C语言程序设计》课程知识的理解,掌握C语言应用程序的开发方法和步骤; 2.进一步掌握和利用C语言进行程设计的能力; 3.进一步理解和运用结构化程序设计的思想和方法; 4.初步掌握开发一个小型实用系统的基本方法; 5.学会调试一个较长程序的基本方法; 6.学会利用流程图或N-S图表示算法; 7.掌握书写程设计开发文档的能力(书写课程设计报告)。 2 设计内容与要求 设计内容:成绩管理系统 现有学生成绩信息,内容如下: 姓名学号 C 数学英语 shuchang 12 99 98 99 jiutian 32 87 68 87 changzi 33 98 89 99 jiutia 13 7 43 45 设计要求: ?封面(参见任务书最后一页) ?系统描述:分析和描述系统的基本要求和内容; ?功能模块结构:包括如何划分功能模块,各功能模块之间的结构图,以及各模块 的功能描述; ?数据结构设计:设计数据结构以满足系统的功能要求,并加以注释说明; ?主要模块的算法说明:即实现该模块的思路; ?运行结果:包括典型的界面、输入和输出数据等; ?总结:包括C语言程序设计实践中遇到的问题,解决问题的过程及体会、收获、

相关主题
文本预览
相关文档 最新文档