您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页学生信息管理系统

学生信息管理系统

来源:尚车旅游网


《高级语言程序设计》

课程设计报告

学生信息管理系统的设计与实现

学 号: 141608010141 姓 名: 彭方林 专业班级: 计算机科学与技术1401 日 期: 2015年11月11日

信息科学与工程系

目 录

1、课程设计目的……………………………………………………………………….2 2、课程设计内容……………………………………………………………………….2 3、学生信息管理系统的实现………………………………………………………….8 4、系统测试及系统运行效果………………………………………………………….9 5、系统设计遇到的问题及解决方案…………………………………………………13 6、总结与收获…………………………………………………………………………13 附录 源程序代码………………………………………………………………………15 7、课程设计成绩………………………………………………………………………35

I

1 课程设计的目的

1.1 课程设计题目

学生信息管理系统的设计与实现 2.1 课程设计目的

本课程设计是在学习C++基本理论之后的实践教学环节。该实践教学是软件设计的综合训练,包括问题分析、总体结构设计、用户界面设计、程序设计基本技能和技巧。要求学生在设计中逐步提高程序设计能力,培养科学的软件工作方法。学生通过课程设计在下述各方面得到锻炼:

①.能根据实际问题的具体情况,结合C++的基本理论和基本技巧,正确分析问题,并能设计出解决问题的有效算法与程序。

②.提高程序设计和调试能力。学生通过上机实习,验证自己设计的算法和程序的正确性,学会有效利用基本调试方法,迅速找出程序代码中的错误并且修改,进一步提高程序设计水平。

2 课程设计的内容

2.1 题目分析

设计一个学生信息管理系统,其中包括:

学生基本信息:学号、姓名、性别、成绩(语文、离散数学、英语、毛概、电路基础、概率论、体育)。因为课程设计时间为大二上学期,所以成绩采用的是这学期本专业的课表。

学生信息管理系统功能如表1-1所示,具体功能如下: 1. 系统菜单显示 2. 学生信息录入功能 3. 学生信息浏览功能 4. 查询:

①.学号查询 ②.姓名查询

5. 学生信息的删除与修改 6. 系统中学生信息数量统计 7. 学生信息排序(冒泡排序)

1

《高级语言程序设计》课程设计报告

表1-1 程序功能

学号查询 修改学生信息

2.2 系统程序模块设计 2.2.1 菜单模块

姓名查询 添加学生信息 删除学生信息 学生信息排序 查看已添加学生信息 统计学生信息数量 绘制菜单(包含学号查询、姓名查询、添加学生信息、删除学生信息、修改学生信息、查看已存档学生信息、统计学生信息数量、学生信息排序)。

根据用户输入的值调用对应的模块函数实现该项功能 2.2.2 信息录入模块

