基于C语言的学生选课管理系统

合集下载

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语言设计学生选课系统

#include<stdio.h>#include<stdlib.h>#include<conio.h>#include<dos.h>#include<string.h>#define LEN sizeof(struct stu)#define FORMAT "%-8d%-10s%-8d%-10d%-8d%-15s\t%-20s\n"#define DATA comm[i].num,comm[i].name,comm[i].banji,comm[i].xuehao,comm[i].chengji,comm[i].teach,com m[i].timu#define TM sizeof(struct stu)#define FORMAT2 "%-8d%-15s\t%-20s\n"#define TMK comm[i].bianhao,comm[i].laoshi,comm[i].xuantistruct stu/*定义学生信息结构体*/{int num; /*编号*/int bianhao;char name[15]; /*学生名称*/int banji; /*班级*/int xuehao; /*学号*/int chengji; /*成绩*/char teach[15]; /*老师名称*/char laoshi[15];char timu[20]; /*选题*/char xuanti[20];};struct stu comm[100];/*定义结构体数组*/void in(); /*录入学生信息*/void give(); /*管理员录入可选课题*/void show(); /*显示学生信息*/void order1(); /*按成绩排序*/void order2(); /*按班级学号排序*/void del(); /*删除学生信息*/void del2(); /*删除题目信息*/void modify1(); /*管理员修改学生信息*/void modify2(); /*学生选择毕业设计题目*/void menu1(); /*管理员菜单*/void menu2(); /*学生菜单*/void insert(); /*插入学生信息*/void tongji(); /*所选题目*/void search(); /*查找学生信息*/void main() /*主函数*/{int h,flag1,flag2,flag3;char name[20]="2014008",password[10]="11111";char name1[20]="guanli",password1[10]="11111";char xuanzhe[20]="gl";char person[20],password2[10],ch[20];printf ("\t\t ******** 欢迎进入2014本科毕业设计管理系统!********\n\n");printf ("\t\t\t\t用户登录\n ");printf ("\n请选择登陆方式:您是管理员请输入gl,学生请输入其他: ");gets(ch);flag1=strcmp(ch,xuanzhe);for(h=0;h!=6;){ if(flag1==0){ printf(" 管理员名:");gets(person);flag2=strcmp(person,name1);printf(" 密码: ");gets(password2);flag3=strcmp(password1,password2);}else{ printf(" 用户名:");gets(person);flag2=strcmp(person,name); /*strcmp比较两个字符串,若相等返回0*/printf(" 密码:");gets(password2);flag3=strcmp(password,password2);}if(flag2==0 && flag3==0){printf("\t\t\t 登陆成功!\n\n");if(flag1==0)menu1();elsemenu2();break;else{printf ("\t\t\t用户名或密码错误!\n\n");printf ("\t\t\t请注意:您还剩%d次机会!\n\n",5-h);h++;}}if (h=5)printf ("对不起,您输入的用户名或密码有误,系统已强制退出。

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语言课程设计

学生课程管理系统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语言学生选课系统课程设计

原创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语言

学生选课管理系统c语言一、引言随着信息化时代的到来,各个行业都开始向数字化、网络化转型,教育行业也不例外。

学生选课管理系统是教育行业中非常重要的一个系统,它可以大大提高选课效率和管理水平,减轻教务工作量,为学生提供更加便捷的选课服务。

本文将介绍如何使用C语言编写一个学生选课管理系统。

二、需求分析1. 系统用户:管理员、学生;2. 系统功能:(1)管理员功能:添加、删除、修改课程信息;添加、删除、修改学生信息;查询课程信息;查询学生信息。

(2)学生功能:查询可选课程;选择课程;查看已选课程。

三、设计思路1. 数据结构设计:(1)管理员数据结构:管理员ID和密码;(2)学生数据结构:学号、姓名和密码;(3)课程数据结构:编号、名称和授课教师;(4)选修数据结构:选修编号和对应的学号和课程编号。

