《数据结构课程设计基于C语言的学生成绩管理系统设计》由会员分享,可在线阅读,更多相关《数据结构课程设计基于C语言的学生成绩管理系统设计(12页珍藏版)》请在金锄头文库上搜索。
1、课程设计说明书(论文)用纸摘 要数据结构是计算机程序设计的重要理论技术基础, 要求学生编写的程序结构清楚和正确易读,符合软件工程的规范,培养我们的数据抽象能力。本系统全称为实验课成绩管理系统,主要包括插入,删除,排序,更新,查找等六个模块,整个程序是采用c语言进行编写的,在这次程序设计中,本人所负责的主要时排序模块。不仅可以完成对学生学号的排序,还可以根据总分对学生信息进行排序。 本文主要介绍了该系统的需求分析,概要设计,详细设计,以及测试分析等部分,重点介绍了本人所设计模块的详细设计以及测试分析。关键词:成绩管理系统,C语言,数据结构目 录1 需求分析11.1 数据需求分析11.2 功能需求
2、分析12 概要设计22.1 系统模块划分22.2 系统模块结构图23 详细设计33.1 创建学生信息表33.2 结构类型定义33.3 函数调用43.4 排序53.5 输出学生信息表64 测试分析7总 结9参考文献10II1 需求分析当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息管理系统的环境.计算机的最大好处在于利用它能够进行信息管理.使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性.尤其对于复杂的信息管理,计算机能够充分发挥它的优越性. 学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所
3、以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,对学生来说可以轻松的查阅自己在校的成绩。 1.1 数据需求分析本系统的主要数据信息有学生实验课成绩信息表。学生信息表包括:学号,姓名,实验成绩,平时成绩,总成绩等。1.2 功能需求分析本系统主要实现对学生实验课成绩信息进行管理,需要实现以下几个方面的管理功能:(1)学生管理:学生信息的添加、删除、修改、查询、排序。(2)打印输出:学生实验课成绩信息。第 2 页 共 20 页2 概要设计 2.1 系统模块划分数据结构的研究内容:数据的逻辑结构,数据的存储结构,数据的操作。线性表是一种典型的线性数据结构,它可以采用链式结构与顺序存储结
4、构来存储。本课程设计采用的是顺序存储结构,并上施加了一些操作:插入,删除,查找,排序,修改等。(1)主界面模块提供实验课成绩管理系统的主菜单界面,供用户选择与执行各项管理工作。(2)查询模块用于用户根据学号进行成绩的查询。(3)录入模块用于将用户的基本信息存储到数据库。(4)删除模块用于根据学号删除用户的基本信息。(5) 插入模块用于将用户的基本信息插入到记录中。(6)排序模块用于根据用户的要求进行排序。 本学生所负责的模块是完成记录的排序与输出,不仅可以自动对学号进行排序还可以对总成绩进行排序。2.2 系统模块结构图实验课成绩管理系统工程插入查找更新录入实验成绩单平时成绩单按学号查找排序删除
5、按总分查找根据系统功能设计,对应的系统模块结构图如图1所示。图1 系统模块结构图第 8 页 共10页3 详细设计 3.1 创建学生信息表创建顺序表,也就是如何对一个顺序存储的线性表进行数据的录入。即,对已经定义好的线性表进行数据的附值。思想:本课程能够提示用户输入相应的信息,并能够自动进行运算,将数据保存到文件中,并进行输出。相关代码:/* 构建学生信息库 */student createdatabase() int n,i; printf(nnPlease Input Students Sum:n); scanf(%d,&n); for(i=1;i=n;i+) printf(Di %d Ge
6、 Xue Sheng De Ji Ben Xin Xi:n,i); printf(Please Input No:n); scanf(%d,&List.datai-1.xuehao); printf(Please Input Name:n); scanf(%s,List.datai-1.name); printf(Please Input ping shi cheng ji:n); scanf(%d,&List.datai-1.pingshi); printf(Please Input shi yan cheng ji:n); scanf(%d,&List.datai-1.shiyan); L
7、ist.len=n; 3.2 结构类型定义要想让计算机对数据进行处理,首先要将数据存储到计算机。为此,必须先定义数据的存储类型。由于本课题采用的顺序存储结构,结构类型定义如下:typedef struct /*结构类型的定义*/ int xuehao; char nameN; int shiyan,pingshi,zhong;stu;typedef struct Lnode /顺序表类型的定义 stu dataM; int len;student;static student List; /定义顺序表static FILE *fp; /定义文件型指针变量3.3 函数调用 main() clrs
8、cr(); Welcome(); clrscr(); ZhuJieMian(); getch();其实在主函数中并没有使用太多的调用,而是使用了一个函数专门实现其它函数的调用,这样可以使程序更加清晰,可移植性强。该函数如下:ZhuJieMian() int t,i,no,ldata,lname; printf(nnn); printf( *nn); printf( Please Choose The Number You Like!nn); printf(n); printf( Switch()n); printf(n); printf( 1 Inputn); printf(n); print
9、f( 2 Shanchun); printf(n); printf( 3 Charun); printf(n); printf( 4 Updaten); printf(n); printf( 5 Searchn); printf(n); printf( 6 Sortn); printf(n); printf( 7 Endn); scanf(%d,&t); if(t=6) clrscr(); printf(n); printf( *Shu Ju Pai xu*nn);Sort();getch(); clrscr(); ZhuJieMian(); if(t=7) clrscr(); printf(
10、nnn); printf( *See You !*nn); getch(); exit(0);3.4 排序思想:本程序主用运用冒泡法对记录进行排序,其中用两种排序方法,一种是根据学号进行排序,另一种是根据总分成绩进行排序。Sort( ) /*排序*/ int i,j,flag,No; stu x;printf( 1 an xue hao pai xu 2 an zhong fen pai xun); printf(Input The Number Which Be Sorted:n); scanf(%d,&No); if(No=1) /根据学号进行排序 for(i=1;i=List.len-1
11、;i+) flag=0; for(j=0;jList.len-1;j+) if(List.dataj+1.xuehaoList.dataj.xuehao) flag=1; x=List.dataj+1; List.dataj+1=List.dataj; List.dataj=x; if(flag=0) break; if(No=2) /根据总分成绩进行排序 for(i=1;i=List.len-1;i+) flag=0; for(j=0;jList.len-1;j+) if(List.dataj+1.zhongList.dataj.zhong) flag=1; x=List.dataj+1;
12、List.dataj+1=List.dataj; List.dataj=x; if(flag=0) break; 3.5 输出学生信息表思想:该程序能够将保存到相应文件中的记录输出,该文件有指针fp指向。Save( ) int i; if(fp=fopen(shu ju.txt,a)!=NULL) printf(Nott); printf(Namett);printf(pingshichengjit);printf(shiyanchengjit);printf(zhongchengjin); for(i=1;i=List.len;i+) printf(%dtt,List.datai-1.xuehao); printf(%stt,List.datai-1.name); printf(