{

查找系统中是否已存在该学号对应的信息 if(存在) {提示信息已存在} else

{向文件中写入各项信息} 2.2.3 信息读出模块

{

判断系统中是否存在学生信息 if(不存在) {提示信息不存在} else

{在屏幕上显示该学号对应的信息} 2.2.4 信息查询模块 {

if(学号查询) {

判断文件是否为空

查找系统中是否有该学号信息 if(存在) 输出学生信息 else

2

《高级语言程序设计》课程设计报告

提示学生信息不存在 if(姓名查询) {

判断文件是否为空

查找系统中是否有该姓名对应信息 if(存在) 输出学生信息 else

提示信息不存在 2.2.5 创建系统文件夹模块 {

判断系统文件夹是否存在 if(不存在)

创建“D\\\\学生信息”文件夹 判断系统文件是否存在 if(不存在)

创建“D:\\\\学生信息\\\\学生信息.txt”文件 2.2.6 删除学生信息模块 {

查看系统文件是否为空 if(文件为空) 提示学生信息不存在 else

查找系统中是否有该学号信息 if(存在) 删除该学生信息 else

提示该学生信息不存在 2.2.7 修改学生信息模块 {

查看系统中是否存在该学生信息 if(存在)

3

《高级语言程序设计》课程设计报告

{

删除该学生信息

添加该学生新信息 } 修改成功

2.2.8 统计学生信息数量模块 {

if(文件存在)

读取学号,每读取到一个学号,数量+1 返回信息数量的值 }

2.2.9 学生信息排序模块 {

if(打开成功)

读取全部信息存到结构体数组,按照冒泡排序将信息按学号升序排序 之后将数组内容依次存入文件,并覆盖旧文件。 } 2.2.10 模块图

各模块之间结构图如图2-1所示

4

《高级语言程序设计》课程设计报告

学号查询 姓名查询 添加学生信息 修改学生信息 删除学生信息 查询学生信息 浏览学生信息 统计信息数量 学生信息排序 学生信息管理系统 系统文件检测 图2-1 模块图 2.3 系统主要函数

学生信息管理采用结构化程序设计思想,除主函数外共设计了8个函数,函数原型及功能说明如图2-2所示:

图 2-2 系统主要函数

5

《高级语言程序设计》课程设计报告

2.4 程序流程图

开始 菜单 添加 否 否 浏览 是 信息录入 是 显示全部信息 修改 否 是 修改信息 删除 否 是 删除信息 查询 否 是 否 排序 学号查询 姓名查询 是 冒泡排序 否 查看 是 显示排序后的信息 结束 图2-3 程序流程图

6

《高级语言程序设计》课程设计报告

3 学生信息管理系统的实现

3.1 学号查询

程序每次从文件中读取出一位学生的所有信息,将读取到的学号与用户所输入的学号进行比较。如果两个学号相同,表示已找到该学号对应的信息,显示出该学生的全部信息,查找结束。若两个学号不同,则重新读取下一位学生的信息进行比较,直到文件读取到尾部,显示未找到该学号对应的信息。 3.2 姓名查询

程序每次从文件中读取出一位学生的所有信息,将读取到的姓名与用户所输入的姓名进行比较。如果两个姓名相同,表示已找到该姓名对应的信息,显示出该学生的全部信息,查找结束。若两个姓名不同,则重新读取下一位学生的信息进行比较,直到文件读取到尾部,显示未找到该姓名对应的信息。 3.3 添加学生信息

根据用户输入的学生信息数量将下列过程循环对应的次数:

新建一个标识变量find的值为-1,代表文件中不存在该学生信息。用户输入学生信息后打开文件读取每个学生信息的信息,比较两个信息的学号是否相同。如果相同则修改find的值为0,代表文件中已存在该学生的信息,同时提示“此学生信息已存在,请进入菜单选择修改信息或者删除信息之后再添加!”。检查完学生信息是否重复输入后,若find的值为-1,则将该学生信息存入到文件中,若find值为0,则跳过此步骤。 3.4 删除学生信息

新建一个标识变量find的值为-1,代表文件中不存在该学生信息。用户输入学生信息后打开文件读取每个学生信息的信息,比较两个信息的学号是否相同。如果相同则修改find的值为0,代表文件中存在该学生的信息。若find的值为0则执行删除功能:新建一个文件“学生信息1.txt”作为临时文件,用来存储删除后的信息。读取一位学生的全部信息,如果该信息的学号和想要删除的学号不同,则将该学生信息存到“学生信息1.txt”中。若两个学号相同,则跳过该学号,不将之存入临时文件中。文件读取到末尾后,删除“学生信息.txt”,将“学生信息1.txt重命名为“学生信息.txt”,则需要删除的信息已从文件中删除。 3.5 修改学生信息

修改学生信息的功能为删除和添加功能的结合,用户输入需要修改的学生学号后,系

7

《高级语言程序设计》课程设计报告

统会先调用删除学生信息功能删除该学号对应的信息,之后再调用添加学生信息功能添加新的学生信息,修改完毕。 3.6 查看已添加学生信息

该功能是显示文件中所有的学生信息,根据学生信息数量确定循环次数,依次输出每位学生的信息。

3.7 统计学生信息数量

先新建一个变量d的值为0,代表学生信息数量。While循环的条件为(能读取到学号),当条件成立时将文件位置指针从当前学号尾部移动到学号之前,否则信息会读取混乱,并将d的值加1。当循环条件不成立时,返回d(学生信息数量)的值。每次需要用到学生信息数量的值时都会调用该函数,求出最新的信息数量。 3.8 学生信息排序

排序功能使用的是冒泡排序,将文件中的信息读取到数组中,通过冒泡排序将信息按照升序排序后存到文件中,再次显示的学生信息就是排序后的信息。

4 系统测试及系统运行效果

4.1 系统主界面

进入系统后将弹出菜单界面。 系统主界面运行效果如图4-1所示

图4-1 系统主界面

4.2 添加学生信息

首先输入添加信息的数量,然后输入第一位学生的信息,提示“添加信息成功”后再依

次输入其余的学生的信息。

添加学生信息的运行效果如图4-2所示

8

《高级语言程序设计》课程设计报告

图4-2 添加学生信息

4.3 学号查询

输入想要查询的学号,如果存在该学生,则显示学生信息,不存在就提示该学生信息不存在。

学号查询的运行效果如图4-3、4-4所示

图4-3 学号查询(不存在)

图4-4 学号查询(存在)

4.4 姓名查询

输入想要查询的姓名,如果存在该学生,则显示学生信息,不存在就提示该学生信息不存在。

姓名查询的运行效果如图4-5、4-6所示

9

《高级语言程序设计》课程设计报告

图4-5 姓名查询(不存在)

图4-6 姓名查询(存在)

4.5 显示全部学生信息

显示学生信息的运行效果如图4-7所示

图4-7 显示全部学生信息

4.6 统计学生信息数量

显示学生信息的运行效果如图4-8所示

图4-8 统计学生信息数量

4.7 学生信息排序

学生信息排序采用的冒泡排序,排序成功后会提示返回菜单或者查看排序后的信息。 学生信息排序的运行效果如图4-9、4-10所示

10

《高级语言程序设计》课程设计报告

图4-9 学生信息排序

图4-10显示排序后信息

4.8 修改学生信息

输入需要修改的学号,如果不存在,会提示该学生信息不存在。否则删除旧信息,添加该学生新的信息。

修改学生信息的运行效果如图4-11所示

图4-11 修改学生信息

4.9 删除学生信息

输入学号,如果学号不是12位,提示学号错误,否则如果存在该学号信息,删除该学生信息。

删除学生信息的运行效果如图4-12所示

图4-12 删除学生信息

删除后的信息如图4-13所示

11

《高级语言程序设计》课程设计报告

图4-13 删除后的信息

5 系统设计遇到的问题及解决方案

问题1:c++的文件读写不会使用。

百度查找c++文件读写的方法,通过不同的帖子学习有关文件操作的各种用法和小技巧。使用fstream头文件,定义fin文件输入流,fout文件输出流。通过使用文件流的方式读取或者写入文件。

问题2:代码没有报错,但是运行结果出错。

将出错的函数实现代码注释掉,改成在屏幕上显示一句话。根据这句话是否显示判断程序是执行到什么地方出错的,再根据具体的情况修改代码直到正确。

问题3:程序运行后闪退,不提示任何错误。

使用vs的调试功能,找到程序是执行到那个地方停止运行的,修改此处的代码直到程序运行无误。

问题4:不知道怎样删除文件中的指定数据,无法达到删除学生信息的功能。 读取全部信息将不需要删除的信息存到临时的文件中,再将旧文件删除,修改临时文件为旧文件名,则文件中需要删除的信息已经删除。

6 总结与收获

最初想做这个程序的起因是暑假打工夜班太无聊,所以萌生了自己做一个有点实用功能的小程序。因为在大一的时候看了一点C++的书籍对C++面向过程的部分还算比较了解,而且一直觉得C++的语法比C简单,所以本程序的代码都是用C++写的。打工的时候没带电脑,当时在网上找到一个手机上能用的编程软件,名字是c4droid功能非常强大,和vs2013一样可以显示出代码中的常见语法错误。最初构想的程序没有那么多的功能,在实际编写的时候感觉缺了一些功能不够完善再慢慢添加。在编写的时候遇到过很多问题,主要是C语言的知识掌握的还不够精通,像结构体和为文件的操作都是当时现学的,而且C和C++的语法出入比较大,当时都是需要使用某种功能的时候在网上查找帖子学习下是怎么用的然后根据自己的需要写出适合的代码。代码虽然能通过编译但是错误还是很多的,甚至有些时候都

12

《高级语言程序设计》课程设计报告

不知道错在什么地方,这是最头疼的地方。解决的方法就是把出现错误的函数里的代码注释掉,让它只显示一句话,慢慢查找是哪个代码段出了错误,最终解决了全部的问题。当时程序的大致框架用了五晚上的时间编写完成,后面又陆陆续续的对程序中不理想的地方做了一些更改最终做出了一个理想的程序。开学后课程设计就直接用的这个程序作为作业,但是又出现了新的问题,因为那时候是在手机上编写的代码,安卓系统使用的linux核心,代码中调用的system()命令和电脑上windoows系统的system()命令不同,还有文件操作的路径也要重新更改。更改完毕后又想添加一些新的功能而且最初的程序没有使用结构体,后来对结构体有了新的了解,就把程序又重新改写了一下。为了把程序做成一个能在其他电脑上也能使用的软件,又在网上学了vs中对程序的打包,为了打包出一个理想中的安装包,找了好多帖子用了一天的时间才打包出了一个正常的安装包,至此程序大功告成

通过这次程序的编写加深了我对C++的理解,在程序的编写过程中又学习了很多新的知识,明白了自己的短处在哪里,以后需要在哪个方向努力,认识了很多的不足。从中学习了很多,收获了很多。动手是提升能力的有效方法,就像我在编写这个程序之前可能就比其他同学多懂一点书上的知识。但在写代码的过程中遇到了很多问题,每解决一个问题,就多学了一些知识,能力也有所提高。可能很多库函数我们不知道怎么用,比如你想要实现某一个功能,你可以去网上找一下有关的帖子,多找几个帖子可能就会找到大神的帖子教你怎么用库函数去实现这些功能。最后总结一下,百度是万能的。

13

附录 学生信息管理系统源代码

/*

程序功能:

1.系统菜单显示 2.学生信息录入功能 3.学生信息浏览功能 4.查询:

①.学号查询 ②.姓名查询 5.学生信息的删除与修改 6.系统中学生信息数量统计 7.学生信息排序(冒泡排序) 作者:彭方林

班级:计算机科学与技术1401 学校:河南理工大学万方科技学院 日期:2015年11月11日 */

#include//标准输入输出流头文件#include//system函数头文件 #include//字符串头文件

#include//文件输入输出流头文件 using namespace std;//使用命名空间std ifstream fin;//定义文件输入流 ofstream fout;//定义文件输出流 struct student//定义学生信息结构体 { string number;//学号 string name;//姓名

string sex;//性别

14

《高级语言程序设计》课程设计报告

};

float grade[7]; /*

float grade0;//语文 float grade1;//离散数学 float grade2;//英语 float grade3;//毛概 float grade4;//电路基础 float grade5;//概率论 float grade6;//体育 */

void input_data(int n, int data_number)//学生完整信息存入文件函数 {

int i, j, k, m; student s, s1;

int find = -1;//find初始值为-1,代表未找到相同信息,若文件中已经存在此学生信息,则

find为0

for (i = 0; icout << \"请输入学生的学号,姓名,性别,成绩(成绩顺序依次为语文,离散数学,英语,

毛概,电路基础,概率论,体育。若该科成绩无,请输入0)(空格键分隔!)\" << endl;

cin >> s.number >> s.name >> s.sex;

for (j = 0; j<7; j++)//循环输入7门科目的成绩

cin >> s.grade[j];

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\");//打开文件

if (fin.is_open())//判断文件是否能打开,若能打开,则函数返回值-1,否则返回0 {

for (k = 0; kfin >> s1.number >> s1.name >> s1.sex;//从文件中读取学号,姓名,性别 for (m = 0; m<7; m++)

fin >> s1.grade[m];

15

《高级语言程序设计》课程设计报告

if (s.number == s1.number)//比较文件中读取的学号和要输入的学号是否一样 {

find = 0;//文件中存在该学生信息,find的值修改为0 system(\"cls\");//清空屏幕

cout << \"此学生信息已存在,请进入菜单选择修改信息或者删除信息之

后再添加!\" << endl;

}

if (find != 0)//文件中没有此学生信息 {

fin.close();//关闭文件

fout.open(\"D:\\\\学生信息\\\\学生信息.txt\if (fout.is_open())//检查文件能否打开 {

fout << s.number << \" \" << s.name << \" \" << s.sex << \" \"; for (j = 0; j<7; j++)

fout << s.grade[j] << \" \";//向文件中写入各项信息,中间以空格分隔,

}

便于下次读取 }

void output_data(int data_number)//学生完整信息读出文件函数 {

int i, j; }

} else

cout << \"打开文件失败!\" << endl; }

} else

cout << \"打开或写入文件失败!\" << endl; fout.close();//关闭文件

cout << \"添加信息成功\" << endl;

16

《高级语言程序设计》课程设计报告

student s; char ch;

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); fflush(stdin);//清空输入缓冲区 fin >> ch;//从文件中读取一个字符

if (fin.eof())//检查字符读取是否成功,若读取失败,eof函数返回-1,说明文件为空 { } else {

fin.close();

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open()) {

cout << \"系统所有学生信息为:\" << endl; for (i = 0; ifin >> s.number >> s.name >> s.sex; for (j = 0; j<7; j++)

fin >> s.grade[j];

cout << \"学号:\" << s.number << \" \" << \"姓名:\" << s.name << \" \" << \"性别:\" <<

cout << \"没有找到学生信息,请添加信息之后再试!\" << endl; fin.close();

s.sex << \" \" << \"语文:\" << s.grade[0] << \"离散数学:\" << s.grade[1] << \"英语:\" << s.grade[2] << \"毛概:\" << s.grade[3] << \"电路基础:\" << s.grade[4] << \"概率论:\" << s.grade[5] << \"体育:\" << s.grade[6] << endl;

}

} fin.close();

