基于c语言的学分管理系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1引言
现今大学对学生成绩管理以及学生水平评定过程中,不仅依靠学生分数,而且把各个科目的掌握情况通过学分来反映,众所周知,大学人数众多,单靠人工在纸质介质上记录,既浪费资源又不方便管理,并且错误率高,学分管理系统就是基于现今大学在学生成绩管理过程中采用学分制,应运而生的计算机数据管理系统,对在校生进行学分数据录入、修改、删除、查找、排序以及对学分得分的初步统计,并存储学生学分数据的计算机数据管理系统。利用学分管理系统可以有效的帮助管理者,来管理学生学分数据,并能够了解各个班级学生学分完成情况,从而节约了管理过程中的人力物力,并且存贮方便、准确。
学生学分管理系统是运行于计算机系统下的应用软件,主要用于对学生的学号、姓名以及各项学科学分进行录入、删除、修改、查询、排序、统计、存盘等操作,为学校的教师和学生提供了一个对学生学分进行管理和查看的平台,给用户提供了一个简单友好的用户接口,主要任务如下:
1.1查看所有学生信息
根据菜单提示,选择该功能,能够逐条显示全部学生学分记录
1.2输入学生记录
用户根据菜单提示选择输入学生记录选项,进行有关学生的学号、姓名、班级、基础课学分、专业课学分、选修课学分、人文类课学分以及实验课学分的录入。可一次性输入多条学生的学分信息记录。
1.3删除学生记录
根据提示,用户输入要进行删除学生的学号,如果在不存在该学号,则显示没有找到该学生;如果在文件中有该学号的信息存在,则将该学号所对应的姓名、学号、班级、各科学分等在对应文件中加以删除。
1.4修改学生记录
根据提示,用户输入要进行修改学分记录的学生的学号,如果在文件中不存在该学号,则显示没有找到该学生;如果在文件中有该学生的信息存在,则将提示用户选择要修改的某课程,当用户选择某课程的代码后,则将显示你所要修改的课程。然后提示用户选择是否继续进行修改操作。
1.5查询学生信息
查询学生信息,分为根据学号查询和根据班级查询两个具体需求,菜单选项分别提示用户输入要查询学生信息的学号或班级,如果在磁盘文件中有对应的输入信息,则提示用户已找到,并逐项列出对应查找到的学生学分状况。
1.6根据学号排序学生记录
该项功能根据学生的学号项进行排序,以便用户对学生学分状况有较为直观方便的了解,并能够让学号有规律排列的学生项,在显示时集中出现,让浏览者更加清楚明白。
1.7统计学生学分完成情况
该项是统计各班学生的学分完成情况,可以很方便了解该班学生的学习水平。
进行总体设计,以比较抽象的方式概括的确定系统如何完成预定的任务,进而确定组成系统的每个子程序的结构,从而将一个大的程序按功能分割成一些模块,是每个模块具有功能单一、结构清晰、接口简单易于理解的小程序,并且确定各个函数之间的调用关系。
本系统主要应用结构化的设计思想,实现学生学分的输入、删除、修改、查询以及浏览等管理功能,各主要模块的数据均存储在文件中,因此包含对文件的读、写等基本操作。在软件开发过程中应用了高级语言程序设计中的基本控制结构,如选择、循环、顺序等结构。系统的设计方法是结构化设计方法,采用C 语言进行开发。
系统功能结构图,如图1所示。
图1 系统结构图
本系统采用主函数调用子函数的设计方法,先整体在逐步细化的过程,具体方法如下:
在主函数前,进行子函数声明,如下:
void menu();//菜单函数
void to_menu();//返回菜单函数
void view_data();//查看所有学生信息
void save_data();//保存数据
void add_data();//输入学生数据
void read_data();//读取数据
void delete_data();//删除数据
void edit_data();//修改数据
void query_data_no();//查找(按学号)
void query_data_clas();//查找(按班级)
void sort_data_no();//排序(学号)
void tongji();//统计某班学生学分完成情况
3.1主函数设计
编写主函数,主函数运行时,先调用void read_data()函数,将数据从文件读取到结构体数组中,再调用菜单函数void menu(),显示菜单选择项,设计一个while循环,让函数进入循环,设计switch函数,对菜单各项功能进行选择,使各项功能能够运行,最后退出循环,调用to_menu()函数,返回主菜单。
main()
{
int fun;
read_data();
menu();
while(1)
{
printf("请输入功能号[0-8]:",&fun);
scanf("%d",&fun);
switch(fun)
{
case 0: break; // 退出
case 1: view_data();break; // 查看所有学生信息
case 2: add_data(); break; // 输入学生记录
case 3: delete_data();break; // 删除学生记录
case 4:edit_data();break; // 修改学生记录
case 5: query_data_no();break; // 查询(学号)
case 6:query_data_clas();break; // 查询(班级)
case 7:sort_data_no(); break; // 排序(学号)
case 8:tongji();break; //统计某班学生学分完成情况
default:printf("输入错误!");break;
}
if(fun==0) break;
to_menu();
}
}
3.2子函数设计
3.2.1菜单函数设计
菜单函数首先运行库函数system("cls")进行清屏,然后运行各个printf语句,显示主菜单,如图2所示。
图2 系统主菜单
3.2.2返回主菜单函数设计
设计字符c1,c2,用c1来接受第一次输入的回车,然后再次输入回车时,调用函数menu(),返回主菜单,来实现各次操作完成后返回主菜单的任务。
3.2.3查看所有学生信息函数设计
设计for循环,定义i=0,学生总数为dd.count,利用for循环,可以显示所有学生已经记录的信息。如图3所示: