学籍管理系统(C语言课程设计)(华丽版+详细注释)

合集下载

课程设计学籍管理c语言

课程设计学籍管理c语言

课程设计学籍管理c语言一、教学目标本课程的教学目标是使学生掌握学籍管理系统的基本原理和编程方法,能够运用C语言实现简单的学籍管理功能。

具体分为以下三个维度:1.知识目标:使学生了解C语言的基本语法和数据结构,理解学籍管理系统的原理和流程。

2.技能目标:培养学生具备使用C语言进行编程的能力,能够独立完成简单的学籍管理系统的设计和实现。

3.情感态度价值观目标:培养学生对编程语言的兴趣,增强其自主学习和解决问题的意识,培养其团队协作和沟通能力。

二、教学内容教学内容以教材《C程序设计》为主线,结合学籍管理系统的实际需求进行调整和补充。

具体安排如下:1.C语言基础知识:数据类型、运算符、表达式、函数、数组、指针等。

2.控制结构:顺序结构、分支结构、循环结构等。

3.数据结构:链表、队列、栈等。

4.文件操作:文件的打开、关闭、读写等。

5.学籍管理系统的设计与实现:系统需求分析、功能模块设计、界面设计、数据库设计等。

三、教学方法本课程采用多种教学方法相结合,以提高学生的学习兴趣和主动性:1.讲授法:讲解C语言的基本语法和概念,阐述学籍管理系统的原理。

2.案例分析法:分析典型的学籍管理案例,引导学生运用C语言解决问题。

3.实验法:安排实验课程,让学生动手实践,巩固所学知识。

4.讨论法:学生进行小组讨论,分享学习心得,互相答疑解惑。

四、教学资源1.教材:《C程序设计》。

2.参考书:《C语言编程思想》、《C语言 Primer》。

3.多媒体资料:教学PPT、视频教程、在线编程练习平台。

4.实验设备:计算机、网络设施、编程调试工具。

5.网络资源:相关论坛、博客、在线课程、开源项目等。

五、教学评估本课程的教学评估分为三个方面:平时表现、作业和考试。

1.平时表现:包括课堂参与度、提问回答、小组讨论等,占总评的20%。

2.作业:布置适量作业,巩固所学知识,占总评的30%。

3.考试:包括期中考试和期末考试,期中考试占30%,期末考试占50%。

c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统一、教学目标本课程的教学目标是使学生掌握C语言的基本语法和编程方法,能够运用C语言设计学生学籍管理系统。

具体分为三个部分:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基本知识。

2.技能目标:学生能够运用C语言进行程序设计,具备编写和调试程序的能力。

3.情感态度价值观目标:学生通过完成学生学籍管理系统的设计和实现,培养对计算机科学和编程的兴趣和热情,提高解决实际问题的能力。

二、教学内容根据课程目标,教学内容主要包括C语言的基本语法和编程方法,具体包括以下部分:1.C语言的基本语法:数据类型、变量、运算符、控制结构等。

2.函数:函数的定义、调用、参数传递、返回值等。

3.学生学籍管理系统的需求分析:系统的功能、数据结构、界面设计等。

4.编程实践:学生通过编写和调试程序,完成学生学籍管理系统的实现。

三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。

1.讲授法:教师通过讲解C语言的基本语法和编程方法,为学生提供系统的知识结构。

2.讨论法:教师引导学生进行问题讨论,培养学生的思考和解决问题的能力。

3.案例分析法:教师通过分析学生学籍管理系统的案例,引导学生理解和应用C语言编程。

4.实验法:学生通过动手编写和调试程序,提高编程实践能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。

1.教材:选用权威、实用的C语言教材,为学生提供系统的知识结构。

2.参考书:提供相关的参考书籍,丰富学生的知识视野。

3.多媒体资料:制作多媒体课件,生动、形象地展示C语言编程的方法和技巧。

4.实验设备:提供计算机实验室,让学生进行编程实践。

五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分,以全面、客观、公正地评价学生的学习成果。

1.平时表现:通过课堂参与、提问、讨论等方式评估学生的学习态度和积极性。

学籍管理系统(C语言课程设计)(华丽版+详细注释)

学籍管理系统(C语言课程设计)(华丽版+详细注释)

实验题目:学籍管理系统一、实验目的综合应用所学的 C 语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。

通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。