else { }

17

cout << \"没有找到学生信息,请添加信息之后重试!\" << endl;

《高级语言程序设计》课程设计报告

}

}

void student_number_find(string number_find, int data_number)//学号查找函数 {

int i, j; int find = -1; char ch; student s;

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); fin >> ch; if (fin.eof()) { } fin.close();

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open()) {

for (i = 0; ifin >> s.number >> s.name >> s.sex; for (j = 0; j<7; j++)

fin >> s.grade[j];

if (number_find == s.number)//文件中读取的学号,和要查找的学号相同 {

find = 0;

cout << \"该学生信息为:\" << endl;

cout << \"学号:\" << s.number << \" \" << \"姓名:\" << s.name << \" \" << \"性别:\" <<

cout << \"没有找到学生信息,请添加信息之后再试!\" << endl;

s.sex << \" \" << \"语文:\" << s.grade[0] << \"离散数学:\" << s.grade[1] << \"英语:\" << s.grade[2] << \"毛概:\" << s.grade[3] << \"电路基础:\" << s.grade[4] << \"概率论:\" << s.grade[5] << \"体育:\" << s.grade[6] << endl;

}

break;//输出该学生所有信息并跳出循环,查找结束

18

《高级语言程序设计》课程设计报告

}

}

}

if (find != 0)

