C语言课程设计报告—学生选修课程系统设计说明
- 格式:doc
- 大小:290.50 KB
- 文档页数:25
c语言课程设计学生选课系统一、教学目标本课程的目标是让学生掌握C语言编程基础,能够运用C语言设计学生选课系统。
具体目标如下:1.知识目标:学生需要掌握C语言的基本语法、数据类型、运算符、控制结构、函数等基础知识。
2.技能目标:学生能够运用C语言编写简单的程序,具备一定的编程能力,能够独立设计并实现学生选课系统的核心功能。
3.情感态度价值观目标:学生通过本课程的学习,能够培养对计算机编程的兴趣和热情,提高解决问题的能力,培养团队协作和自主学习的意识。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.C语言基础知识:包括基本语法、数据类型、运算符、控制结构等。
2.函数:包括函数的定义、声明、调用等。
3.数组和字符串:包括一维数组、多维数组、字符串的基本操作等。
4.指针:包括指针的基本概念、指针与数组、指针与函数等。
5.结构体和文件:包括结构体的定义和使用、文件的读写操作等。
6.学生选课系统的设计与实现:包括系统需求分析、系统设计、核心功能实现等。
三、教学方法为了达到课程目标,我们将采用以下教学方法:1.讲授法:通过讲解C语言的基本语法、数据类型、运算符、控制结构等知识,让学生掌握C语言的基础知识。
2.案例分析法:通过分析实际的学生选课系统的案例,让学生了解并掌握系统的设计与实现方法。
3.实验法:让学生通过动手编写程序,巩固所学知识,提高编程能力。
4.小组讨论法:分组让学生讨论并解决问题,培养团队协作和自主学习的意识。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:《C语言程序设计》等相关教材。
2.参考书:提供相关的C语言编程参考书籍,供学生自主学习。
3.多媒体资料:制作课件、教学视频等,丰富教学手段,提高学生的学习兴趣。
4.实验设备:提供计算机实验室,让学生能够进行上机实验,提高编程能力。
五、教学评估为了全面、客观、公正地评估学生的学习成果,我们将采用以下评估方式:1.平时表现:通过学生在课堂上的参与度、提问回答、小组讨论等表现,评估学生的学习态度和积极性。
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进行课程选择和排课,能够进行简单的系统设计和优化。
情感态度价值观目标包括培养学生对编程和计算机科学的兴趣和热情,提高学生解决问题的能力和创新精神。
二、教学内容本课程的教学内容主要包括学生选课系统C的基本原理、系统结构和常用技术,面向对象设计的基本概念和方法,以及学生选课系统C的实践应用。
具体包括以下几个部分:1.学生选课系统C的基本原理:介绍学生选课系统C的定义、功能和特点,让学生了解学生选课系统C的基本概念。
2.学生选课系统C的系统结构:讲解学生选课系统C的组成部分,包括数据库、服务器和客户端等,让学生了解学生选课系统C的架构和运行机制。
3.学生选课系统C的常用技术:介绍学生选课系统C中常用的技术,如SQL、Java等,让学生掌握学生选课系统C的开发和实现方法。
4.面向对象设计的基本概念和方法:讲解面向对象设计的基本原则和方法,如封装、继承和多态等,让学生掌握面向对象设计的思维方式和实际应用。
5.学生选课系统C的实践应用:通过实际操作,让学生学会使用学生选课系统C进行课程选择和排课,培养学生的实际操作能力。
三、教学方法为了提高教学效果,本课程将采用多种教学方法相结合的方式进行教学。
包括:1.讲授法:通过讲解学生选课系统C的基本原理、系统结构和常用技术,让学生掌握基本概念和知识。
2.讨论法:通过学生进行小组讨论,引导学生思考和探讨学生选课系统C的实际应用问题和解决方案。
3.案例分析法:通过分析典型案例,让学生了解学生选课系统C的实际应用场景和设计方法。
4.实验法:通过实际操作,让学生学会使用学生选课系统C进行课程选择和排课,培养学生的实际操作能力。
四、教学资源为了支持本课程的教学,我们将准备以下教学资源:1.教材:选择合适的教材,为学生提供系统的学习资料。
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. 学生相关功能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语言学生选课系统设计详细设计详细设计:1. 数据结构设计:- 学生信息结构体:包含学生姓名、学号、已选课程等信息。
- 课程信息结构体:包含课程名称、课程编号、授课教师等信息。
- 教师信息结构体:包含教师姓名、教师编号等信息。
2. 功能设计:- 学生选课功能:学生可以浏览可选课程列表,并选择自己感兴趣的课程进行选修。
选修成功后,将该门课程加入学生的已选课程列表中。
- 课程管理功能:教师可以添加、修改和删除课程信息。
- 学生信息管理功能:教师可以查看学生的选课情况,并进行相关操作,如修改学生选课等。
3. 界面设计:- 学生选课界面:显示可选课程列表,并提供选课按钮。
- 课程管理界面:显示课程信息列表,并提供添加、修改和删除按钮。
- 学生信息管理界面:显示学生信息列表和选课情况,并提供相关操作按钮。
4. 数据库设计:- 学生表:包含学生姓名、学号、已选课程等字段。
- 课程表:包含课程名称、课程编号、授课教师等字段。
- 教师表:包含教师姓名、教师编号等字段。
5. 系统流程设计:- 学生选课流程:学生登录系统后,进入选课界面,浏览可选课程列表,选择自己感兴趣的课程进行选修。
选修成功后,系统更新学生的已选课程列表。
- 课程管理流程:教师登录系统后,进入课程管理界面,可以进行添加、修改和删除课程信息的操作。
系统更新课程表。
- 学生信息管理流程:教师登录系统后,进入学生信息管理界面,可以查看学生的选课情况,并进行相关操作,如修改学生选课。
系统更新学生表。
6. 错误处理设计:- 输入错误处理:对于用户输入的非法数据,系统进行提示并要求重新输入。
- 数据库错误处理:对于数据库操作过程中的错误,系统进行捕获并给出相应的错误提示。
以上为一个简单的C语言学生选课系统的详细设计。
根据具体需求,还可以进行更加详细和具体的设计。
中南民族大学C综合设计报告学院:电子信息工程学院专业:年级:题目:姓名:指导老师:2019年6月3日星期一C语言程序设计报告一、C语言课程设计的目的:高级语言课程设计是学习完《高级语言程序设计》课程后进行的一次全面的综合性上机实验。
其目的在于为同学提供了一个既动手又动脑,独立实践的机会,将课本上的理论知识和实际有机的结合起来,锻炼同学的分析解决实际问题的能力。
提高学生适应实际,实践编程的能力。
二、题目学生选修课程系统设计假定有n门课程,每门课程有课程编号、课程名称、课程性质、总学时、授课学时、实验或商机学时、血粉、开课学期等信息,学生可按要求(如总学分不得少于60)自由选课。
1、要求:试设计一个选修课程系统,使之能提供以下功能:(1)系统以菜单方式工作。
(2)课程信息和学生选课信息输入功能(课程信息用文件保存)——输入。
(3)课程信息浏览功能——输出。
(4)查询功能(至少一种查询方式)——算法。
(5)按学分查询。
(6)某门课程学生选修情况(可选项)。
2、分析:由于题目要求将学生的选课信息用结构体形式输入,并写入文件中,所以应提供文件的输入输出等操作:在过程中需有浏览、插入、修改、查找、删除学生选课信息等操作,顾应分别建立个功能模块;另外还应提供键盘式选择菜单实现程序运行。
3、总体设计:根据题目要求,可以将系统分为六个模块:1)系统以菜单方式工作模块;2)课程信息与学生选课信息录入功能模块;3)课程信息浏览功能模块;4)查询模块;5)按学分查询模块;6)某些课程学生选修情况模块。
4详细设计:#include <stdio.h>#include <stdlib.h> 主流程图:#include <string.h> Arraytypedef 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 *create_form(){SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name[20],kind[10];int size=sizeof(SUB);head=tail=NULL;printf("输入选修课程信息:\n");scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&eti me,&score,&term);while(num!=0){p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d %s %s %d %d %d %d%d",&num,&name,&kind,&stime,&ttime,&eti me,&score,&term);}tail->next=NULL;return head;}void savefile(SUB *head) Array {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);}void savefiledel(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsdel.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 prin(SUB *head){SUB *ptr;if(head==NULL){printf("没有此门课程记录!\n");return;}printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)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);}{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, ptr->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, ptr->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语言一、课程目标知识目标:1. 理解C语言的基本语法和结构,掌握学生选课系统相关的数据类型、运算符、控制语句等知识;2. 学会使用C语言设计学生选课系统的功能模块,包括学生信息管理、课程信息管理、选课操作等;3. 了解C语言在学生选课系统中的应用场景,掌握一定的软件设计方法和技巧。
技能目标:1. 能够运用C语言编写简单的学生选课系统程序,具备基本的编程能力;2. 学会分析学生选课系统的需求,设计合理的程序结构,培养解决问题的能力;3. 能够使用调试工具对程序进行调试和优化,提高程序的执行效率。
情感态度价值观目标:1. 培养学生对C语言的兴趣,激发学习编程的热情,提高自主学习的积极性;2. 培养学生的团队协作意识,学会与他人合作完成项目任务;3. 通过实际操作,让学生认识到编程在解决实际问题中的价值,增强社会责任感。
课程性质:本课程为实践性较强的学科,结合实际应用场景,培养学生的编程能力和解决问题的能力。
学生特点:学生在本年级已具备一定的C语言基础,对编程有一定的兴趣和热情,但缺乏实际项目经验。
教学要求:教师需结合学生特点和课程性质,注重理论与实践相结合,引导学生主动参与,提高学生的实践操作能力。
在教学过程中,将课程目标分解为具体的学习成果,便于教学设计和评估。
二、教学内容1. C语言基础回顾:数据类型、变量、运算符、控制语句(选择、循环)、函数等基本概念和用法。
2. 学生选课系统需求分析:介绍学生选课系统的功能模块,分析各模块的需求,明确编程目标和任务。
3. 系统设计:- 数据结构设计:学生、课程等实体的属性和关系,以及数据存储方式;- 界面设计:系统菜单、功能界面等;- 功能模块设计:学生信息管理、课程信息管理、选课操作、查询等模块。
4. 编程实践:- 搭建开发环境,熟悉编程工具;- 编写各功能模块的代码,实现学生选课系统的基本功能;- 调试和优化程序,确保系统的稳定性和性能。
c学生选课系统课程设计一、课程目标知识目标:1. 学生能够理解并掌握学生选课系统的基本原理和功能。
2. 学生能够运用所学知识,分析并设计一个简单的学生选课系统。
3. 学生能够了解数据库管理、网络通信等基础知识在选课系统中的应用。
技能目标:1. 学生能够运用编程语言(如Python)实现选课系统的基本功能,如学生信息管理、课程选择等。
2. 学生能够通过小组合作,完成选课系统的需求分析、设计、编码和测试。
3. 学生能够运用问题解决策略,解决在开发过程中遇到的技术难题。
情感态度价值观目标:1. 学生能够培养对计算机科学的兴趣和热情,提高主动学习的积极性。
2. 学生能够在团队合作中发挥个人优势,学会倾听、沟通、协作和分享。
3. 学生能够认识到编程在解决实际问题中的应用价值,增强实践能力和创新精神。
课程性质分析:本课程为信息技术课程,旨在让学生通过动手实践,掌握编程语言和系统设计的基本方法,提高解决问题的能力。
学生特点分析:本课程面向初中年级学生,学生对计算机操作有一定的基础,具备一定的逻辑思维能力和创新意识。
教学要求:1. 结合教材内容,注重实践操作,提高学生的动手能力。
2. 激发学生兴趣,引导他们主动探索新知识,培养自主学习能力。
3. 强化团队合作,培养学生的沟通能力和协作精神。
二、教学内容1. 学生选课系统的基本概念与功能- 理解选课系统的定义及其重要性- 掌握选课系统的核心功能模块(如学生信息管理、课程信息管理、选课操作等)2. 数据库基础知识- 学习数据库的基本概念(如数据表、字段、记录等)- 掌握简单的SQL语句(如SELECT、INSERT、UPDATE、DELETE)3. 编程语言基础(以Python为例)- 学习Python的基本语法和编程规范- 掌握使用Python进行数据操作和流程控制4. 系统设计方法- 学习需求分析的基本步骤和方法- 掌握系统设计的基本流程(如UML图、流程图等)5. 选课系统的实现- 学习如何设计系统界面和用户体验- 实践编程实现选课系统的各个功能模块6. 系统测试与优化- 学习系统测试的基本方法- 掌握对系统进行性能优化和错误修正的技巧教学内容安排与进度:第1-2周:学生选课系统的基本概念与功能学习第3-4周:数据库基础知识学习与实践第5-6周:Python编程基础学习第7-8周:系统设计方法学习与需求分析第9-10周:选课系统的编码实现第11-12周:系统测试与优化,项目总结与展示教材章节关联:本教学内容与教材中“数据库应用”、“Python编程”、“系统分析与设计”等章节相关联,确保学生能够结合教材内容,系统地学习和掌握相关知识。
中国地质大学本科生课程论文封面课程名称 C语言课程设计教师姓名本科生姓名本科生学号本科生专业所在院系类别: C.本科生日期: 2012年09月05日课程设计评语注:1、无评阅人签名成绩无效;2、必须用钢笔或圆珠笔批阅,用铅笔阅卷无效;3、如有平时成绩,必须在上面评分表中标出,并计算入总成绩。
目录课程设计评语 (2)目录 (3)1.课程论文题目 (4)2.程序设计思路 (5)3.功能模块图 (6)4.数据结构设计 (6)5.算法设计 (6)6.程序代码 (12)7.程序运行结果 (22)8.编程中遇到的困难及解决方法 (24)9.总结心得及良好建议 (24)10.致谢 (25)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;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 ,ptr->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 ,ptr->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填补。
ch=getchar();}}3.插入、删除信息功能SUB *insert(SUB *head){SUB *ptr,*ptr2,*subj;int size=sizeof(SUB);char ch='a',ch1;while(ch!=' '){subj=(SUB *)malloc(size);ptr=subj;printf("输入要插入的课程信息:\n");scanf("%d%s%s%d%d%d%d%d",&subj->num,subj->name,subj->kind,&subj->st ime,&subj->ttime,&subj->etime,&subj->score,&subj->term);if(head==NULL){head=ptr;head->next=NULL;}else{for(ptr2=head;ptr2;ptr2=ptr2->next)if(ptr2->next==NULL){ptr2->next=subj;subj->next=NULL;break;}}printf("继续插入请按回车,结束请按空格:\n");ch1=getchar(); //将回车键赋给CH1,否则subj->term输完后输入的回车键会赋给CH,因此用CH1填补。
ch=getchar();}return head;}SUB *del(SUB *head){SUB *p1,*p2;char ch='a',ch1;int num;while(ch!=' '){printf("输入想要删除的课程编号:\n");scanf("%d",&num);if(head->num==num){p2=head;head=head->next;free(p2);}if(head==NULL)return NULL;p1=head;p2=head->next;while(p2){if(p2->num==num){p1->next=p2->next;free(p2);}else p1=p2;p2=p1->next;}printf("继续删除请按回车,结束请按空格:\n");ch1=getchar(); //将回车键赋给CH1,否则num输完后再输入的回车键会赋给CH,因此用CH1填补。
ch=getchar();return head;}4.选课功能void choose(SUB *head){SUB *p,*q;int a[5];int num,total=0,i=0,j;printf("输入要选修的课程的编号,编号之间以空格分开,输完后以0结束\n");scanf("%d",&num);while(num!=0){for(p=head;p;p=p->next)if(p->num==num){total=total+p->score;a[i]=num;i++;}scanf("%d",&num);}if(total<60) printf("选修总学分未达到60,选修失败!\n");else {printf("选修成功!\n");printf("您选修的课程为:\n");for(j=0;j<i;j++)for(q=head;q;q=q->next)if(q->num==a[j])printf("%s ",q->name);printf("\n");printf("***********************************\n"); printf("***********************************\n"); printf("***********************************\n"); printf("***********************************\n");}6.程序代码#include <stdio.h>#include <stdlib.h>#include <string.h>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 *create_form(){SUB *head,*tail,*p;int num,stime,ttime;int etime,score,term;char name[20],kind[10];int size=sizeof(SUB);head=tail=NULL;printf("输入选修课程信息:\n");scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term); while(num!=0){p=(SUB *)malloc(size);p->num=num;strcpy(p->name,name);strcpy(p->kind,kind);p->stime=stime;p->ttime=ttime;p->etime=etime;p->score=score;p->term=term;if(head==NULL)head=p;elsetail->next=p;tail=p;scanf("%d %s %s %d %d %d %d %d",&num,&name,&kind,&stime,&ttime,&etime,&score,&term); }tail->next=NULL;return head;}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->tt ime,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->tt ime,p->etime,p->score,p->term);fclose(fp);}void savefiledel(SUB *head){SUB *p;FILE *fp;fp=fopen("subjectsdel.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->tt ime,p->etime,p->score,p->term);fclose(fp);}void prin(SUB *head){SUB *ptr;if(head==NULL){printf("没有此门课程记录!\n");return;}printf("课程编号课程名称课程性质总学时授课学时实践或上机学时学分开课学期\n");for(ptr=head;ptr;ptr=ptr->next)printf("%5d%12s%9s%9d%9d%11d%11d%7d\n",ptr->num,ptr->name,ptr->kind,ptr->stime,p tr->ttime,ptr->etime,ptr->score,ptr->term);}void search(SUB *head){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,ptr->stime,p tr->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,ptr->stime,p tr->ttime,ptr->etime,ptr->score,ptr->term);t=0;}if(t) printf("未找到!\n");t=1;}printf("继续查找请按回车键,结束请按空格键:\n");ch1=getchar(); //将回车键赋给CH1,否则CASE里面最后输入的回车键会赋给CH,因此用CH1填补。