精华内容
下载资源
问答
  • 电子设计竞赛设计报告电子设计竞赛设计报告电子设计竞赛设计报告电子设计竞赛设计报告电子设计竞赛设计报告电子设计竞赛设计报告电子设计竞赛设计报告
  • Java 课程设计报告Java 课程设计报告Java 课程设计报告Java 课程设计报告Java 课程设计报告
  • 智能小智能小车设计报告设计报告智能小车设计报告智能小车设计报告
  • 2018数据结构课程设计报告

    万次阅读 多人点赞 2018-03-24 16:32:59
    本文是一份数据结构课程设计报告,旨在为各位的课设设计提供一条思路。

    声明:本文只是一份数据结构课程设计报告,可为各位的课设设计提供简明思路,但它不属于软件设计流程中任何一个环节的说明文档,请勿将其当成需求分析说明书做要求或使用。该项目的内容是展示在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 & setter
    	string 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);
    
    	// overload
    	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 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 & setter
    	string 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();
    
    	// overload
    	friend 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_namevarchar50主键
    stu_classvarchar50
    stu_IDvarchar50
    design_namevarchar50

    ii.CurriculumDesign

    字段名类型字段长度备注
    design_namevarchar50主键
    design_dataStructvarchar50
    authorvarchar50学生姓名
    design_scorefloat-

    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)

    展开全文
  • C语言图书管理系统设计报告

    万次阅读 多人点赞 2017-06-20 17:37:54
    源代码:https://blog.csdn.net/k_young1997/article/details/73480766 XXXX大学 ...C语言课程设计报告 题 目 图书管理系统设计 专业班级 XXXX级计算机科学与技术本科X班 组 别 计科第...

     

    源代码:https://blog.csdn.net/k_young1997/article/details/73480766

     

     

     

    XXXX大学

     

    C语言课程设计报告

     

     

     

     

     

    题    目            图书管理系统设计         

    专业班级     XXXX级计算机科学与技术本科X班

    组    别            计科第29组               

    学生姓名          XXX、XXX、XXX           

    (系)           信息工程系               

    指导教师(职称)       XXX(教授)          

    完成时间            xxxx年x月xx日          

     

    XXX大学

    课程设计任务书

     

    题目                图书管理系统设计                  

    班级              xxxx级计算机科学与技术本科x班     

    学号         xxxxxxxxxxxx         姓名      xxx      

    学号         xxxxxxxxxxxx         姓名      xxx      

    学号         xxxxxxxxxxxx         姓名      xxx      

    一、主要内容:

    本课程设计结合本学期所学C语言知识,数组、函数、结构体、指针、链表、文件读取操作等等,准备设计开发一个简单的图书管理系统。设计开发这个系统需要用到链表、文件读取操作、结构体、函数、指针、等C语言知识。本课程设计将会实现对图书信息的账号登录、注册账号、密码修改、密码查找、查找、输出、排序、备份、恢复、图书借阅和归还功能。本着简单、易用的设计原则,本课程设计在尽量优化界面在保证输入输出美观的同时又不失友好的交互界面。

    本次设计主要学习内容包括:

    (一)进一步学习并熟练掌握C语言语法和编程思想。

    (二)学习C语言提供的库函数,熟悉CodeBlocks的开发工具。

    (三)学习C语言函数、链表、结构体、文件读取、指针等知识。

    (四)学习软件的设计与开发过程中所需要思想和细节。

    二、基本要求:

    (一)质量要求

    (1)图书管理系统的基本功能模块的设计应包括:账号登录和修改、图书信息的浏览和保存、图书的借阅和归还。

    (2)对图书管理系统设计并进行调试、修复、完善、测试。测试图书信息的输入输出是否正确、测试文件的读取与存储是否正常、测试账号切换后是否各项功能是否正常运行、测试评估界面是否合理,友好。

    (3)定期主动向指导教师汇报任务进度,认真填写相关报告文档。

    (4)按时完成各阶段工作,不突击,不抄袭。

    (二)进度要求

    (2)明确课程设计任务,搜集资料:xxxx年x月xx日—x月xx日。

    (3)完成程序的设计与实现,撰写课程设计论文初稿:xxxx年x月xx日—x月xx日。

    (4)与指导教师沟通,完成课程设计论文定稿:xxxx年x月xx日—xxxx年x月xx日。

    (5)进入课程设计论文审阅阶段,准备答辩:xxxx年x月xx日—x月xx日。

     

    三、主要参考资料:

    [1] 甘勇,李晔,卢冰.中国铁道出版.《C语言程序设计(第二版) 》 

    [2] 河南工业大学同学的图书管理系统的功能的借鉴。

    [3] 啊哈磊.人民邮电出版社.《啊哈!算法》

    [4] 程杰,清华大学出版社.《大话数据结构》

     

     

     完 成 期 限:     xxxx年x月xx日 

    指导教师签名:                 

     

    年   月   日

     

     

    目   录

    1概述.1

    1.1 设计思想. 1

    1.2 设计原则. 1

    1.3 课程设计报告内容及分工情况. 1

    1.3.1 课程设计报告内容. 1

    1.3.2 课程设计分工情况. 2

    2总体设计.3

    2.1 功能模块图. 3

    2.2 主函数 main()3

    2.3 程序流程图. 4

    3详细设计.5

    3.1函数.5

    3.2函数流程图.7

    4运行结果与调试.13

    4.1 运行结果. 13

    4.2 软件调试. 15

    结束语.17

    参考资料.18

    附录.19

     

    1概述

     

    1.1设计思想

    (1)该系统的设计分成几个相对独立的模块,这些模块都进行集中式管理。

    (2)分层的模块化程序设计思想,整个系统采用模块化结构设计作为应用程序,有较强的可操作性和扩展性。

    (3)合理的数据设计,在应用系统设计中,相对独立的模块间以数据相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性 。     

    1.2设计原则

    为了使本系统功能齐全完备,操作简便,最大限度的提高用户的使用的体验,从而满足用户的实际需要,在设计开发过程中遵循了如下原则:

    (1)合法性原则:规范录入各种图书信息和各种数据,对用户的账号信息进行规范保存。

    (2)实用性原则:根据用户对图书信息浏览和借阅的基本需求设计各种功能,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。

    (3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。

    (4)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护,即可能做好代码注释工作。

     

    1.3 课程设计报告内容及分工情况

    1.3.1课程设计报告内容

    (1)系统功能模块结构图和程序流程图

    (2)数据结构设计及用法说明

    (3)程序结构(画功能模块图或流程图)

    (4)各模块的功能

    (5).实验结果(包括输入数据和输出结果)

    (6)设计体会

    (7)参考文献

     

    1.3.2 课程设计分工情况

    本组共有3人,具体分工情况如下:

    (1)学号:xxxxxxxxxxx,姓名:xxx,具体负责xxxxxx。

    (2)学号:xxxxxxxxxxx,姓名:xxx,具体负责xxxxxx。

    (3)学号:xxxxxxxxxxx,姓名:xxx,具体负责xxxxxx。

     

     

    2总体设计

    2.1功能模块图

           本图书管理系统分为三个功能模块,分别是账号管理功能、图书信息管理功能、图书借还管理功能。账号管理功能可以进行账号登录、注册账号、找回密码、修改密码:图书信息管理功能可以对图书信息进行查找、排序、修改、恢复、和备份功能:图书借还管理功能可以查询用户的借书记录、借书、还书功能。功能模块图如图2-1所示。

     

     

    图2-1图书管理系统模块图

    2.2主函数 main()                                        

    函数的功能:用于联系各个功能函数模块,以及退出程序时的退出画面提示。

    函数的入口:整个程序是从主函数开始的。

    函数的出口:当从main()的ove函数开始中进入,即显示出欢迎使用界面;跳出while循环,然后退出main()函数,即:退出整个程序。

    函数调用关系:该函数不被其它函数调用。

     

    2.3程序流程图

           本图书管理系统在启动后会先进入登录界面进行登录或各种账号操作,然后进入图书信息管理、图书借还管理等实用性功能的操作。程序流程图如图2-2所示。


    图2-2图书管理系统流程图

    3       详细设计

    3.1      函数

    (1)功能函数ling()

    函数的功能:登录账号

    函数的入口:从main()中进入。

    函数调用关系:被主函数调用。

    函数的出口:当账号登录成功返回1然后结束该函数,或输入密码错误超过三次结束结束整个程序。

    (2)功能函数FindByNum()

    函数的功能:按书号对图书进行查找并输出。

    函数的入口:程序从Find()的switch()开关结构中进入,即sclele的值为1时,开始进入该函数,进入函数后,在存储图书信息的stu结构数组中进行查找,找到后进行输出,若没找到则输出“未找到该数”。

    函数调用关系:被Find()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:当输出结果信息用printf()标准输出到屏幕上,然后结束该函数,而执行Find()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (3)功能函数SortByScore()

    函数的功能:对所有图书信息按书名的首字母进行排序,并保存到文件“缓存区”中。

    函数的入口:从Sort()的switch()开关结构中进入,即sexh的值为1的时侯,进入该函数,开始对图书信息按书名的首字母进行排序,然后将排序结果保存到文件“缓存区”中。

    函数调用关系:被Sort()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:把“排序完成”用printf()标准输出到屏幕上,然后结束该函数,而执行Sort()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (4)功能函数output()

    函数的功能:输出所有图书信息

    函数的入口:从Find()的switch()开关结构中进入,即sclele的值为4时,进入该函数。并调用PrintRecord()函数对每一条图书信息进行输出。

    函数调用关系:被Find()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:将所有图书信息都输入到屏幕上后,执行Find()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (5)功能函数Huifu ()

    函数的功能:将所有图书的信息恢复至备份时的状态

    函数的入口:从Menu()的switch()开关结构中进入,即select的值为4时,进入该函数。用freopen("图书信息库.txt","r",stdin)将里边的所有图书信息都存入内存,然后再调用save()将所有图书信息都存入到“缓存区”中。

    函数调用关系:被Menu()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口:将所有图书信息都存入到“缓存区”中后,执行Menu()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (6)功能函数BorrowBook()

    函数的功能:借阅图书

    函数的入口:从Borrow()的switch()开关结构中进入,即shl的值为2时,进入该函数。之后对用户的信誉值进行判断,若低于60将无法借书。然后调用FindByName()函数对所借图书进行搜索,若存在则输入借书时间,否则借书失败。

    函数调用关系:被Borrow()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口: 将借书结果输入到屏幕上后,执行Borrow ()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    (7)功能函数SendBook ()

    函数的功能:归还图书     

    函数的入口:从Borrow ()的switch()开关结构中进入,即shl的值为3时,进入该函数。之后先判断该用户是否有借书记录,并调用FindByName()函数找到还的图书并对其数量进行修改,最后判断是否按期归还图书和图书有无破损。

    函数调用关系:被Borrow ()函数调用。由switch()开关结构中进入,并在文中无返回值的空值void函数。

    函数的出口: 还书完成后后,执行Borrow()函数中“break;”跳出switch()开关函数,继续执行while循环结构。

    3.2      函数流程图

    (1)账号登录流程如图3-1所示。


    图3-1 账号登录流程图

    (2)按书号查找图书流程如图3-2所示。


     图3-2按书号查找流程图

    (3)按书名首字母排序流程图如图3-3所示 。


    图3-3按书名首字母排序流程图

    (4)输出所有图书信息流程如图3-4所示。


    图3-4输出所有图书信息流程图

    (5)恢复备份功能流程如图3-5所示。


    图3-5恢复备份流程图

    (6)借阅图书流程如图3-6所示。

     

           图3-6借阅图书流程图

    (7)归还图书流程如图3-7所示。


            图3-7归还图书流程图

     

     

     4、运行结果与调试

    4.1运行结果

    (1)在程序开始是进入登录界面进行登录界面或选择切换账号时输出登录界面。该界面可以进行登录操作、注册新账号、找回账号密码、修改密码和退出系统。

    账号登录界面如图4-1所示。

        
         

    图4-1 账号登陆界面

    (2)该界面为主界面,在登录完成后或者从下一级界面返回后输出该界面。该主界面可以选择图书信息管理功能、图书借还功能、查看系统功能介绍、开发人员信息和退出系统的操作。主界面如图4-2所示。

      
       

    图4-2 主界面

    (3)该界面为图书管理功能的主界面,可以选择执行查找、排序、修改、恢复图书信息、备份图书信息的操作、返回上一级菜单的功能。图书信息管理功能界面如图4-3所示。

     
         

    图4-3图书信息管理功能界面

    (4)该界面可以实现图书信息查找功能,可以按书号查找、按书名查找、按作者查找、查看全部图书信息、返回上一级菜单的功能。查找功能界面如图4-4所示。

                

          图4-4 查找功能界面

    (5)该界面可以进行排序的操作。可以进行按书名首字母排序、按图书单价升序排序、按图书单价降序排序,还可以返回上一级菜单。排序功能是在内存中进行,所以不进行输出。排序功能界面如图4-5所示。

                 

        图4-5排序功能界面

    (6)该界面可以实现添加图书、删除图书、删除全部图书信息、返回上一级菜单的功能。修改功能界面如图4-6所示。

              

    图4-6修改功能界面

    (7)该界面可以实现对用户借书记录查询、图书借阅、图书归还、返回上一级菜单的功能。图书借还管理功能界面如图4-7所示。

                

    图4-7图书借还管理功能界面

    4软件调试

    (1)每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过老会长的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:每次在执行完讲数据保存到文件的函数后都会输出紊乱。经过多次调试和修改后,发现把是因为freopen(”CON”,stdout)运行不稳定导致,在更换了保存数据的方法后结决了此问题。

    (2)在增加了切换账号功能后,在创建新账号后保存到文件的用户借还书记录总是出错但内存中没错,经过调试发现是因为在新增账号时用于存储新账号借还书记录的指针名与一个变量名相同造成每次都判断错误。最后更换了变量名,并使该指针每次使用前都指向NULL。

    (3)在借书时不能判断是因为图书数量不足导致不能借阅还是因为没用该图书导致的不能借阅,最后给每种情况标记变量都设置了一不同的值来区分两种不同的情况。

    (4)最开始在每次关闭程序后在下次使用前需要手动恢复文件中的数据,不能连续的使用数据,最后加了一个文件来保存各类数据的数量以使数据能够连续自主的调用,不需要再人工修改。

     

     

    结束语

     

    本系统包含51个函数,实现了图书管理系统所需的基本功能。系统功能大致分为三个模块,分别是登录模块、图书信息管理模块和图书借还模块。启动程序后首先执行的是登录功能。在此功能中可以实现账号登录、注册账号、找回账号密码、修改账号密码功能。登录时,若输入密码错误次数达到三次系统将自动关闭。在注册账号时若注册的账号已存在则不能再进行注册。修改密码时增加了验证码功能。在图书信息管理模块中可以进行图书的查找、排序、添加、删除、备份图书信息、恢复图书信息和切换账号功能。在图书借还功能模块可以进行图书的借阅、归还、借书记录查询功能。本系统在信息存储时采用了两种方式。在存储图书信息和账号信息时用的是结构数组,在存储用户借书记录时用的是链表。通过此次图书管理系统的设计熟练了结构数组、链表、文件的操作,同时对编写小型的系统有了一定的了解,对于细节方面考虑的比以前有很大提升。

     

    xxx:在该设计中主要完成了所有代码的实现,并最终调试实现了该图书管理系统的全部功能并完成了大部分的设计报告。在设计的过程中熟练了对文件的各种操作,链表和结构数组的使用,清屏函数和暂停函数的使用,对做一个项目的过程有了一个大概的认识,知道了大致的规划。在设计过程中发现一些文件的操作和清屏函数会有冲突,通过改变对文件的操作解决了此问题;

    xxx:除了xxx设计的这个图书管理系统,我自己也尝试着设计了一个图书管理系统的功能,因此也发现了很多问题,比如说:在用add()函数添加新增图书信息时,我就忘了字符型数据本身会吃掉回车的这一特点,忘了在%c前面加上空格,导致程序在循环的过程中一直无法正常显示结果。但是,通过仔细耐心的检查与对错误的分析,又在课本的相关章节进行了查阅,最终发现了这一问题。同时,我更加熟悉了结构体的使用,对函数的调用方式更加清楚。还有就是初步了解了函数指针的概念,能够使用基础的函数指针。同时,这也是我第一次尝试画各种各样的流程图,虽然画的不好,但这确实是我的第一次尝试,也觉得充满了乐趣。

    xxx:在本系统的设计中我参加设计了少量函数语句以及制作流程图等任务,在这次的设计前我原本对函数和结构体等了解并不太清楚,通过这次的设计我清楚了这些语句的运用,并且我学会了文件的操作,在文件的修改等地方出现了问题,后来通过查阅资料和讨论解决了这个问题。

    参考资料

     

    [1] 《C语言程序设计(第二版)》,甘勇等编著,中国铁道出版社,2015年9月

     

    [2] 《C语言程序设计》,苏小红等主编,高等教育出版社,2011年

    [3] 《C和指针》,徐波译,人民邮电出版社,2008年

    [4] 《C Primer Plus第6版 中文版》,姜佑 译,人民邮电出版社,2016年

    [5] 《大话数据结构》,程杰,清华大学出版社,2011年6月

    [6] 《啊哈!算法》,啊哈磊,人民邮电出版社

     

     

    附录

     

    源代码

     

     

     

    展开全文
  • web课程设计报告 1 概述 1 1.1 设计目的 1 1.2 设计任务 1 1.3 可行性分析 1 2 支撑环境规划 2 3 系统目标和设计原则 2 3.1 系统目标 2 3.2 设计原则 2 4 需求分析 3 4.1 系统任务 3 4.2 系统功能 3 4.3 系统流程图 ...
  • C++课程设计报告及源码C++课程设计报告及源码C++课程设计报告及源码C++课程设计报告及源码C++课程设计报告及源码C++课程设计报告及源码C++课程设计报告及源码C++课程设计报告及源码
  • Java课程设计报告记事本程序 Java课程设计报告记事本程序 Java课程设计报告记事本程序 Java课程设计报告记事本程序 Java课程设计报告记事本程序 Java课程设计报告记事本程序
  • C语言课程设计报告-菜单设计

    万次阅读 多人点赞 2019-07-02 18:55:03
    源代码:https://blog.csdn.net/queen00000/article/details/94468911 xxx大学 C语言课程设计报告 ...

     

     

     

    源代码:https://blog.csdn.net/queen00000/article/details/94468911

     

     

                                        xxx大学

     

                                     C语言课程设计报告

     

     

                                                      题    目            菜单设计                

                                                      专业班级                                        

                                                       组    别                                          

                                                       学生姓名                                        

                                                       院 (系)                                       

                                                       指导教师(职称)                          

                                                       完成时间                                        

     

     

     

                                         课程设计任务书

     

     

                                                         题目               菜单设计                       

                                                         班级                                                      

                                                         学号                           姓名                                       

                                                         学号                           姓名                    

                                                         学号                           姓名                    

     

     

     

    • 主要内容:

    本课程设计结合本学期所学C语言知识,数组、函数、结构体、指针、链表、文件读取操作等等,准备设计开发一个简单的图书管理系统。设计开发这个系统需要用到链表、文件读取操作、结构体、函数、指针、等C语言知识。本课程设计将会实现对菜单的定义、菜单的显示、菜单选项的控制、及退出菜单等功能。本着简单、易用的设计原则,本课程设计在尽量优化界面在保证输入输出美观的同时又不失友好的交互界面。

    本次设计主要学习内容包括:

    (一)进一步学习并熟练掌握C语言语法和编程思想。

    (二)学习C语言提供的库函数,熟悉CodeBlocks的开发工具。

    (三)学习C语言函数、链表、结构体、文件读取、指针等知识。

    (四)学习软件的设计与开发过程中所需要思想和细节。

    二、基本要求:

    (一)质量要求

    (1)菜单的基本功能模块的设计应包括:显示菜单、定义菜单、画出菜单、菜单选项的控制和退出菜单。

    (2)菜单设计并进行调试、修复、完善、测试。测试主菜单和下拉菜单是否正确、测试信息的读取与存储是否正常、测试退出菜单后是否各项功能是否正常运行、测试评估界面是否合理,友好。

    (3)定期主动向指导教师汇报任务进度,认真填写相关报告文档。

    (4)按时完成各阶段工作,不突击,不抄袭。

    (二)进度要求

    (2)明确课程设计任务,搜集资料:2018年3月16日—3月30日。

    (3)完成程序的设计与实现,撰写课程设计论文初稿:2018年3月31日—5月31日。

    (4)与指导教师沟通,完成课程设计论文定稿:2018年6月1日—2017年6月8日。

    (5)进入课程设计论文审阅阶段,准备答辩:2018年6月9日—6月22日。

     

    三、主要参考资料:

    [1] 甘勇,李晔,卢冰.中国铁道出版.《C语言程序设计(第二版) 》  

    [2] 河南工业大学同学的图书管理系统的功能的借鉴。

    [3] 啊哈磊.人民邮电出版社.《啊哈!算法》

    [4] 程杰,清华大学出版社.《大话数据结构》

     

     

                                                                                      完 成 期 限:                         

                                                                                     指导教师签名:

     

                                                                                                                       年   月   日

     

     

     

                                                              目录

    1.1 设计思想 .............................................................................................................................2

    1.2 设计原则 .............................................................................................................................2

    1.3 课程设计报告内容及分工情况 .............................................................................................3

    1.3.1 课程设计报告内容 ............................................................................................................3

    1.3.2 课程设计分工情况 ............................................................................................................3

    2总体设计 ..................................................................................................................................4

    2.1 功能模块图 ...........................................................................................................................4

    2.2 主函数 main() .......................................................................................................................4

    3 详细设计 ...................................................................................................................................6

    4运行结果与调试 .........................................................................................................................15

    4.1运行结果: .............................................................................................................................15

    4-2软件调试 .................................................................................................................................17

    结束语 .........................................................................................................................................18

    参考资料 ......................................................................................................................................19

     

    1概述

    1.1 设计思想

        (1)该系统的设计分成几个相对独立的模块,这些模块都进行集中式管理。

        (2)分层的模块化程序设计思想,整个系统采用模块化结构设计作为应用程序,有较强的可操作性和扩展性。

        (3)合理的数据设计,在应用系统设计中,相对独立的模块间以数据相互连接,使各模块间的耦合性较低,方便系统运行,提高系统安全性 。

    1.2 设计原则

    为了使本系统功能齐全完备,操作简便,最大限度的提高用户的使用的体验,从而满足用户的实 际需要,在设计开发过程中遵循了如下原则:

         (1)合法性原则:规范录入各种学生信息和各种数据,对用户的账号信息进行规范保存。

         (2)实用性原则:根据用户对菜单信息浏览和登陆和查询的基本需求设计各种功能,并能够处理一些特殊情况的要求,此外,尽可能预留空间,以便扩充功能。

         (3)易操作原则:要求设计的系统功能齐全,界面友好,操作方便,必要的地方进行提示。

         (4)源程序可读性原则:为了便于其他设计,维护人员读懂代码或以后的代码修改,软件升级维护, 即可能做好代码注释工作。

     

    1.3 课程设计报告内容及分工情况

    1.3.1 课程设计报告内容

        (1)系统功能模块结构图

        (2)数据结构设计及用法说明

        (3)程序结构(画功能模块图或流程图)

        (4)各模块的功能

        (5)实验结果(包括输入数据和输出结果)

        (6)设计体会

        (7)参考文献

     

    1.3.2 课程设计分工情况

    本组共有3人,具体分工情况如下:

              (1)学号:   ,姓名:    ,具体负责写全部代码和功能实现并完成大部分课程设计报告。

              (2)学号:   ,姓名:   ,具体负责流程图的制作。

              (3)学号:   ,姓名:   ,具体负责流程图的制作。

     

     

     

    2 总体设计

    2.1 功能模块图

    本学生成绩管理菜单系统分为九个功能模块,分别是录入,删除,查找,修改,增加,排序,统计,存盘功能。功能模块图如图2-1所示。

    2.2 主函数 main()

    函数的功能:用于联系各个功能函数模块,以及退出程序时的退出画面提示。

    函数的入口:整个程序是从主函数开始的。

     函数的出口:当从main()的ove函数开始中进入,即显示出欢迎使用界面; 跳出while循环,然后退出main()函数,即:退出整个程序。

    函数调用关系:该函数不被其它函数调用。

     

     

                                                                            图2.1学生成绩管理菜单系统模块图

     

    3 详细设计

     

    3.1 函数

       (1)函数void ShowMenu( )

     调用dos命令cls清屏,然后直接用printf语句输出界面即可。C语言中system函数可以执行DOS命令。

     

       (2)函数void PrintTitle( )

     用printf语句输出表头“学号 姓名 语文 数学 英语 C语言 总分 平均名次” 中,在程序中要注意表头和具体的数据对其。

     

      (3)函数PrintData(Node *p)

    将p指定的结构体信息输出,具体的数据项应该和PrintTitle( )函数中输出的数据项对其。

     

      (4)函数Node* Locate(Link list,char findstring[],char nameornum[] )

     nameornum中只能存放“num”或“name”,当存放的是“num”时则按学号查找,当存放的是“name”时则按姓名查找。

     

        (5)函数void StringInput(char *t, int lens, char *msg) 

    输入字符串时进行长度验证,如果不符合要求则提示信息msg后让用户再次输入。在函数内部定义一个临时缓冲区char str[16],接收用户输入,当输入的字符串长度大于lens时,则再次要求用户输入,并给出提示信息。

        (6)函数int NumberIput(char *msg)

    要求输入某一范围内的数字,其算法思想和StringIput( )函数类似。

     

        (7)函数void DisplayAll(Link list)

    该函数显示链表中,所有学生的信息。先输出表头,然后输出链表中学生的数据即可。

       (8)函数void AddStudent(Link lidt)

    该函数用于输入学生信息,先将指针移动到链表的末尾,新加入的学生信息放在链表的末尾。因为系统中不会有两个相同学好的学生,录入数据时,首先判断输入的学号是否已经存在,如果用户录入了已经存在的学号,则给用户提示重新录入。学号正常后,则申请节点空间,录入其他数据项,再将该节点加入的链表的末尾。

     

       (9)函数void Insert(Link list)

    该函数在某一特定学号之后插入一个学生的信息。

    (10)函数void Query(Link list)

    该函数是先按学号或按姓名查找。根据用户的输入确定按什么查找,在这里调用前面已定义的locat( )函数即可实现查询,然后将查询到的结果显示出来。

     (11)函数void Delete(Link list)

    该函数实现按学号或者按姓名删除某个节点。根据用户的输入确定按什么进行删除。

     (12)函数void Modify(Link list)

    该函数用来修改某个学生的信息,注意学号不能被修改。

     (13)函数void Statistic(Link list)

    该函数显示该班的总分第一和单科第一的人,统计各科不及格人数。

       (14)函数void Sort(Link list)

    该函数实现将链表中的节点按总分从高到低排序。本项目使用插入排序的方法,从本质上来看,链表的排序和数组的排序思想相同,但程序表达比数组稍微复杂。

      (15)函数viod Save(Linl list)

    该函数实现将链表中的节点按顺序保存到文件。每一个学生的数据是一个结构体,不同学生的数据在内存中的大小是相同的,用sizeof(Node)可以计算出来。

     

     

     

    3.2函数流程图

    (1)Locate函数主流程

     

     

     

    (2)定位节点的算法

     

     

    (3)StringInput函数算法

     

     

    (4)DisplayAll函数算法

     

    (5)AddStudent算法

     

     

    (6)Query算法

    4运行结果与调试

    4.1运行结果:

     

    1. 在程序开始的时候,是登陆界面。该界面可以进行添加学生信息、浏览学生信息、查询学生信息、修改学生信息、删除学生信息等。界面如图4-1所示。

                                                                                                   4-1

     

    (2)输入1,就会弹出添加信息界面,根据提示信息,进行完善即可。如图4-2所示。

                                                                                                 4-2

     

    (3)在存入信息的基础上,选择2,即浏览学生信息,即出现自己所添加的页面,如图4-3所示。

                                                                                                 4-3

     

     

     

    4.2软件调试

    (1) 每个选择界面之后,前一屏幕的内容依旧存在,影响界面的美观;经过老会长的帮助及上网搜索,发现利用“system(“cls”);”可以消去前一屏幕的内容;然而接下来又出现新的问题:每次在执行完讲数据保存到文件的函数后都会输出紊乱。经过多次调试和修改后,发现把是因为freopen(”CON”,stdout)运行不稳定导致,在更换了保存数据的方法后结决了此问题。

    (2) 在增加了切换账号功能后,在创建新账号后保存到文件的用户借还书记录总是出错但内存中没错,经过调试发现是因为在新增账号时用于存储新账号借还书记录的指针名与一个变量名相同造成每次都判断错误。最后更换了变量名,并使该指针每次使用前都指向NULL。

     

    (3)最开始在每次关闭程序后在下次使用前需要手动恢复文件中的数据,不能连续的使用数据,最后加了一个文件来保存各类数据的数量以使数据能够连续自主的调用,不需要再人工修改。

     

     

     

     

    结束语

    本系统包含了很多函数,实现了学生成绩管理菜单系统所需的基本功能。系统主要包含了九个模块,分别是添加学生信息、浏览学生信息、查询学生信息、修改学生信息、删除学生信息、排列学生信息、读取文件学生、保存到文件、退出系统。

    xxx:在该设计中主要完成了所有代码的实现,并最终调试实现了该学生成绩管理系统的全部功能并完成了大部分的设计报告。在设计的过程中熟练了对文件的各种操作,链表和结构数组的使用,清屏函数和暂停函数的使用,对做一个项目的过程有了一个大概的认识,知道了大致的规划。在设计过程中发现一些文件的操作和清屏函数会有冲突,通过改变对文件的操作解决了此问题。

     

    xxx:除了xxx设计的这个学生成绩管理系统,我自己也尝试着设计了一个学生成绩管理系统的功能,因此也发现了很多问题,比如说:在用add()函数添加新增学生信息时,我就忘了字符型数据本身会吃掉回车的这一特点,忘了在%c前面加上空格,导致程序在循环的过程中一直无法正常显示结果。但是,通过仔细耐心的检查与对错误的分析,又在课本的相关章节进行了查阅,最终发现了这一问题。同时,我更加熟悉了结构体的使用,对函数的调用方式更加清楚。还有就是初步了解了函数指针的概念,能够使用基础的函数指针。同时,这也是我第一次尝试画各种各样的流程图,虽然画的不好,但这确实是我的第一次尝试,也觉得充满了乐趣。

     

    xxx:在本系统的设计中我参加设计了少量函数语句以及制作流程图等任务,在这次的设计前我原本对函数和结构体等了解并不太清楚,通过这次的设计我清楚了这些语句的运用,并且我学会了文件的操作,在文件的修改等地方出现了问题,后来通过查阅资料和讨论解决了这个问题。

     

     

    参考资料

     

    [1] C语言程序设计(第二版)》,甘勇等编著,中国铁道出版社,20159月

    [2] 《C语言程序设计》,苏小红等主编,高等教育出版社,2011年

    [3] 《C和指针》,徐波译,人民邮电出版社,2008年

    [4] 《C Primer Plus 第6版 中文版》,姜佑 译,人民邮电出版社,2016年

    [5] 《大话数据结构》,程杰,清华大学出版社,2011年6月

    [6] 《啊哈!算法》,啊哈磊,人民邮电出版社

    展开全文
  • C语言程序设计 课程设计报告

    千次阅读 多人点赞 2020-06-17 17:39:14
    C语言程序设计课程设计报告 一、 系统简介 学生成绩管理系统简介:一个简易的学生成绩管理系统,它包括并可以实现:“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、...

    C语言程序设计课程设计报告

    一、 系统简介

    学生成绩管理系统简介:一个简易的学生成绩管理系统,它包括并可以实现:“录入并保存学生信息、打印学生信息、读取学生信息、查找学生信息、删除学生信息、修改学生信息、排序学生信息、退出系统 ”等功能,此系统需要使用者准确录入学生信息,已达到高效的工作需求。

    二、 设计要求
    本次课程设计要求用C语言编程实现一个小型的学生成绩管理系统,每个结构的数据可以包括学号、姓名、平时成绩、作业成绩和期末成绩等。
    程序采用简单菜单驱动方式,屏幕上显示菜单如下:
    1— 录入并保存学生信息
    2— 打印学生信息
    3— 读取学生信息
    4— 查找学生信息显示
    5— 删除学生信息
    6— 修改学生信息
    7— 排序学生信息
    8— 退出系统
    由两个同学组成一组分工合作完成本次课程设计。本人的主要工作包括如下内容:
    1-录入并保存学生信息
    2-读取学生信息
    3-查找学生信息显示
    4-删除学生信息

    三、 程序流程图
    (此部分要求画出系统的主要功能图,自己所负责具体功能模块的流程图)

    在这里插入图片描述

    四、 程序源代码
    (要求程序中要有注释,培养规范化编程习惯)
    部分代码参考

    	#include<stdio.h>
    	#include<conio.h>//getch的头文件
    	#include<stdlib.h>//system的头文件 
    	#include<string.h>
    	//定义一个学生 
    	typedef struct TagStudent
    	{ 
    	    int Num;//学号 
    		char Name[20];//姓名 
    		float Ascore;//平时成绩 
    		float Hscore;//作业成绩 
    	    float Tscore;//考试成绩
    		float total;//总成绩 
    	    struct TagStudent *next;//next指针变量 ,指向结构体变量 
    	}Student;
    
    	Student *head=NULL;
    	void Menu();
    	void InputStudent();
    	void PrintStudent();
    	void ReadStudent(); 
    	void SearchStudent();
    	void DeleteStudent();
    	void ChangStudent();
    	void SortStudent();
    	void sortStrArr(Student *list, int n);
    	
    	int main()
    	{
    		Menu();
    		while(1)
    		{   
    			//	读取一个字符 
    		char ch=getch(); 
    			//打印菜单 
    			if (ch!= '2')
    			{
    				system("cls");
    				Menu();
    				
    			} 
    			switch(ch)
    			 {
    				case '1'://录入学生信息 
    					InputStudent();
    					break;	
    				case '2'://打印学生信息
    					PrintStudent(); 
    					break;
    				case '3'://浏览学生信息
    					ReadStudent(); 
    						break;
    				case '4'://查找学生信息 
    					SearchStudent();
    					break;
    				case '5'://删除学生信息 
    					DeleteStudent();
    					break;	
    				case '6'://修改学生信息 
    					ChangStudent();
    					break;	
    				case '7'://排序学生信息 
    				    SortStudent();
    					break;	
    				case '0'://退出系统 
    					printf("欢迎下次使用."); 
    					return 0;
    					break;				
    			}			
    		}
    		return 0;
    	} 
    
    	void Menu()
    	{
    		
    			printf("========欢迎使用学生成绩管理系统=======\n");//\t表示制表符
    			printf("***************************************\n");
    			printf("*\t    请选择功能列表            *\n");     
    			printf("***************************************\n");
    			printf("*\t    1.录入并保存学生信息      *\n");
    			printf("*\t    2.打印学生信息            *\n");
    			printf("*\t    3.读取学生信息            *\n");	
    			printf("*\t    4.查找学生信息            *\n");	
    			printf("*\t    5.删除学生信息            *\n");
    			printf("*\t    6.修改学生信息            *\n");
    			printf("*\t    7.排序学生信息            *\n");
    			printf("*\t    0.退出系统                *\n");
    			printf("***************************************\n");
    		
    	
    			
    	}
    
    //创建一个保存链表
    
    	Student *savestudent(Student *p)
    	{
    		Student *head=p;
    		FILE *fp=fopen("E:\\student.txt","w");
    		if(fp==NULL)
    		{
    			printf("打开文件失败\n");
    			return NULL;
    		}
    		//写入数据 
    		while(head!=NULL)
    		{
    			fprintf(fp,"%d %s %.2f  %.2f  %.2f\n",head->Num,
    													head->Name,
    													head->Ascore,
    													head->Hscore,
    													head->Tscore);	
    			head=head->next; 
    		}
    		fclose(fp);	
    		return p;
    	}
    
    //录入学生信息
    
    void InputStudent()
    	{		
    	
    		Student* p=head;//当前节点 
    		//找到尾节点 
    		while(head!=NULL&&p->next!=NULL)
    		{
    			p=p->next; 
    		}
    		//定一个新节点
    		Student *NewNode=(Student*)malloc(sizeof(Student));
    		NewNode->next=NULL;
    	
    		if(head==NULL)
    		{
    			head=NewNode;
    		}
    		else{
    			p->next=NewNode; 
    		}
    		printf("\n请输入学生信息\n ");
    		//输入新的学元数据 
    		printf("         学号:");
    		scanf("%d", &NewNode->Num);
    		printf("         姓名:");
    		scanf("%s", NewNode->Name);
    		printf("     平时成绩:");
    		scanf("%f", &NewNode->Ascore);
    		printf("     作业成绩:");
    		scanf("%f", &NewNode->Hscore);
    		printf("     考试成绩:");
    		scanf("%f", &NewNode->Tscore);
    		FILE *fp=fopen("E:\\student.txt","a");
    		if(fp==NULL)
    		{
    			printf("打开文件失败\n");
    			return ;
    		}
    		//写入数据 
    		while(p!=NULL)
    		{
    			fprintf(fp,"%d %s %.2f  %.2f  %.2f\n",p->Num,
    												p->Name,
    												p->Ascore,
    												p->Hscore,
    												p->Tscore);	
    			p=p->next; 
    		}
    		fclose(fp);		
    		printf("学生信息录取并保存成功!\n");
    	}
    
    // 创建生成链表并返回 
    Student *createLine(FILE *fp)
    {
    	Student *head, *p1, *p2;
    	p1 = p2 = (Student*) malloc(sizeof(Student));//开辟一个新单元 
    	head = p1;
    	
    	while(!feof(fp))//feof(fp)文件未结束输出0 
    	{
    		fscanf(fp,"%d%s%f%f%f\n",&p1->Num,
    								p1->Name,
    								&p1->Ascore,
    							    &p1->Hscore,
    							 	&p1->Tscore);
    		p2 = p1;
    		p1 = (Student*) malloc(sizeof(Student));
    		p2->next = p1;
    		
    	}
    	if (head->Name[0] == '\0') head = NULL;
    	else p2->next = NULL;
    	return head;
    }
    
    // 从文件读取数据并生成返回链表 ,从文件中获取数据生成链表并返回链表的头指针 
    
    	Student *readFiles()
    	{
    		Student *head;
    		FILE *fp = fopen("E:\\student.txt", "r");
    	    if(fp == NULL)
    	    {
    	        printf("打开文件失败!");
    	        return NULL;
    	    }
    	    head = createLine(fp);
    		fclose(fp);
    		return head;
    	} 
    	
    	//读取学生信息
    	void ReadStudent()
    	{ //打开文件
    	 
    	 Student *p = readFiles();
    	printf("学号\t姓名\t平时成绩\t作业成绩\t考试成绩\n");
    	 while(p!=NULL) 
    		{
    			printf("%d   \t%s    \t%.2f      \t%.2f      \t%.2f      \n", 
    		 												p->Num,
    														p->Name,
    														p->Ascore,
    														p->Hscore,
    														p->Tscore);				
    			p=p->next;
    		}
    	}
    	//查找学生信息
    	void SearchStudent()
    	{
    		Student *p = readFiles();
    		char searchname[10];//空的字符数组; 
    		printf("\n请输入你要查找的学生名字:");
    		scanf("%s",searchname); 
    		while(strcmp(p->Name,searchname)!=0)
    		{
    			if(p->next==NULL)
    			{
    				printf("没有此学生的信息\n");
    				return ;
    			}
    			p=p->next;	 
    		}
    		printf(" 学号:\t姓名:\t平时成绩:\t作业成绩:\t考试成绩:\n");
    		printf("  %d   \t%s       %.2f          %.2f           %.2f      \n", 
    		p->Num,
    		p->Name,
    		p->Ascore,
    		p->Hscore,
    		p->Tscore);            
    	}
    

    五、 运行结果及分析
    (要求有程序运行结果截图和相应的分析)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述

    六、 设计总结
    (详述本次调试程序所取得的经验。如果程序未能通过,应分析其原因。)
    学生成绩管理系统是一个十分强大的管理系统,起初刚开始做课程设计时,以为这个课设不会有多难,不过是把多个函数组合起来就好了,但是,经过这两星期的编程,发现要完整把程序按照要求编出来是一件很不容易的事情。在学习中,也对C语言有更加的了解。在整个编程过程中,可以说遇到了很多难题,在书和同学的
    帮助下最后解决了这些问题,,我觉编写程序需要很大的耐心,当然细心也很需要,在编程的过程中有很多错误都是自己的粗心造成的,。这次的课程设计也是一次很好的对自我的检查,使我受益匪浅!
    参考资料

    1. C程序设计(第四版),谭浩强,清华大学出版社,2010年
    2. C程序设计(第四版)学习辅导,谭浩强,清华大学出版社,2010年
      完整代码和报告见链接:https://download.csdn.net/download/qq_45772158/12530461
    展开全文
  • web网站设计课程设计报告(实训报告)

    热门讨论 2010-01-05 19:25:42
    这个东西交作业很好不错哦 web网站设计 设计报告 实训报告 个人网站设计实训报告 web网站设计实训报告
  • LINUX课程设计报告

    2009-04-09 20:38:18
    LINUX课程设计报告 LINUX课程设计报告 LINUX课程设计报告 LINUX课程设计报告
  • 安卓开发课程设计报告

    万次阅读 多人点赞 2019-12-17 09:33:54
    综合实践能力创新实训-安卓开发课程设计报告 题 目: 新 闻 客 户 端 学 号: 1705010323 姓 名: 马 志 成 指导老师: 蒋 黎 明 完成时间: 2019年12月15日 安卓开发-新闻客户端 1.设计要求 1.1 技术平台要求 1....
  • EDA课程设计报告-- 数字钟(设计报告+仿真文件)
  • 你是否还在为如何写软件开发过程的各种文档,这里有你所需的各种文档模板,...附录B 软件概要设计报告文档模板 21 附录C 软件详细设计报告文档模板 33 附录D 软件详细设计报告文档模板 43 附录E 软件测试(验收)大纲 55
  • 资源为2018年全国大学生电子设计大赛山东赛区A题电流检测装置的设计报告,报告格式规范,含有详细的设计原理、方案比较和测试数据以及分析,另附带部分电路图和pcb板图,该作品荣获山东赛区省级一等奖,可供学习的...
  • 设计报告模板分享,私以为去年拿奖其实报告出了挺大力的,在现在大家都在以功能实现为目标忽视论文书写的环境里,有一个好的模板还是很占优势的。
  • 网页设计课程设计报告

    万次阅读 多人点赞 2019-03-01 21:45:11
    学号 课 程 设 计 课程名称 网页设计 题 目 鑫晨之家特效网站设计 专 业 软件工程 ...
  • 本文档为完整版课程设计报告,课设题目:数字电子时钟课程设计报告,课程分类:计算机组成原理
  • 关于VFP数据库的课程设计,包括软件,程序,设计报告,但愿对您有一点帮助
  • Android课程设计报告

    2013-01-04 18:59:27
    对应于手机邮件发送器的课程设计报告,可以当做是该项目的使用说明。可以下载项目。
  • c++ 课程设计报告 多个合集 完整 代码 + 报告
  • 这是配合我的贪吃蛇源代码的课程设计报告设计报告里也有源代码,不过是第一个版本,改进版在我上传的资源里。
  • MIS设计报告

    2008-06-04 12:47:04
    MIS管理信息系统课程设计报告,用Visual FoxPro 8.0开发的一个小开超市管理系统,有详细的设计报告
  • 单片机交通 灯课程设计报告单片机交 通灯课程设计报告单片机交通灯课程设计 报告单片机交通灯课程设计报告单片机交通 灯课程设计报告单片机交通灯课程设计报告
  • 游戏报告 贪吃蛇游戏设计报告 游戏 报告 贪吃蛇
  • 嵌入式系统课程大作业设计报告

    千次阅读 2021-02-07 14:41:23
    嵌入式系统课程大作业设计报告 设计题目 基于Arm-Linux的嵌入式计数器设计 一、需求分析         1.根据系统功能,进行系统需求分析,设计嵌入式设备的软硬件总体方案,...
  • c#课程设计报告c#课程设计报告c#课程设计报告c#课程设计报告
  • 本课程设计采用C/C++进行编程,实现了通讯录中的增删改查操作,以及算法的编写,并且附带完整的课程设计报告书,可支持答辩!额外添加文件读写处理功能(内存与外存同步)。 课程设计报告书的内容完整且符合规范...
  • 课程设计 模板 实例 网页设计 制作 作业 上机实验 设计报告

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 450,014
精华内容 180,005
关键字:

设计报告