2. 功能设计:(1)管理员功能:① 添加课程信息:输入编号、名称和授课教师,保存到文件中;② 删除课程信息:输入要删除的编号,从文件中删除对应记录;③ 修改课程信息:输入要修改的编号,修改对应记录;④ 查询课程信息:按照编号或名称查询课程信息;⑤ 添加学生信息:输入学号、姓名和密码,保存到文件中;⑥ 删除学生信息:输入要删除的学号,从文件中删除对应记录;⑦ 修改学生信息:输入要修改的学号,修改对应记录;⑧ 查询学生信息:按照学号或姓名查询学生信息。

(2)学生功能:① 查询可选课程:显示所有未选修的课程;② 选择课程:输入选修编号和密码,保存到文件中;③ 查看已选课程:显示已选修的所有课程。

四、详细实现1. 系统初始化程序启动时,先检查管理员和学生文件是否存在,如果不存在则创建。

然后读取管理员和学生数据到内存中。

2. 管理员功能实现(1)添加课程信息:管理员输入编号、名称和授课教师,并生成唯一的编号。

将新纪录写入文件。

(2)删除课程信息:管理员输入要删除的编号,在文件中查找并删除对应记录。

(3)修改课程信息:管理员输入要修改的编号,在文件中查找并修改对应记录。

课程设计学生选课系统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语言学生选课管理系统课程设计

原创C语言学生选课管理系统课程设计一、引言本文档旨在设计一个基于C语言的学生选课管理系统。

该系统旨在帮助学校管理学生的选课,并提供了学生选课、课程管理、成绩管理等功能。

通过该系统,学生和教师可以方便地进行选课和管理各项学业活动。

本文档将详细介绍该系统的设计与实现。

二、系统需求分析1. 用户角色该系统主要包括以下用户角色:•学生:能够进行选课、查看成绩等操作。

•教师:能够进行课程管理、成绩管理等操作。

•管理员:能够对学生和教师信息进行管理。

2. 功能需求根据用户角色的不同,该系统有以下几个主要功能需求:•学生选课:学生可以选择感兴趣的课程进行选课。

•课程管理:教师可以添加、修改和删除课程信息。

•成绩管理:教师可以录入学生成绩,并提供查询功能。

•用户信息管理:管理员可以管理学生和教师的信息,包括添加、修改和删除操作。

3. 非功能需求以下是该系统的一些非功能性需求:•用户友好性:系统界面简洁美观,操作简单易懂。

•数据安全性:用户数据应进行加密存储,保证数据的安全性。

•性能要求:系统可以同时处理多个用户的请求,响应时间不超过1秒。

三、系统设计与实现1. 系统架构本系统采用客户端-服务器模式,使用C语言编写。

2. 数据库设计系统使用文件存储学生和课程信息,以实现数据持久化。

每个学生和课程信息以一行字符串的形式存储,不同字段之间使用逗号分隔。

管理员可以通过对文件的读写操作来实现对学生和课程信息的管理。

3. 用户界面设计系统的用户界面使用文本方式呈现,通过文字菜单来进行操作选择。

使用者可以根据菜单提示进行相应的操作。

4. 功能模块设计本系统主要包括以下几个功能模块:学生选课模块、课程管理模块、成绩管理模块和用户信息管理模块。

•学生选课模块:学生可以浏览可选课程列表,并选择感兴趣的课程进行选课。

•课程管理模块:教师可以添加、修改和删除课程信息,并提供课程列表查询功能。

•成绩管理模块:教师可以录入学生成绩,并提供成绩查询功能。

学生选课管理系统c语言

学生选课管理系统c语言

学生选课管理系统简介学生选课管理系统是一种用于学生选课和管理课程的系统。

通过该系统,学生可以方便地选取自己感兴趣的课程,并进行课程的管理和查询,同时教务部门可以通过系统进行课程的发布、修改和管理。

功能需求学生选课管理系统需要具备以下功能:1.学生注册和登录功能:学生需要先注册账号,然后通过账号登录系统。

2.学生选课功能:学生通过系统浏览可选的课程列表,并选择自己感兴趣的课程进行选课。

3.课程查询功能:学生可以查询已选和未选课程的详细信息,包括课程名称、授课教师、上课时间等。

4.课程管理功能:教务部门可以通过系统添加、修改和删除课程信息,包括课程名称、授课教师、上课时间等。

5.学生管理功能:教务部门可以通过系统管理学生信息,包括学生姓名、学号、选课情况等。

6.成绩管理功能:教务部门可以通过系统录入学生的成绩,并提供学生成绩查询功能。

7.课程评价功能:学生可以对已修完的课程进行评价,包括评分和评论。

8.学分统计功能:系统可以根据学生的选课情况自动计算学分和学分绩点,并提供查询功能。

技术实现为了实现学生选课管理系统,可以使用C语言进行开发。

以下是一些技术实现的建议:1.数据存储:可以使用文件系统来存储学生、课程和成绩等信息。

可以使用文本文件或二进制文件存储数据,通过文件操作函数进行读写。

2.用户界面:可以使用命令行界面或图形界面来实现用户的交互。

使用C语言的终端输出函数可以实现简单的命令行界面,使用图形界面库可以实现更复杂的图形界面。

3.数据结构:可以使用结构体来表示学生、课程和成绩等信息,通过数组或链表等数据结构进行管理。

4.用户认证:可以使用用户名和密码进行用户的身份验证。

可以将用户信息保存在文件中,通过比对输入的用户名和密码来验证用户身份。

5.查询和排序:可以使用各种算法来实现课程查询和排序功能。

例如,可以使用线性搜索来查询课程信息,使用冒泡排序或快速排序来对课程进行排序。

系统流程以下是学生选课管理系统的基本流程:1.学生注册和登录:学生在系统中注册账号,并通过账号登录系统。

学生选课管理系统c语言程序

学生选课管理系统c语言程序

学生选课管理系统c语言程序随着信息技术的快速发展,学生选课管理系统成为了现代教育管理的重要组成部分。

本文将介绍一个基于C语言编写的学生选课管理系统程序,旨在提供一个简单、高效的选课系统,方便学生和教师进行选课和管理。

一、系统概述学生选课管理系统是一个基于C语言开发的程序,主要实现学生选课和教师管理的功能。

系统采用命令行界面,通过输入指令和参数来完成各种操作。

系统具有良好的用户交互性和数据管理能力,能够满足学生选课和教师管理的需求。

二、系统功能1. 学生选课功能学生可以通过输入选课代码和课程号来选择课程。

系统会根据学生的选择进行验证,并更新学生的选课信息。

学生还可以查询已选课程和退选课程。

2. 教师管理功能教师可以通过输入教师号和密码登录系统,进行课程管理和成绩录入。

教师可以添加、修改和删除课程信息,并录入学生成绩。

系统会对输入的数据进行验证,确保数据的准确性和完整性。

3. 课程查询功能学生和教师可以通过输入课程号或课程名称来查询课程信息。

系统会返回与输入信息匹配的课程列表,并显示相关的课程信息。

4. 成绩查询功能学生可以通过输入学号查询自己的成绩。

系统会返回该学生已选课程的成绩,并计算平均成绩和总学分。

5. 系统管理功能系统管理员可以通过输入管理员账号和密码登录系统,进行系统管理操作。

管理员可以添加、修改和删除学生、教师和课程信息,并进行数据备份和恢复操作。

三、系统设计1. 数据结构系统使用链表和数组来存储学生、教师和课程信息。

链表用于存储学生和教师的基本信息,数组用于存储课程信息和成绩数据。

通过合理的数据结构设计,系统可以高效地进行数据的增删改查操作。

2. 模块设计系统分为学生模块、教师模块和管理员模块。

每个模块都有相应的功能和操作权限。

学生模块主要实现选课和成绩查询功能,教师模块主要实现课程管理和成绩录入功能,管理员模块主要实现系统管理功能。

3. 界面设计系统采用命令行界面,通过输入指令和参数来完成各种操作。

学生课程信息管理系统c语言

学生课程信息管理系统c语言

学生课程信息管理系统c语言学生课程信息管理系统是一个用于管理学生课程信息的软件系统。

它可以帮助学校、教师和学生轻松地进行课程管理、成绩管理和学生信息管理。

本文将介绍该系统的主要功能和特点。

一、系统概述学生课程信息管理系统是为了方便学校管理学生课程信息而开发的一款软件。

它可以实现学生选课、查看课程信息、查询成绩等功能。

通过该系统,学校可以更好地管理学生的学习情况,提高教学质量,促进学生的成长。

