




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、计算机科学与技术学院课程设计成绩单课程名称:数据结构课程设计姓名xxx性别x学号xxx班级xxx班综合成绩成绩等级程序运行情况 (占总成绩20%)能正确运行(20 分)口基本能止确运行(15 分)口能运行但结果不完善(10 分)程序功能的完善程 度(占总成绩10%)口完善(10 分)口基本完善 (8分)不完善 (5分)程序结构的合理性 (占总成绩10%)口合理(10 分)口基本合理 (8分)口/、太合理 (5分)对问题的答辩情况 (占总成绩40%)概念正确有创新 口能正确回答所有问题(40 分)(35 分)部分问题回答概念不清晰(20 分)口基本能正确回答 (30 分)学生的工作态度与 独立工
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 门 科 目 信 息
5、以 供 学 生 选 课 ;2. 输入学生基本信 息并显 示;3. 输入学生的选课 信息;4. 查 找 某 学 生 的 信 息 及 选 修 科 目 的 信 息;5. 修改某学生的信息;6. 增加一个学生的记录;7. 删除某个学生的记录;8. 按 学 号 降 序 排 序, 依 次 输 出 ;9. 将学生的信息存储入文 件。二、 需求分析1、系统描述该系统实现对若干个大学生的学习成绩进行管理。至少包括以下信息:结构体:学生,选修科目,选修信息学生: 学号,姓名,性别,年龄,所属院系选修科目:科目编号,科目名称,科目学分选修信息:选修该科目者学号,科目编号,科目成绩2、功能要求1使用中文菜单,界面设计
6、和用户输入输出要人性化些;2 . 将学生信息保存在文本文档中, 具体对学生信息进行插入删除查询操作时, 将保存在文本文档中的学生信息提取出来,保存在自己定义的数据结构中,然后再对该数据结构进行操作,所有操作完成,或者在相应的命令后,再将学生信息保存到文本文档中;3 .具有数据输入功能,输入的数据能最终保存在文件中;4 .具有数据删除功能,能最终从文件中删除;5 .排序功能,根据自己设计的数据结构,设计排序算法;6 .具有多种查询(如按学号查询、按姓名查询、按成绩查询等)及输出功能;7 .学生信息的修改(比如修改学生姓名,修改学生某门课程的成绩)。考查点:插入时注意学号的处理,可以不填吗 ,是否
7、重复,其他数据是否可以乱填,如何控制;删除时一要防止误操作,二要考虑该生的选课信息,如何处理 ;修改时同样要考虑各数据项的性质;对选修表进行插入、删除、修改操作;查询要求可以实现多条件查询。有3个文件:Student.txt中的内容:SnoSname Ssex Sage SdeptCourse.txt中的内容:CnoCname Ccredit1 英语42 数学23 信息系统44 操作系统35 数据结构46 数据处理27 C/C+4SC.txt中的内容:SnoCno Grade3、开发环境Visual C+不仅仅是是一个 C+编译器,而是一个基于Windows操作系统的可视化集成开发环境IDE,
8、 这种环境开发出来的软件稳定性好、可移植性强,可以编制各种各样的Windows应用程序。三、详细设计2、界面设1主界面:查 找学 生删 除 学 生信息存入后即可修入相关的彳亍操退 出 本 系 统如:选择1 ,即可显示本学期考核的 7门科目信息)在本界面里用户可以输入学生相关的信息数据,按照提示进行操作即可,例如 所有操作均有提示语,比较人性化的管理,易懂,简单。3、大概设计模块(1)先编入系统所需的库函数,从而使程序可运行#include<stdio.h>#include<stdlib.h>#include<string.h>#include <con
9、io.h> 文件和标准控制台的输入输出(2) Main()函数的设计在main()函数中主要运用 do-while循环语句和switch()-case选择判断语句来调用相关 功能模块。系统的运行是在一个永真的循环里进行的,只有在主界面并选择“退出”时,才 会跳出永真循环,并退出程序。(3)主界面的设计在主界面中包括“显示本学期考核的7门科目信息以供学生选科目输入学生基本信息并显示 输入学生的选课信息查找某学生的信息及选修科目的信息修改某学生的信息增加一个学生的记录删除某学生的记录按数据结构降序(冒泡)排序将学生的信息存储入文件退出”等全部的功能,之所以设计这麽一个主界面,一是因为能使用户
10、对程序操作的流程更加清晰简明,二是保证了用户同时只能对一个文件进行操作系统的要求,保证了系统不会打开文件紊乱或者出现致命的错误。每个函数体如下:Int main();主函数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口); 查找学生的信息及选修
11、信息int modify(struct student *headp,struct StuCourse SC口); 修改学生信息及选修信息void insert(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 S
12、C);/ 学生信息及选修信息录入文件void fileload(struct student *headp,struct StuCourse SC口); 文件信息输出4、详细设计思想(1)确定语言算法由于之前都没有做过类似的设计,所以一时间不能够确定到底使用何种语言来设计本系统,所以在网上看了一些其他人设计的程序,链表的、数组的,C+的,各种各样的,也不知如何选择,但是仔细地看了其中的设计思想,最终还是用C和链表的来做,一是觉得本人对指针数组掌握的不是很熟练,那么在设计过程中容易产生不能理解的错误,耽误时间,二是想运用 C,可以巩固一下所学的数据结构的知识,之前做实验的时候一直用C+来做,都没
13、怎么用所学的知识,这时候想练练。就这样确定了整体的结构算法。(2)确定程序主要功能模块这个就比较简单了,主要是根据系统设计的说明及要求来设计,从而设计了十大功 能模块,有文件操作,有系统维护功能,排序和统计功能,有输入输出等基本功能,比较人 性化,添加了较多的提示语。这个程序的主要功能时输入学生的学号,姓名,学期和三科成绩来对其进行存储,在存储后可以对学生的成绩按学号及学期或姓名及学期来进行查询,同时输出此同学的平均分及总分,之后可以对某个同学的成绩进行各种操作,例如修改,删除等,同时还可以对学生们的成绩按照总分或单科成绩排序,在整个过程中所做的操作都会保存到"student.txt
14、”文件中并显示。(3)系统结构体的设计long Snum;学号char Sname20;/ 姓名char Ssex10;/性另1Jint Sage;年龄char Sdept10;/ 所属院系struct student *next;/ 指针;选修struct StuCourse/ 结I 杓体学long Sno;选修考学号int SCno;/ 选,多科目编号double Grade;/述修科目成绩);(4)各功能模块的设计* 主函数模块用函数int main() 来实现主要是来显示主菜单, 使用户选择操作。首先定义一个指针数组 (全局使用)StuCourse SCSIZE (SIZE=1000)
15、,;在此处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("
16、无法打开此文件! n");exit(0);for(i=0;i<7;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;i<7;i+)fr
17、ead(&Coi,sizeof(struct Course),1,fp);printf("%4d%10s%8dn",Coi.Cno,Coi.Cname,Coi.Credit);fclose(fp);* 输入学生记录模块用函数 void input(struct student *headp);来实现主要功能用来对学生的信息进行收集和输入。首先会跳出主菜单,选择”2 ”,进入输入模块输入所需学生个数的学生信息,比如学号,姓名,性别,年龄及所属院系(以学号为0 结束输入新的学生信息) 等。 输完之后会自动跳出主菜单, 根据主菜单来在此基础上进行操作。期间会有一些提示语,
18、按此操作即可。根据if 和 for 语句来判定期间是否有重复学号输入,在本操作中,允许有重复学生姓名出现。在此模块中,同时也用到了一个控制变量a,它是用来判定的条件变量。之后返回主菜单。* 输入选修信息模块用函数 void xuxiuinput(struct student *headp,struct StuCourse SC)来实现主要功能用于选修信息的录入。首先会跳出主菜单,选择“3“,进入输入模块输入所需选修科目的个数, 接着输入选修该科目者的学号及科目编号及成绩。 根据 for-while 语句来控制,期间会有提示语。在本操作中,不允许学号的重复,科目编号控制在1-7 。* 查找学生及
19、选修信息模块用函数 void find(struct student *headp,struct StuCourse SC)实现主要功能用于学生基本信息的查找以及选修信息的查找。首先会跳出主菜单,选择” 4 , 接着选择查找的方式( 1. 学号查找 2. 姓名查找),输入学号(姓名),便会显示拥有该学号(姓名)学生的基本信息;对于选修信息也是同样。该模块运用了 for-while语句,对于学号,科目编号等进行控制,避免重复等情况出现。* * 修改学生及选修信息模块用函数 int modify(struct student *headp,struct StuCourse SC)实现主要功能是修改
20、学生的基本信息以及选修科目的信息。首先跳出主菜单,选择 5 。输入你想要修改的学生的学号, 接着会弹出一个提示语" 请输入你想修改的学生信息的标号: 1. 学号 2. 姓名 3.性别 4. 年龄 5. 所属院系 6. 选修科目信息 : " ,选择想要修改的选项,例如 1,接着输入新的学号,修改成功。在本模块中运用了 if-else 语句及 while 语句来控制变量,只有正确输入才会弹出循环,正确显示。* * 插入学生记录及选修信息模块用函数 void insert(struct student *headp,struct StuCourse SC) 实现主要功能是插入一个
21、新的学生记录,并将该学生的选修信息录入到 StuCourse 中。首先弹出主菜单,选择6 ,输入新增加的学生的学号,接着输入该学生的选修信息,然后再输入学生的姓名, 年龄等信息。 在本模块中同样使用 while 语句以及 if-else 语句来控制学号等的输入 。* * 删除学生记录以及选修信息模块用函数 void shanchu(struct student *headp,struct StuCourse SC)来实现主要功能是删除一个学生的记录并删除其中 StuCourse 中的记录。首先有个选择的操作,之后会有判断语句,根据所输入的学号,来显示删除前的信息记录,添加for 循环语句,循环
22、把后一位的信息提前一位,整体数量减一,来进行全局变量的修改,之后再把修改过后的信息记录保存到文件中去。在现实中会有由于某些原因而不在学校的同学的记录,这时候就要对其记录进行删除操作,这样可以使系统及时更新并得到优化。*按数据结构学号(冒泡)降序排序模块用函数 void sort(struct student *headp)来实现主要功能时是用来对学生的记录来按学号大小进行排序。这样方便对学生有个大致的了解。本排序使用冒泡排序。它有两个优点:一是“编程复杂度”很低,很容易写出代码; 二是具有稳定性,这里的稳定性是指原序列中相同两元素的相对顺序仍然保持到排序后的序 列。冒泡排序时进过 n-1趟子排
23、序完成的,第i趟子排序从第1个数至第n+1个数,若第 个数比后一个数大(则升序,小则降序。本程序一律采用降序)则交换两数。本程序中冒泡 排序代码如下:for(p1=*headp,i=0;i<count-1;i+,p1=p1->next)for(p2=p1->next,j=i+1;j<count;j+,p2=p2->next)if(p1->Snum<p2->Snum)num=p2->Snum;p2->Snum=p1->Snum;p1->Snum=num;strcpy(name,p2->Sname);strcpy(p2-
24、>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)及 voidfileload(struct student *headp,struct StuCourse SC) 实现主要功能是将之前输入的学生信息及选修科目信息存储入文件并从文件中导出显示。首先本模块中有2个文件指针 FILE *fp1,*fp2 ,分别指向 Student.txt 文件与 StuCourse.txt文件。此时会有提示语" 请确认是否将数据存储进文件: 1. 是 2. 否: " ,选择 1 ,将信息存入。* 以上就是本程序的详细设计及基本
26、思想 *四、所遇到的问题和分析解决1、 存在的不足本学生成绩管理系统由九大模块组成,每个模块相互联系又相互独立。这个学生成绩管理系统存在着很多不足之处, 由于自己本身编程能力的问题, 这个系统可以实现的功能非常有限。 只能实现学生管理系统最基本的功能, 可以进行简单的输入、输出学生资料,查询和修改学生信息, 能直接从文件中读入数据,能对系统所作的修改、 操作进行保存等。而且在每个模块也有不足的地方, 比如在输入学生资料时, 对有些信息项没有严格的规定, 可以输入任何的字符。这有待以后努力,更详尽的实现模块的功能。2、 do-while 语句的位置问题在修改学生记录此模块中, 若循环语句的位置不
27、对那么这个循环就会自动跳出, 或变为乱码, 不能实现原有的功能。 所以要想清楚到底是在哪安放, 按照逻辑思路找到相应的语句正确添加就行了。3、 细节方面其实在有些细节方面还是要特别注意啊,比如分号的添加,<<与>> 的方向问题,函数的返回值等问题, 虽然容易改掉, 但是很容易养成不好的习惯, 而且还会浪费时间, 所以在一开始写的时候就要很仔细,这样才能保证程序编的精细,同时若出现很多这样的错误的话,在编写程序的时候也会心里烦的,所以在编程的时候要认真仔细。4、 文件的写入与读出刚开始时对文件的操作不是很明白,一直不能很好的操作文件,直到最后快要验收的时候,仍旧出现了严重
28、的问题,就是对已经存在的文件读取问题,通过"读取文件并输出学生信息 " ,将数据从文件中读取,但是不能够正常的读出,最后把读文件的操作语句进行仔细检查后,发现语句的顺序有点问题,把fscanf()语句进行再修改后就能够正常的读取文件了。5、 内存的分配问题对于初学者的话对内存的分配和释放问题是比较抽象的和模糊的问题, 在排序是之前就出现了交换数据困难的问题,以及内存分配空间繁琐释放空间不及时的问题,造成空间的浪费,使得程序运行时效率较低, 因此最后采用了顺序存储记录的方式, 这就能改变前面所出现的问题。6、 较小的问题方面其余的就没什么比较大的问题了,基本上只要细心一点的话
29、就可以正确调试了。5、 系统特色及关键技术其实在本程序的设计过程当中,没有很吸引人的关键技术,因为本人的 C 语言或 C+语言都不是学的很好, 所以当初设计的时候就只是想把功能都实现就好了, 尽可能的把所要求的功能都编进程序, 这样就觉得很满足了。 所以都是设计的比较简单易懂的语言, 这样自本程序要说有什么值得说所以就没有时间去细细地去设计自己的程序。的,那就只有人性化这点了,在设计成学的时候, 因为自己怕弄混了, 所以添加了很详尽的提示,这样在编程的过程中或调试的时候都能够比较快的运行。还有就是尽可能的应用了do-while 语句和 switch-case 语句, 这两个语句在之前不是很常用
30、, 所以在这个程序中试炼了一下, 虽然在编写的过程中总是出错,但还是成功的用好了, 也是程序有条理一些。我也知道这些东西别人可能比我弄得还要好, 但是我在我所学的知识中成功的应用了这些, 我觉得就是好事, 就是进步。 唯一的亮点可能就是进入系统是的密码设计了, 就这一点小小的设计就花了我好几个小时去调试,因为总能在后面程序的加入及运行时发现一些新的小问题。6、 结论及心得体会一周多的课程设计, 终于成功的验收了, 虽然有些疲惫, 但还是有很多的收获的, 像计算机组成原理的课设一样,我又一次巩固了所学到的知识,之前的学习只是停留在理论基础上,现在自己动手操作试验后, 才是真正的理解及体会。 C
31、也学了近一年, 有很多知识都是似懂非懂, 通过平时上机操作,自己也了解了一些,但让我有了更深的理解和更好的认识, 则是在这次的课设上,之前的困惑也通过这次的课设解决了一些,虽然还是不能够全面的理解,但是有进步就很高兴。在课程设计之前,因为有了综合实验的经验与教训,明白了写代码这一步是非常重要的,因为当你把代码输进去之后,并编译让其运行,发现通过不了,再来检查出问题,是很费费力的事情, 因此分析和规划代码是很重要的, 最重要的是要把逻辑结构写好, 这样就不会出现大问题, 写代码就要先找出核心的内容, 用多种方法来实现核心部分, 这样可以尽可能的避免发现逻辑或编译不支持的错误。通过本次论文设计,
32、我初步学会了论文设计的基本方法, 学会了怎样去借鉴别人的方法和经验, 知道了如何整合资料和处理这些资料的能力, 这位以后做毕设的论文打下了基础,使我感觉比较好的是有一种成功的喜悦, 虽然在编译的时候会经常因为一些小的错误而心烦意乱, 但是也不失为一件好事, 失败的越多积累的经验越丰富,对人的考验也比较多, 那么在最后编译成功时的喜悦就越浓烈, 也是自己的能力有了进一步的提高。 由于知识和经验的不足, 这个程序编写的不是很尽如人意, 但是融合了自己的心血, 就觉得是最好的,所以在以后还是需要较多的努力的,还是会在以后的学习过程中不断地提高和改进的。七、附录(源代码)#include<std
33、io.h>#include<stdlib.h>#include<string.h>#include<conio.h> static int count=0; static int scnum=0; #define N 10 #define SIZE 1000 struct studentlong Snum;char Sname20;char Ssex10;int Sage;char Sdept10;struct student *next;struct Courseint Cno;char Cname20;int Credit;struct Cours
34、e Co7=1," 英语 ",4,2," 数学 ",2,3," 信息系统 ",4,4," 操作系统 ",3,5," 数据结构 ",4,6," 数据处理 ",2,7,"c/c+",4;struct StuCourselong Sno;int SCno;double Grade;printf("n printf("n printf("n供学生选课n");printf("n printf("n prin
35、tf("n息 n");printf("n printf("n printf("n printf("n printf("n printf("nvoid menu()学 生 成 绩 统 计 与 分 析 系 统 nn");菜 单 nn");1. 显 示 本 学 期 考 核 的 7 门 科 目 信 息 以2. 输入学生基本信息并显示n");3. 输入学生的选课信息n");4. 查 找 某 学 生 的 信 息 及 选 修 科 目 的 信5. 修 改 某 学 生 的 信 息 n"
36、;);6. 增加一个学生的记录n");7. 删除某个学生的记录n");8. 按 学 号 降 序 排 序, 依 次 输 出 n");9. 将学生的信息存储入文件n");0. 退 出已录入 %d 名学生的记录nn",count);/选修课程文件存储void save()FILE *fp;int i;if(fp=fopen("Course.txt","w")=NULL)printf(" 无法打开此文件! n");exit(0);for(i=0;i<7;i+)if(fwrite(&
37、;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;i<7;i+)fread(&Coi,sizeof(struct Course),1,fp);printf("
38、%4d%10s%8dn",Coi.Cno,Coi.Cname,Coi.Credit);fclose(fp);/学生信息输入void input(struct student *headp)struct student *p;long a;int q;printf("*nn");若 要停 止输入 学生数据,请将学号以0输入printf(" 请输入学生的学号: n");scanf("%ld",&a);while(a!=0)p=(struct student*)malloc(sizeof(struct student);i
39、f(p=NULL) printf("no enough memory!n");exit(0);printf(" 请输入学生的姓名: n");scanf("%s",p->Sname);while(1) printf(" 请输入学生的性别(男/女 1/0) :n");scanf("%d",&q);if(q=1)strcpy(p->Ssex,"男");break;else if(q=0)strcpy(p->Ssex,"女");break
40、; elseprintf(" 输入错误,请重新输入! n");printf(" 请输入学生的年龄(请输入阿拉伯数字) : n");scanf("%d",&p->Sage);printf(" 请输入该学生的所属院系 (CS/MA/IS) : n");scanf("%s",p->Sdept);p->Snum=a;count+;p->next=*headp;*headp=p;printf("nn 请输入学生的学号: n");scanf("%
41、ld",&a);p=*headp;printf(" 学号姓名 性别 年龄 所属院系 n");while(p!=NULL) printf("%ld%10s%8s%8d%10sn",p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept); p=p->next;/ 选修信息的录入 void xuxiuinput(struct student *headp,struct StuCourse SC)int a,b,c;struct student *p;p=*headp;print
42、f(" 请输入选修课程的数目: n");scanf("%d",&a);scnum=scnum+a;for(int i=0;i<a;i+)while(1)printf(" 输入选修者的学号: n");scanf("%ld",&b);if(p->Snum=NULL)printf(" 系统中没有任何学生信息,请先选择存储! n");exit(0); while(b!=p->Snum&&p->next!=NULL) p=p->next;if(
43、b=p->Snum)SCi.Sno=b;break;elseprintf(" 无法找到!请确认是否已输入该学生的信息。 n"); printf(" 输入选修的科目编号(1-7) : n");scanf("%d",&c);while(1)if(c>=1&&c<=7)SCi.SCno=c;break; elseprintf(" 请 重 新选 择 选 修科 目 ! n 输 入 你选 修 的 科 目 的 编 号 ( 1-7 ) : n");scanf("%d",
44、&c);printf(" 输入该选修科目的成绩: n");scanf("%lf",&SCi.Grade);printf(" 选修科目信息如下: n");printf("SnoCno Graden");for(i=0;i<scnum;i+)printf("%-10ld%7d%14.2lfn",SCi.Sno,SCi.SCno,SCi.Grade);/查找学生的基本信息以及选修信息-void find(struct student *headp,struct StuCourse
45、 SC)struct student *p;long b;long x;int a,i,d;char c20;p=*headp;printf(" 请选择查找的方式: 1.学号查找 2.姓名查找 (输入 1 或 2) :n");scanf("%d",&a);while(1)if(a=1)printf(" 请输入该学生的学号 :n");scanf("%ld",&x);if(p->Snum=NULL)printf(" 系统中没有任何学生信息,请先选择存储! n");break;w
46、hile(x!=p->Snum&&p->next!=NULL)p=p->next;if(x=p->Snum)printf(" 学号姓名 性别 年龄 所属院系 n");printf("%ld%10s%8s%8d%10sn",p->Snum,p->Sname,p->Ssex,p->Sage,p->Sdept);elseprintf(" 无法找到!请确认是否已输入该学生的信息。 n");break;else if(a=2)printf(" 请输入该学生的姓名:
47、n");scanf("%s",c);if(p->Snum=NULL)printf(" 系统中没有任何学生信息,请先选择存储! n");menu();while(strcmp(c,p->Sname)!=0)&&p->next!=NULL)p=p->next;if(strcmp(c,p->Sname)=0)printf(" 学号姓名 性别 年龄 所属院系 n");printf("%ld%10s%8s%8d%10sn",p->Snum,p->Sname,
48、p->Ssex,p->Sage,p->Sdept);elseprintf(" 无法找到!请确认是否已输入该学生的信息。 n");break;elseprintf(" 输入方式错误,请重新选择查找方式! n");while(1)printf(" 请选择选修科目查找的方式:1.学号查找2.科目编号查找(输入 1 或2) :n");scanf("%d",&a);if(a=1)printf(" 请输入想要查找的学生选课信息者的学号: n");scanf("%ld&qu
49、ot;,&b);printf(" 选修科目信息如下: n");printf("SnoCno Graden");for(i=0;i<scnum;i+)if(b=SCi.Sno)printf("%-10ld%7d%14.2lfn",SCi.Sno,SCi.SCno,SCi.Grade);break;else if(a=2)printf(" 请输入想要查找的学生选课信息的科目编号: n");scanf("%d",&d);printf(" 选修科目信息如下: n"
50、;);printf("SnoCno Graden");for(i=0;i<scnum;i+)if(d=SCi.SCno)printf("%-10ld%7d%14.2lfn",SCi.Sno,SCi.SCno,SCi.Grade);break;elseprintf(" 输入错误!请重新输入! nn");/ 修改学生的信息以及选修科目的信息int modify(struct student *headp,struct StuCourse SC)struct student *p,*k;int q,i,j,m,n;long x,a,b
51、;p=*headp;k=*headp;int y;printf(" 请输入要修改的学生的学号: n");scanf("%ld",&x);while(x!=p->Snum&&p->next!=NULL)p=p->next;if(x=p->Snum)printf(" 请输入你想修改的学生信息的标号:1.学号2.姓名3.性别4.年龄5.所属院系6.选修科目信息:n");scanf("%d",&y);while(1)if(y=1)printf(" 请输入该生
52、的新学号: n");scanf("%ld",&b);for(i=0;i<scnum;i+)if(SCi.Sno=p->Snum)SCi.Sno=b;p->Snum=b;break;if(y=2)printf(" 请输入该学生的新姓名: n");scanf("%s",p->Sname);break;if(y=3)printf(" 请重选该学生的性别: n");while(1)printf(" 请输入学生的性别(男/女 1/0) :n");scanf(&qu
53、ot;%d",&q);if(q=1)strcpy(p->Ssex," 男 ");break;else if(q=0)strcpy(p->Ssex,"女");break;elseprintf(" 输入错误,请重新输入! n");break;if(y=4)printf(" 请输入该生的年龄(请输入阿拉伯数字) : n");scanf("%d",&p->Sage);break;if(y=5)printf(" 请输入该学生的所属院系 (CS/MA/I
54、S) : n");scanf("%d",p->Sdept);break;if(y=6)n");printf(" 请输入想要修改的选修科目信息:1.选修者的学号2.选修科目编号scanf("%d",&j);while(1)if(j=1)printf(" 请输入想要修改的学号: n");scanf("%ld",&a);for(i=0;i<scnum;i+)if(a=SCi.Sno)printf(" 请输入新学号: n");scanf(&quo
55、t;%ld",&n);SCi.Sno=n;while(a!=k->Snum&&k->next!=NULL)k=k->next;if(a=k->Snum)k->Snum=n;break;else if(j=2)printf(" 输入想要修改科目的编号: n");load();scanf("%d",&m);for(i=0;i<scnum;i+)if(m=SCi.SCno)printf(" 输入新的科目编号:n");scanf("%d",&am
56、p;SCi.SCno);printf(" 请重新输入该选修科目的成绩: n");scanf("%lf",&SCi.Grade);break;elseprintf(" 输入错误!请重新输入! n");break;elseprintf("n 选择错误,重选! n");printf(" 学号姓名 性别 年龄 所属院系 n");printf("%ld%10s%8s%8d%10sn",p->Snum,p->Sname,p->Ssex,p->Sage,p-
57、>Sdept);printf(" 选修科目信息如下: n");printf("SnoCno Graden");for(i=0;i<scnum;i+)printf("%-10ld%7d%14.2lfn",SCi.Sno,SCi.SCno,SCi.Grade);elseprintf(" 系统未录入该学生的信息!请重新输入学号! n");return 0;/ 插入一个学生的信息并修改选修科目的信息void insert(struct student *headp,struct StuCourse SC)lon
58、g n;int q,a,j,b,c,m,i=1;struct student *p,*last,*current;p=(struct student *)malloc(sizeof(struct student);current=*headp;printf(" 输入一个新的学生的记录(先输入学号) : n");scanf("%ld",&n);while(current!=NULL)if(current->Snum=n)printf(" 该学生记录已经存在,请重新输入! n");printf(" 输入一个新的学生的记录(先输入学号): n");scanf("%ld",&n);current=*headp;elsecurrent=current->next;p->Snum=n;count+;printf(" 请输入学号为 %ld 的选修信息: nn",p->Snum);printf(" 请输入该生选修课程的数目: n");scanf("%d",&a);m=scnum;for(j=m;j
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摊贩经济的政策环境优化考核试卷
- 客运站安全监管与风险防控考核试卷
- 塑料成型模具的智能化维护与管理考核试卷
- 园林景观设计创新理念考核试卷
- 架空线路设备安装过程中的精度控制考核试卷
- 塑料鞋材的耐臭氧性能检测考核试卷
- 灌溉技术在国际合作项目中的应用考核试卷
- 期刊出版论文的研究方法考核试卷
- 油料作物种植的气候变化适应性研究考核试卷
- 布艺家居产品设计与工艺结合考核试卷
- 上海市第一至十八届高一物理基础知识竞赛试题及答案
- 测量仪器自检记录表(全站仪)
- 2022年垃圾房管理规定
- GB∕T 36665-2018 船舶和海上技术 船舶系泊和拖带设备十字带缆桩
- GB∕T 22517.6-2020 体育场地使用要求及检验方法 第6部分:田径场地
- 标准田字格模板A4纸word
- 箱梁预制场建设施工危险源辨识及风险分析
- 护士礼仪行为规范-ppt课件
- 贫血的实验室诊断课件(PPT 43页)
- 现代操作系统教程(慕课版)-课后习题答案1-8章全带原题
- berg平衡评定量表
评论
0/150
提交评论