目录

  • 一、引言
    • a) 编写目的
    • b) 项目背景
    • c) 术语说明
    • d) 参考资料
  • 二、任务概述
    • a) 目标
    • b) 运行环境
    • c) 需求概述
    • d) 条件与限制
  • 三、 总体设计
    • a) 处理流程
    • b) 总体结构和模块
    • c) 功能分配
  • 四、接口设计
    • a) 外部接口
    • b) 内部接口
  • 五、 数据结构设计
    • a) 类结构设计
    • b) 数据库结构设计
    • c) 数据结构与程序的关系
  • 六、 运行设计
    • a) 运行模块的组合
    • b) 运行控制
    • c) 运行时间
  • 七、 出错设计处理
  • 八、 安全保密设计
  • 九、 维护设计
  • 十、GitHub链接

声明:本文只是一份数据结构课程设计报告,可为各位的课设设计提供简明思路,但它不属于软件设计流程中任何一个环节的说明文档,请勿将其当成需求分析说明书做要求或使用。该项目的内容是展示在CMD上而非图形界面,现在因为工作原因已不再接课设单子,大学的课题在Github上基本全都能找得到(只要别整什么太离谱的),但如果想交流学习的话还是没问题的,QQ:2788636917。

一、引言

a) 编写目的

某大学软件工程专业的学生们在大二的时候都要做一份数据结构课程设计来检验自己的水平。为了凸显自己的能力,同学们所选的题目也是五花八门,令老师们看的头痛不已。今天这个课题,老师要求既要能快速浏览目前所有的课题和学生信息,又能对课题进行编辑修改,同时自带统计管理功能。该软件的使用者为该系统的开发者和负责课程设计的老师们。

b) 项目背景

该项目名称初步命名为:课程设计管理系统。分为六个模块:系统模块、数据插入模块、数据删除模块、数据修改模块、数据查询模块、数据库模块、数据模块和数据库连接模块。本项目的提出者和开发者均为计算机学院16级软件2班姚兴业。

c) 术语说明

一级界面:指菜单界面
二级界面:指所有直接通过一级界面进入的界面,也可称为信息类别选择界面
三级界面:指所有直接通过二级界面进入的界面,也可称为详细信息输入界面

d) 参考资料

在此处列出文档所引用的外部文档或其他项目资料

二、任务概述

a) 目标

本项目旨在开发出一个可以帮助教师们进行简单的课设项目管理和评分的帮助性软件

b) 运行环境

  • 系统需求:Windows 7及更高版本系统
  • 软件需求:安装有Microsoft Access 2007或以上版本
  • 硬件需求:该软件对硬件无明显需求,目前市面上主流的Windows系统计算机均可运行

c) 需求概述

本软件具备以下功能:
i. 添加功能: 通过系统向用户提供的选择界面来正确的添加学生信息或课程设计信息。在添加时将会限定学号和编号的唯一性,即当添加的学生学号或添加的课题编号重复时,系统将给出适当的提示并要求用户重新输入信息。
ii. 删除功能: 通过系统向用户提供的选择界面来帮助用户删除指定编号的信息。
iii. 修改功能: 用户将可以通过学号或编号来找到指定的学生或课题信息(如果它们存在的话),并通过系统提供的选择界面来对信息进行修改。
iv. 查询功能: 用户可以通过学号或编号来查询学生或者课题的信息,如果信息不存在,系统将会给出适当的提示。
v. 显示全部功能: 一键选择显示全部的学生信息或课题信息。
vi. 统计功能: 用户可以通过系统提供的选择界面来对当前已有的信息进行统计。
vii. 读取功能: 允许用户通过该功能向指定的Access数据库文件读取数据。
viii. 保存功能: 将当前数据保存至本地Access数据库文件中。

d) 条件与限制

本系统旨在方便老师们对数据的管理,同时为了能更有效地执行任务,用户应先将存在excel中的输入导入至Access数据库中以方便系统读取。