、实验内容1 ):熟悉 C 语言的开发环境,按照给定的上机步骤练习完成;2 ):熟悉 C 程序的编辑,编译,链接和运行的过程。

3):编译一个应用系统程序,形成一个软件系统。

三、详细设计及运行结果1、算法设计学籍管理系统程序采用了结构化程序设计的思想,将程序分解成许多模块,再由主函数调用这些模块,实现不同的功能。

1、学生信息结构体:储存学生信息。

2、主菜单模块:通过利用输出函数显示输出主菜单信息。

3、提示错误信息模块:通过利用输出函数输出提示错误信息。

4、提示没有找到模块:通过利用输出函数输出提示没有找到该学生。

5、输出中文、英文模块:通过利用输出函数输出中文提示及学生数据。

6、定位模块:定位连表中符要求合的接点,并返回该指针。

7、增加学生信息模块:通过指针的不断后移逐个接受学生信息并将学生信息付给相应变量。

8、查询学生信息模块:根据用户选择按学号或按姓名查询,分别按学号或姓名逐个比较输入的数据与结构体中的数据,有匹配的则输出,没有则提示没有找到。

9、删除信息模块:根据用户选择按学号或按姓名删除,分别比对输入数据和结构体中的数据,有匹配的则删除,没有则提示无信息可删。

10、修改信息模块:通过用户输入的学号找到相应学生,然后逐项修改学生信息,否则提示无此学生。

11、显示信息模块:将学生信息输出。

12、保存信息模块:将接受的结构体信息利用指针存入文件中。

13、排序模块:按照学生的最高分进行排序,输出。

14、统计学生信息模块:逐项比较相邻两项的成绩信息,得到每项最大值,并输出统计结果。

15、主函数:通过调用各模块来实现学生信息的管理。

学生学籍管理系统c语言课程设计

学生学籍管理系统c语言课程设计

学生学籍管理系统c语言课程设计
学生学籍管理系统C语言课程设计
一、题目
学生学籍管理系统
二、项目介绍
1、本项目是一个基于C语言实现的学生学籍管理系统。

该系统的主要功能是实现学生学籍的管理,学生可以查看自己的学籍信息,同时管理员可以对学生的学籍信息进行维护和修改。

2、实现的功能:
(1)管理员登录
(2)查看学生学籍
(3)修改学生学籍
(4)添加新学生学籍
(5)删除学生学籍
(6)按学号或姓名查找学生学籍信息
(7)保存学生学籍
(8)退出系统
三、模块结构
1、登录模块
登录模块是本系统的入口,主要负责验证用户的身份信息,如果用户是管理员,则可以进入系统的主界面。

2、学生学籍操作模块
学生学籍操作模块主要负责管理员对学生学籍信息的添加、修改、查看和删除等操作。

3、文件存取模块
文件存取模块负责实现对学生学籍信息的存取,并将学生信息保存到文件中,保证学生学籍信息的安全性。

四、技术要求
1、编程语言
C语言
2、界面
使用C语言实现学生学籍管理系统,界面简单,功能明确。

3、数据操作
使用C语言实现学生学籍管理系统,能够实现对学生学籍的添加、修改、查看和删除等操作。

4、系统功能
系统功能要求具备管理员登录、查看学生学籍、修改学生学籍、添加学生学籍、删除学生学籍、按学号或姓名查找学生学籍信息、保存学生学籍和退出系统等功能。

c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统

c语言课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法,培养学生编写结构化程序的能力,使学生能够运用C语言实现简单的学生学籍管理系统。

通过本课程的学习,学生将能够:1.知识目标:–理解C语言的基本数据类型、运算符和表达式;–掌握函数的定义和调用,理解局部变量和全局变量的概念;–熟悉控制结构,如if语句、for循环和while循环;–了解数组、字符串和指针的基本使用方法。

2.技能目标:–能够使用C语言编写简单的程序,解决实际问题;–掌握基本的调试技巧,能够找出并修复程序中的错误;–具备阅读和理解他人代码的能力。

3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生的自主学习能力;–培养学生团队协作的精神,增强学生的沟通能力;–培养学生解决问题的能力,提高学生的创新意识。

二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、函数、局部变量和全局变量等;2.控制结构:if语句、for循环、while循环等;3.数据结构:数组、字符串、指针等;4.学生学籍管理系统的实现:学生信息的添加、删除、修改和查询等功能。