二、系统功能1. 学生选课功能:学生可以通过系统选择自己感兴趣的课程。

系统会显示可选课程的详细信息,包括课程名称、授课教师、上课时间等。

学生可以根据自己的兴趣和学习计划进行选择。

2. 课程信息查询功能:学生可以通过系统查询自己已选课程的详细信息。

系统会显示课程的名称、授课教师、上课时间、上课地点等信息,方便学生及时了解课程的相关信息。

3. 成绩查询功能:学生可以通过系统查询自己的课程成绩。

系统会根据学生的学号和课程信息,显示对应的成绩。

学生可以及时了解自己的学习成果,并根据成绩进行学习调整。

4. 学生信息管理功能:系统可以记录学生的基本信息,如学号、姓名、年龄、性别等。

教师和学校管理者可以通过系统对学生信息进行管理,包括添加学生信息、修改学生信息、删除学生信息等。

5. 教师信息管理功能:系统可以记录教师的基本信息,如教师编号、姓名、性别等。

学校管理者可以通过系统对教师信息进行管理,包括添加教师信息、修改教师信息、删除教师信息等。

6. 课程信息管理功能:系统可以记录课程的详细信息,如课程编号、课程名称、授课教师、上课时间、上课地点等。

学校管理者可以通过系统对课程信息进行管理,包括添加课程信息、修改课程信息、删除课程信息等。

三、系统特点1. 界面友好:系统的界面设计简洁美观,操作简单明了,方便用户使用。

2. 数据安全:系统采用数据库存储学生课程信息,保证数据的安全性和完整性。

3. 高效性:系统能够快速响应用户的请求,提供及时的信息查询和管理功能。

C语言选课管理系统课程设计

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语言实现学生选修课程系统设计

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语言程序设计之学生选修课系统设计代码在学生选修课系统设计中,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语言学生选课管理系统课程设计引言学生选课管理系统是一个用于管理学生课程的软件应用程序。

该系统能够自动化学生选课过程,提供方便快捷的选课功能,并能够更好地帮助学校管理学生选课情况。

本文将介绍一个基于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语言

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

学生选课管理系统课程设计 - C语言引言学生选课管理系统是一个用于学校管理学生选课信息的重要工具。

本文将介绍如何使用C语言设计一个简单的学生选课管理系统,主要功能包括学生信息管理、课程信息管理、选课和退课功能等。

通过本文学习,读者可以初步了解一个基本的学生选课管理系统是如何设计和实现的。

功能设计学生信息管理•学生信息包括学生姓名、学号、性别、年龄等基本信息。

•实现学生信息的增、删、改、查功能。

课程信息管理•课程信息包括课程名称、课程编号、授课教师等信息。

•实现课程信息的增、删、改、查功能。

选课功能•学生可以根据课程编号进行选课操作。

•当选课成功时,系统将更新学生选课信息和课程选课人数。

退课功能•学生可以根据已选课程编号进行退课操作。

•当退课成功时,系统将更新学生选课信息和课程选课人数。

系统设计数据结构设计•学生信息和课程信息可以采用结构体来保存。

•使用链表或数组来管理学生和课程信息数据。

模块设计•设计学生管理模块、课程管理模块、选课模块和退课模块。

•每个模块实现对应功能,便于代码的维护和扩展。

C语言代码实现// 学生结构体typedef struct {char name[50];int id;char gender;int age;} Student;// 课程结构体typedef struct {char name[50];int id;char teacher[50];int max_num;int cur_num;} Course;// 学生信息管理函数void addStudent(Student* students, int* count);void deleteStudent(Student* students, int* count);void updateStudent(Student* students, int count);void searchStudent(Student* students, int count);// 课程信息管理函数void addCourse(Course* courses, int* count);void deleteCourse(Course* courses, int* count);void updateCourse(Course* courses, int count);void searchCourse(Course* courses, int count);// 选课和退课函数void selectCourse(Student* students, int s_count, Course* courses, int c_count);void withdrawCourse(Student* students, int s_count, Course* courses, in t c_count);// 主函数int main() {Student students[100];Course courses[50];int s_count = 0;int c_count = 0;// 主程序逻辑return0;}总结通过本文的学习,读者可以初步了解学生选课管理系统的设计和实现过程。

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

PINGDINGSHAN UNIVERSITY 基础编程能力实训报告题目: 学生选课管理系统专业年级:物联网工程 2014级姓名: DFDSFDFDfdfdfffd学号: 14fdfkdkd2015年07月03日1 功能描述此系统是一个学生选课管理系统。

它包含是功能有:学生选课信息的录入,学生选课信息的删除,学生选课信息的查找,学生选课信息的显示等功能。

菜单模式:此模块主要实现对本系统所有功能的显示。

录入模块:此模块主要实现对学生选课信息的录入,主要包括学生学号、学生姓名、所选课程、课程学分、授课老师。

删除模式:此模块主要实现对学生选课信息的删除。

显示模块:此模块主要实现对学生选课信息的显示。

查找模块:此模块主要是通过学生学号查找该学生的选课信息。

清屏模块:此模块主要是对主界面输入的信息进行清屏。

退出程序:此模块主要用于退出系统。

2 总体设计2.1 主函数功能①主函数的作用主要是调用menu函数显示主界面,由于菜单比较简单所以采用printf函数直接将菜单项打印在屏幕上,实现人机对话的第一步。

②然后通过读取用户的输入,调用switch函数对用户的输入进行进一步的处理,并使用for函数实现用户的选择性的重复操作。

我们为用户提供了一个正常的出口,我们采用人机对话的形式,用户选择某一菜单以后,程序完成此项功能后,用户可以选择继续输入或退出,选择主菜单5选项即可退出程序。

2.2 删除模块为了实现用户使用学生选课信息管理系统删除所选课程的功能,删除模块调用del函数以实现这一功能。

用户先输入要删除的学生个数,然后用户输入编号,通过fread循环遍历文件中输入的数据,查找与用户输入的学生编号相同的学生选课信息,如果找到该学生,则把m赋为1,然后通过for(j=i; j<m; j++);wor[j] = wor[j+1]把要查找的数据后面的前移来删除该学生信息。

如果找不到该学生信息,则显示找不到要删除的学生。

2.3 查找信息为了实现用户使用学生选课信息管理系统查找学生信息的功能,查找模块调用find函数以实现这一功能。

该程序里运用文件和指针,通过fread循环遍历文件中输入的数据,查找与用户输入的学生编号相同的学生选课信息,如果找到该学生,则显示该学生的选课信息。

3 数据结构设计存储学生选课信息的结构体typedef struct //定义结构体{int num; //学生的学号char name[20]; //学生的姓名char keming[20]; //选课的名称float xuefen; //所选课程的学分char teacher[20]; //所选课程的任课老师} WOR;WOR wor[SIZE],wor1[SIZE];结构体用于存储学生选课信息的相关信息,各字段的含义如下:num:学生学号name[20]:学生姓名keming[20]:选课课名xuefen:选课学分teacher :授课老师4 程序实现4.1 源码分析主函数显示主菜单模块通过调用menu函数显示主菜单,调用main函数提示使用的用户该执行的操作,实现基本的人机对话;然后通过读取用户的输入,调用switch函数对用户的输入进行进一步的处理,并使用while函数实现用户的选择性的重复输入;显示学生选课管理信息模块通过调用display函数实现显示已创建的所有学生选课管理信息的功能;查找学生选课管理信息模块通过调用find函数实现按学生学号查找学生的选课信息的功能;int main(){int i,d;menu();while(1){printf("\n输入选项:");scanf("%d",&d);switch(d){case 1:input();break;///输入信息case 2:{int m;printf("请输入要删除的人数:\n");scanf("%d",&m);for(i=0; i<m; i++)del();getch();printf("按任意键继续:");getch();clear();///清屏}break;///删除信息case 3:display();break;///显示信息case 4:{int m;printf("请输入要查找的人数:\n");scanf("%d",&m);for(i=0; i<m; i++)find();getch();printf("按任意键继续:");getch();clear();///清屏}break;///查找case 5:exit(0);break;///退出case 6:clear();break;///清屏default:printf("您输入的数据有误,请重新输入:");///clear();}}}4.2 输入信息功能函数此函数为输入学生选课情况的基本信息。

通过运用文件和指针输入实现所有学生选课信息的存储,从而实现程序的第一步操作。

运用 if语句判断文件是否存在;若不存在,则建立一个名为”work”的文件,将所有信息保存文件中。

在文件中fopen()以ab+的方法打开二进制文件,使函数返回指向一个文件指针 work;以fread(&wor[m],LEN,1,fp) 从fp所指向的文件中读取1个字节数为LEN大小的数据块存放到&wor[m]所指定的存储空间;以fwrite(&wor[i] ,LEN,1, fp) 从fp所指向的存储空间中取出1个字节数为LEN大小的数据块写入&wor[m]所指定的存储空间。

运用字符串ch[2]实现判断”是否”的字符Y/N的输入void input()///输入信息{int i,m=0;char ch[2];FILE *fp;if((fp=fopen("work","ab+"))==NULL){printf("can't open the file!\n");return;}while(!feof(fp)){if(fread(&wor[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0)printf("没有找到要读取的节点\n");if((fp=fopen("work","wb+"))==NULL){printf("can't open the file!\n");return;}for(i=0; i<m; i++)fwrite(&wor[i] ,LEN,1,fp);//向指定的磁盘文件写入信息printf("是否输入?(y/n):");scanf("%s",ch);while(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否要录入新信息{printf("学生学号:");scanf("%d",&wor[m].num);//for(i=0; i<m; i++)if(wor[i].num == wor[m].num){printf("该记录已经存在,按任意键继续!");getch();fclose(fp);return;}printf("学生姓名:");scanf("%s",wor[m].name); //输入学生名字printf("已选课程:");scanf("%s",wor[m].keming); //输入已选课程printf("学分:");scanf("%f",&wor[m].xuefen); //输入课程学分printf("任课老师:");scanf("%s",wor[m].teacher);if(fwrite(&wor[m],LEN,1,fp)!=1) //将新录入的学生信息写入指定的磁盘文件{printf("无法保存!");getch();}else{printf("%s 已经保存!\n",wor[m].name);m++;}clear();///清屏printf("是否继续?(y/n):");scanf("%s",ch);}fclose(fp);if(strcmp(ch,"N")==0||strcmp(ch,"n")==0){printf("按任意键继续!\n");getch();clear();}}4.3 删除信息功能函数此函数为学生选课信息的删除过程。

删除学生选课管理信息模块通过调用del函数实现通过查找学生学号找到想要删除的课程,从而删除用户想要删除的课程的功能;运用文件的知识实现文件的打开。

运用for循环来确定删除的个数,然后通过if语句依次根据学生学号对学生选课信息进行删除。

再次运用for循环使删除学生信息后将记录的总个数减1,将后一个记录移到前一个记录的位置。

最后使用clear()功能,再次运用fopen()打开文件,用fwrite()将更改后的记录重新写入指定的磁盘文件中,并保存。

void del()///删除信息{FILE *fp;int snum,i,j,m=0;char ch[2];if((fp=fopen("work","ab+"))==NULL){printf("can't open the file!\n");return;}while(!feof(fp)){if(fread(&wor[m],LEN,1,fp)==1)m++;}fclose(fp);if(m==0){printf("没有记录\n");return;}printf("请输入学号:");scanf("%d",&snum);for(i=0; i<m; i++){if(snum==wor[i].num)break;}if(i==m){printf("没有找到要删除的节点\n");getch();return;}printf("找到记录,是否删除(y/n)");scanf("%s",ch);if(strcmp(ch,"Y")==0||strcmp(ch,"y")==0)//判断是否要进行删除 {for(j=i; j<m; j++)wor[j] = wor[j+1];//将后一个记录移到前一个记录的位置 m--;//记录的总个数减1printf("成功删除!\n");clear();//清屏}if((fp=fopen("work","wb+"))==NULL){printf("不能打开!\n");return;}for(j=0; j<m; j++) //将更改后的记录重新写入指定的磁盘文件中 if(fwrite(&wor[j] ,LEN,1,fp)!=1){printf("不能保存!\n");getch();}fclose(fp);}4.2 功能模块的调试及测试1. 主界面该部分只有主菜单。

相关文档
最新文档