cout << \"未找到该学号对应的信息!\" << endl;

fin.close();

else

cout << \"系统中还没有此学号的信息!\" << endl;

void student_name_find(string name_find, int data_number)//姓名查找函数 {

int i, j; int find = -1; student s;

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open()) {

for (i = 0; ifin >> s.number >> s.name >> s.sex; for (j = 0; j<7; j++) {

find = 0;

cout << \"该学生信息为:\" << endl;

cout << \"学号:\" << s.number << \" \" << \"姓名:\" << s.name << \" \" << \"性别:\" << fin >> s.grade[j]; if (name_find == s.name)

s.sex << \" \" << \"语文:\" << s.grade[0] << \"离散数学:\" << s.grade[1] << \"英语:\" << s.grade[2] << \"毛概:\" << s.grade[3] << \"电路基础:\" << s.grade[4] << \"概率论:\" << s.grade[5] << \"体育:\" << s.grade[6] << endl;

}

if (find != 0)

}

break;

19

《高级语言程序设计》课程设计报告

}

}

cout << \"未找到该姓名对应的信息!\" << endl;

fin.close();

else

cout << \"系统中还没有此姓名的信息!\" << endl;

void folder()//创建系统文件夹,每次运行程序都会查找文件夹和文件是否存在,若不存在则创建,防止程序中打开文件时打开失败 { }

