




已阅读5页,还剩11页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
数据结构课程设计题 目: 学生成绩管理问题 学 院: 理学院 班 级: 数学091 学 生 姓 名: 张斌斌 学 生 学 号: 13 指 导 教 师: 张太发 2011年 12月 19日课程设计任务书姓名张斌斌班级数学091学号13设计题目学生成绩管理问题理论要点学生成绩管理系统主要通过采用单链表的方式对学生信息进行存储,通过指针和循环结构来实现对学生信息的添加、修改、查询和删除等操作。设计目标通过学生成绩管理系统快捷有效地对学生成绩信息进行管理,减轻教务人员的工作量。研究方法步骤1.问题与需求分析;2.可能解决的方法和用到的知识;3.搜集资料;4.设计框架和算法;5.结果检验与评价。预期结果根据问题的需要,能快速有效地对学生的成绩信息进行输入、添加、查询、修改和删除,而且界面友好美观,操作方便简单,达到想要的效果。计划与进步的安排第一天:仔细阅读和分析问题;第二天:搜集解决问题可能要用到的知识和资料;第三天:构造框架和设计算法;第四天:编写程序;第五天:执行程序和调试结果;第六天:结果检验和设计评价;第七天:书写报告和修改总结。数据结构课程设计摘要 针对学校教务管理中需要处理的学生成绩信息量很大,工作细节比较繁杂的问题,急需开发一种执行快速有效、操作简单方便的系统软件进行辅助。而学生成绩管理系统的持续开发和不断优化,正成为这一难题解决的有力武器。学生成绩管理系统主要用于完成日常教育工作中对学生成绩信息的数字化记录。该系统可使学校教职员工减轻工作压力,系统地对教务、学生成绩等各项服务和信息进行管理。同时,可以有效减少学生成绩管理工作量、提高查询速度和方便分析。本文作者在设计、开发学生成绩管理系统的过程中,主要的工作概述如下: 1)研究和分析了学生成绩管理的需求和功能流程,并力求针对该系统的概念进行全面和深刻的了解,使该系统普遍使用多家教育机构。2)在开发方法上,选择了功能与需求严格匹配、设计和调试同时进行的方法,遵循系统调查研究、系统分析、系统设计和系统实施四个主要原则。3)在具体设计上,采取了单链表存储和指针查询插入的方法,通过结构体和循环体使程序更加规范明了。本论文从功能需求出发,选择了最优的算法和步骤,构造出清晰明了的功能流程图,通过对源代码进行执行和调试完成题目要求实现的各种功能,并给出了具体的调试和使用图示,让学生成绩管理系统更加完善和实用。关键词: 学生成绩管理系统,单链表存储,指针,循环体目录一需求和功能分析- 1 -1.需求分析- 1 -2.功能分析- 1 -二. 功能流程图- 2 -三设计思路及算法- 3 -1.设计思路- 3 -2 .算法步骤- 3 -四.具体算法- 3 -五.运行结果及调试分析- 8 -1. 运行该程序- 8 -2. 初始化链表- 8 -3. 输入学生成绩- 9 -4. 插入学生成绩- 9 -5. 显示学生成绩- 9 -6. 查询学生成绩(按学号)- 10 -7. 查询学生成绩(按姓名)- 10 -8. 删除学生成绩(按学号)- 10 -9. 退出系统- 11 -六心得总结- 12 -七参考资料- 12 - 11 -学生成绩管理问题学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,本设计是对学生的成绩管理做一个简单的模拟,用菜单选择操作方式完成下列主要功能:(1)登记学生成绩;(2)查询学生成绩;(3)插入学生成绩;(4)删除学生成绩; 要求对每个功能分别用函数实现。一需求和功能分析1.需求分析 学生成绩管理是学校教务管理的重要组成部分,其处理信息量很大,工作细节比较繁杂,而开发学生成绩管理系统可有效地解决这一问题,它使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。目前,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,还没有一套完整的、统一的系统。因此,开发一套适和大众的、兼容性好的系统是很有必要的。 对于这个学生成绩管理系统的开发,着重要实现这样几个功能:输入学生成绩、查找学生成绩、添加学生成绩和删除学生成绩。但是,做任何事情都是应该注意细节的,应力求使做出来的成果完美一些,面对本系统也一样,在实现以上几个主要功能的同时,开发者还力求界面友好,易于操作,力求系统的美观与功能的全面。2.功能分析(1)系统要求实现的具体功能:1、 输入功能:可以输入100位同学信息2、 添加功能:能添加学生的信息3、 查询功能:用指针完成按学号或姓名查找学生成绩4、 显示功能:可以对学生的各项信息进行存储和显示5、 删除功能:可以删除学生信息 6、退出系统(2)学生的信息:学生的信息类定义,每个学生的信息包括班级、学号、姓名、数据结构成绩、汇编语言成绩、数值计算方法成绩六项内容。二. 功能流程图三设计思路及算法1.设计思路 这个系统的设计主要采用单链表的存储方式对学生信息进行存储,然后通过指针完成对学生信息的添加、查找和删除等功能。它主要包括:显示菜单、初始化单链表、输入学生成绩、插入学生成绩、显示学生成绩、查找学生成绩(按学号)、查询学生成绩(按姓名)、删除学生成绩(按学号)、退出系统九块。2 .算法步骤 设计步骤首先定义一个存放学生信息的“STUDENT”结构体,能存放学号、姓名、三门课程成绩、总分、平均分、及名称等学生信息。接下来定义实现各种功能的函数,定义主函数。主函数主要是调用其他函数,实现不同的功能。主菜单选项通过定义字符型数组,输入菜单选项并输出。其它各个功能函数,通过定义结构体指针,用if判断语句及for和do、while循环语句实现。输出用printf()函数,输入用scanf()函数接收字符。还用到strcmp()比较字符串是否相等,free()是否空间从而实现删除功能,fwrite()保存数据等。通过循环语句及各种功能函数使用,实现各个模块功能。四.具体算法 #include#include#include#define N 3typedef struct z1 /*定义结构体*/ char no11; char name15; int scoreN; int sum; float average; int order; struct z1 *next;STUDENT; /*各个功能函数定义*/STUDENT *init();STUDENT *create();STUDENT *del(STUDENT *h);void print(STUDENT *h);void search1(STUDENT *h);void search2(STUDENT *h);STUDENT *insert(STUDENT *h);int menu_select();STUDENT *load();void inputs(char *prompt,char *s,int count);STUDENT *load();void main() /*主函数定义,调用各个函数*/ STUDENT *head; head=init(); for(;) switch(menu_select() case 0:head=init();break; case 1:head=create();break; case 2:head=insert(head);break; case 3:print(head);break; case 4:search1(head);break; case 5:search2(head);break; case 6:head=del(head);break; case 7:exit(0); int menu_select() /*菜单界面*/ char *menu=*菜单*, 0. 初始化链表, 1. 输入学生成绩, 2. 插入学生成绩, 3. 显示学生成绩, 4. 查询学生成绩(按学号), 5. 查询学生成绩(按姓名), 6. 删除学生成绩(按学号), 7. 退出系统; char s3; int c,i; for(i=0;i=8;i+) printf(%sn,menui); do printf(n请选择07中的某一个选项n); scanf(%s,s); c=atoi(s); while(c7); return c;STUDENT *init() /*初始化链表*/ return NULL; STUDENT *create() /*输入学生成绩*/ int i;int s; STUDENT *h=NULL,*info; for(;) info=(STUDENT *)malloc(sizeof(STUDENT); if(!info) printf(n内存不足); return NULL; inputs(输入学号(输入为!返回主菜单):,info-no,11); if(info-no0=!)break; /*当输入学号为!时跳出整个循环*/ inputs(输入姓名:,info-name,15); printf(开始输入%d门课的成绩n,N); s=0; for(i=0;iscorei); if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; info-sum=s; info-average=(float)s/N; info-order=0; info-next=h; h=info; return h;void inputs(char *prompt,char *s,int count) /*输入学生成绩*/ char p255; int len; do printf(prompt); scanf(%s,p); len=strlen(p); if(lencount)printf(n太长了!n); while(lencount); strcpy(s,p);void print(STUDENT *h) /*显示学生成绩*/ int i=0; STUDENT *p; p=h; printf(nnn*学生*n); printf(|序号| 学号 | 姓名 | | 数据结构 |汇编语言 | 数值计算 |平均分 |名次 |n); printf(|-|-|-|-|- |-|-|-|-|n); while(p!=NULL) i+; printf(|%-10s| %-8s| | %4d | %4d | %4d | %4.2f|%4.2f|%3d|n,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); p=p-next; printf(*end*n);STUDENT *del(STUDENT *h) /*删除学生成绩*/ STUDENT *p,*q; char s11; printf(请输入要删除的学生的学号n); scanf(%s,s); q=p=h; while(strcmp(p-no,s)&p!=NULL) q=p; p=p-next; if(p=NULL) printf(n链表中没有学号为%s的学生n,s); else printf(nnn*找到了*n); printf(|序号| 学号 | 姓名 | | 数据结构 |汇编语言 | 数值计算 |平均分 |名次 |n); printf(|-|-|-|-|- |-|-|-|-|n); printf(|%-10s| %-8s| | %4d | %4d | %4d | %4.2f|%4.2f|%3d|n,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); printf(*end*n); printf(请按任意键删除n); getchar(); if(p=h) h=p-next; else q-next=p-next; free(p); printf(n已经删除学号为%s的学生n,s); printf(不要忘了保存数据n); return h;void search1(STUDENT *h) /*按学号查询学生成绩*/ STUDENT *p; char s11; printf(请输入你要查找的同学的学号n); scanf(%s,s); p=h; while(strcmp(p-no,s)&p!=NULL) p=p-next; if(p=NULL) printf(n没有学号为%s的学生n,s); else printf(nnn*找到了*n); printf(|序号| 学号 | 姓名 | | 数据结构 |汇编语言 | 数值计算 |平均分 |名次 |n); printf(|-|-|-|-|- |-|-|-|-|n); printf(|%-10s| %-8s| | %4d | %4d | %4d | %4.2f|%4.2f|%3d|n,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); printf(*end*n); void search2(STUDENT *h) /*按姓名查询学生成绩*/ STUDENT *p; char s11; printf(请输入你要查找的同学的姓名n); scanf(%s,s); p=h; while(strcmp(p-name,s)&p!=NULL) p=p-next; if(p=NULL) printf(n没有姓名为%s的学生n,s); else printf(nnn*找到了*n); printf(|序号| 学号 | 姓名 | | 数据结构 |汇编语言 | 数值计算 |平均分 |名次 |n); printf(|-|-|-|-|- |-|-|-|-|n);printf(|%-10s|%-8s|%4d|%4d|%4d|%4.2f|%4.2f|%3d|n,p-no,p-name,p-score0,p-score1,p-score2,p-sum,p-average,p-order); printf(*end*n); STUDENT *insert(STUDENT *h) /*添加学生成绩*/ STUDENT *p,*q,*info; char s11; int s1,i; printf(请输入插入点的学生学号n); scanf(%s,s); printf(n请输入新的学生信息n); info=(STUDENT *)malloc(sizeof(STUDENT); if(!info) printf(n内存不足!); return NULL; inputs(输入学号:,info-no,11); inputs(输入姓名:,info-name,15); printf(请输入%d门课的分数n,N); s1=0; for(i=0;iscorei); if(info-scorei100|info-scoreiscorei100|info-scoreiscorei; info-sum=s1; info-average=(float)s1/N; info-order=0; info-next=NULL; p=h; q=h; while(strcmp(p-no,s)&p!=NULL) q=p;p=p-next; if(p=NULL) if(p=h) h=info; else q-next=info; else if(p=h) info-next=p; h=info; else info-next=p; q-next=info; printf(n已经插入了%s这个学生n,info-name); printf(-不要忘了存盘啊-n); return(h);五.运行结果及调试分析1. 运行该程序,出现“菜单”界面:2. 输入数字0,按ENTER后,选中“初始化链表”功能:3. 输入数字1,按ENTER后,选中“输入学生成绩”功能,在界面中按提示输入学生学号、姓名、数据结构、汇编语言和数值计算成绩等信息:4. 输入!返回主菜单,输入2,按ENTER后,选中“插入学生成绩”功能,在界面中按提示输入需要插入的学生学号、姓名、数据结构、汇编语言和数值计算成绩等信息:5. 输入3,按ENTER后,选中“显示学生成绩”功能,界面中出现zhangbinbin和zhangbinde两名学生的成绩信息:6. 输入4,按ENTER后,选中“查询学生成绩(按学号)”功能,在界面中输入14,会出现zhangbinde同学的成绩信息:7. 输入5,按EN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小商品公司管理制度
- 禁止关联交易管理制度
- 网络环境安全管理制度
- 幼儿园业务管理制度
- 职工食堂仓库管理制度
- 小饭馆收银管理制度
- 缓冲过渡病房管理制度
- 社区科普工作管理制度
- 生产运营中心管理制度
- erp配套管理制度
- DB37-T4827-2025 水利工程运行管理标牌设置指南
- 2025届高考物理说题大赛-以电学实验为例
- 休学一年后复学申请书
- 水下无线光通信高灵敏度调制编码与接收技术研究
- 汽车金融不良资产分类研究-深度研究
- 2025年光伏发电项目合同能源管理合同
- 2025年河北交通投资集团有限公司招聘笔试参考题库含答案解析
- 2020-2021学年河南省郑州市八下期末数学试卷(原卷版)
- 家具公司工艺流程
- 《吸入性肺炎的护理》课件
- 2024-2030年中国卷烟行业市场未来发展状况及投资规划研究报告
评论
0/150
提交评论