数据结构学生成绩管理系统说明书.doc
《数据结构学生成绩管理系统说明书.doc》由会员分享,可在线阅读,更多相关《数据结构学生成绩管理系统说明书.doc(23页珍藏版)》请在沃文网上搜索。
1、装订线长 春 大 学 课程设计纸目 录一 设计题目1二 设计目的1三 算法思想分析1四 算法描述与实现1五 结论1一、 设计题目实验内容成绩分析问题问题描述录入、保存一个班级学生多门课程的成绩,并对成绩进行分析。需求分析(1)通过键盘输.入各学生的多门课程的成绩,建立相应的文件input.dat。(2)对文件input.dat中的数据进行处理,要求具有如下功能:1) 按各门课程成绩排序,并生成相应的文件输出。2) 计算每人的平均成绩,按平均成绩排序,并生成文件。3) 求出各门课程的平均成绩、最高分、最低分、不及格人数、6069分人数、7079分人数、8089分人数、90分以上人数。4) 根据姓
2、名或学号查询某人的各门课成绩,重名情况也能处理。(3)界面美观。二、 设计目的 了解软件工程中的一些系统分析,模块分析,代码设计的概念,实现学生成绩管理系统的录入、查询、删除、统计等基本操作,使用单链表结构实现学生成绩管理,了解数据库管理的基本功能,掌握C语言中的结构体、指针、函数(系统函数、自定义函数)、文件操作等知识。通过对系统的分析和设计,进一步巩固C语言的学习,以提高对开发环境的进一步认识和综合编程能力。三、算法思想分析 1,、基本思想 建立一个学生成绩管理系统能够实现每位学生的成绩的录入、删除、修改、查找、排序按成绩降序排序等功能。 2、 原理 首先定义项目的数据结构然后将每个功能写
3、成一个函数来完成对数据的操作然后完成主函数以验证各个函数功能并得出运行结果最后调试改进3、 概要设计int right(STD *h,int i); / 查看学号 i 是否存在void newstu(STD *h); / 新增一个学生STD *find(STD *h,char nam); / 查找姓名为nam的学生,返回该学生上一结点的地址STD *find(STD *h,char num); / 查找学号为mum的学生,返回该学生上一结点的地址void show(STD *p,int i); / 输出结点p的信息,若 i=0 只输出姓名和学号,i=1,输出全部信息void show(STD
4、*h); / 按提示输出学生的信息void intoscores(STD *h); / 按提示录入学生的成绩void sort(STD *h,int a,int b); /*对学生信息排序,a为0以数学成绩为关键字排序 a=1-4为英语成绩、计算机成绩、总成绩、学号。b=0为降序,b=1为升序*/void cjjpx(STD *h); / 按提示对学生信息排序void tjcj(STD *h); / 统计学生成绩void del(STD *h); / 按提示删除学生int into(STD *h); / 从文件中读数据放在头结点为h的链表中int save(STD *h); / 将头结点为h的
5、链表数据保存在文件中4、 存储结构 struct STD /学生信息链表char name20; /姓名int number; /学号int scores4; /各科成绩struct STD *next;/指向下一结点的指针;struct STDD / 记录数据char name20;/姓名int number; /学号int scores4; /各科分数;5、 流程图 p=h-nextwhile(p!=NULL)Student.number=p-number?YNreturn(0);p=p-next;return(1);int right(STD *h,STDD student); /判断学
6、号student.number是否存在void newstu(STD *h) STD *find(STD *h,char name)/添加一个新学生 /以姓名为关键字STD *p=h;STDD student;while(p-next!=NULL)p=p-next;输入学生学号scanf(“%d”,&student.number);while(right(h,student)=0)输入学生学号scanf(“%d”,&student.number)scanf(“%s”,q-name);q=(STD *)malloc(sizeof(STD);q-number=student.number;for(
7、i=0;iscoresi=0;p-next=q;q-next=NULL;STD *p=h;while(p-next!=NULL)YNreturn (p);p=p-next;return (p);strcmp(name,p-name)=0 ? STD *find(STD *h,char name) /以学号为关键字STD *p=h;while(p-next!=NULL)YNreturn (p);p=p-next;return (p);p-number=num?void intoscores(STD *h) / 录入学生的成绩STD *p; STDD student; int i; char xz
8、;xz=getch();xzxz=1;xz=1;scanf(“%d”,&student.number);p=find(h,student.number);p-next!=NULL;YN输入成绩存放在p-next中p=h-next;while(p!=NULL)show(p,0);输入成绩放入p中;p=p-next;录 入 成 绩 结 束提示没有该学号void show(STD *h) /输出学生信息STD *p; STDD student; char xz; inti=0;xz=getch();xzxz=1;xz=2;xz=1;xz=2;xz=getch();xzscanf(“%d”,&stud
9、ent.numberscanf(“%s”,&student.namep=find(h,student.number;p-next!=NULLYNshow(p-next,1);p=find(h,student.number;while(p!=NULL)show(p-next,1);p=find(p-next,student.namep=h-next;while(p!=NULL)show(p,1);p=p-next;输 出 结 束void tjcj(STD *h) /学生信息统计STD *p=h-next; int av54,sum4,i,k=0,mix4,max4; for(i=0;i4;i+)
10、for(k=0;k5;k+)avki=0;sumi=0; mixi=100;maxiwile(p!=NULL)for(i=0;inext信息统计结束void sort(STD *h,int a,int b) /对学生信息按要求进行排序int i; STD student; STD *p=h,*q;b=0?while(p-next!=NULL);q=p-next;while(q-next!=NULL) a=4?YNp-next-number q-next-numberYNp-next-scoresa q-next-scoresaYN交换p、q下一结点的数据q=q-next;p=p-nextwhi
11、le(p-next!=NULL;)while(p-next!=NULL;) a=4?q=p-next;while(q-next!=NULL)NYp-next-number next-numberY交换p、q下一结点的数据交换p、q下一结点的数据p=p-next;排 序 完 成Np-next-scoresa next-scoresaq=q-next;NY交换p、q下一结点的数据void del(STD *h) /删除学生STD *p,*q;int xz;int i;xz=getch();xzxz=2scanf(“%d”,&i);p=find(p,i);p!=NULLYNq=p-next;p-ne
12、xt=q-next;free(q);while(p-next!=NULL)q=p-next;p-next=q-next;free (q);删 除 完 成四、算法描述与实现1、上机调试与程序实现2、源代码 / 成绩分析问题.cpp #include#include#include#includestruct STD /学生成绩链表char name20; /学生姓名int number; /学生学号int scores4; /学生成绩struct STD *next; /指向下一学生结点;struct STDD /学生结点char name20;int number;int scores4;in
13、t right(STD *h,STDD student)STD *p; /定义结点p,使之在链表中遍历p=h-next; /p指向头结点的下一个结点开始遍历while(p!=NULL) /判断p是否为空if(student.number=p-number)/否p不为空再判断学号是否相同return (0); /若学号相同,返回0p=p-next; /若学号不同,p指向下一结点继续比较return (1); /若学号都没相同的,返回1。void newstu(STD *h)STDD students; /定义STDD结构体变量students来存储一些数据int i; /定义整型变量STD *p
14、,*q; /定义STDD链表结点p=h; /p指向头结点while(p-next!=NULL) /找到最后一个结点p=p-next;system(cls & title 学生注册);printf(nnn);printf( nn);printf( 请输入要注册学生的学号 );scanf(%d,&students.number); /输入注册的学号while(right(h,students)=0) /判断该学号是否存在,若存在,就重新输入printf(an 学号有重复,请重新输入 按任意键继续 );getch();system(cls & title 学生注册);printf(nnn);prin
- 1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
- 2.下载的文档,不会出现我们的网址水印。
- 3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
下载文档到电脑,查找使用更方便
10 积分
下载 | 加入VIP,下载更划算! |
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 学生 成绩管理系统 说明书