ImageVerifierCode 换一换
格式:DOCX , 页数:53 ,大小:442.93KB ,
资源ID:28095415      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/28095415.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(数据结构课程设计C语言.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

数据结构课程设计C语言.docx

1、数据结构课程设计C语言计算机科学与技术学院课程设计成绩单课程名称:数据结构课程设计 姓名xxx性别x学号xxx班级xxx班综合成绩成绩等级程序运行情况(占总成绩20%)能正确运行 基本能正确运行 能运行但结果不完善(20分) (15分) (10分)程序功能的完善程度(占总成绩10%)完善 基本完善 不完善(10分) (8分) (5分)程序结构的合理性(占总成绩10%)合理 基本合理 不太合理(10分) (8分) (5分)对问题的答辩情况(占总成绩40%)概念正确有创新 能正确回答所有问题 基本能正确回答(40分) (35分) (30分)部分问题回答概念不清晰(20分)学生的工作态度与独立工作能

2、力(占总成绩10%)工作态度认真能独立完成任务 工作态度认真但独立性较差(10分) (8分)工作态度基本认真但缺乏独立性(5分)设计报告的规范性(占总成绩10%)符合规范 基本符合规范 规范性较差(10分) (8分) (5分)优秀:90分100分 良好:80分89分 中等:7079分 及格:6069分 不及格0分59分 武汉科技大学计算机科学与技术学院制表引言-3一、问题描述-二、需求分析-三、详细设计-四、所遇到的问题和分析解决-五、系统特色及关键技术-六、结论及心得体会-七、附录(源代码)-引言通过本课程设计,使自己更加系统地理解和掌握数据结构的基本概念;能自如地根据实际要求,设计相应的数

3、据结构,并运用C或C+语言实现所设计的算法,编写较大型的程序,分析和解决实际应用问题,进一步加深、巩固所学专业课程的基本理论知识,理论联系实际,进一步培养自己综合分析问题和解决问题的能力。掌握C语言或C+语言独立的编写、调试应用程序和进行其它相关设计的技能。此项目主要是考察我们对结构体、数组、文件等具体操作,以及对C语言语法的掌握,所以做成此项目要求比较高的设计要求,对整体有很熟悉的概括,同时调试过程也是很重要的,对程序界面的要求也比较高,要设计的合理同时也要美观一点,能够人性化的描述清楚你的各个功能,一目了然,对其他用户使用本程序简单易懂,这才能成本程序或本系统是成功的。对于学生成绩管理系统

4、,此项目每年都有学生去做,但是能够在其他项目中脱颖而出,还要有自己的设计特色,用简单的语言详细描述系统的功能,这才是关键。这个设计能够练习我们的理解和运用结构化程序设计的思想和方法,掌握开发一个小型实用系统的基本方法,学会调试一个比较长的程序的基本方法,同时掌握书写程序设计开发文档的能力。 一问题描述1、课程设计应完成的工作 (1)编写算法 (2)算法测试,并有具体的测试结果和结果分析 (3)撰写课程报告,内容包括: 封面 目录 课程设计报告正文 使用说明 参考文献 2、总体设计工作(包含几大功能模块) 1. 显 示 本 学 期 考 核 的 7 门 科 目 信 息 以 供 学 生 选 课; 2

5、. 输 入 学 生 基 本 信 息 并 显 示; 3. 输 入 学 生 的 选 课 信 息; 4. 查 找 某 学 生 的 信 息 及 选 修 科 目 的 信 息; 5. 修 改 某 学 生 的 信 息; 6. 增 加 一 个 学 生 的 记 录; 7. 删 除 某 个 学 生 的 记 录; 8. 按 学 号 降 序 排 序, 依 次 输 出; 9. 将 学 生 的 信 息 存 储 入 文 件。二、 需求分析1、系统描述 该系统实现对若干个大学生的学习成绩进行管理。至少包括以下信息:结构体:学生,选修科目,选修信息学生:学号,姓名,性别,年龄,所属院系选修科目:科目编号,科目名称,科目学分选修

6、信息:选修该科目者学号,科目编号,科目成绩 2、功能要求1使用中文菜单,界面设计和用户输入输出要人性化些;2. 将学生信息保存在文本文档中,具体对学生信息进行插入删除查询操作时,将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中;3具有数据输入功能,输入的数据能最终保存在文件中;4具有数据删除功能,能最终从文件中删除;5排序功能,根据自己设计的数据结构,设计排序算法;6具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;7. 学生信息的修改(比如修改学生姓名,修改学生某门课程

7、的成绩)。考查点: 插入时注意学号的处理,可以不填吗,是否重复,其他数据是否可以乱填,如何控制; 删除时一要防止误操作,二要考虑该生的选课信息,如何处理; 修改时同样要考虑各数据项的性质; 对选修表进行插入、删除、修改操作; 查询要求可以实现多条件查询。有3个文件:Student.txt中的内容:Sno Sname Ssex Sage Sdept20120001 李勇 男 20 CS20120002 刘晨 女 19 CS20120003 王敏 女 18 MA20120005 张立 男 19 ISCourse.txt中的内容:Cno Cname Ccredit1 英语 42 数学 23 信息系统

8、 44 操作系统 35 数据结构 4 6 数据处理 27 C/C+ 4SC.txt中的内容:Sno Cno Grade20120001 1 90 20120001 2 8020120001 4 8520120002 1 8620120003 3 8220120003 5 8820120005 7 903、开发环境 Visual C+不仅仅是是一个C+编译器,而是一个基于Windows操作系统的可视化集成开发环境,这种环境开发出来的软件稳定性好、可移植性强,可以编制各种各样的Windows应用程序。三、详细设计 开始1、系统流程图 主界面输入学生信息显示信息科目修改学生信息删除学生信息增加学生信

9、息信息存入文件退出本系统输入选修信息查找学生信息 结束 2、界面设计主界面:在此界面用户可以选择要操作的选项,回车之后即可进入相关的页面进行操作(例如:选择1 ,即可显示本学期考核的7门科目信息)在本界面里用户可以输入学生相关的信息数据,按照提示进行操作即可,例如所有操作均有提示语,比较人性化的管理,易懂,简单。3、大概设计模块(1)先编入系统所需的库函数,从而使程序可运行。#include#include#include #include /文件和标准控制台的输入输出(2)Main()函数的设计 在main()函数中主要运用do-while循环语句和switch()-case选择判断语句来调

10、用相关功能模块。系统的运行是在一个永真的循环里进行的,只有在主界面并选择“退出”时,才会跳出永真循环,并退出程序。(3)主界面的设计 在主界面中包括“显示本学期考核的7门科目信息以供学生选科目输入学生基本信息并显示 输入学生的选课信息 查找某学生的信息及选修科目的信息 修改某学生的信息增加一个学生的记录 删除某学生的记录 按数据结构降序(冒泡)排序 将学生的信息存储入文件退出”等全部的功能,之所以设计这麽一个主界面,一是因为能使用户对程序操作的流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统的要求,保证了系统不会打开文件紊乱或者出现致命的错误。每个函数体如下:Int main()

11、; /主函数void save(); /选修课程文件存储void load(); /选修课程文件输出void input(struct student *headp); /学生信息的输入void xuxiuinput(struct student *headp,struct StuCourse SC);/选修信息的输入void find(struct student *headp,struct StuCourse SC);/查找学生的信息及选修信息int modify(struct student *headp,struct StuCourse SC);/修改学生信息及选修信息void ins

12、ert(struct student *headp,struct StuCourse SC);/增加一个学生的信息void shanchu(struct student *headp,struct StuCourse SC);/删除一个学生的信息void sort(struct student *headp); /学生信息按学号大小排序void filesave(struct student *headp,struct StuCourse SC);/学生信息及选修信息录入文件void fileload(struct student *headp,struct StuCourse SC);/文件

13、信息输出4、详细设计思想(1)确定语言算法 由于之前都没有做过类似的设计,所以一时间不能够确定到底使用何种语言来设计本系统,所以在网上看了一些其他人设计的程序,链表的、数组的,C+的,各种各样的,也不知如何选择,但是仔细地看了其中的设计思想,最终还是用C和链表的来做,一是觉得本人对指针数组掌握的不是很熟练,那么在设计过程中容易产生不能理解的错误,耽误时间,二是想运用C,可以巩固一下所学的数据结构的知识,之前做实验的时候一直用C+来做,都没怎么用所学的知识,这时候想练练。就这样确定了整体的结构算法。(2)确定程序主要功能模块 这个就比较简单了,主要是根据系统设计的说明及要求来设计,从而设计了十大

14、功能模块,有文件操作,有系统维护功能,排序和统计功能,有输入输出等基本功能,比较人性化,添加了较多的提示语。这个程序的主要功能时输入学生的学号,姓名,学期和三科成绩来对其进行存储,在存储后可以对学生的成绩按学号及学期或姓名及学期来进行查询,同时输出此同学的平均分及总分,之后可以对某个同学的成绩进行各种操作,例如修改,删除等,同时还可以对学生们的成绩按照总分或单科成绩排序,在整个过程中所做的操作都会保存到student.txt文件中并显示。 (3)系统结构体的设计学生 所属院系年龄学号性别姓名struct student /结构体 long Snum;/学号 char Sname20;/姓名 c

15、har Ssex10;/性别 int Sage;/年龄 char Sdept10;/所属院系 struct student *next;/指针;科目学分名称编号 struct Course/结构体int Cno;/选修科目编号char Cname20;/信息科目名称int Credit;/信息科目学分; 选修成绩编号学号 struct StuCourse/结构体 long Sno;/选修者学号 int SCno;/选修科目编号 double Grade;/选修科目成绩;(4)各功能模块的设计*主函数模块用函数int main()来实现 主要是来显示主菜单,使用户选择操作。首先定义一个指针数组(

16、全局使用)StuCourse SCSIZE(SIZE=1000),;在此处SIZE是指数组大小,之前有定义的,在这里应用了do-while和switch-case语句来进行选择,是个比较简单实现的模块。最后若选择“0”则是退出永真循环。*选修课程的文件输入(出)模块用函数void save();与void load();来实现主要用来将已定义的结构体数组Course存储入文件Course.txt,以及将其中数据从文件Course.txt中输入。void save()/录入文件 FILE *fp; int i; if(fp=fopen(Course.txt,w)=NULL) printf(无法打

17、开此文件!n); exit(0); for(i=0;i7;i+) if(fwrite(&Coi,sizeof(struct Course),1,fp)!=1) printf(无法打开文件Course.txt!n); fclose(fp);void load()/导出文件 FILE *fp; int i; if(fp=fopen(Course.txt,r)=NULL) printf(无法打开文件Course.txt!n); exit(0); for(i=0;i7;i+) fread(&Coi,sizeof(struct Course),1,fp); printf(%4d%10s%8dn,Coi.

18、Cno,Coi.Cname,Coi.Credit); fclose(fp);*输入学生记录模块 用函数void input(struct student *headp);来实现 主要功能用来对学生的信息进行收集和输入。首先会跳出主菜单,选择”2”,进入输入模块输入所需学生个数的学生信息,比如学号,姓名,性别,年龄及所属院系(以学号为0 结束输入新的学生信息)等。输完之后会自动跳出主菜单,根据主菜单来在此基础上进行操作。期间会有一些提示语,按此操作即可。根据if和for语句来判定期间是否有重复学号输入,在本操作中,允许有重复学生姓名出现。在此模块中,同时也用到了一个控制变量a,它是用来判定的条件

19、变量。之后返回主菜单。*输入选修信息模块用函数void xuxiuinput(struct student *headp,struct StuCourse SC)来实现 主要功能用于选修信息的录入。首先会跳出主菜单,选择“3“,进入输入模块输入所需选修科目的个数,接着输入选修该科目者的学号及科目编号及成绩。根据for-while语句来控制,期间会有提示语。在本操作中,不允许学号的重复,科目编号控制在1-7。 *查找学生及选修信息模块 用函数void find(struct student *headp,struct StuCourse SC)实现 主要功能用于学生基本信息的查找以及选修信息的查

20、找。首先会跳出主菜单,选择”4,接着选择查找的方式(1.学号查找 2.姓名查找),输入学号(姓名),便会显示拥有该学号(姓名)学生的基本信息;对于选修信息也是同样。该模块运用了for-while语句,对于学号,科目编号等进行控制,避免重复等情况出现。*修改学生及选修信息模块用函数int modify(struct student *headp,struct StuCourse SC)实现主要功能是修改学生的基本信息以及选修科目的信息。首先跳出主菜单,选择5。输入你想要修改的学生的学号,接着会弹出一个提示语请输入你想修改的学生信息的标号:1.学号 2.姓名 3.性别 4.年龄 5.所属院系 6.

21、选修科目信息: ,选择想要修改的选项,例如1,接着输入新的学号,修改成功。在本模块中运用了if-else语句及while语句来控制变量,只有正确输入才会弹出循环,正确显示。*插入学生记录及选修信息模块用函数void insert(struct student *headp,struct StuCourse SC)实现主要功能是插入一个新的学生记录,并将该学生的选修信息录入到StuCourse中。首先弹出主菜单,选择6,输入新增加的学生的学号,接着输入该学生的选修信息,然后再输入学生的姓名,年龄等信息。在本模块中同样使用while语句以及if-else语句来控制学号等的输入 。 *删除学生记录以

22、及选修信息模块用函数void shanchu(struct student *headp,struct StuCourse SC)来实现主要功能是删除一个学生的记录并删除其中StuCourse中的记录。首先有个选择的操作,之后会有判断语句,根据所输入的学号,来显示删除前的信息记录,添加for循环语句,循环把后一位的信息提前一位,整体数量减一,来进行全局变量的修改,之后再把修改过后的信息记录保存到文件中去。在现实中会有由于某些原因而不在学校的同学的记录,这时候就要对其记录进行删除操作,这样可以使系统及时更新并得到优化。 *按数据结构学号(冒泡)降序排序模块用函数void sort(struct

23、student *headp)来实现 主要功能时是用来对学生的记录来按学号大小进行排序。这样方便对学生有个大致的了解。 本排序使用冒泡排序。它有两个优点:一是“编程复杂度”很低,很容易写出代码;二是具有稳定性,这里的稳定性是指原序列中相同两元素的相对顺序仍然保持到排序后的序列。冒泡排序时进过n-1趟子排序完成的,第i趟子排序从第1个数至第n+1个数,若第i个数比后一个数大(则升序,小则降序。本程序一律采用降序)则交换两数。本程序中冒泡排序代码如下: for(p1=*headp,i=0;inext) for(p2=p1-next,j=i+1;jnext) if(p1-SnumSnum) num=

24、p2-Snum; p2-Snum=p1-Snum; p1-Snum=num; strcpy(name,p2-Sname); strcpy(p2-Sname,p1-Sname); strcpy(p1-Sname,name); strcpy(sex,p2-Ssex); strcpy(p2-Ssex,p1-Ssex); strcpy(p1-Ssex,sex); age=p2-Sage; p2-Sage=p1-Sage; p1-Sage=age; strcpy(dept,p2-Sdept); strcpy(p2-Sdept,p1-Sdept); strcpy(p1-Sdept,dept); 排序前:排

25、序后:*将学生及选修信息存入文件并显示模块用函数void filesave(struct student *headp,struct StuCourse SC)及void fileload(struct student *headp,struct StuCourse SC)实现主要功能是将之前输入的学生信息及选修科目信息存储入文件并从文件中导出显示。首先本模块中有2个文件指针FILE *fp1,*fp2,分别指向Student.txt文件与StuCourse.txt文件。此时会有提示语请确认是否将数据存储进文件:1.是 2.否:,选择1,将信息存入。*以上就是本程序的详细设计及基本思想*4、所

26、遇到的问题和分析解决1、 存在的不足本学生成绩管理系统由九大模块组成,每个模块相互联系又相互独立。这个学生成绩管理系统存在着很多不足之处,由于自己本身编程能力的问题,这个系统可以实现的功能非常有限。只能实现学生管理系统最基本的功能,可以进行简单的输入、输出学生资料,查询和修改学生信息,能直接从文件中读入数据,能对系统所作的修改、操作进行保存等。而且在每个模块也有不足的地方,比如在输入学生资料时,对有些信息项没有严格的规定,可以输入任何的字符。这有待以后努力,更详尽的实现模块的功能。2、 do-while语句的位置问题在修改学生记录此模块中,若循环语句的位置不对那么这个循环就会自动跳出,或变为乱

27、码,不能实现原有的功能。所以要想清楚到底是在哪安放,按照逻辑思路找到相应的语句正确添加就行了。 3、 细节方面其实在有些细节方面还是要特别注意啊,比如分号的添加,的方向问题,函数的返回值等问题,虽然容易改掉,但是很容易养成不好的习惯,而且还会浪费时间,所以在一开始写的时候就要很仔细,这样才能保证程序编的精细,同时若出现很多这样的错误的话,在编写程序的时候也会心里烦的,所以在编程的时候要认真仔细。4、 文件的写入与读出刚开始时对文件的操作不是很明白,一直不能很好的操作文件,直到最后快要验收的时候,仍旧出现了严重的问题,就是对已经存在的文件读取问题,通过读取文件并输出学生信息,将数据从文件中读取,

28、但是不能够正常的读出,最后把读文件的操作语句进行仔细检查后,发现语句的顺序有点问题,把fscanf()语句进行再修改后就能够正常的读取文件了。5、 内存的分配问题对于初学者的话对内存的分配和释放问题是比较抽象的和模糊的问题,在排序是之前就出现了交换数据困难的问题,以及内存分配空间繁琐释放空间不及时的问题,造成空间的浪费,使得程序运行时效率较低,因此最后采用了顺序存储记录的方式,这就能改变前面所出现的问题。6、 较小的问题方面其余的就没什么比较大的问题了,基本上只要细心一点的话就可以正确调试了。5、系统特色及关键技术其实在本程序的设计过程当中,没有很吸引人的关键技术,因为本人的C语言或C+语言都不是学的很好,所以当初设计的

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1