logo资料库

学分管理系统.doc

第1页 / 共23页
第2页 / 共23页
第3页 / 共23页
第4页 / 共23页
第5页 / 共23页
第6页 / 共23页
第7页 / 共23页
第8页 / 共23页
资料共23页,剩余部分请下载后查看
一、需求分析
二、总体设计
三、详细设计
四、程序调试
五、核心源程序清单和执行结果
六、感想与总结
七、参考文献
学分管理系统 天津城市建设学院 课程设计任务书 2011—2012 学年第 1 学期 电子与信息工程 系 计算机科学与技术 专业 班级 课程设计名称: 数据结构课程设计 设计题目: 学分管理系统 完成期限:自 2012 年 1 月 1 日至 2012 年 1 月 5 日共 1 周 设计依据、要求及主要内容(可另加附页): 一、设计目的 熟悉各种数据结构和运算,会使用数据结构的基本操作解决一些实际问题。 二、设计要求 (1)重视课程设计环节,用严谨、科学和踏实的工作态度对待课程设计的每一项任务; (2)按照课程设计的题目要求,独立地完成各项任务,严禁抄袭;凡发现抄袭,抄袭 者与被抄袭者皆以零分计入本课程设计成绩。凡发现实验报告或源程序雷同,涉及的全部人 员皆以零分计入本课程设计成绩; (3)学生在接受设计任务后,首先要按设计任务书的要求编写设计进程表; (4)认真编写课程设计报告。 三、设计内容 学分管理程序 具体功能如下: (1) 通过键盘输入某位学生的学分; (2) 给定学号,显示某位学生的学分完成情况; (3) 给定某个班级的班号,显示该班所有学生学分完成情况; (4) 给定某位学生的学号,修改该学生的学分信息; (5) 按照某类课程的学分高低进行排序; (6) 提供一些统计各类信息的功能。
学分管理系统 目录 一、需求分析...........................................................................................................- 2 - 二、总体设计...........................................................................................................- 3 - 三、详细设计...........................................................................................................- 4 - 四、程序调试...........................................................................................................- 5 - 五、核心源程序清单和执行结果...........................................................................- 5 - 六、感想与总结.....................................................................................................- 22 - 七、参考文献.........................................................................................................- 23 - 一、需求分析 学分管理程序 具体功能如下:
学分管理系统 (1) 通过键盘输入某位学生的学分; (2) 给定学号,显示某位学生的学分完成情况; (3) 给定某个班级的班号,显示该班所有学生学分完成情况; (4) 给定某位学生的学号,修改该学生的学分信息; (5) 按照某类课程的学分高低进行排序; (6) 提供一些统计各类信息的功能。 测试数据: 欢迎进入学分管理程序 功能如下所示: a 给定学号,显示某位学生的学分完成情况 b 给定某个班级的班号,显示该班所有学生学分完成情况 c 给定某位学生的学号,修改该学生的学分信息 d 按照某类课程的学分高低进行排序 e 提供一些统计各类信息的功能 f:退出 请键入相应的命令 a 请输入你要查询的学生的学号 09710201 09710201 b 方忍 20 30 40 20 30 请输入你要查询的班级名 09 计算机 2 班 09710201 09710202 09710203 09710204 09710205 方忍 20 张凌康 30 刘陈涛 25 李琦 19 王奕胜 30 30 28 28 15 14 40 38 36 13 21 20 30 25 57 8 30 32 30 61 98 二、总体设计 图 2-1 班级类 图 2-2 学生类
学分管理系统 存储所有学生信息 存储学生的学号,姓名,学分信息 图 2-3 程序类 程序类,控制整个程序的流程 三、详细设计 Student 类的一些重要方法: void DisplayInfo(); //显示此学生的信息 void SetCredits(int credits,int number);//修改学生的学分,credits为修改值,number 为第几种课程 bool Compare(const Student&student,int number);//按照学生第number种课程的学分排 序
学分管理系统 int GetCredits(int number);//取得第number种课程的学分 Klass类的一些重要方法 void Add(const Student &student);//往班级里添加学生 void DisplayInfo();//打印班级信息 Student* Insearch(string studentID);//根据学生学号进行查询,用顺序查找法实现 string GetklassName();//返回班级名 void Sort(int number);//根据第number种课程的学分对所有学生进行高低排序 算法: 用了改进后的冒泡排序,重点是每冒出一个泡(即每比较一趟)后,记住最后比较的位置, 则此位置以后的数无需再比较,这样避免了无效比较。 int GetstudentNum();//此班级的学生人数 int TotalCredits(int number);//此班级第number种课程的总学分 Program类的一些重要方法 void OutTip();//此程序的说明,包括各种功能如何使用 void Init();//完成程序的初始化 void OperationFora();//针对输入a(即第一项功能)所做的操作,后面的一次类推 void OperationForb(); void OperationForc(); void OperationFord(); void OperationFore(); bool CheckCmd(char choice);//检查输入命令的合法性 void CheckNum(int &num);//检查输入是否为数字并作相应的处理 四、程序调试 再按学号,按班级查找时,用顺序超找发,算法的时间复杂度为O(n) 在按学号高低排序中,用的是改进的冒泡排序法,算法时间复杂度为 O(n)可以用快速排序 提高算法的平均时间复杂大,同时可以引入随机数,消除具体实例对算法复杂度的影响 起初,程序没有对一些不合法的输入命令进行检查,出现了一些异常,后来添加了不合法命 令的检查程序,同时给出相应的提示 本实验算法基本上很少;主要的算法有查找,排序; 五、核心源程序清单和执行结果 程序申明: #pragma once #include"Klass.h" #include #include class Program {
学分管理系统 public: Program(void); Program(std::string fileName[],int klassNum); ~Program(void); void Run(); //将klass的信息写到文件中 void Write(); private: void OutTip(); void Init(); void OperationFora(); void OperationForb(); void OperationForc(); void OperationFord(); void OperationFore(); bool CheckCmd(char choice); void CheckNum(int &num); private: static const int maxklassnum=20; int klassNum; fstream inout[maxklassnum]; Klass klass[maxklassnum]; }; 程序定义: #include "StdAfx.h" #include "Program.h" #include "Student.h" #include "Klass.h" #include using namespace std; Program::Program(void) { } Program::Program(std::string fileName[],int klassNum) { this->klassNum=klassNum; for(int i=0;iklassNum;++i) {
学分管理系统 inout[i].open(fileName[i]); } } Program::~Program(void) { } void Program::OutTip() { } cout<<" cout<<" 欢迎进入学分理程序\n"; 功能如下所示\n"; cout<<"a给定学号,显示某位学生的学分完成情况\n" <<"b给定某3个班级的班号,显示该班所有学生学分完成情况\n" <<"c给定某3位学生的学号修改该学生的学分信息\n" <<"d按照某类课程的学分高低进行排序\n" <<"e提供一些统计各类信息的功能\n" <<"f:退出\n"; cout<<"请键入相应的命令\n"; void Program::Run() { Init(); OutTip(); char choice; while(true) { cin>>choice; while(!CheckCmd(choice)) { } cout<<"你输入的命令不合法,请重新输入\n"; cin>>choice; switch(choice) { case'a': OperationFora(); break; case'b': OperationForb();
学分管理系统 break; case'c': OperationForc(); break; case'd': OperationFord(); break; case'e': OperationFore(); break; case 'f': Write(); exit(1); } } } void Program::Init() { for(int i=0;i>klassName; klass[i].Init(klassName); string studentID,name; int credits[Student::coursenum]; Student student; for(int m=0;m
分享到:
收藏