源代码: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语言程序设计(第二版)》,甘勇等编著,中国铁道出版社,2015年9月

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

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

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

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

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

C语言课程设计报告-菜单设计相关推荐

  1. 中南大学c语言课程设计报告,中南大学c语言课程实践报告材料.doc

    <中南大学c语言课程实践报告材料.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<中南大学c语言课程实践报告材料.doc>文档请在天天文库搜索. ...

  2. 电子英汉词典c语言程序设计报告,英汉电子词典设计报告_设计_C语言_C语言程序设计.doc...

    英汉电子词典设计报告_设计_C语言_C语言程序设计 课程设计 课程名称 :C语言程序课程设计 题目名称 :电子英汉词典 学生学院 :电气信息学院 专业班级 :自动化1101 学 号 :20110102 ...

  3. java计算机设计总结,java课程设计报告--计算器设计

    java课程设计报告--计算器设计 1 课 程 Java 程序设计 题 目 计算器设计 年 级 2010 级 专 业 信息一班 学 号 姓 名 组 员 指导教师 课程设计题目计算器设计 2 课程设计论 ...

  4. 仪表仪器信息管理C语言,仪器仪表管理系统C语言课程实习报告

    仪器仪表管理系统C语言课程实习报告 1C 语言课程实习报告学 院: 计算机学院专 业: 计算机科学与技术班 级: 191114学 号: 20111002635姓 名: 高跃攀2题目要求19.仪器仪表管 ...

  5. c语言课设报告 中南,中南大学c语言课程实践报告

    <中南大学c语言课程实践报告>由会员分享,可在线阅读,更多相关<中南大学c语言课程实践报告(12页珍藏版)>请在人人文库网上搜索. 1.中南大学C语言程序设计实践报告题 目 学 ...

  6. 2048java设计报告_2048设计报告.doc

    2048设计报告 毕业论文(设计)题目基于Android系统2048 一.选题依据(包括目的.意义.国内外现状和发展趋势,主要参考文献) 最近以来,移动手游越来越成为当下游戏产业中重要的一环,市场也在 ...

  7. 替换单词c语言程序,C语言课程设计报告【设计简单单词替程序替换指定单词】.doc...

    PAGE 沈阳航空航天大学 课 程 设 计 报 告 课程设计名称:C语言课程设计 课程设计题目: 院(系): 理学院 专 业: 信息与计算科学 班 级:学 号: 2011041401025 姓 名: ...

  8. c语言程序设计英汉词典设计,英汉电子词典设计报告_设计_C语言_C语言程序设计.pdf...

    课程设计 课程名称 : 语言程序课程设计 C 题目名称 :电子英汉词典 学生学院 :电气信息学院 专业班级 :自动化1101 学 号 :201101020104 学生姓名 :胡拚 联系方式 指导教师 ...

  9. php网页课程设报告,网页设计课程设计报告

    <网页设计课程设计报告>由会员分享,可在线阅读,更多相关<网页设计课程设计报告(10页珍藏版)>请在人人文库网上搜索. 1.网页设计课程设计报告系别: 计算机科学系 班级: 0 ...

  10. 中南大学c语言课程实践报告,c++课程实践报告范文2篇

    [c++课程实践报告例一] 为期一个星期的c++实训已经基本结束,但是给了我很大的影响.通过这次实训,使我明白C++语言这门课程光仅仅是听课是远远不够的,上机训练也不容忽视. 通过上机训练,才能够明白 ...

最新文章

  1. Ubuntu 64 位下解决bash: xxx: 没有那个文件或目录
  2. 隐式类型转换和整型提升
  3. 4.OD-调试示例1
  4. 如何进行.NET高效开发
  5. Visual Studio 2013 Xamarin for iOS 环境搭建
  6. mysql 去重计算公式_mysql多字段去重,并计数
  7. 10个最值得Python新人练手的有趣项目
  8. Python之Django之views中视图代码重复查询的优化
  9. pom.xml 添加 JUnit依赖
  10. eclipse Unable to build: the file dx.jar was not loaded from the SDK folder的解决办法
  11. python开发的代码如何加密_python 代码加密
  12. 华硕atk驱动(快捷键)安装流程
  13. ISO19000-2000标准(转载)
  14. 安装Adobe Reader 时报错:HRESULT:0x80070422
  15. 1、mac:jdk 8下载和安装步骤
  16. 关于cocos2d引擎写的手游加速
  17. IPC$局域网入侵详解
  18. css3 3d 过 锯齿,css3 3d旋转 出现锯齿_html/css_WEB-ITnose
  19. Jboot框架的使用
  20. 支付宝及时到账支付成功返回信息

热门文章

  1. matlab全局变量和局部变量和子函数
  2. java初级程序员_为什么现在JAVA初级程序员要求这么高?
  3. 京瓷6525打印系统未连接到计算机,京瓷打印机安装扫描驱动后显示无法连接机器?...
  4. rk从u盘更新屏参文件_[更新]解决八代I3在华擎B150上核显不亮机问题
  5. 多目标跟踪算法SORT
  6. python图像分割算法_SLIC算法分割超像素原理及Python实现
  7. html 苹果微信录音js,基于JS开发微信网页录音功能的实例代码
  8. 静态HTML网页设计作品 DIV布局 HTML5+CSS大作业——个人网页(6页) 网页制作期末大作业成品
  9. ArGIS Engine专题(8)之利用GP监督分类最大似然法实现根据矢量样本和影像提取植被类型
  10. 四川大学计算机网络实验,四川大学计算机网络实验报告