int student_data_delete(string number_delete, int data_number)//删除学生信息函数 {

fin.open(\"D:\\\\学生信息, ios::in\"); if (!fin)//判断文件夹是否存在

system(\"md D:\\\\学生信息\");//创建文件夹

fin.close();

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\if (!fin)//判断文件是否存在 { } fin.close();

fout.open(\"D:\\\\学生信息\\\\学生信息.txt\");//创建系统文件 fout.close();

int i, j; int find = -1; char ch; student s;

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); fin >> ch; if (fin.eof()) { }

20

cout << \"没有找到学生信息,请添加信息之后再试!\" << endl;

《高级语言程序设计》课程设计报告

fin.close();

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open()) { } else

cout << \"系统中还没有此学号的信息!\" << endl; for (i = 0; ifin >> s.number >> s.name >> s.sex; for (j = 0; j<7; j++)

fin >> s.grade[j];

if (number_delete == s.number)//文件中读取的学号,和要查找的学号相同 { }

find = 0;

if (find == 0) {

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); fin >> ch; if (fin.eof()) { } else {

fin.close();

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open()) {

for (i = 0; i < data_number; i++) {

21

cout << \"没有找到学生信息存档!\" << endl;

《高级语言程序设计》课程设计报告

fin >> s.number >> s.name >> s.sex; for (j = 0; j < 7; j++)

fin >> s.grade[j];

if (number_delete != s.number)//如果学号和要删除的学号不同,将该学生

信息存入学生信息1中

} fin.close();

system(\"del D:\\\\学生信息\\\\学生信息.txt\");//删除学生信息.txt

rename(\"D:\\\\学生信息\\\\学生信息1.txt\\"D:\\\\学生信息\\\\学生信息.txt\");//将学

{ }

fout.open(\"D:\\\\学生信息\\\\学生信息1.txt\if (fout.is_open()) { } else

cout << \"删除过程出错!\" << endl;

fout << s.number << \" \" << s.name << \" \" << s.sex << \" \"; for (j = 0; j < 7; j++)

fout << s.grade[j] << \" \"; fout.close();

生信息1.txt重命名为学生信息.txt }

int student_data_number()//统计学生信息数量函数

22

}

}

}

cout << \"删除信息成功\" << endl;

else

cout << \"未找到该学号对应的信息!\" << endl;

else

cout << \"系统中没有此学号信息\" << endl;

return find;

《高级语言程序设计》课程设计报告

{

int j; student s;

int d = 0;//学生信息数量 char ch;

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); fin >> ch;

if (fin.eof())//如果文件为空,关闭文件 { } else {

fin.close();

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open())//判断文件打开状态函数 {