三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学:1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言在学生学籍管理系统中的应用;3.实验法:让学生动手编写代码,实现学生学籍管理系统的功能,提高学生的实际操作能力。

四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言 Primer》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络等。

以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。

五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。

学籍管理系统C语言课程设计报告详解

学籍管理系统C语言课程设计报告详解

学籍管理系统C语言课程设计报告详解学籍管理系统C语言课程设计报告详解目录:1. 引言2. 系统设计与功能3. 数据结构与算法4. 界面设计5. 性能分析与改进6. 系统应用与总结7. 结论1. 引言学籍管理系统是一种常见的教务系统,在学校和教育机构中被广泛使用。

它可以方便地管理学生信息、成绩、考勤等学籍相关信息。

本篇文章将深入探讨学籍管理系统的设计思路、实现过程和功能特点。

2. 系统设计与功能学籍管理系统的设计涉及到多个功能模块,包括学生信息管理、成绩管理、课程管理、教师管理、考勤管理等。

在系统设计阶段,应考虑到各个功能模块之间的数据结构和数据流动。

其中,学生信息管理模块需要涵盖学生的基本信息(如学号、尊称、芳龄、性别等)以及其他必要的信息(如通信方式、家庭住宅区域等)。

成绩管理模块需要记录学生在各门课程中的成绩,并计算绩点和排名。

课程管理模块需要包括课程号、课程名、学分和上课时间等信息。

教师管理模块需要记录教师的基本信息和任教课程信息。

考勤管理模块需要记录学生的考勤情况,包括到勤、请假、旷课等。

3. 数据结构与算法在学籍管理系统中,需要使用适当的数据结构和算法来实现各个功能模块。

可以使用链表或数组来存储学生信息,使用哈希表或二叉搜索树来存储课程信息。

对于成绩管理模块,可以使用排序算法对学生成绩进行排名。

对于考勤管理模块,可以使用查找算法来查询学生的考勤情况。

在设计数据结构和算法时,需要考虑到时间和空间复杂度的问题,保证系统的高效性和稳定性。

4. 界面设计学籍管理系统的界面设计很重要,它直接关系到用户的使用体验和系统的易用性。

界面设计应该简洁明了,操作直观,方便用户快速掌握系统的各种功能。

可以采用菜单式的操作界面,将各个功能模块以菜单形式展示给用户,并提供相应的操作选项。

应保证系统的可扩展性,方便后续对功能进行扩展和升级。

5. 性能分析与改进在使用学籍管理系统时,性能是一个重要的考量因素。

系统性能包括响应速度、并发处理能力等方面。

c高校学籍管理系统课程设计

c高校学籍管理系统课程设计

c 高校学籍管理系统课程设计一、教学目标本课程旨在通过学籍管理系统的课程设计,让学生掌握以下知识目标:1.理解高校学籍管理的基本流程和规则。

2.掌握学籍管理系统的基本模块和功能。

3.熟悉数据库在学籍管理中的应用。

4.能够独立设计和实现一个简单的学籍管理系统。

5.能够运用数据库进行数据存储和管理。

6.能够对学籍管理系统进行性能优化和故障排除。

情感态度价值观目标:1.培养学生对于信息技术在教育管理中重要性的认识。

2.培养学生解决问题的能力和团队合作精神。

3.培养学生对于学术诚信和数据保护的重视。

二、教学内容本课程的教学内容将围绕学籍管理系统的设计和实现展开,具体包括以下几个部分:1.学籍管理的基本概念和流程。

2.学籍管理系统的基本模块和功能设计。

3.数据库的设计和应用。

4.学籍管理系统的实现和调试。

5.学籍管理系统的性能优化和故障排除。

三、教学方法为了提高教学效果,我们将采用多种教学方法相结合的方式进行教学,包括:1.讲授法:用于讲解学籍管理的基本概念和流程,以及学籍管理系统的设计和实现方法。

2.案例分析法:通过分析具体的学籍管理案例,让学生更好地理解和掌握学籍管理系统的应用。

3.实验法:通过实际操作,让学生掌握学籍管理系统的设计和实现技术。

四、教学资源为了支持教学内容的传授和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供系统的理论知识。

2.参考书:提供相关的参考书籍,丰富学生的知识视野。

3.多媒体资料:制作精美的PPT和教学视频,提高学生的学习兴趣。

4.实验设备:准备计算机和相关设备,为学生提供实践操作的机会。

