C++程序设计源代码_学生选课系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
本文主要对学生选课系统来进行说明。本程序主要考察对自定义函数的熟悉程度, 本程序中主要使用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除 等操作,需要对数组有比较深入的掌握。还包括指针、函数、结构体、文件等 C 语言的 基础知识的运用。
关键字: 源代码、 指针、调用函数、流程图、结构、数组。
摘要
C 语言是在国内外广泛使用的一种计算机语言。C 语言简洁紧凑、灵活方便、运 算符丰富、适用范围大、可移植性好。它既具有高级语言的特点,又具有汇编语言 的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序 设计语言,编写不依赖计算机硬件的应用程序。
本学生选课系统主要利用 C 语言的数组指针和文件操作能力设计开发一个小型的选 课系统,至少具有如下功能:查看课程信息、查找课程信息、增加课程信息、修改课程 信息、选课等功能。
编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相 应位置 5)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程 编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程 不存在 6)对课程信息进行修改。 7)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输 入,直到输入正确为止,并将学号和相应的课程编号存入 SelectInfo.txt 文件中 8)查看所选课程。
2.2 模块关系
根据提示输入学号和密码进入系统。通过主函数模块进入各个其它函数的模块,然 后达到对课程信息的查看、增加、删除、修改和选课的功能,在这些模块中又调用其它 小模块(如:排序模块)。本程序主要有:主函数模块、显示课程信息模块、查询模块、 增加模块、删除模块、修改模块、选课模块、显示选课情况模块等八个模块组成。
设计要求: (1)通过提示菜单选择可以进行的操作。 (2)将课程的信息存入文件中,并命名为 LessonInfo.txt。 (3)将选课情况信息存入文件中,并命名为 SelectInfo.txt。 (4)在本系统中可以进行管理系统包含的基本操作,其中包括
1)查看所有课程的信息 2)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课
I
目录
第一章 设计题目的内容、任务及具体要求 ..................................1 第二章 总体设计思路 ....................................................2
2.1 程序功能 ........................................................... 2 2.2 模块关系 ........................................................... 2 2.3 总体框图 ............................................................ 3 第三章 功能模块的具体设计 ..............................................4 3.1 主函数模块的设计 ................................................... 4 3.2 显示课程信息模块的设计 ............................................. 7 3.3 查询模块模块的设计 ................................................. 8 3.4 增加模块的设计 ..................................................... 9 3.5 删除模块模块的设计 ................................................ 13 3.6 修改模块模块的设计 ................................................ 14 3.7 选课模块的设计 .................................................... 15 3.8 显示选课情况模块的设计 ............................................. 17 第四章 功能模块的调试及测试 ...........................................18 4.1 登陆界面和主菜单界面的显示 ........................................ 18 4.2 查询所有课程信息的显示结果 ........................................ 19 4.3 查询单个课程信息的显示结果 ........................................ 19 4.4 添加课程信息的显示结果 ............................................ 20 4.5 删除和修改课程信息的显示结果 ...................................... 20 4.6 选课的显示结果 .................................................... 21 4.7 查询选课情况的显示结果 ............................................ 22 4.8 退出 .............................................................. 22 总结 ..................................................................23 致 谢 ................................................................24 参考资料:............................................................. 25 附程序清单............................................................. 26
1
第二章 总体设计思路
2.1 程序功能
此系统是简单的学生选课系统。 具体的功能包括:
1)输入密码进入系统。 2)查看所有课程的信息 3)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课
程的相关信息,如果没有找到则给出提示信息 4)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程
程的相关信息,如果没有找到则给出提示信息 3)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程
编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相 应位置 4)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程 编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程 不存在 5)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输 入,直到输入正确为止,并将学号和相应的课程编号存入 SelectInfo.txt 文件中 (5)课程基本信息包括课程编号、课程名、学时和学分这些简单信息。 (6)课程信息文件中每一行存放一门课程的信息。
for(i=0; i<=N-1; i++) {
if(wdesk[i].hours == 0) break;
printf("%-10d%-20s%-10d%-10lf\n", wdesk[i].number,wdesk[i].classname,wdesk[i].hours,wdesk[i].credit); } 在此片段函数中 wdesk[i].hours == 0 是作为循环的结束条件之一,能提前结束该程序。
5
输,还是退出系统;在学号存在时进入第三重循环,输入密码(注:学号和密码是在运 行此函数时从文件中读到数组里)并在数组中查找,若有和该密码相等的数组元素,就 将进入系统,否则提示继续或退出.
开始
Inset()
打开文件并将课程信息读入数组 输入查询类型
显
显退
示
查
增
删
修
选
示出
课
询
加
除
改
课
选
程
模
模
模
模
模
2
2.3 总体框图
先输入验证信息进入主模块,然后选择调用的模块
主模模块
显
显
查
增
删
修
选
示
示
询
加
除
改
课
选
课
Βιβλιοθήκη Baidu
模
模
模
模
模
课
程
块
块
块
块
块
情
信
况
息
模
模
块
块
图 2-1 各模块关系图
3
第三章 功能模块的具体设计
3.1 主函数模块的设计
在主函数中通过 inset()函数让用户输入验证信息进入,简单菜单的制作可以利用 printmenu()函数实现。从文件中获取课程信息,并存放在定义的结构数组 desk[100] 中。定义结果的源代码为
default:break; } 接着判断用户是否继续输入,若继续,则重新进行选择;否则,退出程序。
开始 打开文件将学好和密码读入数组中
输入密码和学号 密码、学好?
换回 1
换回 0
图 3-1 inset()函数模块的流程图 上图是简单的将输入学号和密码的过程提示是一遍,但实际函数中我使用的三从循环。 第一重循环是输入学号;第二重循环是判断该学会是否存在,若学号不存在便提示是再
II
第一章 设计题目的内容、任务及具体要求
设计题目: 学生选课系统
设计内容:本程序属于非数值计算型算法设计,学生需要设计出学生选课系统所需要的基本功 能,并设计简单的界面(无需图形化)。本程序主要考察对自定义函数的熟悉程度,本程序中主要使 用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较 深入的掌握。要求程序运行结果正确,程序和算法具有一定程序度的健壮性,稳定性。
struct classin {
int number; char classname[10]; int hours; double credit; }; typedef struct classin Classin; Classin desk[100] = {0} 然后将文件中的信息读入此数组中,读取函数的代码为: cfptr = fopen("LessonInfo.txt","r"); while(!feof(cfptr)) { fscanf(cfptr, "%d%s%d%lf", &desk[i].number, desk[i].classname, &desk[i].hours, &desk[i].credit); i++; } 在后面的使用中都是调用此地址便可以对数组进行修改。 输入选择项 choice,再用 switch 语句去调用其它函数,具体实现如下(主函数的 主要代码): while(choice != 8) {
4
switch(choice) { case 1:myread(desk);break; case 2:myfind(desk);break; case 3:myadd(desk);shunxu(desk);filewhite(desk);break; case 4:mydelete(desk);filewhite(desk);break; case 5:mymodify(desk);shunxu(desk);filewhite(desk);break; case 6:selection(desk, studentin);filewrite(studentin);break; case 7:output(studentin);break;
课
信
块
块
块
块
块
情
息
况
模
模
块
块
结束
图 3-2 main()函数模块的流程图 在次函数中用户通过输入选项进入不同的函数模块。当每次运行一个模块后,又进行选 择。
6
3.2 显示课程信息模块的设计
本模块的设计主要是设计被调用函数 myread(Classin *wkesk),是用指针指向储存课程 信息的数组,调用数组的地址。再用循环把数组中的信息输出。主要代码为:
关键字: 源代码、 指针、调用函数、流程图、结构、数组。
摘要
C 语言是在国内外广泛使用的一种计算机语言。C 语言简洁紧凑、灵活方便、运 算符丰富、适用范围大、可移植性好。它既具有高级语言的特点,又具有汇编语言 的特点。它可以作为系统设计语言,编写工作系统应用程序,也可以作为应用程序 设计语言,编写不依赖计算机硬件的应用程序。
本学生选课系统主要利用 C 语言的数组指针和文件操作能力设计开发一个小型的选 课系统,至少具有如下功能:查看课程信息、查找课程信息、增加课程信息、修改课程 信息、选课等功能。
编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相 应位置 5)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程 编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程 不存在 6)对课程信息进行修改。 7)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输 入,直到输入正确为止,并将学号和相应的课程编号存入 SelectInfo.txt 文件中 8)查看所选课程。
2.2 模块关系
根据提示输入学号和密码进入系统。通过主函数模块进入各个其它函数的模块,然 后达到对课程信息的查看、增加、删除、修改和选课的功能,在这些模块中又调用其它 小模块(如:排序模块)。本程序主要有:主函数模块、显示课程信息模块、查询模块、 增加模块、删除模块、修改模块、选课模块、显示选课情况模块等八个模块组成。
设计要求: (1)通过提示菜单选择可以进行的操作。 (2)将课程的信息存入文件中,并命名为 LessonInfo.txt。 (3)将选课情况信息存入文件中,并命名为 SelectInfo.txt。 (4)在本系统中可以进行管理系统包含的基本操作,其中包括
1)查看所有课程的信息 2)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课
I
目录
第一章 设计题目的内容、任务及具体要求 ..................................1 第二章 总体设计思路 ....................................................2
2.1 程序功能 ........................................................... 2 2.2 模块关系 ........................................................... 2 2.3 总体框图 ............................................................ 3 第三章 功能模块的具体设计 ..............................................4 3.1 主函数模块的设计 ................................................... 4 3.2 显示课程信息模块的设计 ............................................. 7 3.3 查询模块模块的设计 ................................................. 8 3.4 增加模块的设计 ..................................................... 9 3.5 删除模块模块的设计 ................................................ 13 3.6 修改模块模块的设计 ................................................ 14 3.7 选课模块的设计 .................................................... 15 3.8 显示选课情况模块的设计 ............................................. 17 第四章 功能模块的调试及测试 ...........................................18 4.1 登陆界面和主菜单界面的显示 ........................................ 18 4.2 查询所有课程信息的显示结果 ........................................ 19 4.3 查询单个课程信息的显示结果 ........................................ 19 4.4 添加课程信息的显示结果 ............................................ 20 4.5 删除和修改课程信息的显示结果 ...................................... 20 4.6 选课的显示结果 .................................................... 21 4.7 查询选课情况的显示结果 ............................................ 22 4.8 退出 .............................................................. 22 总结 ..................................................................23 致 谢 ................................................................24 参考资料:............................................................. 25 附程序清单............................................................. 26
1
第二章 总体设计思路
2.1 程序功能
此系统是简单的学生选课系统。 具体的功能包括:
1)输入密码进入系统。 2)查看所有课程的信息 3)输入一门课程的课程编号,从当前课程中进行查找,如果找到则显示该课
程的相关信息,如果没有找到则给出提示信息 4)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程
程的相关信息,如果没有找到则给出提示信息 3)添加一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程
编号的课程,如果存在则提示重新输入,否则将该课程按照顺序插入到相 应位置 4)删除一门课程的基本信息,通过输入课程编号,首先查找是否存在该课程 编号的课程,如果存在则将该课程删除,否则给出提示信息,提示该课程 不存在 5)选修一门课程,需要给出学号和课程编号,如果课程编号不存在则重新输 入,直到输入正确为止,并将学号和相应的课程编号存入 SelectInfo.txt 文件中 (5)课程基本信息包括课程编号、课程名、学时和学分这些简单信息。 (6)课程信息文件中每一行存放一门课程的信息。
for(i=0; i<=N-1; i++) {
if(wdesk[i].hours == 0) break;
printf("%-10d%-20s%-10d%-10lf\n", wdesk[i].number,wdesk[i].classname,wdesk[i].hours,wdesk[i].credit); } 在此片段函数中 wdesk[i].hours == 0 是作为循环的结束条件之一,能提前结束该程序。
5
输,还是退出系统;在学号存在时进入第三重循环,输入密码(注:学号和密码是在运 行此函数时从文件中读到数组里)并在数组中查找,若有和该密码相等的数组元素,就 将进入系统,否则提示继续或退出.
开始
Inset()
打开文件并将课程信息读入数组 输入查询类型
显
显退
示
查
增
删
修
选
示出
课
询
加
除
改
课
选
程
模
模
模
模
模
2
2.3 总体框图
先输入验证信息进入主模块,然后选择调用的模块
主模模块
显
显
查
增
删
修
选
示
示
询
加
除
改
课
选
课
Βιβλιοθήκη Baidu
模
模
模
模
模
课
程
块
块
块
块
块
情
信
况
息
模
模
块
块
图 2-1 各模块关系图
3
第三章 功能模块的具体设计
3.1 主函数模块的设计
在主函数中通过 inset()函数让用户输入验证信息进入,简单菜单的制作可以利用 printmenu()函数实现。从文件中获取课程信息,并存放在定义的结构数组 desk[100] 中。定义结果的源代码为
default:break; } 接着判断用户是否继续输入,若继续,则重新进行选择;否则,退出程序。
开始 打开文件将学好和密码读入数组中
输入密码和学号 密码、学好?
换回 1
换回 0
图 3-1 inset()函数模块的流程图 上图是简单的将输入学号和密码的过程提示是一遍,但实际函数中我使用的三从循环。 第一重循环是输入学号;第二重循环是判断该学会是否存在,若学号不存在便提示是再
II
第一章 设计题目的内容、任务及具体要求
设计题目: 学生选课系统
设计内容:本程序属于非数值计算型算法设计,学生需要设计出学生选课系统所需要的基本功 能,并设计简单的界面(无需图形化)。本程序主要考察对自定义函数的熟悉程度,本程序中主要使 用到的是数组的相关操作,包括数组的输入、输出、查找、插入、删除等操作,需要对数组有比较 深入的掌握。要求程序运行结果正确,程序和算法具有一定程序度的健壮性,稳定性。
struct classin {
int number; char classname[10]; int hours; double credit; }; typedef struct classin Classin; Classin desk[100] = {0} 然后将文件中的信息读入此数组中,读取函数的代码为: cfptr = fopen("LessonInfo.txt","r"); while(!feof(cfptr)) { fscanf(cfptr, "%d%s%d%lf", &desk[i].number, desk[i].classname, &desk[i].hours, &desk[i].credit); i++; } 在后面的使用中都是调用此地址便可以对数组进行修改。 输入选择项 choice,再用 switch 语句去调用其它函数,具体实现如下(主函数的 主要代码): while(choice != 8) {
4
switch(choice) { case 1:myread(desk);break; case 2:myfind(desk);break; case 3:myadd(desk);shunxu(desk);filewhite(desk);break; case 4:mydelete(desk);filewhite(desk);break; case 5:mymodify(desk);shunxu(desk);filewhite(desk);break; case 6:selection(desk, studentin);filewrite(studentin);break; case 7:output(studentin);break;
课
信
块
块
块
块
块
情
息
况
模
模
块
块
结束
图 3-2 main()函数模块的流程图 在次函数中用户通过输入选项进入不同的函数模块。当每次运行一个模块后,又进行选 择。
6
3.2 显示课程信息模块的设计
本模块的设计主要是设计被调用函数 myread(Classin *wkesk),是用指针指向储存课程 信息的数组,调用数组的地址。再用循环把数组中的信息输出。主要代码为: