学生信息管理系统C设计报告_第1页
学生信息管理系统C设计报告_第2页
学生信息管理系统C设计报告_第3页
学生信息管理系统C设计报告_第4页
学生信息管理系统C设计报告_第5页
已阅读5页,还剩33页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 课程名称:C+语言程序设计 设计题目: 学生成绩信息管理系统 计算机与通信工程系 院 系: 业: 专 级: 年 姓 名: 指导教师: 课 程 设 计 任 务 书 专业 姓名 学号 开题日期: 年 月 日 完成日期: 年 月 日 题 目 学生成绩信息管理系统 一、设计的目的 使用C+语言编写一个基于控制台的简单程序,使学生掌握简单的程序设计技 巧。同时设计一个简单的学生成绩信息管理系统,可以实现管理学生成绩的基本 功能,比如学分管理、绩点管理、排名管理等。适合班级统计成绩使用,能够减 少统计工作量,节约统计时间,是一款实用的小型程序。 二、设计的内容及要求 本程序是学生成绩信息管理系统,能够实

2、现一些基本的学生成绩信息管理功 能,比如信息录入、学分管理、绩点管理、排名管理、以及信息输出等等。本程序 界面简洁、一目了然,功能基本齐全,设计合理,充分考虑到了各种在录入信息时可能出现 的问题,编写了修正录入信息的语句,是一款实用的小程序,适合班级统计学生成绩信息实 用,减少统计工作量,节约统计时间。 三、指导教师评语 四、成 绩 指导教师 (签章) 日 月 年 摘 要 . 4 第1章 软件设计内容 . 5 11软件达到的目的 . 5 12 软件功能说明 . 5 1.2.1 功能分析说明图 . 5 1.2.2 各项功能说明 . 6 13软件功能的验收标准 . 6 2.1 设计环境与模块的划分

3、 . 7 2.1.1 软件设计环境 . 7 2.1.2 软件模块的划分 . 7 2.2 软件设计主要原理 . 8 2.2.1 采用的主要数据结构类型 . 8 2.2.2 各个模块之间的调用关系和数据储存格式说明 . 8 2.2.3 主要流程图 . 8 第3章 软件的设计过程 . 11 3.1 各软件模块之间的调用方式 . 11 3.2 软件中实现各项功能的函数与程序代码 . 11 第4章 设计结果与分析 . 20 41软件使用结果 . 20 4 2 . 结 总摘 要 本论文分别对软件的需求进行分析,对软件的概要设计和软件的详细设计进行阐述,以及对软件的组装及测试的详细叙述,并附加了软件的使用说

4、明书(操作手册)。程序设计一般由两部分组成:算法和数据结构,合理选择和实现一个数据结构与处理这些数据结构具有同样的重要性。以将每个功能分别编译实现,再通过函数包含,调用等方法实现各项功能间的连接为设计思想,并采用将学生当作一个整体,整体类型为结构体,结构体中的域表示学生的属性的这种定义结构作为数据结构。软件将各个模块的功能分为列菜单、表明结构体、录入、排序、查询、插入及读取等来组成整个程序,实现对学生成绩的系统管理。该程序界面友好,易于操作,使操作者和使用者应用更加方便。 ; 成绩管理; 关键词:课程设计第1章 软件设计内容 11软件达到的目的 该软件主要是实现对学生成绩进行系统化的管理,首先

5、可以对学生基本信息进行输入和存取,其次可以读取显示学生的相关信息,然后可以删除和插入学生的相关信息,还有就是可按学号或姓名查询此学号的学生的相关信息,并按照总成绩算出的平均分和绩点的高低进行排序。由此来系统化管理学生成绩,并达到简易操作的目的。 12 软件功能说明 1.2.1 功能分析说明图 该软件功能分析说明图如1-2-1所示: 学生成绩信息管理系统 学 生 读基取本 学信生息 信录入息 与保 存 追加信息 按平均 信息删除 学生信 息查找按学 号 学生成绩排名 按按绩姓 点 名统 :1-2-1图1.2.2 各项功能说明 (1)学生基本信息的录入和保存: 这部分的功能主要包括信息的录入和保存

6、和平均分、平均分的计算,首先按程序提示输入所要输入的学生人数,接着是分别输入有关学生的相关信息包括学号、姓名、性别以及学生各科学分以及分数等。在录入数据的同时,系统将对信息的合法性进行检验(学号范围为2005000020099999、姓名在7个字节之内、性别只能输入m(男male)或f(女fmale)、各科成绩均限定在0100之间),若用户录入了不合法的数据系统将会作出提示,并且要求重新输入。如果合法性成立则录入完毕后系统将显示全部学生相关信息,信息中已包含对学生成绩平均分的计算和其平均分以及绩点的计算结果。最后输出学生的信息表,与是否保存提示,选 电脑。(list.dat)择存盘后,系统则自

7、动将学生信息存入(2)提取全部信息: 此功能是将原录入并保存的的学生信息读出,并在屏幕上显示出来。 (3)删除学生信息: 进入该项功能界面后,用户可以通过学生的姓名对某个学生的信息进行删除。 (4)增加学生信息: 进入插入界面,系统将提示输入新学生的相关信息,程序则会将新的信息插入原 学生信息清单中,并将新的学生信息列表输出,以方便用户的确认。(5)按学号查找学生信息: 此项功能可以根据用户输入的学生学号查出该学生的所有信息。 (6)按姓名查找学生信息: 此项功能可以根据用户输入的学生姓名查出该学生的所有信息。 (7)按平均分排名 选择次项功能后,系统将自动在屏幕上显示出所有学生按照平均分的高

8、低排序后的清单。 (8)按绩点排名 选择此项功能后,系统将自动在屏幕上显示出所有学生按照绩点的高低排序后的清单。 (9)退出系统,结束任务。 13软件功能的验收标准 有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使一、用软件的各项功能。 二、有严密正确的数据验证功能和数据处理功能,能够求和、求平均成绩,对总成绩进行排序,对数据进行保存和读取,能按学号查找学生信息,以及插入 和删除学生信息。三、系统要有一定的可靠性。 第2章 软件设计环境与原理 2.1 设计环境与模块的划分 2.1.1 软件设计环境 Microsoft Visual C+ 6.0 2.1.2 软件模块的划分 该软件

9、主要组成模块和各个模块之间的调用关系如图2-1: 选择操作然后 进京相应操作 学生成绩信息管理系统 按增 安按按提按加姓全学取绩平学退出生信 息选择操作然后进行相应操作 后加出追输 的学生信息 选择操作 结束主菜单主函数(包括以下所有函数)全部信 名点号均查查分排找 找 名排 名 5 息 开始 选择操作结束主函数流程图或操作4 学生基本信息录入 提取学生信息 删除学生信息 增加学生信息 图2-2 按提示输入姓名或学号输出相应学生信息 查找学生信息 成绩排序 退 出 程 序 其中学生基本信息的录入和保存里已经包含了平均分、平均分和绩点的计算、按学号排序输出的处理。 2.2 软件设计主要原理 2.

10、2.1 采用的主要数据结构类型 该程序采用的是结构体类型来处理学生的所有基本信息,如下所述。 包含的库函数有: #includecstring #includeiostream #includestdlib.h #includeiomanip 包含的函数有: Main() Cout_all_information() 提取所有学生的信息 Rank_() 按绩点排名输出函数 Rank_score() 按平均分排名输出函数 Search_name() 按姓名查找信息函数 Search_number() 按学号查找信息函数 Add_student() 增加学生信息函数 Free() 删除内存空间,并