五、教学评估为了全面、客观地评估学生的学习成果,本课程将采用以下评估方式:1.平时表现:通过课堂参与、提问、小组讨论等环节,评估学生的学习态度和理解程度。

2.作业:布置相关的编程练习和案例分析,评估学生的实践能力和分析问题的能力。

3.考试:设置期中考试和期末考试,以评估学生对课程知识的掌握程度。

c课程设计高校学籍管理系统

c课程设计高校学籍管理系统

c 课程设计高校学籍管理系统一、教学目标本课程的教学目标是使学生掌握高校学籍管理系统的基本原理和设计方法,培养学生运用计算机技术解决实际问题的能力。

具体目标如下:1.知识目标:学生需要理解高校学籍管理系统的需求分析、系统设计、数据库设计等基本概念,掌握相关理论知识。

2.技能目标:学生能够熟练使用编程语言进行系统开发,具备独立设计和实现高校学籍管理系统的实际操作能力。

3.情感态度价值观目标:培养学生对计算机科学和软件工程的兴趣,增强学生解决实际问题的责任感和使命感。

二、教学内容教学内容主要包括以下几个部分:1.高校学籍管理系统的需求分析:介绍高校学籍管理系统的功能需求、性能需求等,使学生了解系统设计的背景和意义。

2.系统设计:讲解高校学籍管理系统的总体设计、模块划分等,培养学生运用系统工程方法解决问题的能力。

3.数据库设计:教授如何根据系统需求设计数据库表结构,使学生掌握数据库设计的基本技巧。

4.编程实现:指导学生使用编程语言实现系统功能,培养学生具备实际的编程能力。

5.系统测试与优化:讲解如何对系统进行测试和优化,以提高系统的稳定性和性能。

三、教学方法为了提高教学效果,将采用以下教学方法:1.讲授法:教师讲解基本概念、理论知识,使学生掌握相关知识。

2.案例分析法:分析实际案例,使学生更好地理解理论,提高解决实际问题的能力。

3.讨论法:学生进行分组讨论,培养学生的团队协作能力和沟通能力。

4.实验法:学生动手实践,实际操作高校学籍管理系统,提高学生的实际编程和系统设计能力。

四、教学资源为了支持教学,将准备以下教学资源:1.教材:选用权威、实用的教材,为学生提供理论学习的参考。

2.参考书:提供相关领域的参考书籍,丰富学生的知识体系。

3.多媒体资料:制作课件、教学视频等,提高课堂教学的趣味性和效果。

4.实验设备:配置计算机、网络设备等,为学生提供实践操作的平台。

五、教学评估本课程的教学评估将采用多元化评价方式,全面、客观地评价学生的学习成果。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验题目:学籍管理系统一、实验目的综合应用所学的C语言程序设计知识,自行设计并实现一个较为完整的小型管理信息系统。

通过系统分析、系统设计、编程实现,写实验报告等环节,初步掌握软件系统的设计方法和步骤,提高灵活运用程序语言进行软件开发的技能,提高程序设计水平和分析问题、解决问题的能力。

二、实验内容1):熟悉C语言的开发环境,按照给定的上机步骤练习完成;2):熟悉C程序的编辑,编译,链接和运行的过程。

3):编译一个应用系统程序,形成一个软件系统。

三、详细设计及运行结果1、算法设计学籍管理系统程序采用了结构化程序设计的思想,将程序分解成许多模块,再由主函数调用这些模块,实现不同的功能。

1、学生信息结构体:储存学生信息。

2、主菜单模块:通过利用输出函数显示输出主菜单信息。

3、提示错误信息模块:通过利用输出函数输出提示错误信息。

4、提示没有找到模块:通过利用输出函数输出提示没有找到该学生。

5、输出中文、英文模块:通过利用输出函数输出中文提示及学生数据。

6、定位模块:定位连表中符要求合的接点,并返回该指针。

7、增加学生信息模块:通过指针的不断后移逐个接受学生信息并将学生信息付给相应变量。

8、查询学生信息模块:根据用户选择按学号或按姓名查询,分别按学号或姓名逐个比较输入的数据与结构体中的数据,有匹配的则输出,没有则提示没有找到。

9、删除信息模块:根据用户选择按学号或按姓名删除,分别比对输入数据和结构体中的数据,有匹配的则删除,没有则提示无信息可删。

10、修改信息模块:通过用户输入的学号找到相应学生,然后逐项修改学生信息,否则提示无此学生。

