学生选修课管理系统设计C语言版
C语言选课管理系统课程设计
C语言选课管理系统课程设计一、教学目标本课程旨在让学生掌握C语言选课管理系统的开发方法,培养其编程能力和问题解决能力。
具体目标如下:1.知识目标:学生能够理解C语言的基本语法、数据结构和常用算法;掌握面向对象编程思想。
2.技能目标:学生能够使用C语言进行程序设计,独立完成选课管理系统的开发;具备调试和优化程序的能力。
3.情感态度价值观目标:培养学生对计算机科学的兴趣,使其认识到编程在实际应用中的重要性,提高其创新精神和团队合作意识。
二、教学内容本课程的教学内容主要包括C语言基础知识、数据结构、算法、面向对象编程和选课管理系统的设计与实现。
具体安排如下:1.C语言基础知识:介绍C语言的基本语法、变量、运算符、控制结构等。
2.数据结构:讲解数组、链表、栈、队列、树等基本数据结构及其应用。
3.算法:学习常用排序算法、查找算法、递归算法等,培养学生的算法思维。
4.面向对象编程:介绍类、对象、封装、继承、多态等基本概念,并学会使用面向对象的方法解决问题。
5.选课管理系统设计与实现:分析系统需求,设计系统架构,编写功能模块,完成系统集成。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解基本概念、语法和算法,使学生掌握理论知识。
2.讨论法:学生针对案例进行分析,培养其问题解决能力和团队合作精神。
3.案例分析法:分析实际项目案例,使学生学会将理论知识应用于实际问题。
4.实验法:让学生动手编写代码,培养其编程能力和实践能力。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的教材,如《C程序设计原理与应用》、《C++ Primer》等。
2.参考书:提供相关领域的经典著作,如《算法导论》、《数据结构与算法分析》等。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高教学质量。
4.实验设备:保证学生有足够的实践机会,提高其编程能力和实践能力。
学生课程管理系统c语言课程设计
学生课程管理系统c语言课程设计一、课程目标知识目标:1. 理解并掌握C语言中结构体、数组、指针等基本概念;2. 学会运用C语言设计学生课程管理系统的基本功能,如增加、删除、修改和查询课程信息;3. 掌握文件操作在C语言中的应用,实现数据的持久化存储。
技能目标:1. 能够运用结构体组织数据,使用数组存储批量数据,运用指针进行高效数据处理;2. 培养学生独立编写代码、调试程序的能力,提高编程实践技能;3. 培养学生分析问题、解决问题的能力,学会设计简单的管理系统。
情感态度价值观目标:1. 培养学生热爱编程,增强对计算机科学的兴趣和热情;2. 培养学生团队协作精神,学会在团队中发挥个人特长,共同完成任务;3. 培养学生勇于面对困难,敢于挑战,善于总结经验教训的品质。
本课程针对高年级学生,结合C语言课程特点,注重理论与实践相结合,以项目驱动教学,培养学生编程实践能力和问题解决能力。
通过设计学生课程管理系统,让学生在实际项目中掌握C语言的核心知识,提高编程技能,同时培养良好的情感态度价值观。
课程目标具体、可衡量,旨在为学生和教师在教学过程中提供明确的指导,确保教学效果。
二、教学内容1. C语言基础知识回顾:结构体、数组、指针、函数、文件操作;2. 学生课程管理系统需求分析:功能模块划分、数据结构设计;3. 编程实现:- 设计课程信息结构体;- 实现课程信息的增加、删除、修改和查询功能;- 利用文件操作实现数据的持久化存储;- 设计简单的用户界面,进行功能选择和操作;4. 测试与调试:编写测试用例,进行功能测试,分析并解决可能出现的错误;5. 代码优化与重构:对代码进行优化,提高程序执行效率和可读性;6. 项目总结与展示:撰写项目报告,总结设计思路和经验教训,进行成果展示。
教学内容按照课程目标进行组织,以教材为基础,结合学生实际情况进行调整。
教学大纲明确教学内容和进度,具体安排如下:第一周:C语言基础知识回顾;第二周:学生课程管理系统需求分析和设计;第三周:编程实现课程管理系统的核心功能;第四周:测试与调试,优化代码;第五周:项目总结与展示。
学生管理系统c语言课程设计
学生管理系统c语言课程设计一、课程目标知识目标:1. 理解结构体在C语言中的应用,掌握学生管理系统中的数据结构设计。
2. 掌握文件操作在C语言中的实现,实现对学生的信息存储和读取。
3. 熟悉指针和数组在C语言中的应用,实现对大量学生数据的有效管理。
技能目标:1. 能够运用结构体、指针和文件操作编写一个简单的学生管理系统。
2. 学会分析实际问题,设计合适的算法和数据结构,解决学生管理中的查询、增加、删除和修改等问题。
3. 培养良好的编程习惯,编写规范、简洁、高效的代码。
情感态度价值观目标:1. 培养学生的团队协作意识,学会与他人共同解决问题。
2. 增强学生的自信心,敢于面对编程挑战,积极寻求解决问题的方法。
3. 激发学生的学习兴趣,认识到编程在实际生活中的广泛应用和价值。
本课程针对高年级学生,以C语言为基础,结合学生管理系统实际案例,注重培养学生的实际编程能力和解决问题的能力。
课程目标明确,可衡量,旨在帮助学生掌握C语言的核心知识,提高编程技能,同时培养学生的情感态度价值观,为后续学习奠定坚实基础。
二、教学内容1. 数据结构设计:- 结构体的定义和使用;- 结构体数组的创建和管理;- 指针在结构体中的应用。
2. 文件操作:- 文件的打开、读取、写入和关闭;- 文件存储结构设计;- 学生信息文件的读写操作。
3. 算法实现:- 学生信息管理系统的功能模块设计;- 查询、增加、删除和修改操作的实现;- 排序和筛选算法的应用。
4. 编程实践:- 设计学生管理系统界面;- 实现系统各功能模块;- 调试、优化和测试程序。
教学内容根据课程目标,结合教材相关章节进行组织。
课程涵盖数据结构、文件操作、算法实现和编程实践等方面,保证内容的科学性和系统性。
教学大纲明确教学内容安排和进度,以教材为基础,引导学生掌握C语言核心知识,提高实际编程能力。
三、教学方法本课程采用以下教学方法,旨在激发学生学习兴趣,提高教学效果:1. 讲授法:- 对课程中的基本概念、原理和知识点进行详细讲解,为学生奠定扎实的理论基础。
c语言学生选课系统设计详细设计
c语言学生选课系统设计详细设计详细设计:1. 数据结构设计:- 学生信息结构体:包含学生姓名、学号、已选课程等信息。
- 课程信息结构体:包含课程名称、课程编号、授课教师等信息。
- 教师信息结构体:包含教师姓名、教师编号等信息。
2. 功能设计:- 学生选课功能:学生可以浏览可选课程列表,并选择自己感兴趣的课程进行选修。
选修成功后,将该门课程加入学生的已选课程列表中。
- 课程管理功能:教师可以添加、修改和删除课程信息。
- 学生信息管理功能:教师可以查看学生的选课情况,并进行相关操作,如修改学生选课等。
3. 界面设计:- 学生选课界面:显示可选课程列表,并提供选课按钮。
- 课程管理界面:显示课程信息列表,并提供添加、修改和删除按钮。
- 学生信息管理界面:显示学生信息列表和选课情况,并提供相关操作按钮。
4. 数据库设计:- 学生表:包含学生姓名、学号、已选课程等字段。
- 课程表:包含课程名称、课程编号、授课教师等字段。
- 教师表:包含教师姓名、教师编号等字段。
5. 系统流程设计:- 学生选课流程:学生登录系统后,进入选课界面,浏览可选课程列表,选择自己感兴趣的课程进行选修。
选修成功后,系统更新学生的已选课程列表。
- 课程管理流程:教师登录系统后,进入课程管理界面,可以进行添加、修改和删除课程信息的操作。
系统更新课程表。
- 学生信息管理流程:教师登录系统后,进入学生信息管理界面,可以查看学生的选课情况,并进行相关操作,如修改学生选课。
系统更新学生表。
6. 错误处理设计:- 输入错误处理:对于用户输入的非法数据,系统进行提示并要求重新输入。
- 数据库错误处理:对于数据库操作过程中的错误,系统进行捕获并给出相应的错误提示。
以上为一个简单的C语言学生选课系统的详细设计。
根据具体需求,还可以进行更加详细和具体的设计。
C语言课程设计学生选修课系统设计
汇报人:
目录
添加目录标题
系统概述
系统需求分析
系统设计
系统实现
系统部署与维护
添加章节标题
系统概述
提高学生编程能力
方便教师管理课程设计项目
添加标题
添加标题
提供课程设计实践平台
添加标题
添加标题
促进学生之间的交流与合作
学生选课:查看课程信息,选择感兴趣的课程 教师管理:发布课程信息,管理学生选课情况 教务管理:查看学生选课情况,统计课程报名人数 系统维护:更新课程信息,维护系统正常运行
系统评估与总结
功能完整性:系统是否具备所有必需的 功能
性能稳定性:系统在运行过程中是否稳 定,是否会出现崩溃或错误
用户体验:系统的界面设计、操作流程 是否符合用户习惯,是否易于使用
安全性:系统是否具备足够的安全措施, 如数据加密、用户认证等
可扩展性:系统是否具备良好的可扩展 性,能够适应未来的需求变化
硬件要求:服务器、网络设备、存储设备等 软件要求:操作系统、数据库管理系统、Web服务器等
部署步骤:安装操作系统、安装数据库管理系统、安装Web服务器、部署应用程序等
维护方案:定期备份数据、定期检查系统运行状况、定期更新软件等
定期备份数据:确保数据安全, 防止数据丢失
定期更新软件:确保系统安全, 防止病毒和恶意软件攻击
管理员模块:用户管理、课程管理、选 课管理、成绩管理等操作
系统实现
数据库类型:MySQL
数据库操作:增删改查、事务处理、 备份恢复
添加标题
添加标题
添加标题
添加标题
数据库设计:表结构设计、字段设 计、索引设计
数据库优化:查询优化、索引优化、 存储优化
学生选课管理系统c课程设计
学生选课管理系统c 课程设计一、课程目标知识目标:1. 让学生理解学生选课管理系统的基本概念和功能,掌握系统设计的基本原理。
2. 使学生掌握数据库的基本操作,如查询、插入、删除和更新数据。
3. 帮助学生了解软件开发流程,熟悉系统设计、编码、测试等环节。
技能目标:1. 培养学生运用所学知识,独立设计并实现一个简单的学生选课管理系统。
2. 提高学生分析问题和解决问题的能力,学会运用数据库技术解决实际应用问题。
3. 培养学生的团队协作能力,学会在项目中进行有效沟通和分工合作。
情感态度价值观目标:1. 培养学生积极的学习态度,激发学生对计算机科学的兴趣和热情。
2. 培养学生的创新意识和实践能力,鼓励学生勇于尝试,敢于挑战。
3. 增强学生的责任心,让学生明白系统设计的重要性,关注用户需求,为用户带来更好的体验。
本课程针对高年级学生,课程性质为理论与实践相结合。
在教学过程中,注重培养学生的实际操作能力和解决问题的能力。
结合学生特点和教学要求,将课程目标分解为具体的学习成果,以便进行后续的教学设计和评估。
通过本课程的学习,使学生能够掌握学生选课管理系统设计的相关知识和技能,为今后从事软件开发和数据库管理等相关工作打下坚实基础。
二、教学内容1. 学生选课管理系统的基本概念与功能- 系统需求分析- 功能模块划分2. 数据库基础知识- 数据库设计原则- 数据表创建与维护- 数据查询、插入、删除和更新操作3. 系统设计- 系统架构设计- 界面设计- 数据库连接与操作4. 编程实现- 编程语言选择(如Java、Python等)- 系统功能编码- 代码调试与优化5. 系统测试与维护- 测试方法与策略- 常见问题分析与解决- 系统维护与升级6. 项目实践- 团队协作与分工- 项目进度管理- 系统部署与展示教学内容根据课程目标制定,涵盖学生选课管理系统设计的相关知识。
本课程采用教材相关章节,结合实际案例,保证教学内容的科学性和系统性。
学生管理系统课程设计c语言
学生管理系统课程设计c语言一、课程目标知识目标:1. 理解结构体在C语言中的概念及应用,掌握结构体在学生管理系统中的使用;2. 学会使用数组存储结构体数据,实现对多个学生信息的存储和管理;3. 掌握函数的定义和调用,能运用函数对学生信息进行增、删、改、查等操作;4. 理解文件操作的基本原理,学会使用文件对学生信息进行存储和读取。
技能目标:1. 能够运用结构体、数组、函数等知识编写简单的学生管理系统程序;2. 掌握基本的程序调试方法,能够独立解决程序中出现的错误;3. 学会使用编程工具(如Visual Studio、Code::Blocks等)进行C语言程序的编写、编译和运行;4. 能够根据实际需求,对程序进行优化和改进。
情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习热情,树立编程自信心;2. 培养学生的团队协作意识和沟通能力,使他们能够在小组合作中发挥积极作用;3. 培养学生的逻辑思维能力,提高分析问题和解决问题的能力;4. 培养学生的创新精神,鼓励他们勇于尝试,不断探索新的编程方法和技巧。
本课程针对高年级学生,结合学生已掌握的C语言知识,设计具有实用性和挑战性的学生管理系统项目。
课程以项目为导向,注重实践操作,旨在提高学生的编程能力和实际问题解决能力。
通过本课程的学习,使学生能够运用所学知识解决实际问题,为后续深入学习C语言打下坚实基础。
二、教学内容1. 结构体与结构体数组:- 结构体的定义和使用;- 结构体数组的创建和管理;- 结构体作为函数参数的传递。
2. 函数设计与实现:- 函数的定义、声明和调用;- 函数的参数传递:值传递与引用传递;- 学生管理系统功能模块的划分及对应函数的实现。
3. 文件操作:- 文件打开、关闭、读写操作;- 学生信息文件的存储和读取;- 文件错误处理。
4. 学生管理系统功能实现:- 学生信息的增加、删除、修改和查询;- 界面设计与交互;- 程序优化与调试。
c学生选课管理系统课程设计
c 学生选课管理系统课程设计一、教学目标本课程旨在让学生了解和掌握学生选课管理系统的基本原理和实现方法。
通过本课程的学习,学生将能够:1.理解学生选课管理系统的需求和功能。
2.掌握学生选课管理系统的基本架构和模块设计。
3.学会使用相关技术和工具实现学生选课管理系统的各个功能。
4.培养学生的团队合作能力和问题解决能力。
二、教学内容本课程的教学内容主要包括以下几个部分:1.学生选课管理系统概述:介绍学生选课管理系统的定义、需求和功能。
2.系统设计:讲解学生选课管理系统的基本架构和模块设计。
3.技术实现:介绍实现学生选课管理系统各个功能所需要使用的技术和工具。
4.系统测试与优化:讲解如何对 student course selection managementsystem 进行测试和优化。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,包括:1.讲授法:讲解基本概念、原理和关键技术。
2.案例分析法:分析实际案例,让学生更好地理解学生选课管理系统的应用。
3.实验法:让学生通过动手实践,加深对课程内容的理解和掌握。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:为学生提供全面、系统的理论知识。
2.参考书:提供更多的背景知识和实际案例。
3.多媒体资料:通过视频、图片等形式,丰富学生的学习体验。
4.实验设备:为学生提供实践操作的机会,加深对课程内容的理解和掌握。
五、教学评估本课程的评估方式包括平时表现、作业和考试三个部分。
平时表现主要评估学生的课堂参与度和团队合作能力,占总评的30%。
作业主要包括课后练习和项目任务,占总评的40%。
考试为闭卷考试,评估学生对课程知识的掌握程度,占总评的30%。
六、教学安排本课程共32课时,安排在第8至第16周的每周二、四下午2:00-4:00进行。
教学地点为计算机实验室,以确保学生有足够的实践操作机会。
教学进度安排合理紧凑,确保在有限的时间内完成教学任务。
学生选课管理系统设计(c语言)课程设计
题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求... 第二部分:程序总体设计思路........... 第三部分:程序功能划分、图示及流程图. 第四部分:程序设计数据、运行结果..... 第五部分:程序的优缺点............... 第六部分:心得体会................... 第七部分:附录(源程序)............. 第八部分:附录(参考文献)...........第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C++ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。
然后定义各种函数的功能包括查看,查询,删除等。
另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。
通过函数的层层调用来实现程序的逻辑结构。
中间通过文件的打开和关闭实现对文件内部所包含的数据的操作。
原创c语言学生选课管理系统课程设计
原创C语言学生选课管理系统课程设计一、引言本文档旨在设计一个基于C语言的学生选课管理系统。
该系统旨在帮助学校管理学生的选课,并提供了学生选课、课程管理、成绩管理等功能。
通过该系统,学生和教师可以方便地进行选课和管理各项学业活动。
本文档将详细介绍该系统的设计与实现。
二、系统需求分析1. 用户角色该系统主要包括以下用户角色:•学生:能够进行选课、查看成绩等操作。
•教师:能够进行课程管理、成绩管理等操作。
•管理员:能够对学生和教师信息进行管理。
2. 功能需求根据用户角色的不同,该系统有以下几个主要功能需求:•学生选课:学生可以选择感兴趣的课程进行选课。
•课程管理:教师可以添加、修改和删除课程信息。
•成绩管理:教师可以录入学生成绩,并提供查询功能。
•用户信息管理:管理员可以管理学生和教师的信息,包括添加、修改和删除操作。
3. 非功能需求以下是该系统的一些非功能性需求:•用户友好性:系统界面简洁美观,操作简单易懂。
•数据安全性:用户数据应进行加密存储,保证数据的安全性。
•性能要求:系统可以同时处理多个用户的请求,响应时间不超过1秒。
三、系统设计与实现1. 系统架构本系统采用客户端-服务器模式,使用C语言编写。
2. 数据库设计系统使用文件存储学生和课程信息,以实现数据持久化。
每个学生和课程信息以一行字符串的形式存储,不同字段之间使用逗号分隔。
管理员可以通过对文件的读写操作来实现对学生和课程信息的管理。
3. 用户界面设计系统的用户界面使用文本方式呈现,通过文字菜单来进行操作选择。
使用者可以根据菜单提示进行相应的操作。
4. 功能模块设计本系统主要包括以下几个功能模块:学生选课模块、课程管理模块、成绩管理模块和用户信息管理模块。
•学生选课模块:学生可以浏览可选课程列表,并选择感兴趣的课程进行选课。
•课程管理模块:教师可以添加、修改和删除课程信息,并提供课程列表查询功能。
•成绩管理模块:教师可以录入学生成绩,并提供成绩查询功能。
C语言选课管理系统课程设计
C语言选课管理系统课程设计一、课程目标知识目标:1. 理解C语言编程基本概念,掌握基本语法和数据类型;2. 学习使用C语言实现一个简单的选课管理系统,理解系统设计的基本流程;3. 掌握利用数组、结构体等数据结构进行信息存储和管理;4. 了解文件操作在C语言中的应用,实现对选课信息的持久化存储。
技能目标:1. 能够运用C语言编写程序,实现选课管理系统的基本功能,如学生信息的添加、删除、修改和查询;2. 能够通过编写代码解决实际问题,培养编程思维和逻辑思维能力;3. 能够对程序进行调试和优化,提高程序性能和稳定性;4. 学会使用集成开发环境(IDE)进行C语言程序的开发和调试。
情感态度价值观目标:1. 培养学生主动探索、积极思考的学习态度,增强解决问题的自信心;2. 培养学生的团队协作精神,学会与他人共同完成任务;3. 增强学生的信息意识,认识到编程在现代社会中的重要作用;4. 培养学生的创新意识,激发对计算机科学的兴趣。
本课程针对高中年级学生,结合C语言学科特点,注重理论与实践相结合,以选课管理系统为实际案例,培养学生编程兴趣,提高实际编程能力。
课程目标具体、可衡量,旨在让学生在掌握C语言知识的同时,培养解决问题的能力和团队协作精神。
二、教学内容1. C语言基础知识回顾:变量、数据类型、运算符、表达式、控制语句(条件语句、循环语句);2. 函数:函数定义、调用、参数传递、返回值、库函数使用;3. 数组和字符串:一维数组、二维数组、字符串处理;4. 结构体和文件操作:结构体定义、结构体数组、文件读写;5. 选课管理系统功能模块设计:- 学生信息管理:添加、删除、修改、查询;- 选课信息管理:选课、退课、查询选课结果;- 系统界面设计:用户登录、菜单显示、功能选择;6. 程序调试与优化:调试技巧、性能优化、代码规范;7. 综合案例分析与实践:根据教材案例,结合实际需求,设计并实现选课管理系统。
教学内容按照教材章节进行安排,结合课程目标,确保学生掌握C语言基础知识,并能运用所学知识完成选课管理系统的设计与实现。
学生选修课程系统设计(C语言)
课程设计题目:学生选修课程系统课程设计内容:用C语言编写程序完成以下任务:(1)录入课程信息(课程信息包括课程编号、课程名、学时和学分),并保存在lessons.txt文件中,课程按课程编号有序。
(2)添加课程信息:添加前首先查找该门课是否存在,若不存在则按照课程编号大小插入到适当位置。
(3)选修一门课程:需要给出学号和课程编号,如果课程编号不存在则重新输入,直到输入正确为止,并将学号和相应的课程编号存入SelectInfo.txt文件中。
(4)显示出所有学生的选课情况。
课程设计要求:1.贯彻结构化程序设计思想。
2.用户界面友好,功能明确,操作方便;可以加以其它功能或修饰。
3.用户界面中的菜单至少应包括“输入课程信息”、“添加课程信息”、“选课及显示”、“退出”4项。
4.代码应适当缩进,并给出必要的注释,以增强程序的可读性。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>int count = 0;int cou = 0;int choose = 0; //用于统计数组个数/*================定义函数===============*/void allput(); //把数组整体排序输出void insert(); //插入新课程void search(); //搜索指定课程void delete_(); //删除指定课程void select(); //选课void change(); //修改指定课程void baocun(); //保存,把修改后的数组重新装入文件void into(); //验证密码void apply(); //申请密码struct subject_list{char num[15]; //装课程编号char name[30]; //装课程名称int xueshi;float xuefen; //分别装学时、学分}sub[100];struct secret{char xuehao[15];char sec[15];}stu[1000];/*================================主函数================================*/void main(){int i=0;FILE *fp,*fpp;if((fpp=fopen("e:\\Secret.txt","r")) == NULL){printf("File open error!\n");exit(0);}while(! feof(fpp)){fscanf(fpp,"%s%s",stu[i].xuehao,stu[i].sec);i++;cou++; //计数};system("color df");/*—————————————————————验证、申请密码——————————————————--——-*/printf("\n\n\n------------------------------ 请通过密码进入------------------------------\n\n\n");do{printf(" 1:进入系统;2:申请密码;0:退出\n");printf(" 请选择功能:");scanf("%d",&choose);printf("\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");if(choose<0){printf("输入错误!\n");exit(0);}switch(choose){case 1: into(); //===========〉引入密码验证函数if(fclose(fpp)){printf("Can not close the file!\n"); //====〉关闭文件exit(0);}break;case 2: apply(); break; //===========〉引入apply 函数case 0:exit(0);default:printf("\n 请重新输入!\n");break;}}while(choose!=0);if((fp=fopen("e:\\LessonInfo.txt","r")) == NULL){printf("File open error!\n");exit(0);}/* 把文件内容赋给数组*/i = 0;while(! feof(fp)){fscanf(fp,"%s%s%d%f",sub[i].num,sub[i].name,&sub[i].xueshi,&sub[i].xuefen); i++;count++; //计数};if(fclose(fp)){printf("Can not close the file!\n"); //====〉关闭文件exit(0);}printf("\n\n\n\n\n\n\n\n\n\n\t 正在启动系统>>>> >>>> >>>>\t\n\n\n\n\n\n\n\n\n\n");for(i=0;i<100000000;i++);system("cls");system("color 1f");/*———————————————————主体框架——系统操作———————————————————————*/do{system("cls");printf("\n\n");printf("==============================欢迎进入学生选课系统==============================\n");printf(" __________________学生选课系统功能选项:__________________ \n");printf(" | 1. 看所有课程信息|\n");printf(" | 2. 搜索指定课程信息|\n");printf(" | 3. 添加课程信息|\n");printf(" | 4. 删除课程信息|\n");printf(" | 5. 修改课程信息|\n");printf(" | 6. 选课|\n");printf(" |________________________7. 退出___________________________|\n");printf("*******************************************************************************\n ");printf("请选择功能:");scanf("%d",&choose);printf("--------------------------------------\n");/* 建立分支选择功能选项*/switch(choose){case 1: allput(); break; //=================〉引用函数排序输出case 2: search(); break; //=================〉引用搜索函数case 3: insert(); break; //=================〉引用插入函数case 4: delete_(); break; //=================〉引用删除函数case 5: change(); break; //=================〉引用函数修改内容case 6: select(); break; //=================〉引用选课函数case 7: printf("谢谢使用!再见!\n"); exit(0); //=================〉退出default: printf("请重新输入\n"); break;}printf("--------------------------------------------------------------------------------\n"); printf(" 按任意键返回首层\n");getch();}while(choose != 7);}/*=============把数组整体排序输出================*/void allput(){int i,j,xueshi;char num[15],name[15];float xuefen;/* 冒泡排序*/for(i=1;i<count;i++)for(j=0;j<count-1;j++)if(strcmp(sub[j].num,sub[j+1].num)>0){strcpy(num,sub[i].num);strcpy(name,sub[i].name);xueshi = sub[i].xueshi;xuefen = sub[i].xuefen;strcpy(sub[i].num,sub[i+1].num);strcpy(sub[i].name,sub[i+1].name);sub[i].xueshi = sub[i+1].xueshi;sub[i].xuefen = sub[i+1].xuefen;strcpy(sub[i+1].num,num);strcpy(sub[i+1].name,name);sub[i+1].xueshi = xueshi;sub[i+1].xuefen = xuefen;}/* 输出查找到的信息*/printf("课程编号\t课程名称\t学时\t学分\n");for(i=0;i<count;i++)printf("%s\t%s\t%d\t%.1f\n",sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen) ;baocun(); //把排序后的数组重新写入文件}/*========================================查看指定课程信息=====================================*/void search(){char num[15];int i,flag=0;do{printf("请输入课程编号:");scanf("%s",num);for(i=0;i<count;i++){if(strcmp(num,sub[i].num) == 0){flag = 1;break;}}/* 输出查找到的信息*/if(flag){printf("课程编号\t课程名称\t学时\t学分\n");printf("%s\t%s\t%d\t%.1f\n",sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen) ;}else{printf("无此课程!1:重新输入;2.返回\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("请输入:");scanf("%d",&choose);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");}if(choose!=1) return;}while(flag==0);}/*=============================================选课===========================================*/void select(){char stu[15],num_[15];int i,flag=0;FILE *fp_;fp_=fopen("e:\\SelectInfo.txt","a");if(fp_== NULL){printf("File open error!\n");exit(0);}do{printf("请输入学号:");scanf("%s",stu);printf("请输入课程编号:");scanf("%s",num_);/* 判断要选课程是否存在*/for(i=0;i<count;i++){if(strcmp(num_,sub[i].num) == 0){//strcpy(name,sub[i].name)flag = 1;break;}}if(flag){fprintf(fp_,"%s %s %s\n",stu,num_,sub[i].name);printf("选课成功!\n");/* 关闭文件*/if(fclose(fp_)){printf("Can not close the file!\n");exit(0);}}else{printf("无此课程!1:重新输入;2.返回\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("请输入:");scanf("%d",&choose);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");}if(choose!=1) return;}while(flag==0);}/*=======================================添加课程=============================================*/void insert(){int i,j,flag=0;char num[15];do{flag = 0;printf("请输入课程编号:");scanf("%s",num);/* 判断要添加课程是否存在*/for(i=0;i<count;i++){if(strcmp(num,sub[i].num) == 0){flag = 1;break;}}if(flag){printf("此课程已存在!1:重新输入;2.返回\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("请输入:");scanf("%d",&choose);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");if(choose!=1) return;}else{j=count;for(i=0;i<count;i++){if(strcmp(num,sub[i].num)>0) continue;strcpy(sub[j].num,sub[j-1].num); //后一项覆盖前一项strcpy(sub[j].name,sub[j-1].name);sub[j].xueshi = sub[j-1].xueshi;sub[j].xuefen = sub[j-1].xuefen;j--;}/* 输入要添加的信息*/strcpy(sub[j].num,num);printf("请输入课程名称:");scanf("%s",sub[j].name);printf("请输入学时:");scanf("%d",&sub[j].xueshi);printf("请输入学分:");scanf("%f",&sub[j].xuefen);count++;baocun();printf("添加成功!\n");}}while(flag==1);}/*=======================================删除课程===============================================*/ void delete_(){char num[15];int i,j,flag=0;do{printf("请输入课程编号:");scanf("%s",num);for(i=0;i<count;i++)if(strcmp(num,sub[i].num) == 0){flag = 1;break;}if(flag){for(j=i;j<count-1;j++){strcpy(sub[j].num,sub[j+1].num); //后一项覆盖前一项strcpy(sub[j].name,sub[j+1].name);sub[j].xueshi = sub[j+1].xueshi;sub[j].xuefen = sub[j+1].xuefen;}count--;baocun(); //引用保存函数printf("删除成功!\n");}else{printf("无此课程!1:重新输入;2:返回\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("请输入:");scanf("%d",&choose);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");}if(choose!=1) return;}while(flag==0);}/*===========================================修改课程==========================================*/void change(){char num[15];int i,flag=0;do{printf("请输入课程编号:");scanf("%s",num);/* 判断要修改课程是否存在*/for(i=0;i<count;i++)if(strcmp(num,sub[i].num) == 0){flag = 1;break;}if(flag){printf("请输入修改后的课程名称:");scanf("%s",sub[i].name);printf("请输入学时:");scanf("%d",&sub[i].xueshi);printf("请输入学分:");scanf("%f",&sub[i].xuefen);baocun(); //引用排序函数,重新写入文件printf("修改成功!\n");}else{printf("无此课程!1:重新输入;2.返回\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf("请输入:");scanf("%d",&choose);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"); }if(choose!=1) return;}while(flag==0);}/*============================================保存=============================================*/void baocun(){int i;FILE *fpp;fpp = fopen("e:\\LessonInfo.txt","w");/* 把数组装入文件*/for(i=0;i<count-1;i++)fprintf(fpp,"%s %s %d %.1f\n",sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen);fprintf(fpp,"%s %s %d %.1f",sub[i].num,sub[i].name,sub[i].xueshi,sub[i].xuefen);/* 关闭文件*/if(fclose(fpp)){printf("Can not close the file!\n");exit(0);}}/*====================通过密码进入后面的程序=====================*/void into(){int i=0;char xueh[15],secret[15];do{printf(" 请输入学号:");scanf("%s",xueh);printf(" 请输入密码:");scanf("%s",secret);for(i=0;i<cou;i++)if(strcmp(xueh,stu[i].xuehao)==0&&strcmp(secret,stu[i].sec)==0){choose = 0;system("cls");return;}//printf("--------------------------------------------------------------------------------\n"); printf("\n 密码错误!1:重新输入;2 :返回\n\n");printf(" 请输入:");scanf("%d",&choose);printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");//if(choose<0) { printf("输入错误!\n"); exit(0);}if(choose!=1) return;}while(1);}/*==========================申请密码=====================*/ void apply(){FILE *fqq;int i=0,flag = 0;char xuehao[15];do{flag = 0;printf("\n 请输入学号:");scanf("%s",xuehao);for(i=0;i<cou;i++)if(strcmp(xuehao,stu[i].xuehao)==0)flag = 1;if(flag!=1) break;//printf("--------------------------------------------------------------------------------\n"); printf("\n 学号已存在!1:重新输入;2:返回\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" 请输入:");scanf("%d",&choose);printf("--------------------------------------------------------------------------------\n");if(choose<0) { printf("输入错误!"); exit(0); }if(choose!=1) return;}while(flag);fqq=fopen("e:\\Secret.txt","a+");printf(" 请输入密码:");scanf("%s",stu[i].sec);strcpy(stu[i].xuehao,xuehao);cou++;fprintf(fqq,"\n%s %s",xuehao,stu[i].sec);if(fclose(fqq)){printf("Can not close the file!\n");exit(0);}printf("--------------------------------------------------------------------------------\n");printf(" 申请成功!是否立即进入:1:进入;2:退出\n");printf("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~~~~~~\n");printf(" 请输入:");scanf("%d",&choose);printf("--------------------------------------------------------------------------------\n");switch (choose){case 1:into();break;default:if(fclose(fqq))printf("Can not close the file!\n");exit(0);}}。
C语言实现学生选修课程系统设计
C语⾔实现学⽣选修课程系统设计本⽂实例为⼤家分享了C语⾔学⽣选修课程系统的具体代码,供⼤家参考,具体内容如下我编程的时间不长,所以这⾥⾯肯定有⼀些错误,或者存在更好的解决⽅案,欢迎⼤神上课!谢谢!ps:寻找⼀起学习的⼩伙伴!代码:/**********************************主题:学⽣选修课程系统设计**设计要求:*1.添加功能:程序能够任意添加课程和学⽣记录,可提供选择界⾯供⽤户选择所需要添加的类别,要求编号要唯⼀,如果添加了重复编号的记录是,则提⽰数据添加重复并取消添加。
*2.查询功能:可根据编号、姓名等信息对已添加的同学和课程记录进⾏查询,如果未找到,给出相应的提⽰信息,如果找到,则显⽰相应的记录信息。
*3.显⽰功能:可显⽰当前系统中所有学⽣和课程的记录,每条记录占据⼀⾏。
*4.编辑功能:可根据查询结果对相应的记录进⾏修改,修改时注意编号的唯⼀性。
*5.删除功能:主要实现对已添加的学⽣和课程记录进⾏删除。
如果当前系统中没有对应的记录,则提⽰“记录为空!”并返回操作。
*6.统计功能:能根据多种参数进⾏统计。
能统计学⽣⼈数、课程门数、选修某门课程的学⽣的相关信息。
**********************************//** Verson:2.0(basic)** History: 完成课程信息的录⼊,查询等操作;完成选课功能(2017-05-05 20:30:00-01:20:00)** Author:universes***********************************//** Verson:1.9** History:完成了学⽣信息的查询操作 (2017-05-04 22:00:32-01:11:00)** Author:universes**********************************//** Verson:1.5** HIstory2:添加查重功能(2017-05-02 23:39:19-01:06:05)* History1:完成了⽤户对课程和学⽣信息的添加操作(没有查重功能)(2017-05-02 22:06:13-23:39:19)** Author:universes**********************************//** Verson:1.0** History:完成了⽤户的选择功能框架(2017-04-19 22:06:13-22:40:47)** Author:universes**********************************/#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include <string.h>#define SIZE_STU 10#define SIZE_COU 10#define SIZE_SEL 10//////////////函数声明部分void home(void);void stu_operate(void);void cou_operate(void);void statistic(void);void choose(void);void delete_sel(int);//--学⽣信息部分:void input_stu(void);void search_stu(void);void search_stu_id(void);void search_stu_name(void);void show_stu(void);void edit_stu(void);void renew_stu(void);void delete_stu(void);//--课程信息部分:void show_cou(void);void edit_cou(void);void renew_cou(void);void delete_cou(void);/*学⽣信息结构体*/struct student_info {char stu_ID[9];char stu_name[5];char sex[9];char age[9];char collage[9];char grade[9];char contact[9];}stu[SIZE_STU];/*课程信息结构体*/struct course_info {char course_ID[9];char course_name[9];char property[9];char period[9];char credit[9];char time[9];int people;}cou[SIZE_COU];/*选课记录结构体*/struct select {int s;//存放学⽣信息的数组下标int c;//存放课程信息的数组下标}sel[SIZE_SEL];//全局变量i,j,x分别是学⽣,课程,选课信息数组下标int i = -1;int j = -1;int x = -1;int main(void){//进⼊欢迎界⾯home();return 0;}//欢迎界⾯void home(void) {printf("\n-------------------------欢迎进⼊选课系统!----------------------"); int h;printf("\n\n 请选择你要进⾏的操作:");printf("\n\n 1.学⽣操作");printf("\n 2.课程操作");printf("\n 3.开始选课");printf("\n 4.选课统计");printf("\n 5.退出系统");printf("\n ");printf("\n 请输⼊:");scanf("%d",&h);system("cls");switch(h){case 1:stu_operate();break;case 2:cou_operate();break;case 3:choose();break;case 4:statistic();break;default:system("cls");printf("BYE!");break;}}/*开始选课*/void choose(void){char stu_id[10],cou_id[10];printf("\n-------------------------欢迎进⼊选课系统!----------------------"); //输⼊选课学⽣信息printf("\n\n 请输⼊选课⼈学号:");fflush(stdin);scanf("%s",stu_id);int h,flag = 0;for(h = 0;h <= i;h++){} else {flag = 1;}}if(flag||i==-1){printf("\n 不存在此学号\n");system("pause");system("cls");home();}//录⼊姓名信息x++;sel[x].s = h;//输⼊课程信息printf("\n\n 请输⼊选修课程号:");fflush(stdin);scanf("%s",cou_id);flag = 0;for(h = 0;h <= j;h++){if(strcmp(cou[h].course_ID,cou_id)==0){flag = 0;break;} else {flag = 1;}}if(flag||j==-1){printf("\n 不存在此课程号\n");x--;system("pause");system("cls");home();}//录⼊课程信息sel[x].c = h;cou[h].people++;printf("\n 录⼊成功!\n");system("pause");system("cls");home();}/*删除选课记录*/void delete_sel(int q){//删除第q+1条记录/*注意!本函数没有将x减1,请在函数外⼿动减1(考虑外层函数循环的需要)*/ int h;cou[sel[q].c].people--;for(h = q;q < x;h++){q++;sel[h].c = sel[q].c;sel[h].s = sel[q].s;}}//对学⽣记录进⾏操作void stu_operate(void) {printf("\n-------------------------欢迎进⼊选课系统!----------------------");printf("\n\n 请选择你要对学⽣记录进⾏的操作:");printf("\n\n 1.添加");printf("\n 2.查询");printf("\n 3.显⽰");printf("\n 4.返回主页⾯");printf("\n ");printf("\n 请输⼊:");int i;scanf("%d",&i);system("cls");switch(i){case 1://添加学⽣信息input_stu();break;case 2://查询学⽣信息search_stu();break;case 3://显⽰所有学⽣信息show_stu();break;case 4:home();break;}}//对课程记录进⾏操作void cou_operate(void) {printf("\n-------------------------欢迎进⼊选课系统!----------------------");printf("\n\n 请选择你要对课程记录进⾏的操作:");printf("\n\n 1.添加");printf("\n 2.查询");printf("\n 请输⼊:");int i;scanf("%d",&i);system("cls");switch(i){case 1:input_cou();break;case 2:search_cou();break;case 3:show_cou();case 4:home();break;}}//选课信息统计记录void statistic(void){printf("\n-------------------------欢迎进⼊选课系统!----------------------");printf("\n\n 共有学⽣信息:%d 条",i+1);printf("\n 共有课程信息:%d 条",j+1);if(x == -1){printf("\n 选课记录:0 条");printf("\n\n ");system("pause");system("cls");home();} else {printf("\n\n 选课记录 %d 条:",x+1);int m;for(m = 0;m <= x;m++){printf("\n ================");printf("\n 第%d条",m+1);printf("\n 学⽣学号:%s",stu[sel[m].s].stu_ID);printf("\n 学⽣姓名:%s",stu[sel[m].s].stu_name);printf("\n 课程号:%s",cou[sel[m].c].course_ID);printf("\n 课程名:%s",cou[sel[m].c].course_name);}printf("\n\n ");system("pause");system("cls");home();}}//--------------------------------------学⽣信息插⼊--------------------------------------void input_stu(void){char flag;FILE * fp;//--判断⽂件是否为空fp = fopen("student.txt","r+");flag = fgetc(fp);if(flag==EOF){fprintf(fp,"学号\t姓名\t性别\t年龄\t系别\t班级\t联系⽅式\n");}fclose(fp);//--fp = fopen("student.txt","a+");if(fp == NULL){printf("打开⽂件失败!");system("cls");stu_operate();}printf("学号\t姓名\t性别\t年龄\t系别\t班级\t联系⽅式\n");while(1){i++;scanf("%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);//--数据查重int h;for(h = 0;h < i;h++){if(i == 0) break;//第⼀条数据不需要查重if (strcmp(stu[h].stu_ID,stu[i].stu_ID)==0) {printf("该学号已存在,请重新输⼊!\n");scanf("\n%s %s %s %s %s %s %s",&stu[i].stu_ID,&stu[i].stu_name,&stu[i].sex,&stu[i].age,&stu[i].collage,&stu[i].grade,&stu[i].contact);h = -1;}}//--fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[i].stu_ID,stu[i].stu_name,stu[i].sex,stu[i].age,stu[i].collage,stu[i].grade,stu[i].contact);printf("\n录⼊成功,继续录⼊输⼊y,返回上⼀级请按任意键:");fflush(stdin);scanf("%c",&flag);fclose(fp);renew_stu();system("cls");stu_operate();}/*查询学⽣信息*/void search_stu(void){system("cls");printf("\n请选择查询⽅式:");printf("\n 1.学号查询");printf("\n 2.姓名查询");printf("\n请选择:");int h;scanf(" %d",&h);switch(h){case 1:search_stu_id();break;case 2:search_stu_name();break;}}/*学号查询*/void search_stu_id(void){system("cls");char id[9];printf("\n输⼊学⽣的学号:");fflush(stdin);scanf("%s",id);int h;for(h = 0;h <= i;h++){if(strcmp(stu[h].stu_ID,id)==0){system("cls");printf("查找成功!");printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系⽅式");printf("\n\t-----------------------------------------------------------------");printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact); system("pause");system("cls");stu_operate();}}system("cls");printf("没有此学号!\n");system("pause");system("cls");stu_operate();}/*姓名查询*/void search_stu_name(void){system("cls");char name[9];printf("\n输⼊学⽣的姓名:");fflush(stdin);scanf("%s",name);int h;for(h = 0;h <= i;h++){if(strcmp(stu[h].stu_name,name)==0){system("cls");printf("查找成功!");printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系⽅式");printf("\n\t---------------------------------------------------------");printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact); system("pause");system("cls");stu_operate();}}system("cls");printf("没有此姓名!");system("pause");system("cls");stu_operate();}/*显⽰所有学⽣信息*/void show_stu(void){int h;if(i == -1){printf("\n还没有录⼊信息!\n");system("pause");system("cls");stu_operate();}system("cls");printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系⽅式");printf("\n\t---------------------------------------------------------");//fflush(stdin);printf("\n\t1.修改");printf("\n\t2.删除");printf("\n\t3.返回");printf("\n\n 选择要进⾏的操作:");int flag;fflush(stdin);scanf("%d",&flag);switch(flag){case 1:edit_stu();break;case 2:delete_stu();break;default:system("cls");stu_operate();break;}}/*编辑学⽣信息*/void edit_stu(void){printf("\n输⼊需要编辑的学⽣的学号:");char id[10];getchar();scanf("%s",id);int h;for(h = 0;h <= i;h++){if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的⾏system("cls");printf("\n\n\t学号\t姓名\t性别\t年龄\t系别\t班级\t联系⽅式");printf("\n\t---------------------------------------------------------");printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n",stu[h].stu_ID,stu[h].stu_name,stu[h].sex,stu[h].age,stu[h].collage,stu[h].grade,stu[h].contact); printf("\n这是修改前的数据,请依次输⼊修改值:\n\t");fflush(stdin);scanf("%s %s %s %s %s %s %s",&stu[h].stu_ID,&stu[h].stu_name,&stu[h].sex,&stu[h].age,&stu[h].collage,&stu[h].grade,&stu[h].contact); int k;for(k = 0;k <= i;k++){if(strcmp(stu[k].stu_ID,stu[h].stu_ID)==0){if(k==h){continue;} else {//学号不唯⼀printf("\n此学号已存在!重新输⼊学号:");fflush(stdin);scanf("%s",&stu[h].stu_ID);k = -1;}}}/*将修改信息写⼊⽂件*///思想:将原⽂件重新写⼊⼀遍renew_stu();system("cls");printf("修改成功!\n");system("pause");system("cls");stu_operate();}}printf("\n此学号不存在!\n");system("pause");system("cls");stu_operate();}/*删除学⽣信息*/void delete_stu(void){printf("\n输⼊需要编辑的学⽣的学号:");char id[10];getchar();scanf("%s",id);int h;for(h = 0;h <= i;h++){if(strcmp(stu[h].stu_ID,id)==0){//找到需要编辑的⾏system("cls");//检查他/她是否选课了int a;for(a = 0;a <= x;a++){if(h==sel[a].s){//选课了则将对应课程记录减1,以及选课数组减1delete_sel(a);a = -1;x--;continue;}}renew_stu();printf("修改成功!\n");system("pause");system("cls");stu_operate();}int k;for(k = h+1;k <= i;k++,h++){//将数组直接向前移动strcpy(stu[h].stu_ID,stu[k].stu_ID);strcpy(stu[h].stu_name,stu[k].stu_name);strcpy(stu[h].sex,stu[k].sex);strcpy(stu[h].grade,stu[k].grade);strcpy(stu[h].contact,stu[k].contact);strcpy(stu[h].collage,stu[k].collage);strcpy(stu[h].age,stu[k].age);}/*将修改信息写⼊⽂件*///思想:将原⽂件重新写⼊⼀遍renew_stu();i--;system("cls");printf("修改成功!\n");system("pause");system("cls");stu_operate();}}printf("\n此学号不存在!\n");system("pause");system("cls");stu_operate();}//--------------------------------------课程信息插⼊--------------------------------------void input_cou(void){char flag;FILE * fp;//--判断⽂件是否为空fp = fopen("course.txt","r+");flag = fgetc(fp);if(flag==EOF){fprintf(fp,"代码\t名称\t性质\t总学时\t学分\t开课学期\t选修⼈数\n");}fclose(fp);//--fp = fopen("course.txt","a+");if(fp == NULL){printf("打开⽂件失败!");system("cls");cou_operate();}printf("代码\t名称\t性质\t总学时\t学分\t开课学期\n");while(1){j++;scanf("%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);//--数据查重int h;for(h = 0;h < j;h++){if(j == 0) break;//第⼀条数据不需要查重if (strcmp(cou[h].course_ID,cou[j].course_ID)==0) {printf("该课程号已存在,请重新输⼊!\n");scanf("\n%s %s %s %s %s %s",&cou[j].course_ID,&cou[j].course_name,&cou[j].property,&cou[j].period,&cou[j].credit,&cou[j].time);h = -1;}}//--fprintf(fp,"%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[j].course_ID,cou[j].course_name,cou[j].property,cou[j].period,cou[j].credit,cou[j].time,cou[j].people); printf("\n录⼊成功,继续录⼊输⼊y,返回上⼀级请按任意键:");fflush(stdin);scanf("%c",&flag);fclose(fp);if(flag!='y'&&'Y') break;fp = fopen("course.txt","a");}renew_cou();system("cls");cou_operate();}/*查询课程信息*/void search_cou(void){system("cls");printf("\n请选择查询⽅式:");printf("\n 1.课程号查询");printf("\n 2.课程名查询");printf("\n请选择:");int h;scanf(" %d",&h);case 2:search_cou_name();break;}}/*课程号查询*/void search_cou_id(void){system("cls");char id[9];printf("\n输⼊课程号:");fflush(stdin);scanf("%s",id);int h;for(h = 0;h <= j;h++){if(strcmp(cou[h].course_ID,id)==0){system("cls");printf("查找成功!");printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修⼈数");printf("\n\t-----------------------------------------------------------------");printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people); system("pause");system("cls");cou_operate();}}system("cls");printf("没有此课程号!\n");system("pause");system("cls");cou_operate();}/*课程名查询*/void search_cou_name(void){system("cls");char name[9];printf("\n输⼊课程名:");fflush(stdin);scanf("%s",name);int h;for(h = 0;h <= j;h++){if(strcmp(cou[h].course_name,name)==0){system("cls");printf("查找成功!");printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修⼈数");printf("\n\t---------------------------------------------------------");printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people); system("pause");system("cls");cou_operate();}}system("cls");printf("没有此课程名!");system("pause");system("cls");cou_operate();}/*显⽰所有课程信息*/void show_cou(void){int h;if(j == -1){printf("\n还没有录⼊信息!\n");system("pause");system("cls");cou_operate();}system("cls");printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期\t选修⼈数");printf("\n\t-------------------------------------------------------------");for(h = 0;h <= j;h++){printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\t\t%d\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time,cou[h].people); }//fflush(stdin);printf("\n\t1.修改");printf("\n\t2.删除");printf("\n\t3.返回");printf("\n\n 选择要进⾏的操作:");int flag;fflush(stdin);scanf("%d",&flag);switch(flag){case 1:edit_cou();break;system("cls");cou_operate();break;}}/*编辑课程信息*/void edit_cou(void){printf("\n输⼊需要编辑的课程号:");char id[10];getchar();scanf("%s",id);int h;for(h = 0;h <= j;h++){if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的⾏system("cls");printf("\n\n\t代码\t名称\t性质\t总学时\t学分\t开课学期");printf("\n\t-------------------------------------------------------------");printf("\n\t%s\t%s\t%s\t%s\t%s\t%s\n",cou[h].course_ID,cou[h].course_name,cou[h].property,cou[h].period,cou[h].credit,cou[h].time); printf("\n这是修改前的数据,请依次输⼊修改值:\n\t");fflush(stdin);scanf("%s %s %s %s %s %s",&cou[h].course_ID,&cou[h].course_name,&cou[h].property,&cou[h].period,&cou[h].credit,&cou[h].time); int k;for(k = 0;k <= j;k++){if(strcmp(cou[k].course_ID,cou[h].course_ID)==0){if(k==h){continue;} else {//课程号不唯⼀printf("\n此课程号已存在,重新输⼊:");fflush(stdin);scanf("%s",&cou[h].course_ID);k = -1;}}}/*将修改信息写⼊⽂件*///思想:将原⽂件重新写⼊⼀遍renew_cou();system("cls");printf("修改成功!\n");system("pause");system("cls");cou_operate();}}printf("\n此课程号不存在!\n");system("pause");system("cls");cou_operate();}/*删除课程信息*/void delete_cou(void){printf("\n输⼊需要编辑的课程号:");char id[10];getchar();scanf("%s",id);int h;for(h = 0;h <= j;h++){if(strcmp(cou[h].course_ID,id)==0){//找到需要编辑的⾏system("cls");//如果只有⼀条记录if(j==0){j = -1;renew_cou();printf("修改成功!\n");system("pause");system("cls");cou_operate();}//查看是否有⼈选课if(cou[h].people!=0){//有⼈选课时int a;for(a = 0;a <= x;a++){if(sel[a].c == h){delete_sel(a);a = -1;x--;continue;}}}int k;for(k = h+1;k <= j;k++,h++){//将数组直接向前移动strcpy(cou[h].course_ID,cou[k].course_ID);strcpy(cou[h].course_name,cou[k].course_name);strcpy(cou[h].property,cou[k].property);}/*将修改信息写⼊⽂件*///思想:将原⽂件重新写⼊⼀遍renew_cou();j--;system("cls");printf("修改成功!\n");system("pause");system("cls");cou_operate();}}printf("\n此课程号不存在!\n");system("pause");system("cls");cou_operate();}//--功能函数/*更新系统数据⾄⽂件*/void renew_stu(void){FILE * fp;fp = fopen("student.txt","w+");if(fp == NULL){printf("\n打开⽂件失败,⽆法保存⾄⽂件。
c语言程序设计之学生选修课系统设计代码
c语言程序设计之学生选修课系统设计代码在学生选修课系统设计中,C语言程序设计是必不可少的一部分。
本文将详细介绍学生选修课系统的设计代码,包括学生信息管理、课程信息管理、选课与退课等功能。
一、学生信息管理在学生选修课系统中,首先需要实现学生信息的管理功能。
以下是学生信息管理的代码示例:#include <stdio.h>#include <stdlib.h>#include <string.h>struct Student {char id[20];char name[20];int age;};void addStudent(struct Student students[], int *count) {printf("请输入学号:");scanf("%s", students[*count].id);printf("请输入姓名:");scanf("%s", students[*count].name);printf("请输入年龄:");scanf("%d", &students[*count].age);(*count)++;printf("添加学生信息成功!\n");}void deleteStudent(struct Student students[], int *count) { char id[20];printf("请输入要删除的学生学号:");scanf("%s", id);for (int i = 0; i < *count; i++) {if (strcmp(students[i].id, id) == 0) {for (int j = i; j < *count - 1; j++) {strcpy(students[j].id, students[j+1].id);strcpy(students[j].name, students[j+1].name); students[j].age = students[j+1].age;}(*count)--;printf("删除学生信息成功!\n");return;}}printf("未找到对应学生信息!\n");}void displayStudents(struct Student students[], int count) {printf("学号\t姓名\t年龄\n");for (int i = 0; i < count; i++) {printf("%s\t%s\t%d\n", students[i].id, students[i].name, students[i].age);}}二、课程信息管理除了学生信息管理外,还需要实现课程信息的管理功能。
c语言学生选课管理系统课程设计
C语言学生选课管理系统课程设计引言学生选课管理系统是一个用于管理学生课程的软件应用程序。
该系统能够自动化学生选课过程,提供方便快捷的选课功能,并能够更好地帮助学校管理学生选课情况。
本文将介绍一个基于C语言的学生选课管理系统的设计与实现。
功能需求学生选课管理系统应具备以下功能:1.学生用户登录和注册:学生可以通过用户名和密码登录系统,并可以进行账号注册。
2.课程浏览:学生可以浏览系统中的所有课程信息,包括课程编号、名称、教师、学分等。
3.选课功能:学生可以根据自己的需求,选择自己感兴趣的课程,并将其加入到已选课程列表。
4.退课功能:学生可以从已选课程列表中选择需要退选的课程,并将其移出已选课程列表。
5.课程信息查询:学生可以通过课程编号或名称进行课程信息查询,以便了解课程的详细信息。
6.学生个人信息查看与修改:学生可以查看和修改自己的个人信息,包括学号、姓名、年级、专业等。
7.成绩查询:学生可以查询已选课程的成绩,系统会将学生的成绩存储在相应的课程中。
数据结构与算法设计学生信息数据结构typedef struct Student {char studentId[10]; // 学号char name[20]; // 姓名int grade; // 年级char major[20]; // 专业} Student;课程信息数据结构typedef struct Course {int courseId; // 课程编号char name[30]; // 课程名称char teacher[20]; // 授课教师int credit; // 学分int score; // 成绩} Course;选课流程算法设计1.学生登录系统,输入用户名和密码。
2.系统验证用户名和密码的正确性,确认学生身份。
3.学生选择想要选修的课程,输入课程编号。
4.系统检查课程是否存在,如果课程存在且未满员,则将课程添加到学生的已选课程列表中。
学生选修课程系统设计—C语言课程设计
学生选修课系统设计一、设计目的现今时期是飞速进展的信息时期,在各行各业中离不开信息处置,这正是运算机被普遍应用于信息系统的环境。
运算机的最到益处的于利用它能够进行信息治理,利用运算机进行信息操纵,不仅提高了工作效率,而且大大的提高了其平安性。
尤其关于复杂的信息治理,运算性能够充分发挥它的优越性。
运算机进行信息治理与信息治理系统的开发紧密相关,系统的开发是系统治理的前提。
本系统确实是为了治理勤学生选课信息而设计的。
数据处置手工操作,工作量大,犯错率高,犯错后不易更改,造成了时刻上的浪费。
基于那个问题,我以为有必要成立一个学生选课系统,使学生选课信息治理工作标准化、系统化、程序化,幸免学生选课治理的随意性,提高信息处置的速度和准确性,能够及时、准确、有效的查询和修改选课情形。
二、题目说明假定有n门课程,每门课程都有课程编号,课程名称,课程性质,总学时,讲课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
试设计一选修课程系统,使之能提供一下功能:(1)系统以菜单方式工作;(2)课程信息和学生信息的录入功能(课程信息有文件保存)----输入;(3)课程信息阅读功能----输出;(4)查询功能(至少一种查询方式)---算法;(5)按学分查询;(6)某门课程学生选修情形(可选项)。
[提示]数据结构可用结构体,包括课程和选秀两个结构体,其中课程结构体包括课程编号、课程名称、课程性质、总学时、讲课学时、实验或上机学时、学分、开课学期。
选修结构体成员包括学号,课程编号,该结构体的成立主若是为了查询某门课程学生选修情形.。
三、数据结构设计本系统的实现,全数采纳链表这种数据结构,用链表实现课程的查找、添加、删除、课程的选修、追加选修的课程,课程信息采纳结构体这种数据结构。
typedef struct subjects{int num;治理员身份登录\n");puts("\t\t\t\t2.以学生身份登录\n");puts("\t\t\t\t3.退出");puts("\n\n\t\t*******************************************\n");printf("Chiose your number(1-3):[ ]\b\b");scanf("%d",&n);switch(n){case 1:Mangers() ;break;case 2:Students();break;case 3:w=0;break;default:;}}while(w==1);return 0;}(二) 治理员功能模块治理员的功能一共有四个功能:阅读,查询,添加,删除课程,运用字符串处置函数处置密码的问题,用一个switch语句实现函数的挪用:[程序]void Mangers(){int n,w=1,flag=0,i=3;char s[8];char password[7]="1";do{printf("\n\nEnter password:");scanf("%s",s);deldeldeln");choose();}printf("课程编号课程名称课程性质总学时讲课学时实践或上机学时学分开课学期\n");while(!feof(fp)){ptr=(SUB*)malloc(sizeof(SUB));fscanf(fp,"%d%s%s%d%d%d%d%d\n",&ptr->num,ptr->name,ptr->kind,&ptr->st ime,&ptr->ttime,&ptr->etime,&ptr->score,&ptr->term);printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind, ptr->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);}system("pause");}(六) 查询模块查询模块要紧用于治理员功能中的“查询课程”和学生功能模块中的“查询所有课程”,查询模块共分为三个查询方式:按课程名称查找,按课程性质查找和按学分查找switch语句中,每一个case语句确实是一中查询方式:[程序]void search()读取文件printf("请输入课程信息所在的文件名称:");!feof(fp)c=fgetc(fp))=='\n' !feof(fp) newSub=(SUB*)malloc(sizeof(SUB)); fscanf(fp,&newSub->num,newSub->name,newSub->k ind,&newSub->stime,&newSub->ttime,&newSub->et ime,&newSub->score,&newSub->term);myInsert(newSub); fclose(fp);选新课程 printf("输入要选修的课程的编号\n"); printf("如果确认输入完要选修的课程的编号,请输入0"); 程序对输入的信息进行查找判断printf(“选修成功! \n")printf("\n 以上信息全部保存在''中\n")p2->next==NULLp2->next=subj; subj->next=NULL;break;eturn head;删除选修课程SUB *p1,*p2; char ch,ch1;int numprintf(输入想要删除的课程编号);scanf("%d",&num);进行编号查找并删除 printf("\n 继续删除请按回车\n");printf("\n 结束删除课程按 0: "); 保存文件 系统进行检测所要保存的文件fprintf(fp,"课程编号 课程名称 课程性质 总学时 授课学时 实验或上机学时 学分 开课学期\n"); p=head;p;p=p->next fprintf(fp,"%5d%12s%9s%9d%9d %11d%11d%7d\n",p->num,p->nam e,p->kind,p->stime,p->ttime,p->etime,p->score,p->term); fclose(fp);printf("创建后的信息已放入''文件中\n");system("pause");插入课程信息SUB *ptr,*subj; int size=sizeof(SUB); char ch,ch1; ch!='0'输入(课程信息、课程编号、课程名称、课程性质、总学分、授课学分、实践或上机学时)ch1=getchar(); ch=getchar();Return head; myInsert(subj);printf("\n\n 继续插入请按回车\ C语言课程设计报告 是 否洁明了的程序菜单。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CHANGSHAUNIVERSITY OF SCIENCE & TECHNOLOGY课程设计(论文)题目:学生选修课管理系统设计学生姓名:江元学号:201153100121班级: 信息与计算科学11-01班所在院部: 数学与计算科学学院指导教师:龚红仿2013 年1 月学生选修课管理系统设计*******学号:************班级:信计11-01班********完成日期: 2013年1月11日学生选修课管理系统设计摘要C语言课程设计和现代计算机技术的实际应用相结合,是我们在本阶段学完理论课程之后对自己该方面的能力的一次很好的检验,从开始的算法思路到运行调试后的美观的图形界面以及另人兴奋的可用程序,都是一个很好的学习和锻炼的过程。
使我们巩固了原有的理论知识,培养了我们灵活运用和组合集成所学过知识及技能来分析、解决实际问题的能力。
使我们体会到自身知识和能力能在实际中的应用和发挥。
不但可以激发创新意识,还可以开发创造能力、培养沟通能力。
这次学生选修课系统管理设计时间虽然仅有一个星期,但确实使我受益非浅。
通过学生选修课系统管理设计我丰富了计算机操作经验,更加深了对C语言的了解,熟悉了其环境,更增强了对Microsoft Visual C++ 6.0的使用技巧。
C语言是在国内外广泛使用的一种计算机语言。
语言功能丰富、表达能力强、使用灵活方便、既具有高级语言的优点,又具有低级语言的许多特点,适合编写系统软件。
同时,我觉得C语言应该是操作和理论相结合的课程,在不断地编写中去思考,两者是不可分割的。
我们在编写一个较大的程序时应该把它分开成几个小程序来看,这样会容易得多。
关键词:学生选修课系统管理;C语言课程设计;计算机技术;模块化程序设计;信息录入;浏览信息;选课;查询STUDENTS ELECTIVE COURSES MANAGEMENT SYSTEMDESIGNABSTRACTC language curriculum design and modern computer technology in the practical application of the combination, we are at this stage of learning theory course on their own side of the ability of a good test, from the beginning of the algorithm to run after the beautiful graphical interface and exciting available procedures, is a very good learning and training process. We consolidate the original theory of knowledge, cultivate our flexibleapplicat,学分,开课学:有文件保,追加选修的课程ion and integration of the knowledge learned and skills of analysis, ability to solve practical problem. So that we realize that their knowledge and ability in practical application and play. Can not only stimulate consciousness of innovation, also can develop creative ability, communication skills training. The student elective system management design time although only a week, but it does make me benefit. Students elective system management design my rich experience in computer operation, more deep understanding of the C language, familiar with the environment, more increased to Microsoft Visual C++ 6 using skills.The C language is widely used at home and abroad a computer language. Language feature-rich, expressive capability is strong, flexible and convenient use, not only has the advantages of high-level language, but also has many of the characteristics of low-level language, suitable for the preparation of system software. At the same time, I think C language should be the operation of combining theory and curriculum, constantly writing to think, the two are inseparable. Us in the preparation of a larger process should divide it into several small procedures, it would be much easier.Key words:students elective system management; C language curriculum design; computer technology; modular design; information; information query; selection;目录1、需求分析 (1)2.1概要设计 (1)2.1模块设计及图示 (1)2.2主函数流程设计 (2)3详细设计 (3)3.1程序中的数据类型 (3)3.2函数运行过程详解 (3)4、设计和调试分析 (13)4.1 调试中遇到的问题 (13)4.2 算法复杂度分析 (15)4.3 经验和体会 (15)5、用户使用说明 (16)6、测试数据和测试结果 (16)参考文献 (22)1 需求分析假定有N门课程,每门课程有课程编号,课程名称,课程性质,总学分,授课学时,实验上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
要求设计一选修课程系统,使之能提供以下功能:(1)课程信息录入功能(课程信息用文件保存)---------输入;(2)课程信息浏览功能------输出;(3)查询功能:(多种查询方式:一种、任意两种组合、三种都能满足)------算法;(1)按学分查询(2)按课程性质查询;(3)按课程名称查询; 要求:(1)用C 语言实现系统,源程序要有适当的注释,使程序容易阅读; (2)函数功能要划分好(结构化程序设计);(3)至少采用文本菜单界面(如果能采用图形菜单界面更好); (4)可以增加新功能模块2概要设计本程序功能模块根据程序设计的需求,综4.0合程序的实用性、智能化得考虑,将程序划分为6个模块分别编写:2.1五个模块分别为:(1)浏览课程信息模块 (2)查询课程信息模块 (3)进入系统进行选课模块 (4)选课情况统计模块 (5)录入选课信息模块将备选课程信息录入录入选课信息已选信息学生选课并记录按学分查询按课程性质查询按课程名称查询查询课程信息进入选课输出选课情况选课情况统计学生选修课程管理系统输出文件全部信息浏览课程信息2.2主函数的流程设计:学生选课系统执行主流程如图所示,先执行主函数 中显示菜单函数,通过循环和按键操作来执行相应的操作。
按键的有效键值为0~5之间的任意数值,其他按键为无效 输入。
各个按键的执行功能为:“1”:浏览已录入的选修课课程信息调用函数,browser(); “2”:通过不同的方式查找记录,调用函数search(); “3”:进入系统进行选课,调用函数xuan_ke();“4”:查看课程已选情况,调用函数xuanke_information(); “5”:录入选修课信息,调用函数input(); “0”:退出系统;3详细设计3.1程序中定义的数据类型3.1、1定义与课程有关的结构体 struct course { int num; /*课程编号*/char name[20]; /*课程名称*/char kind[10]; /*课程性质*/开始主函数是否继续进行相应的操作结束输入【0~5】中所要操作的项目对应的数int taltime,ttime,etime,mark,term; /*课程时间,学分,开课信息等*/};3.1.2定义与学生有关的结构体struct student{int snum;/*学生学号*/int cnum;/*所选课程编号*/char cname[20];/*所选课程名称*/};3.2每个函数的过程详解3.2.1void f1();函数原型:void f1();函数源程序:void f1()/*常用函数2*/{printf("\n课程编号课程名称课程性质授课学时实验或上机学时总学时学分开课学期:\n");}函数功能及实现:此函数仅包含输出语句,在课程信息输出之前调用此函数,打印出表头信息3.2.2void menu();函数原型:void menu()函数源程序:void menu()/*主菜单*/{Printf(“\n\n\n”);printf(" 欢迎使用学生选课系统!\n");printf(" ************************************** \n");printf(" * 1-浏览选课信息2-查询选课信息* \n");printf(" * 3-进入选课操作4-选课情况统计* \n");printf(" * 5-录入选课信息0-退出选课系统* \n");printf(" ************************************** \n");printf(" 请选择输入选项编号(请先选择5进行课程信息录入): ");}函数功能及实现:此函数为输出菜单,进入系统后提示可根据供选择的项目进行后续操作。