C语言课程设计 学生选修课程系统设计
c语言课程设计学生选课系统
c语言课程设计 学生选课系统一、课程目标知识目标:1. 学生能理解C语言在开发学生选课系统中的应用,掌握基本的数据结构(如结构体、数组、链表)和文件操作相关知识。
2. 学生能运用C语言实现学生选课系统的基本功能,如学生信息管理、课程信息管理、选课操作等。
3. 学生能理解并掌握C语言中的模块化编程思想,将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
技能目标:1. 学生能运用C语言编写、调试和运行学生选课系统,具备一定的编程实践能力。
2. 学生能通过团队协作,共同完成一个完整的学生选课系统项目,提高沟通与协作能力。
3. 学生能运用所学知识,对现有学生选课系统进行优化和改进,提高系统性能。
情感态度价值观目标:1. 学生通过本课程的学习,培养对计算机编程的兴趣和热情,树立学习C语言的自信心。
2. 学生在团队协作中,学会尊重他人意见,培养合作精神和团队意识。
3. 学生能够认识到编程在解决实际问题中的价值,提高将所学知识应用于实际生活的意识。
课程性质:本课程为C语言编程实践课程,旨在让学生通过动手实践,掌握C 语言编程技能,并运用所学知识解决实际问题。
学生特点:学生已具备一定的C语言基础,具备基本编程能力,但缺乏实际项目经验。
教学要求:注重理论与实践相结合,强调编程实践,培养学生解决实际问题的能力。
通过团队协作,提高学生的沟通与协作能力。
在教学过程中,关注学生的个体差异,因材施教,使每位学生都能在原有基础上得到提高。
二、教学内容1. 数据结构基础:回顾结构体、数组、链表等基本数据结构,讲解其在学生选课系统中的应用。
相关教材章节:第3章 数据类型与表达式,第4章 控制结构,第5章 函数,第6章 数组与字符串,第7章 指针与结构体。
2. 文件操作:介绍文件读写、文件管理等基本操作,为学生选课系统提供数据持久化支持。
相关教材章节:第10章 文件操作。
3. 模块化编程:讲解模块化编程思想,引导学生将学生选课系统分解为多个函数,提高代码的可读性和可维护性。
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语言学生选修课程系统设计
《高级语言程序设计》课程设计说明书设计题目:学生选修课程系统设计目录1.设计目的…………………….p22 .总体设计……………………p33.详细设计…………………….p44.调试与测试………………….p55.源程序清单与执行结果…….p66.建议和体会………………….p21一.设计目的(1)基本掌握面向过程程序设计的基本思路和方法;(2)达到熟练掌握C语言的基本知识和技能;(3)能够利用所学的基本知识和技能,解决简单的程序设计问题程序功能:(1)输入信息,密码保护(2)浏览信息(3)查询信息,提供两种查询方式(4)统计选课情况(5)进入选课操作(6)退出选课系统二.总体设计设计的流程图如下三、详细设计1、输入初始的课程信息:课程信息用文件保存,包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息。
在输入课程信息前要先输入管理员密码,从而限制权限;2、浏览模块:按照指示就可以找到课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息;3、查询模块:按照指示可以选择通过学分查询信息,或者选择课程性质来查询信息;4、选择模块:通过输入学号和课程编号来选择所修课程,并有统计功能;5、查阅模块:选择主菜单的选项,可以了解统计所选课程的人数;6、退出模块:在主菜单选择“0”退出选课系统。
四:调试与测试问题一、查询模块:其中包括课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等相关信息;当输入学分或者课程性质后,系统进行判断时,提示“输入错误!请重新输入!”解决办法及步骤:1、浏览所有课程中的学分是否为你所输入的值。
2、浏览所有课程中的课程性质是否有存在你所输入的值。
3、输出用于循环检查语句中的课程,发现乱码。
4、仔细分析乱码的原因,最后发现是变量的类型错误,错将课程性质的结构体指针变量定义为了其他类型的指针变量。
原创c语言学生选课系统课程设计
原创C语言学生选课系统课程设计一、引言学生选课系统是高校管理系统中的重要组成部分,它通过网络为学生提供了方便快捷的选课服务。
本课程设计旨在设计一个基于C语言的学生选课系统,通过实现选课、查看选课结果、修改选课等功能,帮助学生更好地管理自己的选课信息。
二、功能设计1. 学生相关功能1.1 登录功能学生可以通过输入学号和密码登录系统,确保只有正式注册的学生才能使用该系统。
1.2 查看选课信息功能学生登录后可以查看所有可选课程的信息,包括课程名称、授课教师、上课时间等。
1.3 选课功能学生可以根据自己的兴趣和需求选择课程进行选课操作,并将选课结果保存到系统中。
1.4 查看选课结果功能学生可以查看自己已选课程的详细信息,包括课程名称、授课教师、上课时间等。
1.5 修改选课功能学生可以对已选课程进行修改操作,包括添加新课程、删除已选课程等。
2. 管理员相关功能2.1 管理员登录功能管理员可以通过输入管理员账号和密码登录系统,以获得管理员权限。
2.2 添加课程功能管理员登录后可以添加新的课程信息,包括课程编号、课程名称、授课教师、上课时间等。
2.3 删除课程功能管理员可以删除已存在的课程信息,以便及时更新课程列表。
2.4 查看选课情况功能管理员可以查看学生的选课情况,包括学生姓名、所选课程、选课时间等。
2.5 修改选课情况功能管理员可以对学生的选课结果进行修改操作,包括添加课程、删除课程等。
三、系统设计1. 学生数据结构设计在系统中,每个学生可以用一个数据结构来表示,包括学号、姓名、密码等信息。
struct Student {int stuId;char stuName[20];char password[20];};2. 课程数据结构设计每门课程可以用一个数据结构来表示,包括课程编号、课程名称、授课教师、上课时间等信息。
struct Course {int courseId;char courseName[30];char teacher[20];char classTime[20];};3. 数据存储设计使用文件来存储学生和课程信息,其中学生信息存储在一个文件中,课程信息存储在另一个文件中。
c语言学生选课系统设计详细设计
c语言学生选课系统设计详细设计详细设计:1. 数据结构设计:- 学生信息结构体:包含学生姓名、学号、已选课程等信息。
- 课程信息结构体:包含课程名称、课程编号、授课教师等信息。
- 教师信息结构体:包含教师姓名、教师编号等信息。
2. 功能设计:- 学生选课功能:学生可以浏览可选课程列表,并选择自己感兴趣的课程进行选修。
选修成功后,将该门课程加入学生的已选课程列表中。
- 课程管理功能:教师可以添加、修改和删除课程信息。
- 学生信息管理功能:教师可以查看学生的选课情况,并进行相关操作,如修改学生选课等。
3. 界面设计:- 学生选课界面:显示可选课程列表,并提供选课按钮。
- 课程管理界面:显示课程信息列表,并提供添加、修改和删除按钮。
- 学生信息管理界面:显示学生信息列表和选课情况,并提供相关操作按钮。
4. 数据库设计:- 学生表:包含学生姓名、学号、已选课程等字段。
- 课程表:包含课程名称、课程编号、授课教师等字段。
- 教师表:包含教师姓名、教师编号等字段。
5. 系统流程设计:- 学生选课流程:学生登录系统后,进入选课界面,浏览可选课程列表,选择自己感兴趣的课程进行选修。
选修成功后,系统更新学生的已选课程列表。
- 课程管理流程:教师登录系统后,进入课程管理界面,可以进行添加、修改和删除课程信息的操作。
系统更新课程表。
- 学生信息管理流程:教师登录系统后,进入学生信息管理界面,可以查看学生的选课情况,并进行相关操作,如修改学生选课。
系统更新学生表。
6. 错误处理设计:- 输入错误处理:对于用户输入的非法数据,系统进行提示并要求重新输入。
- 数据库错误处理:对于数据库操作过程中的错误,系统进行捕获并给出相应的错误提示。
以上为一个简单的C语言学生选课系统的详细设计。
根据具体需求,还可以进行更加详细和具体的设计。
C语言课程设计学生选修课系统设计
汇报人:
目录
添加目录标题
系统概述
系统需求分析
系统设计
系统实现
系统部署与维护
添加章节标题
系统概述
提高学生编程能力
方便教师管理课程设计项目
添加标题
添加标题
提供课程设计实践平台
添加标题
添加标题
促进学生之间的交流与合作
学生选课:查看课程信息,选择感兴趣的课程 教师管理:发布课程信息,管理学生选课情况 教务管理:查看学生选课情况,统计课程报名人数 系统维护:更新课程信息,维护系统正常运行
系统评估与总结
功能完整性:系统是否具备所有必需的 功能
性能稳定性:系统在运行过程中是否稳 定,是否会出现崩溃或错误
用户体验:系统的界面设计、操作流程 是否符合用户习惯,是否易于使用
安全性:系统是否具备足够的安全措施, 如数据加密、用户认证等
可扩展性:系统是否具备良好的可扩展 性,能够适应未来的需求变化
硬件要求:服务器、网络设备、存储设备等 软件要求:操作系统、数据库管理系统、Web服务器等
部署步骤:安装操作系统、安装数据库管理系统、安装Web服务器、部署应用程序等
维护方案:定期备份数据、定期检查系统运行状况、定期更新软件等
定期备份数据:确保数据安全, 防止数据丢失
定期更新软件:确保系统安全, 防止病毒和恶意软件攻击
管理员模块:用户管理、课程管理、选 课管理、成绩管理等操作
系统实现
数据库类型:MySQL
数据库操作:增删改查、事务处理、 备份恢复
添加标题
添加标题
添加标题
添加标题
数据库设计:表结构设计、字段设 计、索引设计
数据库优化:查询优化、索引优化、 存储优化
C语言课程设计学生选课系统
C语言课程设计学生选课系统题目一、学生选课管理系统目录第一部分:课程设计名称、目的、要求 ..... 第二部分:程序总体设计思路 ................... 第三部分:程序功能划分、图示及流程图.. 第四部分:程序设计数据、运行结果......... 第五部分:程序的优缺点 .......................... 第六部分:心得体会................................. 第七部分:附录(源程序)....................... 第八部分:附录(参考文献) ...................第一部分:课程设计名称、目的、要求名称:学生选修课程系统设计目的:运用C语言提高解决实际问题的能力实验环境:Microsoft Visual C++ 6.0内容:假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课学时,实验或上机学时,学分,开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
【功能】系统以菜单方式工作课程信息录入功能(课程信息用文件保存)--输入课程信息浏览功能--输出查询功能:(至少一种查询方式)--算法按学分查询按课程性质查询学生选修课程(可选项)第二部分:程序总体设计思路由于C语言是面对过程的语言,故我的设计思路是根据目标程序运行的过程来编写的。
具体的设计思路如下:程序的要求是设计学生选修课管理系统,对选修课程能够进行录入和修改操作等,要求有菜单界面和退出功能。
首先,考虑到程序的数据输入,可以设置一个管理员登陆选项,通过该选项进入管理员界面,进行选修课的录入和修改操作,最后将录入的课程保存到相应的文件中。
然后定义各种函数的功能包括查看,查询,删除等。
另一个为学生登陆界面,该界面学生可以进行课程选择和浏览查询等操作。
在进行该操作之前需要对管理员保存的文件进行读取,然后对其中的内容进行查询等,在学生选好课程以后,可以将其选好的课程保存于相应的文件中,以便下次进行修改。
课程设计学生选课系统c语言
课程设计学生选课系统c语言一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握学生选课系统相关的数据类型、运算符、控制语句等知识;2. 学会使用C语言设计学生选课系统的功能模块,包括学生信息管理、课程信息管理、选课操作等;3. 了解C语言在学生选课系统中的应用场景,掌握一定的软件设计方法和技巧。
技能目标:1. 能够运用C语言编写简单的学生选课系统程序,具备基本的编程能力;2. 学会分析学生选课系统的需求,设计合理的程序结构,培养解决问题的能力;3. 能够使用调试工具对程序进行调试和优化,提高程序的执行效率。
情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习编程的热情,提高自主学习的积极性;2. 培养学生的团队协作意识,学会与他人合作完成项目任务;3. 通过实际操作,让学生认识到编程在解决实际问题中的价值,增强社会责任感。
课程性质:本课程为实践性较强的学科,结合实际应用场景,培养学生的编程能力和解决问题的能力。
学生特点:学生在本年级已具备一定的C语言基础,对编程有一定的兴趣和热情,但缺乏实际项目经验。
教学要求:教师需结合学生特点和课程性质,注重理论与实践相结合,引导学生主动参与,提高学生的实践操作能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、变量、运算符、控制语句(选择、循环)、函数等基本概念和用法。
2. 学生选课系统需求分析:介绍学生选课系统的功能模块,分析各模块的需求,明确编程目标和任务。
3. 系统设计:- 数据结构设计:学生、课程等实体的属性和关系,以及数据存储方式;- 界面设计:系统菜单、功能界面等;- 功能模块设计:学生信息管理、课程信息管理、选课操作、查询等模块。
4. 编程实践:- 搭建开发环境,熟悉编程工具;- 编写各功能模块的代码,实现学生选课系统的基本功能;- 调试和优化程序,确保系统的稳定性和性能。
C语言课程设计实践报告—学生选课管理系统[内附程序源代码](可编辑)
C语言大型作业实践报告计算机1001制作者:李菁华张兆丰秦恒加2011年6月题目:选修课程管理系统要求:假定有N门选修课,每门课有课程编号、名称、课程性质、总学时、授课学时、实验或上机学时、学分、开课学期等信息。
学生可按要求(如总学分不能少于20学分)选课。
课程信息维护,如录入、修改、删除等,课程信息用文件保存。
课程信息浏览?输出。
学生选课功能。
查询功能包括:按学分、课程性质、学生等查询。
统计功能。
统计各门课程的选修人数。
本系统要有通用性、界面美观、操作方便。
要考虑系统安全。
课程信息录入系统选修课程信息录入选修课程信息保存主程序目录选择总体设计思路(流程图):学生选课系统课程信息读入学生信息输入选课系统数据保存选修课数据维护系统添加修改删除以word格式输出密码系统密码验证系统权限限制系统密码对退出程序密码对选修课程信息查找按各种类型查找密码错3次以上具体算法流程设计思路(流程图):主程序目录选择1.学生选课系统;2.选修课程信息输出;3.选修课程信息查找;4.管理员选项;5.退出系统。
管理员选项密码验证系统读入系统时间,通过强制转换成unsigned long int型数据作为初始密码用户输入密码(若是管理员会拥有密码钥匙,得出现在的密码,该密码每分钟都会变化)密码正确进入管理员管理界面,密码不正确重新输入密码输入错误3次以上 12 3学生选课系统选修课程信息以word2003形式输出返回主菜单选修课程信息查找选修课程信息从文件内读入输入按什么查找1.课程编号;2.课程名;3.课程种类;4.总课时;5.教学课时;6实验课时;7.学分;8.开课学期;9.已选人数。
输入查找的关键字从文件内读入的课程信息与关键字逐一对比,完全匹配输出;查找完毕学生信息输入课程信息浏览不选少于这门20分选课系统课选课成功判断学分是否大于20分大于20分结束选课选课信息储存退出程序管理员模块管理员模块 3目录选择1.学生选课系统;2.选修课程信息管理系统;3.退出系统12 5学生选课系统二级目录选择1.新建选修课程信息;2.管理选修课程信息;3.统计每门课程选择人数;4.选修课程信息输出;5.回到主菜单。
c语言课程设计学生选课系统设计
c语言课程设计学生选课系统设计一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握数组、指针、函数等基本概念;2. 学会使用结构体、文件操作等C语言特性进行数据组织和存储;3. 掌握面向过程编程思想,能够运用C语言设计简单的学生选课系统。
技能目标:1. 能够运用结构化编程方法,编写模块化的C语言代码;2. 学会使用C语言进行简单的数据输入、处理和输出;3. 能够运用调试工具,分析并解决程序中的错误。
情感态度价值观目标:1. 培养学生对计算机编程的兴趣,激发自主学习编程的积极性;2. 培养学生的团队合作意识,学会在团队中发挥个人优势,共同解决问题;3. 培养学生严谨、细心的编程习惯,认识到编程对培养逻辑思维能力和解决问题能力的重要性。
课程性质:本课程为C语言程序设计课程的实践环节,以学生选课系统设计为主题,结合C语言编程知识,培养学生的实际编程能力和解决问题的能力。
学生特点:学生已具备一定的C语言基础,对编程有一定了解,但实际操作能力有待提高。
教学要求:结合学生特点和课程性质,将课程目标分解为具体的学习成果,注重实践操作,强化编程能力和团队协作能力的培养。
在教学过程中,关注学生个体差异,提供个性化指导,确保课程目标的达成。
二、教学内容1. C语言基础知识复习:数组、指针、函数、结构体、文件操作等基本概念和用法。
教材章节:第三章数组和第四章函数。
2. 面向过程编程思想:顺序结构、分支结构、循环结构等控制结构在实际编程中的应用。
教材章节:第五章控制结构。
3. 学生选课系统需求分析:了解系统功能、模块划分,明确编程目标和任务。
教材章节:项目实训部分。
4. 学生选课系统设计:模块化设计、数据结构设计、界面设计等。
教材章节:项目实训部分。
5. 编程实践:根据设计文档,编写C语言代码实现学生选课系统。
教材章节:项目实训部分。
6. 调试与测试:使用调试工具,对程序进行调试和测试,确保系统功能的正确性和稳定性。
C语言课程设计-学生选修课程系统设计
机学时、学分、开课学期。选修结构体成员包括学号,课程编号,该结 构体的建立主要是为了查询某门课程学生选修情况.。 三、数据结构设计 本系统的实现,全部采用链表这种数据结构,用链表实现课程的 查找、添加、删除、课程的选修、追加选修的课程,课程信息采用结构 体这种数据结构。 typedef struct subjects { int num; //课程编号 char name[20]; //课程名称 char kind[10]; //课程性质 int stime; //总学时 int ttime; //授课学时 int etime; //实验或上机学时 int score; //学分 int term; //开课学期 struct subjects *next; }SUB; SUB *head=NULL; 四、程序分析 现代的社会是信息化的社会,信息无所不在。在生产领域、流通领 域、各个部门每天都和信息打交道,如何处理如此多的信息成为了一个 重要的课题。学生在学期开始选课是教学活动中的一个重要环节,该环 节如果能管理好,它不仅能加快学生的选课速度,也提高了整个活动的 效率。 大学一般都有上千名学生,每学期开始学生都要选课,因而产生了 大量的课程信息。考虑到用户使用的方便和处理的信息量系统要完成录 入,保存,查询,修改和删除课程信息的各种过程,能打印出课程信息 表。 对象:
[程序] void Students() //学生登录菜单 { int n,w=1; do { system("cls"); puts("\n\n\t\t************学生菜单**************\n\n"); puts("\t\t\t\t1---浏览所有课程\n"); puts("\t\t\t\t2---查询课程信息\n"); puts("\t\t\t\t3---选择选修课程\n"); puts("\t\t\t\t4---浏览我选修的课程\n"); puts("\t\t\t\t5---删除错选课程\n"); puts("\t\t\t\t6---返回主菜单"); puts("\n\n\t\t***********************************\n"); printf("Chiose your number(1-6):[ ]\b\b"); scanf("%d",&n); switch(n) { case 1:prin();break; case 2:search();break; case 3:choose();break; case 4:prin1();break; case 5:del();savefile1();break; case 6:return; default:; } } while(w==1); } (四) 创建链表模块
C语言课程设计报告—学生选修课程系统设计
目录课程设计评语.................................................................................................... 错误!未定义书签。
目录. (1)1.课程论文题目 (2)2.程序设计思路 (3)3.功能模块图 (3)4.数据结构设计 (4)5.算法设计 (4)6.程序代码 (10)7.程序运行结果 (20)8.编程中遇到的困难及解决方法 (21)9.总结心得及良好建议 (22)10.致谢 (22)1.课程论文题目名称:学生选修课系统设计【要求】假定有n门课程,每门课程有课程编号,课程名称,课程性质,总学时,授课时间,实验或上级时间,学分,开课学期等信息,学生可按要求(如总学分不超过60)自由选课。
是设计一选修课课程系统,使只能提供以下功能:(1)系统一菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息用文件保存输入(3)课程信息浏览功能——输出(4)查询功能(至少一种查询方式)——算法(5)按学分查询(6)某门课程学生选修情况(可选项)【提示】数据结构可用结构体,包括授课和选课两个结构体,其中课程结构体成员包括编号,课程名称,课程性质,总学时,授课学时,实验或上机时间,学分,开课学期。
学秀结构体成员包括学号,课程编号,该结构体的建立主要是为了查询某门课程学生选修情况。
2.程序设计思路由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。
根据题目要求,可以将系统分为六个模块:1)系统以菜单方式工作模块;2)课程信息与学生选课信息录入功能模块;3)课程信息浏览功能模块;4)查询模块;5)按学分查询模块;6)某些课程学生选修情况模块3.功能模块图4.数据结构设计该程序采用多个main ()函数模块分别来实现程序的运行,通过使用数组功能来实现数据的录入,使用strcpy ()函数来实现录入信息的复制,整个结构从整体来看使用了选择结构,break ..case ..的合理利用5.算法设计1.课程信息录入功能void savefile(SUB *head) {SUB *p; FILE *fp;fp=fopen("subjects.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}void savefileadd(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsadd.txt","w");fprintf(fp,"课程编号课程名称课程性质总学时授课学时实验或上机学时学分开课学期\n");for(p=head;p;p=p->next)fprintf(fp,"%5d%12s%9s%9d%9d%11d%11d%7d\n",p->num,p->name,p->kind,p->stime,p->ttime,p->etime,p->score,p->term);fclose(fp);}2.查询功能{int a,num;int t=1;char type[10];char ch='a',ch1;SUB *ptr;while(ch!=' '){printf("若要按课程性质查找请输入1,若要按学分查找请输入2:\n");scanf("%d",&a);switch(a){case 1:printf("请输入要查找的课程的性质:\n");scanf("%s",type);printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)if(strcmp(type,ptr->kind)==0){printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,pt r->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;break;case 2:printf("输入要查找的课程的学分\n");scanf("%d",&num);printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)if(ptr->score==num){printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,pt r->stime,ptr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;}printf("继续查找请按回车键,结束请按空格键:\n");ch1=getchar(); //将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。
学生选修课程系统设计(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语言课程设计实现选课系统
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<conio.h>typedef struct SUBJECT //临时保存课程信息{char c_name[10]; //名称char time[10]; //上课时间char didian[10]; //上课地点};typedef struct STUDENT //临时保存选课信息{int no; ///学号char s_name[10]; //名字char cla[10]; //班级char c_name[10]; //所选课程名称};#define SIZE_SUB sizeof(SUBJECT) //定义常量保存课程结构的大小#define SIZE_STU sizeof(STUDENT) //定义常量保存学生结构的大小void search_stu_no(); //按学号查询选课状态void insert_stu();//保存学生选课信息void search_stu_name();// 按名字查询选课状态void insert_sub();//录入课程信息void search_sub_name();//按课程名称查询void print_all_sub();//显示所有选修课程信息int main(){int i;for(;;){printf("\t\t*********************************\n");printf("\t\t************学生选课系统***********\n");printf("\t\t*********************************\n");printf("1.---------------增加选修课程:\n");printf("2.---------------显示所有选修课程:\n");printf("3.---------------按课程名称查询:\n");printf("4.---------------开始选课:\n");printf("5.---------------按学号查询选课记录:\n");printf("6.---------------按姓名查询选课记录:\n");printf("7.---------------退出系统:\n");printf("\n\n请选择功能:");scanf("%d",&i);switch(i){case 1:{system("cls");insert_sub();}break;case 2:{system("cls");print_all_sub();}break;case 3:{system("cls");search_sub_name();}break;case 4:{system("cls");insert_stu();}break;case 5:{system("cls");search_stu_no();}break;case 6:{system("cls");search_stu_name();}break;case 7:{return 0;}}}system("pause");return 0;}void search_stu_no() //按学号查询{FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];int no;printf("请输入需要查询的学号:");scanf("%d",&no);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!feof(fp)){if(no == student[i].no){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}}else{printf("没有此学生的选课记录\n");}}fclose(fp);system("pause");system("cls");}void insert_stu(){STUDENT student;printf("请输入学号:");scanf("%d",&student.no);printf("请输入姓名:");scanf("%s",&student.s_name);printf("请输入班级:");scanf("%s",&student.cla);printf("请输入所选课程名称:");scanf("%s",&student.c_name);FILE *fp;fp = fopen("student.txt","ab");if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&student,SIZE_STU,1,fp); //以二进制写入文件中fclose(fp);printf("选课成功:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_stu_name(){FILE *fp;fp = fopen("student.txt","rb");STUDENT student[30];char name[10];printf("请输入需要查询的姓名:");scanf("%s",name);printf("学号\t\t姓名\t\t班级\t\t选课\n");for(int i = 0;fread(&student[i],SIZE_STU,1,fp)!= 0;i++){if(!strcmp(name,student[i].s_name)){printf("%d \t\t%s \t\t %s\t %s\n",student[i].no,student[i].s_name,student[i].cla,student[i].c_name );}else{printf("没有选课记录\n");}}fclose(fp);}void insert_sub(){SUBJECT subject;FILE *fp;fp = fopen("subject.txt","ab");printf("请输入课程名称:");scanf("%s",&subject.c_name);printf("请输入开课时间:");scanf("%s",&subject.time);printf("请输入上课地点:");scanf("%s",&subject.didian);if(fp == NULL){printf("无法打开文件\n");}else{fwrite(&subject,SIZE_SUB,1,fp); //以二进制写入文件中fclose(fp);printf("\n\n************课程已增加***********:\n");system("pause"); //美化作用,是程序暂停system("cls"); // 实现清屏}}void search_sub_name(){FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];char name[10];printf("请输入需要查询的课程名称:");scanf("%s",name);printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //读取文件内所有信息{if(!feof(fp)) //判断文件指针是否到达文件末尾{if(!strcmp(name,subject[i].c_name)) //字符串比较,判断是否相等{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}}else{printf("没有该课程信息\n");}}fclose(fp);system("pause");system("cls");}void print_all_sub() //显示所有课程信息{FILE *fp;fp = fopen("subject.txt","rb");SUBJECT subject[30];printf("课程名称\t上课地点\t上课时间:\n");for(int i = 0;fread(&subject[i],SIZE_SUB,1,fp)!= 0;i++) //如果没有到达文件末尾则始终读取{printf("%s \t\t %s \t %s\n",subject[i].c_name,subject[i].didian,subject[i].time);}fclose(fp);system("pause");system("cls");}。
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);}}二、课程信息管理除了学生信息管理外,还需要实现课程信息的管理功能。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
学生选修课系统设计一、设计目的当今时代是飞速发展的信息时代,在各行各业中离不开信息处理,这正是计算机被广泛应用于信息系统的环境。
计算机的最到好处的于利用它能够进行信息管理,使用计算机进行信息控制,不仅提高了工作效率,而且大大的提高了其安全性。
尤其对于复杂的信息管理,计算机能够充分发挥它的优越性。
计算机进行信息管理与信息管理系统的开发密切相关,系统的开发是系统管理的前提。
本系统就是为了管理好学生选课信息而设计的。
数据处理手工操作,工作量大,出错率高,出错后不易更改,造成了时间上的浪费。
基于这个问题,我认为有必要建立一个学生选课系统,使学生选课信息管理工作规范化、系统化、程序化,避免学生选课管理的随意性,提高信息处理的速度和准确性,能够及时、准确、有效的查询和修改选课情况。
二、题目说明假定有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->stime,&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语言课程设计报告 是 否洁明了的程序菜单。
程序主要采用了六组层次不同的菜单,相互独立又相互联系,巧妙相接,符合用户的使用习惯与思维。
2.人性化的程序提示语言,程序提示语言较人性化,不仅大多为祈使语句、疑问句,而且提示明确,具有较强的明确的指导作用。
程序提示不仅层次分明,提示方式多样,而且提示信息井然有序,更加有利于用户顺利、准确地进行程序的操作。
3.智能化的模块设计。
程序的智能化主要体现在减少了许多人工操作。
如功能模块操作结束后,均会返回主菜单进行下一模板的运行,并提示是否再进行类似的操作,这样给用户带来了操作的方便,大大提高了学生选课的效率。
本程序达到了C语言课程设计题目的所有要求。
即本程序(1)系统一菜单方式工作(2)课程信息和学生选课信息录入功能(课程信息用文件保存输入(3)课程信息浏览功能——输出(4)查询功能(至少一种查询方式)——算法(5)按学分查询(6)某门课程学生选修情况(可选项)的功能要求。
与此同时,程序各模块开发设计依据了程序的具体实际的使用情景,而有所改进,使其更具有实用性。
【程序的缺点】主要表现在以下四点:1.程序虽然经过多次精简,但仅仅是形式上、小范围的精简,仍未得到本质上的精简,即未找到更加简单、更加高效、更加合理、更小占用的资源的算法。
2.程序仍然存在不合理的地方,例如程序某些部分输入错误会导致程序中止或转向其他功能模块,即程序建议用户注意提示,进行合理的准确的输入,这样更有利于管理工作。
3.程序功能仍然不够完善。
例如信息表达方式不丰富,比较单一,缺少图片、音乐等元化表达方式。
附录(源程序代码)#include ""#include ""#include ""#include""void prin1();void choose();typedef struct subjects{int num; n");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->stime,&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");}void *myInsert(SUB *subj) 管理员身份登录(password 1)\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;}。