11、显示信息模块:将学生信息输出。

12、保存信息模块:将接受的结构体信息利用指针存入文件中。

13、排序模块:按照学生的最高分进行排序,输出。

14、统计学生信息模块:逐项比较相邻两项的成绩信息,得到每项最大值,并输出统计结果。

15、主函数:通过调用各模块来实现学生信息的管理。

2、模块图设计总分3、流程图设计1、主函数2、增加学生信息模块:4.查询学生信息7、保存学生信息8.按总分排序9、统计学生最高分四、调试情况,设计技巧及体会1、本系统在VC6下编译调试通过,可顺利运行,各项功能达到设计要求本系统采用分模块调试的方法进行编译,即完成一个函数功能模块就编译一个功能模块,最后再进行整体编译并生成可执行文件honest.exe。

在调试过程中主要碰到以下问题:(1)输入函数中的取地址符即“&”不能正确使用,导致程序在输入数据时发生错误。

(2)在比较两个字符串时不能正确使用“strcmp”函数,导致比较结果不能输出。

(3)在应用指针时没有注意头结点中的数据域中是不存放数据,导致指针指向错误。

2、在这次课程设计中我充分体会到C语言作为一门编程的基本语言它的精妙。

通过这次课程设计使我了解到我有很多的不足,在程序调试的时候常常会因为几个错误而弄得心烦,这说明我对知识的掌握还不够牢,在程序设计的过程中也暴露出了我的诸多弊端,借这次课程设计的机会我会认真的加以改正,多多看书多去图书馆学习,同时应该增强自己的实践能力,为以后的学习打下坚实的基础。

五、源程序清单(略,详见电子版实验报告)#include "stdio.h"#include "conio.h"#include "stdlib.h" /*包含后面使用的exit等函数*/#include "string.h"/*包含号面使用的strcmp等函数*/int havesave=0; /*全集变量*/struct student{char num[10];/* 学号*/char name[18];char sex[3];int clanguage;int math;int english;int totle;int average;};typedef struct node /*使用typedef语句,简化程序后续声明定义的键盘输入*/ {struct student data;struct node *next;}Node,*Link;void menu(){printf("㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣\n");printf(" ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎\n");printf(" ◎◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆\t1添加学生资料\t\t\t\t\t2删除学生资料◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆\t3查询学生资料\t\t\t\t\t4修改学生资料◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆\t5保存学生资料\t\t\t\t\t6统计最高分◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆\t7按总分排名\t\t\t\t\t8打印学生成绩◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆\t9帮助信息\t\t\t\t\t0退出系统◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆◇◎\n");printf(" ◎◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◆◇◎\n");printf(" ◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎◎\n");printf("\n");printf("㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣㊣\n");}void print_san(){printf("---------------------------------------------------------------------------\n");}void Wrong(){printf("\n=====>提示:输入错误!\n");}void Nofind(){printf("\n=====>提示:没有找到该学生!\n");}void printchinese() /* 本函数用于输出中文*/{printf("\t 学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n");}void printenglish(Node *p)/* 本函数用于输出英文*/{printf("\t%-9s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p->data.num,p->, p->data.sex,p->data.english,p->data.math,p->data.clanguage,p->data.totle,p->da ta.average);}void printhelp(){printf("该程序为用C语言编写的学生管理程序,第一次进入该程序需要创建学生数据\n");printf("以后进入可根据菜单栏显示实现各项功能,系统默认保存文件位置为D:/学生管理\n");printf("按任意键返回");printf("\n");getch();}Node* Locate(Link l,char findmess[],char nameornum[]) /* 该函数用于定位链表中符合要求的结点,并返回该指针*/{Node *r;if(strcmp(nameornum,"num")==0) /* 按学号查询*/{r=l->next;while(r!=NULL){if(strcmp(r->data.num,findmess)==0)return r;r=r->next;}}else if(strcmp(nameornum,"name")==0) /* 按姓名查询*/{r=l->next;while(r!=NULL){if(strcmp(r->,findmess)==0)return r;r=r->next;}}return 0;void Add(Link l) /* 增加学生*/{Node *p,*r,*s;char num[10];r=l;s=l->next;while(r->next!=NULL)r=r->next; /* 将指针置于最末尾*/while(1){printf("请你输入学号(以'0'返回上一级菜单:)");scanf("%s",num);if(strcmp(num,"0")==0)break;while(s){if(strcmp(s->data.num,num)==0){printf("=====>提示:学号为'%s'的学生已经存在,若要修改请你选择'4 修改'!\n",num);print_san();printchinese();printenglish(s);print_san();printf("\n");return;}s=s->next;}p=(Node *)malloc(sizeof(Node));strcpy(p->data.num,num);printf("请你输入姓名:");scanf("%s",p->);getchar();printf("请你输入性别:");scanf("%s",p->data.sex);getchar();printf("请你输入c语言成绩:");scanf("%d",&p->data.clanguage);getchar();printf("请你输入数学成绩:");scanf("%d",&p->data.math);getchar();printf("请你输入英语成绩:");scanf("%d",&p->data.english);getchar();p->data.totle=p->data.english+p->data.clanguage+p->data.math; p->data.average=p->data.totle / 3;/* 信息输入已经完成*/p->next=NULL;r->next=p;r=p;havesave=1;}}void Seek(Link l) /* 查询学生*/{int sel;char findmess[20];Node *p;if(!l->next){printf("\n=====>提示:没有资料可以查询!\n");return;}printf("\n=====>1按学号查找\n=====>2按姓名查找\n"); scanf("%d",&sel);if(sel==1)/* 学号*/{printf("请你输入要查找的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("\t\t\t\t查找结果\n");print_san();printf("\n");printchinese();printenglish(p);printf("\n");print_san();printf("按任意键返回");getch();}elseNofind();}else if(sel==2) /* 姓名*/{printf("请您输入要查找的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){printf("\t\t\t\t查找结果\n");print_san();printf("\n");printchinese();printenglish(p);printf("\n");print_san();printf("按任意键返回");getch();}elseNofind();}elseWrong();}void Del(Link l) /* 删除*/{int sel;Node *p,*r;char findmess[20];if(!l->next){printf("\n=====>提示:没有资料可以删除!\n");return;}printf("\n=====>1按学号删除\n=====>2按姓名删除\n"); scanf("%d",&sel);if(sel==1){printf("请您输入要删除的学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>提示:该学生已经成功删除!\n"); havesave=1;}elseNofind();}else if(sel==2){printf("请你输入要删除的姓名:");scanf("%s",findmess);p=Locate(l,findmess,"name");if(p){r=l;while(r->next!=p)r=r->next;r->next=p->next;free(p);printf("\n=====>提示:该学生已经成功删除!\n");havesave=1;}elseNofind();}elseWrong();}void Modify(Link l){Node *p;char findmess[20];if(!l->next){printf("\n=====>提示:没有资料可以修改!\n");return;}printf("请您输入要修改的学生学号:");scanf("%s",findmess);p=Locate(l,findmess,"num");if(p){printf("请你输入新学号(原来是%s):",p->data.num);scanf("%s",p->data.num);printf("请你输入新姓名(原来是%s):",p->);scanf("%s",p->);getchar();printf("请你输入新性别(原来是%s):",p->data.sex);scanf("%s",p->data.sex);printf("请你输入新的c语言成绩(原来是%d分):",p->data.clanguage); scanf("%d",&p->data.clanguage);getchar();printf("请你输入新的数学成绩(原来是%d分):",p->data.math);getchar();scanf("%d",&p->data.math);printf("请你输入新的英语成绩(原来是%d分):",p->data.english);scanf("%d",&p->data.english);p->data.totle=p->data.english+p->data.clanguage+p->data.math;p->data.average=p->data.totle/3;printf("\n=====>提示:资料修改成功!\n");havesave=1;}elseNofind();}void Scoreone(Link l){Node *pm,*pe,*pc,*pt,*pa; /* 用于指向分数最高的接点*/Node *r=l->next;if(!r){printf("\n=====>提示:没有资料可以统计!\n");return ;}pm=pe=pc=pt=pa=r;while(r!=NULL){if(r->data.clanguage>=pc->data.clanguage)pc=r;if(r->data.math>=pm->data.math)pm=r;if(r->data.english>=pe->data.english)pe=r;if(r->data.totle>=pt->data.totle)pt=r;if(r->data.average>=pa->data.average)pa=r;r=r->next;}printf("------------------------------统计结果--------------------------------\n");printf("总分最高者:\t%s\t%s\t %d分\n",pt->data.num,pt->,pt->data.totle);printf("平均分最高者:\t%s\t%s\t %d分\n",pa->data.num,pa->,pa->data.average);printf("英语最高者:\t%s\t%s\t %d分\n",pe->data.num,pe->,pe->data.english);printf("数学最高者:\t%s\t%s\t %d分\n",pm->data.num,pm->,pm->data.math);printf("c语言最高者:\t%s\t%s\t %d分\n",pc->data.num,pc->,pc->data.clanguage);print_san();printf("按任意键返回\n");getch();}void Scoretow(Link l){Link ll;Node *p,*rr,*s;ll=(Link)malloc(sizeof(Node)); /* 用于做新的连表*/ll->next=NULL;if(l->next==NULL){printf("\n=====>提示:没有资料可以排序!\n");return ;}p=l->next;while(p){s=(Node*)malloc(sizeof(Node)); /* 新建接点用于保存信息*/s->data=p->data;s->next=NULL;rr=ll;while(rr->next!=NULL && rr->next->data.totle>=p->data.totle)rr=rr->next;if(rr->next==NULL)rr->next=s;else{s->next=rr->next;rr->next=s;}p=p->next;}free(l);l->next=ll->next;printf("\n=====>提示:排序已经完成!\n");}void printscore(Link l)//打印成绩信息{Node *p;p=l;if(l!=NULL){printf("\n全部成绩为:\n\n");printf("学号\t姓名\t数学\t英语\tC语言\t平均分\t总分\n\n");p=p->next;do{printf("%s\t%s\t%d\t%d\t%d\t%d\t%d\n", p->data.num, p->,p->data.math,p->data.english,p->data.clanguage,p->data.average, p->data.totle);p=p->next;}while(p!=NULL);printf("\n");printf("按任意键返回");printf("\n");getch();}elseprintf("\n目前数据为空,还没有任何信息,请先创建成绩信息!\n\n"); }void Save(Link l){FILE* fp;Node *p;int flag=1,count=0;fp=fopen("D:\\学生管理","wb");if(fp==NULL){printf("\n=====>提示:重新打开文件时发生错误!\n");exit(1);}p=l->next;while(p){if(fwrite(p,sizeof(Node),1,fp)==1){p=p->next;count++;}else{flag=0;break;}}if(flag){printf("\n=====>提示:文件保存成功.(有%d条记录已经保存.)\n",count); havesave=0;}fclose(fp);}void main(){Link l;/* 连表*/FILE *fp; /* 文件指针*/int sel;char c;char chji;int count=0;Node *p,*r;printf("\t\t\t\t学生成绩管理系统\n\t\t\t\t------西安邮电学院微电子0901 李欢(17号)\n");l=(Node*)malloc(sizeof(Node));l->next=NULL;r=l;fp=fopen("D:\\学生管理","rb");if(fp==NULL){printf("\n=====>提示:文件还不存在,是否创建?(y/n)\n");scanf("%c",&chji);if(chji=='y'||chji=='Y'){fp=fopen("D:\\学生管理","wb");printf("\n=====>提示:文件已经打开,正在导入记录......\n");fclose(fp); /* 关闭文件*/printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count); }elseexit(0);}else{while(!feof(fp)){p=(Node*)malloc(sizeof(Node));if(fread(p,sizeof(Node),1,fp)) /* 将文件的内容放入接点中*/{p->next=NULL;r->next=p;r=p; /* 将该接点挂入连中*/count++;}}fclose(fp); /* 关闭文件*/printf("\n=====>提示:记录导入完毕,共导入%d条记录.\n",count);}while(1){menu();printf("请你选择操作:");scanf("%d",&sel);if(sel==0){if(havesave==1){getchar();printf("\n=====>提示:资料已经改动,是否将改动保存到文件中(y/n)?\n"); scanf("%c",&c);if(c=='y'||c=='Y')Save(l);}printf("\n=====>提示:您已经退出系统,再见!\n");break;}switch(sel){case 1:Add(l);break; /* 增加学生*/case 2:Del(l);break;/* 删除学生*/case 3:Seek(l);break;/* 查询学生*/case 4:Modify(l);break;/* 修改学生*/case 5:Save(l);break;/* 保存学生*/case 6:Scoreone(l);break;/*统计最高分*/case 7:Scoretow(l);/*按总分排名*/case 8:printscore(l);break;/*按总分排名打印*/case 9:printf("\t\t\t==========帮助信息==========\n");printhelp();break; default: Wrong();getchar();break;}}}。

相关文档
最新文档