while (fin >> s.number)//如果能读取到学号 {

fin.seekg(-12, ios::cur);//将文件位置指针从当前学号尾部移动到学号之前,否

fin.close();

则信息会读取混乱 }

void student_data_modify()//学生信息修改 {

23

}

}

}

fin >> s.number >> s.name >> s.sex; for (j = 0; j<7; j++)

fin >> s.grade[j];

d++;//,读取成功,学生信息数量加一

fin.close();

return d;//返回学生信息数量

《高级语言程序设计》课程设计报告

int j; student s;

cout << \"请输入新的的学号,姓名,性别,成绩(成绩顺序依次为语文,离散数学,英语,毛

概,电路基础,概率论,体育。若该科成绩无,请输入0。)(空格键分隔!),系统会自动修改该学生信息!\" << endl;

cin >> s.number >> s.name >> s.sex; for (j = 0; j<7; j++)

cin >> s.grade[j];

fout.open(\"D:\\\\学生信息\\\\学生信息.txt\if (fout.is_open())//判断文件打开状态函数 {

fout << s.number << \" \" << s.name << \" \" << s.sex << \" \" << s.grade[0] << \" \" <<

s.grade[1] << \" \" << s.grade[2] << \" \" << s.grade[3] << \" \" << s.grade[4] << \" \" << s.grade[5] << \" \" << s.grade[6] << \" \"; }

void student_data_sort(int data_number)//学生信息排序(冒泡排序) {

int i, j;

student s[200], number_max;

fin.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fin.is_open()) {

for (i = 0; i < data_number; i++) { }

fin >> s[i].number >> s[i].name >> s[i].sex; for (j = 0; j < 7; j++)

fin >> s[i].grade[j];

} else

cout << \"打开或写入文件失败!\" << endl; fout.close();

cout << \"修改信息成功\" << endl;

24

《高级语言程序设计》课程设计报告

fin.close();

number_max.number = s[0].number; for (i = 0; i < data_number - 1; i++) for (j = 0; jfout.open(\"D:\\\\学生信息\\\\学生信息.txt\"); if (fout.is_open()) {

for (i = 0; i < data_number; i++)

fout << s[i].number << \" \" << s[i].name << \" \" << s[i].sex << \" \" << s[i].grade[0] if (s[j].number>s[j + 1].number) { }

number_max = s[j]; s[j] = s[j + 1]; s[j + 1] = number_max;

<< \" \" << s[i].grade[1] << \" \" << s[i].grade[2] << \" \" << s[i].grade[3] << \" \" << s[i].grade[4] << \" \" << s[i].grade[5] << \" \" << s[i].grade[6] << \" \"; } int main() {

system(\"color 5F\");//改变程序窗口颜色为湖蓝色背景黑色文字 char menu;

string number_find, name_find;

folder();//程序运行前,先创建系统文件夹和文件 } else

cout << \"打开文件失败,无法完成排序!\" << endl; }

fout.close();

cout << \"排序成功!\" << endl;

menu:

system(\"cls\");

25

《高级语言程序设计》课程设计报告

//在屏幕上显示菜单信息

cout << \"欢迎使用信息查询系统,按数字键进入菜单选项。\" << endl; cout << \"1.学号查询\" << endl; cout << \"2.姓名查询\" << endl; cout << \"3.添加学生信息\" << endl; cout << \"4.删除学生信息\" << endl; cout << \"5.修改学生信息\" << endl; cout << \"6.查看已存档的学生信息\" << endl; cout << \"7.查看已存档的学生信息数量\" << endl; cout << \"8.学生信息排序\" << endl;

menu_again:

fflush(stdin);//清空输入缓冲区 cin >> menu;

while (menu<'1' || menu>'8')//当输入数值不在菜单范围内会提示输入错误 { }

system(\"cls\");

switch (int(menu) - 48)//将menu从字符型强制转换为整形 { case 1:{

char ch; int data_number;

data_number = student_data_number();//求出文件中已存在的信息数量确定查cout << \"输入无效,请输入正确的数字!\" << endl; fflush(stdin); cin >> menu;

找学号时的循环次数

number:

cout << \"学号查询:\" << endl; cout << \"请输入12位学号:\" << endl; fflush(stdin); cin >> number_find;

26

《高级语言程序设计》课程设计报告

}

student_number_find(number_find, data_number); cout << \"按*键返回菜单,按#键重新查找!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') {

cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

}

system(\"cls\"); if (ch == '*')

goto menu;//跳转到菜单

else

goto number; break;

case 2:{

char ch; int data_number;

data_number = student_data_number(); cout << \"姓名查询\" << endl; cout << \"请输入学生姓名:\" << endl; cin >> name_find;

student_name_find(name_find, data_number); cout << \"按*键返回菜单,按#键重新查找!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') {

cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

27

name:

《高级语言程序设计》课程设计报告

}

}

system(\"cls\"); if (ch == '*')

goto menu; goto name; else break;

case 3:{

int n;

int data_number; char ch;

data_number = student_data_number(); cout << \"添加学生信息\" << endl;

cout << \"请输入所添加学生信息的数量\" << endl; fflush(stdin); cin >> n;

input_data(n, data_number);

cout << \"按*键返回菜单,按#键重新添加信息!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') {

cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

add:

}

system(\"cls\"); if (ch == '*')

goto menu; goto add; else break;

28

《高级语言程序设计》课程设计报告

} case 4:{ }

29

char ch;

string student_delete; int data_number;

data_number = student_data_number(); cout << \"删除学生信息:\" << endl;

cout << \"请输入该学生的学号,系统会删除该学生所有信息!\" << endl; fflush(stdin); cin >> student_delete;

while (student_delete.length() != 12)//求字符串student_delete的长度 {

cout << \"输入错误,请输入12位学号:\" << endl; fflush(stdin); cin >> student_delete;

delete_data:

}

student_data_delete(student_delete, data_number); cout << \"按*键返回菜单,按#键再次删除!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') {

cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

}

system(\"cls\"); if (ch == '*')

goto menu; goto delete_data; else break;

《高级语言程序设计》课程设计报告

case 5:{//先删除旧信息再添加新信息完成修改 char ch;

int data_number, a; string student_delete;

data_number = student_data_number(); cout << \"修改学生信息:\" << endl;

modify_data:

} case 6:{

cout << \"请输入该学生的学号,系统会修改该学生所有信息!\" << endl; fflush(stdin); cin >> student_delete;

a = student_data_delete(student_delete, data_number);//删除学生旧信息 if (a == 0) student_data_modify();//添加该学生新信息

cout << \"按*键返回菜单,按#键再次修改!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') { cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

}

system(\"cls\"); if (ch == '*') goto menu; else goto modify_data; break;

char ch; int data_number;

data_number = student_data_number(); output_data(data_number);

30

《高级语言程序设计》课程设计报告

cout << \"按*键返回菜单!\" << endl; fflush(stdin); cin >> ch; while (ch != '*') {

}

case 7:{

} case 8:{

cout << \"输入错误,请输入*!\" << endl; fflush(stdin); cin >> ch;

}

if (ch == '*') goto menu; break;

char ch; int data_number;

data_number = student_data_number(); cout << \"学生信息数目:\" << endl;

cout << \"已添加的学生信息数目为:\" << data_number << endl; cout << \"按*键返回菜单!\" << endl; fflush(stdin); cin >> ch; while (ch != '*') { cout << \"输入错误,请输入*!\" << endl; fflush(stdin); cin >> ch;

}

system(\"cls\"); if (ch == '*') goto menu; break;

31

《高级语言程序设计》课程设计报告

}

char ch; int data_number;

data_number = student_data_number(); student_data_sort(data_number);

cout << \"按*键返回菜单,按#键显示排序后的信息!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') {

cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

}

system(\"cls\"); if (ch == '*')

goto menu; else {

output_data(data_number); cout << \"按*键返回菜单!\" << endl; fflush(stdin); cin >> ch; while (ch != '*') {

cout << \"输入错误,请输入*!\" << endl; fflush(stdin); cin >> ch;

}

system(\"cls\"); if (ch == '*')

goto menu;

} break;

32

《高级语言程序设计》课程设计报告

}

default:{ } }

char ch;

cout << \"输入错误,无此选项\" << endl;

cout << \"按*键返回菜单,按#键再次输入!\" << endl; fflush(stdin); cin >> ch;

while (ch != '*'&&ch != '#') { }

system(\"cls\"); if (ch == '*') { }

cout << \"请再次输入菜单选项:\" << endl; goto menu_again; goto menu; else

cout << \"输入错误,请输入*或#!\" << endl; fflush(stdin); cin >> ch;

33

《高级语言程序设计》课程设计报告

课程设计成绩

姓名 题目 彭方林 班级 计科1401 指导教师 李印清 学生信息管理系统 指导教师评语 评定成绩: 指导教师签字: 年 月 日 34

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务