三、 总体设计

a) 处理流程

系统启动后将会直接进入主界面中,用户可以根据自己需要输入指令执行相应功能,在事务处理完毕后,用户可以通过退出指令退出系统。

b) 总体结构和模块

系统总体结构如下图所示:

c) 功能分配

i. 系统功能

  • 初始化系统
  • 刷新一级界面
  • 关闭系统

ii. 添加功能

  • 进入二级界面
  • 根据指令打开三级界面
  • 输入数据
  • 返回一级界面

iii. 删除功能

  • 进入二级界面
  • 根据指令打开三级界面
  • 确认编号/学号后删除数据
  • 返回一级界面

iv. 修改功能

  • 进入二级界面
  • 根据指令打开三级界面
  • 选择要修改的信息
  • 执行修改
  • 返回一级菜单

v. 查询功能

  • 进入二级菜单
  • 根据指令打开三级菜单
  • 根据编号/学号显示对应的信息
  • 返回一级菜单

vi. 显示全部功能

  • 进入二级菜单
  • 根据指令显示全部学生信息或课题信息

vii. 统计功能

  • 进入二级菜单
  • 根据指令进入三级菜单
  • 根据指令给出相关统计数据
  • 循环执行功能
  • 返回一级菜单

viii. 保存功能

  • 刷新界面
  • 确认是否保存
  • 执行相应功能
  • 返回一级菜单

ix. 读取功能

  • 刷新界面
  • 从Access数据库文件中读取数据
  • 刷新一级菜单

四、接口设计

a) 外部接口

i. 用户界面: 采用经典的Windows指令台风格,通过最简单的指令输入形式执行相应功能。
ii. 软件接口: 运行于Windows XP/7/8.1/10且具有Win32指令台的操作系统
iii. 硬件接口: 支持市面上常见的或更高档的微机和笔记本电脑。

b) 内部接口

i. 系统模块: 系统启动时自动调用,初始化界面后等待用户输入
ii. 数据插入模块: 由系统模块调用,启动后调用数据模块的增加功能
iii. 数据删除模块: 由系统模块调用,启动后调用数据模块的删除和查询功能
iv. 数据修改模块: 由系统模块调用,启动后调用数据模块的修改和查询功能
v. 数据查询模块: 由系统模块调用,启动后调用数据模块的查询功能
vi. 数据库模块: 由系统模块调用,启动后调用数据库连接模块。
vii. 数据库连接模块: 由数据库模块调用,启动后调用打开拦截、SQL语句查询、关闭连接等功能。
viii. 数据模块: 可由数据插入模块、数据删除模块、数据修改模块、数据查询模块等模块调用,启动后可根据需要调用增加、删除、修改、查询等功能。

五、 数据结构设计

a) 类结构设计

(此处仅展示方法签名,具体的实现写在相对应的.cpp文件中)

i. BinaryNode(二叉树节点)

template<class DataType>
struct BinaryNode
{DataType data;BinaryNode<DataType> *leftNode, *rightNode;BinaryNode<DataType>() { leftNode = rightNode = nullptr; }BinaryNode(DataType &element){leftNode = rightNode = nullptr;data = element;};
};

ii. BinaryTree(二叉排序树)

template<class DataType>
class BinaryTree
{
private:BinaryNode<DataType> * root;DataType findMin(BinaryNode<DataType> *bt);void Release(BinaryNode<DataType> *bt);void PreOrder(BinaryNode<DataType> *bt) const;void InOrder(BinaryNode<DataType> *bt) const;void PostOrder(BinaryNode<DataType> *bt) const;BinaryNode<DataType>* isFind(DataType &element, BinaryNode<DataType> *bt);void Delete(DataType &element, BinaryNode<DataType> *bt);int length;
public:BinaryTree() { length = 0; root = NULL; }~BinaryTree() { Release(root); }void Release() { this->Release(root); }void PreOrder();void InOrder();void PostOrder();void Insert(DataType &element);DataType isFind(DataType &element);void Delete(DataType &element);int Length() { return this->length; }
};

iii. CurriculumDesign(课程设计实体类)

class CurriculumDesign
{
private:string design_name;string design_dataStruct;string author;Score design_score;
public:CurriculumDesign();CurriculumDesign(string design_name, string design_dataStruct = "NULL",string author = "NULL");~CurriculumDesign();string getInfo();string writeToFile();//getter & setterstring get_design_name() { return this->design_name; }void set_design_name(string new_name) { this->design_name = new_name; }string get_design_dataStruct() { return this->design_dataStruct; }void set_design_dataStruct(string new_ds) { this->design_dataStruct = new_ds; }string get_author() { return this->author; }void set_author(string new_author) { this->author = new_author; }double get_design_score() { return this->design_score.get_total(); }void set_design_score(string type_score, double new_score);void set_design_score(Score score);// overloadfriend bool operator<(CurriculumDesign &left, CurriculumDesign &right);friend bool operator<(CurriculumDesign &left, double number);friend bool operator>(CurriculumDesign &left, CurriculumDesign &right);friend bool operator>(CurriculumDesign &left, double number);friend bool operator==(CurriculumDesign &left, CurriculumDesign &right);friend bool operator==(CurriculumDesign &left, double number);friend ostream &operator<<(ostream &out, CurriculumDesign &temp);
};

iv. Student(学生实体类)

class Student
{
private:string stu_name;int stu_ID;string stu_class;string design_name;
public:Student();Student(int stu_ID, string stu_name = "NULL", string stu_class = "NULL",string design_name = "NULL") :stu_ID(stu_ID), stu_name(stu_name), stu_class(stu_class),design_name(design_name) {}Student(const Student &obj);~Student();// getter & setterstring get_stu_name() { return this->stu_name; }void set_stu_name(string new_name) { this->stu_name = new_name; }int get_stu_ID() { return this->stu_ID; }void set_stu_ID(int new_ID) { this->stu_ID = new_ID; }string get_stu_class() { return this->stu_class; }void set_stu_class(string new_class) { this->stu_class = new_class; }string get_design_name() { return this->design_name; }void set_design_name(string new_name) { this->design_name = new_name; }string getInfo();string writeToFile();// overloadfriend bool operator<(Student &left, Student &right);friend bool operator>(Student &left, Student &right);friend bool operator==(Student &left, Student &right);friend ostream &operator<<(ostream &out, Student &temp);
};

v. Management(管理类,Service部分)

/*** 每添加一个学生信息就对应添加一个课题信息,课题的作者即为学生名* 课题不可删除,每删除一个学生就对应删除一个课题* 学生的信息最初先添加在链表里,在课题打分后再添加到二叉树中进行排序* /class Management
{
private:BinaryTree<CurriculumDesign> *design; // 存储所有已打分的课设信息StudentList *stu_list; // 存储所有学生的信息CurriculumDesignList *design_list; // 存储所有课设的信息
public:Management();~Management();void Insert(Student &stu, CurriculumDesign &design);bool Delete(int stu_ID);string Edit(int stu_ID, int new_info);string Edit(int stu_ID, string type_info, string new_info);void SearchAllStudent();void SearchAllDesign();bool Search(int stu_ID);bool Search(string design_name);Student Get(int stu_ID);CurriculumDesign Get(string design_name);string* InfoToFile_Design();string* InfoToFile_Student();int numOfStudent() { return stu_list->Length(); }int numOfDesign() { return design_list->Length(); }int numOfMarkedDesign();int numOfPassDesign();void Mark(int stu_ID, Score score);void MultipleMark();void RankingList();void ReadFile(string *str_stu, string *str_design);
};

vi. CurriculumDesignManagement (main函数部分方法)

Management admin; // 管理类实例化对象void title(); // 标题
void footer(); // 结束语
void menu(); // 菜单
void Insert(); // 添加信息
void Delete(); // 删除信息
void Edit(); // 修改信息
void Search(); // 查询信息
int Calc_numOfStudent() { return admin.numOfStudent(); } // 统计学生总人数
int Calc_numOfMarkedDesign() { return admin.numOfMarkedDesign(); } // 统计已打分的课程数
int Calc_numOfPassDesign() { return admin.numOfPassDesign(); } // 统计及格人数
void SimpleMark();
void MultipleMark();
Score Grade();
void Save(); // 保存文件
void Load(); // 读取文件
bool isNumber(string str); // 判断str是否为纯数字串
int main();

b) 数据库结构设计

数据库采用Microsoft Access 2017,表结构设计如下:
i. Student

字段名 类型 字段长度 备注
stu_name varchar 50 主键
stu_class varchar 50
stu_ID varchar 50
design_name varchar 50

ii.CurriculumDesign

字段名 类型 字段长度 备注
design_name varchar 50 主键
design_dataStruct varchar 50
author varchar 50 学生姓名
design_score float -

c) 数据结构与程序的关系

i. 系统模块: 调用全局变量admin,根据用户输入的指令cmd来调用相应的函数
ii. 数据插入模块: 根据指令cmd调用admin中的两条插入函数。
iii. 数据删除模块: 根据指令cmd调用admin中的两条删除函数。
iv. 数据查询模块: 根据指令cmd调用admin中的四条查询函数。
v. 数据修改模块: 根据指令cmd调用admin中的两条编辑函数。

六、 运行设计

a) 运行模块的组合

所有类与函数均用英文全称命名,类内参数采用“[类名缩写][信息类型][数据名]”的格式来命名。如:学生的基本信息姓名的参数名为“stu_info_name”。

b) 运行控制

本软件控制流程如下:首先由用户启动软件,之后根据屏幕上的提示输入指令,系统根据指令触发事件及调用相关模块。

c) 运行时间

每个功能都快的感受不出来

七、 出错设计处理

a) 本软件在系统关键处采用try-catch代码块将危险代码包围起来,保证用户触发异常时系统可以正常运行下去。
b) 在用户执行删除或修改等破坏性操作时,系统将会提供确认机制。

八、 安全保密设计

此处留作日后使用,用户安全与软件安全相关部分均需记载于此。

九、 维护设计

本软件完全依照RUP过程开发并充分考虑了软件的可维护性,详细编写了概要设计文档,以利于未来的二次开发。

十、GitHub链接

有鉴于有人找我要这份课设的代码,故我将项目post到了我的Github项目中,需要的话直接clone下来就好,使用VS打开.sln文件即可加载整个项目,不过由于数据库已经丢失了,相关的部分可能需要同学们自己重新设计。

课程设计管理系统(https://github.com/w8692736/CurriculumDesign.git)

2018数据结构课程设计报告相关推荐

  1. c语言数据结构课程设计停车场管理系统,数据结构课程设计报告停车场管理系统...

    <数据结构课程设计报告停车场管理系统>由会员分享,可在线阅读,更多相关<数据结构课程设计报告停车场管理系统(8页珍藏版)>请在人人文库网上搜索. 1.数据结构课程设计报告系 别 ...

  2. c语言实现一元多项式程序报告设计,数据结构课程设计报告一元多项式的计算..doc...

    数据结构课程设计报告一元多项式的计算. 题目:一元多项式的计算 --链表 摘要(题目) 一元多项式计算 任务:能够按照指数降序排列建立并输出多项式: 能够完成两个多项式的相加.相减,并将结果输入: 目 ...

  3. 数据结构课程设计报告(附代码)

    数据结构课程设计报告 一.实训目的 通过课程设计,学会运用数据结构知识,针对具体应用,自己设计合理数据结构,确定存储结构,并能设计具体操作算法,选择使用具体语言进行实现.掌握C++较复杂程序的组织和设 ...

  4. c语言数据结构课程设计电梯,数据结构课程设计报告(模拟电梯).doc

    数据结构课程设计报告(模拟电梯) 山东理工大学计算机学院 课 程 设 计 (数据结构) 班 级姓 名学 号 指导教师 二〇一二年一月十日 课程设计任务书及成绩评定 课题名称电 梯 模 拟 Ⅰ.题目的目 ...

  5. 数据结构课程设计报告-职工信息管理系统

    "数据结构"课程设计报告 系 (院):           信息工程学院 设计题目:           员工管理系统 专业班级:          计算机科学与技术1401B 小 ...

  6. 【“BattenSnakexjp4.1”数据结构课程设计报告】

    烟台大学计算机与控制工程学院 "BattenSnakexjp4.1"数据结构课程设计报告 计146-2 徐吉平 版权所有

  7. 【数据结构课程设计报告】电话号码查询系统(Java实现)

    数据结构课程设计报告 电话号码查询系统 数据结构课程设计报告 一.需求分析 二.系统功能划分及设计 1.存储结构设计 2.系统的功能架构设计 3.模块设计 3.代码实现 一.需求分析 问题描述:路径规 ...

  8. 计算机课程设计收费管理系统,数据结构课程设计报告---收费停车场管理系统

    数据结构课程设计报告---收费停车场管理系统 (20页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 XX大学计算机与电子 信息学院< ...

  9. 公交换乘系统c语言,数据结构课程设计报告(公交换乘).docx

    课 程 设 计 报 告 题目: 武昌地区公交查询与换乘推荐 课程名称: 数据结构课程设计 专业班级: 学 号: 姓 名: 指导教师: 报告日期: 计算机科学与技术学院 任 务 书 设计内容 掌握图.查 ...

最新文章

  1. Ubuntu adb 报错:no permissions (user in plugdev group; are your udev rules wrong?);
  2. python3 读取txt替换、n_从Python2迁移到Python3实战(一) pyupgrade
  3. [转载]Lua和C++交互详细总结
  4. Mysql 常用函数(19)- mod 函数
  5. JSP使用JSON传递数据,注意避免中文乱码
  6. 函数perror、strerror
  7. Expected MultipartHttpServletRequest: is a MultipartResolver configured方案。
  8. python画五角星代码_Python第八课 绘制五角星1.0
  9. vue中页面跳转传值_vue 页面跳转传参
  10. Spring核心——MessageSource实现国际化
  11. MIS系统权限控制的一个简便方法
  12. Asp.net WebApi版本控制
  13. 各种音视频编解码学习详解之 编解码学习笔记(三):Mpeg系列——Mpeg 1和Mpeg 2
  14. Ubuntu 商店无法安装应用
  15. 【Calcite】Apache Calcite 框架初探及概念详解
  16. 国外java_Java开发必知道的国外10大网站
  17. 【云云怪】第3个项目:弈厢棋苑
  18. d3.js 刷新折线图(包括坐标轴及路径的刷新及信息点提示)
  19. Unity 之 ShaderGraph Utility节点解析汇总
  20. 八叉树和十六叉树结构

热门文章

  1. Collection集合
  2. 线性代数代码实现(二)上三角矩阵(C++)
  3. SQL中CONVERT()函数用法详解
  4. 今日金融词汇---仓位,是什么?
  5. 工厂(Factory)模式
  6. 东北大学计算机技术代号,东北大学代号学校代号
  7. 计算机技术交流群QQ:69706169,电脑维护故障排除,网络,通信,交换,电子等欢迎加入!...
  8. UVa-11212编辑书稿
  9. 一个电视剧男孩计算机专业的,杨紫新剧化身计算机天才,男主颜值爆表,又是一部爆款剧!...
  10. Jmeter系列(68)- BeanShell 内置变量 prev