11、退出 Get_rank() 输出班级排名函数 包含的类: class Student() 包含的结构体 struct STU() 2.2.2 各个模块之间的调用关系和数据储存格式说明 各函数模块之间的调用关系主要是主函数调用所有其它功能函数和菜单函数,并利用循环使各个功能函数运行完毕后都会回到菜单。该程序的数据以二进制储存。 2.2.3 主要流程图 主函数 一、 开始 y n 是否创建信息 y/n)( 创建学生信息 选择功能 二、函数的输入和保存 开始 输入学生人 数及信息 输出学生信 息 提示保存 结束三、提取学生信息 四、数据的删除 五、根据平均分排序 六、根据绩点排序 开始开始 选择操作

12、2 选择操作3 将输入的学生信息将输入的学生信息 按照绩点高低排序 按照平均分高低排 序 输出排序后输出排序后 的学生信息的学生信息 七、查找学生信息函数 选择操作 结束 九、学生信息追加 八、退出函数 开始 开始 选择相应操作 操应选择相 作 退出程序 输入要追加的学 生人数及信息 结束 据数行追加进 处理 软件的设计过程3章 第 各软件模块之间的调用方式3.1 程序中各个模块之间的调用方式主要是通过文件的包含和函数的调用实现使用主函数进用文件的形式把各个函数分开,再用头文件把它们包含进来,的, 行调用。 软件中实现各项功能的函数与程序代码3.2 一、一个包含学生基本信息的类class St

13、udent protected: char sex; /M or F int grade; /年级 int score20; /各科分数 int learn20; /存放学分 public: char name10; /姓名 unsigned long double Number; /学号 float all_score;/各科总学数 float learn_score;/总学分 float base_score;/总绩点 public: Student(); /构造函数 Student(); /析构函数 void Set_information();/设置学生信息 void Get_info

14、rmation();/提取学生信息 void Set_grade( ); /设置年级 void Get_grade(); /提取年级函数 void Set_Name(); /设置姓名函数 void Get_Name(); /提取姓名函数 void Set_Number(); /设置学号函数 void Get_Number(); /提取学号函数 void Set_sex(); /设置性别 void Get_sex(); /提取性别 void Set_score();/设置各科分数 void Get_score();/输出成绩 void Get_all_score();/总成绩 void Get_

15、base_score();/总绩点 double Return_base(int score);/绩点获得 ; 二、输入学生信息函数 STREC * creat(int n,int count) /创建n个结点 STREC *h,*p,*q; int i=1,temp_count=count+1; h=p=(STREC*)malloc(sizeof(STREC); p-count=temp_count+; 潣瑵?请输入第?尼就?个学生的信息:student.Set_information();/输出第一个学生信息 p-frt=NULL; while(icount=temp_count+; 潣瑵

16、?请输入第?椼?个学生的信息:student.Set_information();/ i+; p-next=q; q-frt=p; p=q; last_count=p-count;/记录最后一个学生是第几个 p-next=0; return h; 三、提取学生信息函数 void Student:Get_information()/提取学生信息 cout*此学生信息输出如下.*endl; Get_Name(); /设置姓名函数 Get_Number(); /设置学号函数 Get_sex(); /设置性别 Get_grade( ); /设置年级 coutendl; 潣瑵?各科成绩如下.endl;

17、coutendl; Get_score();/输出成绩 coutendl; 潣瑵?总成绩是:all_scoreendl; 潣瑵?总绩点是:base_scoreendl; cout*此学生信息输出完毕.*student.Get_information();/提取学生信息 coutendl; coutnext; q=p; cout*学生信息提取完毕.*endlstudent.base_score; p=p-next; count=i; p=h; for(i=0;i100;i+) for(j=i;j100;j+) if(rankirankj) temp_score=ranki; ranki=rank

18、j; rankj=temp_score; for(i=0;istudent.base_score=ranki) break; else q=q-next; 潣瑵?第 i+1 ?尼名是:student.Get_information(); coutendlendl; q=h; for(j=i;jstudent.base_score=rankj+1) break; else q=q-next; 潣瑵?第 i+1 ?尼名是:student.Get_information(); coutendlstudent.base_score=ranki) break; else q=q-next; 潣瑵?第 i

19、+1 ?尼名是:student.Get_information(); coutendlstudent.all_score; p=p-next; count=i; p=h; for(i=0;i100;i+) for(j=i;j100;j+) if(rankirankj) temp_score=ranki; ranki=rankj; rankj=temp_score; for(i=0;istudent.all_score=ranki) break; else q=q-next; 潣瑵?第 i+1 ?尼名是:student.Get_information(); coutendlendl; q=h;

20、for(j=i;jstudent.all_score=rankj+1) break; else q=q-next; 潣瑵?第 i+1 ?尼名是:student.Get_information(); coutendlstudent.all_score=ranki) break; else q=q-next; 潣瑵?第 i+1 ?尼名是:student.Get_information(); coutendlendl; q=h; 七、按姓名查找学生信息 void Search_name(STREC *h)/按姓名查找 void Get_rank(STREC *h);/输出班级排名 char temp

21、_name10; STREC *p; int i,j=0;/j用于标记是否找到该学生 潣瑵?请输入要查询的学生的姓名.next) for(i=0;i!=temp_namei) break; if(i=strlen(temp_name) p-student.Get_information(); Get_rank(p); j=1;break; if(j=0) 捻畯?尼对不起,没有找到此学生信息,请检查后再查询.endl; 八、按学号查询学生信息 void Search_number(STREC *h)/按学号查找 void Get_rank(STREC *h);/输出班级

22、排名 STREC *p; int i=0,temp_number;/j用于标记是否找到该学生 潣瑵?请输入要查询的学生的学号.temp_number; p=h; for(;p;p=p-next) if(p-student.Number=temp_number) p-student.Get_information(); Get_rank(p); i=1; break; if(i=0) 捻畯?尼对不起,没有找到此学生信息,请检查后再查询.endl; 九、增加学生信息函数 void Add_student(STREC *h)/增加学生信息 int n;/增加的学生人数 STREC *p=h; 潣瑵?

23、请输入要增加的学生人数.n; while(p-next) p=p-next; p-next=creat(n,last_count); 十、删除学生信息 STREC * Free_student(STREC *h)/按学号删除学生信息 char mmm;/标记是否删除最后一个学生 STREC *p=h; unsigned long double temp_number; 潣瑵?请输入要删除的学生的学号.temp_number; while(1) while(p) if(p-student.Number=temp_number) break; p=p-next; if(p=NULL) 潣瑵?对不起

24、找不到此学生信息,请检查后重新输入.temp_number; else break; if(p-next=NULL) if(p-frt=NULL) 潣瑵?这是最后一个学生的信息了,确定删除(y/n)mmm; if(mmm=y) exit(0); else if(mmm=n) goto loop; else p-frt-next=NULL; else if(p=h) h-next-frt=NULL;h=h-next; else p-frt-next=p-next; p-next-frt=p-frt; .next; while(q) free(p); p=q; q=q-next; exit(0); 第4章 设计结果与分析 41软件使用结果 在此,我们将把软件使用过程写出,并对此程序的一些细节和具体的操作方法加以说明,说明如下: 1、将软件进行初始化。 2、进入程序,界面如图4-1-1: (1) 首先输入“y”,创建学生信息; (2) 输入学生人数,然后逐个输入学生基本信息。注:必须遵循录入信息的合 法性,详细见程序提示。 :能功应相择选可即字数应相入键,面页单菜入进,后之入录息信生学 总的功能有: 提取全部信息。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论