c大作业学生信息管理系统

合集下载

c语言学生管理系统代码

c语言学生管理系统代码

C语言学生管理系统代码
简介
学生管理系统是一个用于管理学生信息的简单程序,它可以实现添加学生信息、显示学生信息、修改学生信息和删除学生信息等功能。

通过这个系统,学校或机构可以更方便地管理和维护学生的相关数据。

功能
1.添加学生信息:通过输入学生的姓名、学号、年龄和性别等信息,将
学生信息存储在系统中。

每个学生信息包括学号、姓名、年龄和性别等关键信息。

2.显示学生信息:可以显示系统中所有学生的信息,包括学号、姓名、
年龄和性别。

3.修改学生信息:通过输入学生的学号,可以修改该学生的姓名、年龄
和性别等信息。

4.删除学生信息:通过输入学生的学号,可以删除该学生的信息。

实现
下面是一个简单的C语言学生管理系统代码示例:
```c #include <stdio.h> #include <string.h>
#define MAX_STUDENTS 100
// 定义学生结构体 struct Student { int id; char name[100]; int age; char
gender[10]; };
// 定义全局变量,用于存储学生信息和统计学生数量 struct Student
students[MAX_STUDENTS]; int num_students = 0;
// 添加学生 void addStudent() { if (num_students >= MAX_STUDENTS) { printf(。

C#大作业学生成绩管理系统

C#大作业学生成绩管理系统

C#大作业学生成绩管理系统————————————————————————————————作者:————————————————————————————————日期:《c#程序设计》大作业题目:学生成绩管理系统班级:学号:姓名:小组成员分工:姓名分工汪依清:StuIfoupdateLogin傅勤珍:OtherRank斯王春:StuIfoSearchMainframe黄成烽:StuIfoChangeCourseEnter吴凯: StuoIfoEnterScoreEnter朱隆震:CurChoiceScoreUpdate洪彬:Other2学生成绩管理系统------主界面的设计和学生信息查询主界面的设计:主界面设计要求简单明了,能把系统的所有功能展现在主界面上面,能让人方便的查询学生的各种信息,包括系统管理、学生信息管理、课程信息管理、成绩信息管理、选课信息管理、特殊情况管理等功能,不仅如此,界面的设计也要美观大方,这样很好的实现了人机交互。

学生信息查询:1.1功能(1)根据查询条件实现学生信息的查询(2)学生选课信息查询、成绩信息的查询(3) 学生信息、课程信息、成绩信息的增加、删除、修改(4) 对基本信息完成增加、删除、修改时,需注意表与表之间的关联1.2功能需求分析学生信息查询:学生可以根据学号、姓名、专业进行查询.1.3软件环境需求利用Visual Studio 2010作为前台开发工具,后台SQL 数据库管理实现学生成绩管理系统。

设计2.1学生信息查询模块学生信息查询:学生可以根据学号、姓名、班级、学院进行查询。

2.2学生信息内容学生的信息包括学号,姓名,性别,民族,班级,院系,出生日期,政治面貌。

班级学院查学生信息查学号姓名学 生信息 学号 姓名 性别 民族 班级 院系 出生政治3.数据库设计本系统的数据库是SQL server数据库,在SQL环境下创建数据库学生管理系统文件。

根据以上模块划分图分析,针对学生信息管理系统,分别对个人基本信息、选课、成绩进行详细的研究分析。

学生信息管理系统c语言

学生信息管理系统c语言

学生信息管理系统c语言1. 简介学生信息管理系统是一个基于C语言开发的程序,用于管理学校或教育机构中的学生信息。

该系统可以实现学生信息的录入、查询、修改和删除等功能,并且支持数据的持久化存储。

本文档将介绍学生信息管理系统的功能、使用方法以及具体实现细节。

2. 功能学生信息管理系统具有以下主要功能:2.1 录入信息该系统可以通过用户输入的方式录入学生的基本信息,包括学号、姓名、性别、年龄、班级等。

其中,学号是唯一的标识符,用于区分不同的学生。

2.2 查询信息用户可以通过学号或姓名查询特定学生的信息。

系统会根据用户提供的查询条件,在学生信息数据库中查找匹配的学生记录,并将结果显示给用户。

2.3 修改信息用户可以修改已录入学生的信息,包括姓名、性别、年龄、班级等。

系统会根据用户提供的学号,在学生信息数据库中找到相应的学生记录,并将其修改为用户输入的新信息。

2.4 删除信息用户可以根据学号删除某个学生的信息。

系统会在学生信息数据库中找到匹配的学生记录,并将其从数据库中删除。

3. 使用方法学生信息管理系统的使用方法如下:3.1 编译和运行程序首先,需要将C源代码编译成可执行文件。

在命令行中输入以下命令:gcc main.c -o student_system然后,运行编译得到的可执行文件:./student_system3.2 界面操作系统运行后,会显示一个简单的命令行界面,用户可以通过键盘输入指定的命令来执行相应的操作。

以下是系统支持的命令列表:•add:录入学生信息•search:查询学生信息•modify:修改学生信息•delete:删除学生信息•exit:退出系统用户可以根据提示输入相应的命令,并按下回车键确认。

系统会根据用户输入执行相应的操作,然后返回到命令行界面,等待下一次输入。

4. 实现细节学生信息管理系统的实现细节如下:4.1 数据存储系统使用文件来持久化存储学生信息。

每个学生的信息被保存在一个独立的记录中,记录之间使用换行符进行分隔。

C语言大作业 学生成绩信息管理系统

C语言大作业 学生成绩信息管理系统

By DUT 电信1214《程序设计基础》---大程序作业报告题目:学生成绩信息管理系统姓名:刘阳学号:201281***Tel:188********email:139*******@1.开发工具:Visual C++ 6.02.对问题的理解:题目要求的这个系统应该包含两个部分,一个是文件管理,一个是数据处理。

文件管理就是新建学生信息文件并保存、添加或修改学生记录,对原有学生信息文件进行读取。

3.所用到的知识点:带参宏替换,全局变量与静态变量,基本语句(如if,for等),函数的定义与调用,各种指针做函数参数,结构体数组,结构体数组指针,返回指针值的函数,动态分配函数,文件的打开与关闭,文件的读写,文件的指针定位。

4.所使用的数据结构和函数功能说明:一共有12个函数:①void sort_sex(struct student stu[],int n,char a)按性别筛选列表,形参stu[]为保存数据的结构体数组指针,形参n为学生数量,形参a为主函数中输入的想要筛选的性别。

②void sort_average(struct student stu[],float x[],int n,int m)按平均分进行排序或者求平均分最高个人,形参m控制实现哪种功能,形参stu[]为保存数据的结构体数组指针,形参n为学生数量,形参x[]为保存有每个人平均分的数组指针。

③float * average_subject(struct student *p,int n)按科目求平均分,形参stu[]为保存数据的结构体数组指针,形参n为学生数量。

④float average_person(struct student *p)按指定个人求平均分,形参为指向保存数据的结构体指针。

⑤void find_subject_max(struct student stu[],int n,int m)查找指定科目最高分,形参stu[]为保存数据的结构体数组指针,形参n为学生数量,形参m控制所要查询的科目。

c++大作业学生信息管理系统源代码

c++大作业学生信息管理系统源代码
p=s;
}
p->next=NULL;
instuf.close();
//♦1(2)
void showlist(student *head) //学生成绩信息显示功能(遍历链表)
{
int n=1;
cout<<"学号姓名班级 语文 数学 英语 总分 均分 序号";
while (head)
{
cout<<head->n um<<" "<<head->n ame<<'\t'<<head->clas<<'\t'<<" "<<head->ch in ese<<'\t'
for (i=1;i<=n;i++)
{
cin>>a;
if ((strcmp(head->num,a)==0)||(strcmp(head->name,a)==0))
{
b=0;
p=head;
head=head->next;
delete p;
p=NULL;
}
else
{
p=head;
while ((p->next!=NULL )&&(strcmp(p->next->num,a)!=0)&&(strcmp(p->next->name,a)!=0))
q->next =s;
q=s;
}
q->next=NULL;

c语言大作业学生成绩管理系统

c语言大作业学生成绩管理系统

c语言大作业学生成绩管理系统Company Document number:WTUT-WT88Y-W8BBGB-BWYTT-19998学年论文(学生成绩管理系统)题目:学生成绩管理系统作者:所在学院:专业年级:指导教师:职称:2015 年 5 月27 日目录参考文献 (20)基本信息引言管理信息系统正在向着网络化、智能化和集成化等趋势发展。

学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。

它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。

学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,查询,保存以及退出几方面的功能,是现实问题的迫切要求。

本系统开发的总体任务是实现学生成绩管理的系统化、规范化、自动化。

达到提高学生成绩管理效率的目的。

与传统管理方法相比有明显的优点:查找方便,可靠性高,保密性好,成本低。

彻底改变了以前繁杂的管理模式,实现全面的、相对集中的、职能化的信息综合管理。

提高了学生档案管理的效率和准确性,能够合理的安排时间,学生能够尽快的知道自己的考试成绩。

同时,学生管理系统的应用也为今天的教育在未来市场的竞争力有所提高。

学生成绩管理系统是为了更好的管理学生考试成绩而开发的数据管理软件。

它对于一个学校是不可缺少的重要部分,它的内容对于学校的决策者和管理者来说都至关重要。

目前各个高校的基本情况是:每次考试结束,老师们都要统计大量的学生成绩,这些数据的归档、统计工作任务重,统计结束后往往错误百出。

工作量之大,查阅,维护都有不同程度的问题存在。

所以,学生成绩管理管理系统为用户提供充足的信息和快捷的查询手段,实现学生基本信息、成绩的录入,查询,保存以及退出等几方面的功能,是现实问题的迫切要求。

学院在教学这一部分主要是由教务处对课程、对学生、对学生成绩进行合理地安排以及统筹计划,以及让教务处在最短的时间段把学生的成绩核算出来,提高教务处的办事效率。

c语言学生信息管理系统总结

c语言学生信息管理系统总结

c语言学生信息管理系统总结
C语言学生信息管理系统是一个非常实用的项目,它可以帮助你掌握C语言的基本语法和数据结构,同时也可以提高你的编程技能和解决问题的能力。

在这个项目中,你需要设计和实现一个系统,该系统可以存储、检索、更新和删除学生信息。

以下是你在完成这个项目后可以获得的一些经验:
1. 数据结构和算法:你将需要使用各种数据结构(如数组、链表、树等)和算法来存储和操作学生信息。

通过这个项目,你将更好地理解这些数据结构和算法的工作原理,以及如何在实际应用中使用它们。

2. 文件I/O:你将需要从文件中读取学生信息,并将更新后的信息写回文件。

这将使你更好地理解文件I/O的原理,以及如何使用C语言的标准库函数进行文件操作。

3. 用户界面设计:你可能需要设计一个简单的用户界面,以便用户可以输入、检索和更新学生信息。

这将使你更好地理解如何使用C语言进行图形用户界面(GUI)编程。

4. 错误处理:在实际应用中,系统可能会出现各种错误,如文件读取错误、内存分配失败等。

通过这个项目,你将更好地理解如何使用C语言的异常处理机制(如setjmp和longjmp函数)来处理这些错误。

5. 代码优化和调试:当你编写代码时,可能会出现各种错误和问题。

通过调试和优化代码,你将更好地理解如何找到和解决问题,从而提高你的编程技能。

总之,完成C语言学生信息管理系统将使你更好地理解C语言的实际应用,并提高你的编程技能。

同时,这个项目也可以作为你未来职业生涯的一个很好的起点。

C实现简单的学生信息管理系统控制台程序

C实现简单的学生信息管理系统控制台程序

C实现简单的学生信息管理系统控制台程序学生信息管理系统是一种用于管理学生的基本信息的应用程序。

在这个系统中,可以实现学生信息的录入、修改、查询和删除等功能,以便对学生信息进行有效的管理和维护。

下面是一个用C语言实现的简单学生信息管理系统的示例代码。

```c#include <stdio.h>#include <stdlib.h>//定义学生结构体struct studentint id;char name[50];int age;};//全局变量,用于存储学生信息struct student students[100];int count = 0;//函数声明void menu(;void addStudent(;void listStudents(;void searchStudent(;void deleteStudent(;void updateStudent(;//主函数int maimenu(;return 0;//菜单函数void menint choice;doprintf("\n====== Student Information Management System ======\n");printf("1. Add student\n");printf("2. List students\n");printf("3. Search student\n");printf("4. Delete student\n");printf("5. Update student\n");printf("0. Exit\n");printf("Please enter your choice: "); scanf("%d", &choice);switch (choice)case 1:addStudent(;break;case 2:listStudents(;break;case 3:searchStudent(;break;case 4:deleteStudent(;break;case 5:updateStudent(;break;case 0:printf("Exit the system\n");break;default:printf("Invalid choice! Please try again\n");break;}} while (choice != 0);//添加学生函数void addStudenif (count >= 100)printf("The number of students has reached the upper limit!\n");return;}struct student newStudent;printf("Please enter student ID: ");scanf("%d", &newStudent.id);printf("Please enter student name: ");scanf("%s", );printf("Please enter student age: ");scanf("%d", &newStudent.age);students[count] = newStudent;count++;printf("Add student successfully!\n");//列出学生函数void listStudentif (count == 0)printf("No student information is available!\n");return;}printf("====== Student List ======\n");printf("ID\tName\t\tAge\n");for (int i = 0; i < count; i++)printf("%d\t%s\t\t%d\n", students[i].id, students[i].name, students[i].age);}void searchStudenif (count == 0)printf("No student information is available!\n"); return;}int id;printf("Please enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++)if (students[i].id == id)printf("Student Information:\n");printf("ID: %d\n", students[i].id);printf("Name: %s\n", students[i].name);printf("Age: %d\n", students[i].age);return;}}printf("Student with ID %d does not exist!\n", id);void deleteStudenif (count == 0)printf("No student information is available!\n"); return;}int id;printf("Please enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++)if (students[i].id == id)for (int j = i; j < count - 1; j++)students[j] = students[j+1]; // 将后面的学生信息往前移动}count--;printf("Delete student successfully!\n");return;}}printf("Student with ID %d does not exist!\n", id); //更新学生函数void updateStudenif (count == 0)printf("No student information is available!\n"); return;}int id;printf("Please enter student ID: ");scanf("%d", &id);for (int i = 0; i < count; i++)if (students[i].id == id)printf("Please enter student name: ");scanf("%s", students[i].name);printf("Please enter student age: ");scanf("%d", &students[i].age);printf("Update student information successfully!\n"); return;}}printf("Student with ID %d does not exist!\n", id);```这是一个简单的学生信息管理系统控制台程序,实现了学生的添加、列出、查询、删除和更新等功能。

C语言大作业——学生信息管理系统

C语言大作业——学生信息管理系统

《程序设计综合课程设计》报告学生姓名: ______ ______ ____________________________学生班级: ______________________________________________学生学号: ____________指导教师: ______2014年6 月 22 日目录前言 (2)第1章Visual C++6.0简介及其优点 (3)第2章课程设计的目的和要求 (4)2.1课程设计目的 (4)2.2课程设计的要求 (5)第3章课程设计任务内容 (6)3.1 需求分析 (6)3.2可行性分析 (6)第4章软件使用说明 (7)第5章总结 ................................................. 错误!未定义书签。

附录源程序学生信息管理系统前言学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。

特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。

其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生档案管理还停留在纸介质的基础上,尤其是中、小学对学生档案的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。

随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。

这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。

作为计算机应用的一部分,使用计算机对学生档案进行管理,有着手工管理所无法比拟的优点,如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。

C语言程序设计课程设计大作业-学生成绩管理系统

C语言程序设计课程设计大作业-学生成绩管理系统

C语言程序设计课程设计大作业-学生成绩管理系统计算机科学学院计算机科学与应用系C程序设计报告成绩管理系统设计学生姓名:* *学号:1004681082班级:计科102指导老师:* *报告日期:2011--02--161.题目与要求1)问题提出本人计划编写一个学生信息管理系统,主要用来管理学生基本信息及成绩信息。

2)本系统涉及的知识点单链表、结构体、函数、循环、指针、选择3)功能要求(1)建立学生信息,每个学生的信息包括:学号、姓名、成绩。

(2)求出每个学生的总分和平均分。

(3)查找:根据学号、姓名、成绩、总分、平均分中任一项查询该生的基本信息。

(4)排序:根据学号或总分将学生的信息按照一定的顺序进行排序。

(5)根据需要修改学生的基本信息。

(6)根据实际情况删除某生的信息。

(7)根据实际情况插入某生的信息。

(8)输出。

2.功能设计1)算法设计(1)利用switch语句设计如图所示的主菜单。

请输入选项编号1——查找2——排序3——学生信息的修改4——链表的删除5——链表的插入6——链表的输出7——退出图1 学生信息管理系统主菜单(2)选择1后,调用查找函数search,进入查找函数后利用switch语句实现如图所示的查找子菜单。

该菜单中每个选项调用一个函数(除选项10外)。

查找菜单请输入选项编号1——按学号查找2——按姓名查找3——按C语言分数查找4——按高数分数查找5——按英语分数查找6——按总分查找7——按平均分查找8——总分前三名9——不及格者10——班级成绩情况11——退出图2 查找子菜单(3)选项2后,调用排序函数arrange,进入查找函数后利用switch语句实现如图所示的查找子菜单。

该菜单中每个每个选项调用一个函数(除3外)。

排序菜单输入选项编号1——按学号排序2——按总分排序3——退出图3 排序子菜单(4)选择3后,调用修改函数correct,修改某个学生的信息。

(5)选择4后,调用删除函数del,根据需要删除某个学生的信息。

c语言学生信息管理系统

c语言学生信息管理系统

C语言学生信息管理系统简介本文档介绍了一个基于C语言的学生信息管理系统的设计和实现。

该系统可以实现学生信息的添加、删除、修改和查询等功能,同时支持将学生信息保存到文件中,以便后续的读取和操作。

功能需求系统具备以下功能:1.添加学生信息:输入学生的姓名、年龄、性别等基本信息,并分配一个唯一的学号。

2.删除学生信息:根据学号删除指定学生的信息。

3.修改学生信息:根据学号修改指定学生的信息,可选择修改姓名、年龄、性别等内容。

4.查询学生信息:根据学号或姓名查询学生信息,并输出学生的基本信息。

5.保存学生信息:将所有学生的信息保存到文件中,以便下次系统启动时读取。

系统设计数据结构设计学生信息可以使用结构体来表示,定义如下:typedef struct {char name[50]; // 姓名int age; // 年龄char gender[10]; // 性别int id; // 学号} Student;功能设计系统的主界面提供以下功能选项:1. 添加学生信息2. 删除学生信息3. 修改学生信息4. 查询学生信息5. 保存学生信息0. 退出系统添加学生信息用户选择该功能后,系统提示用户输入学生的姓名、年龄、性别等信息,并自动生成一个唯一的学号。

系统将输入的学生信息保存在一个学生数组中。

删除学生信息用户选择该功能后,系统提示用户输入要删除的学生的学号。

系统在学生数组中查找对应学号的学生信息,并将其删除。

修改学生信息用户选择该功能后,系统提示用户输入要修改的学生的学号。

系统在学生数组中查找对应学号的学生信息,并提示用户选择要修改的内容(如姓名、年龄、性别),然后根据用户的输入修改相应的字段。

查询学生信息用户选择该功能后,系统提示用户输入要查询的学生的学号或姓名。

系统在学生数组中查找对应学号或姓名的学生信息,并输出学生的基本信息。

保存学生信息用户选择该功能后,系统将所有学生的信息保存到一个文件中,以便下次系统启动时读取。

c语言大作业--学生管理系统

c语言大作业--学生管理系统

#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 100struct student{char name[10];int num;char sex[10];float math;float yingyu;float zhengzhi;float ywen;float aver;float sum;}stu;void menu(){system("cls");printf(" * 欢迎使用学生成绩管理系统* \n");printf(" * ======================= * \n"); printf(" * 请选择相应的功能: * \n");printf(" * 1.成绩录入* \n");printf(" * 2.查询成绩* \n");printf(" * 3.修改成绩* \n");printf(" * 4.插入成绩* \n");printf(" * 5.报表输出* \n");printf(" * 6.删除操作* \n");printf(" * 0.退出系统* \n" );printf(" * ======================= * \n"); printf(" \n\n\n\n\n\n\n\n\n * * * * \n"); }//成绩录入void input(){system("cls");FILE *fp;student xs; /*定义一个结构体变量来装从文件中读出来的数据*/int c=1;if((fp=fopen("student.dat","ab"))==NULL){printf("can't open file!\n");exit(0);}printf("\n 成绩录入");printf("\n****************************************************");while(c++) /*中间加油break,可使循环中断*/{printf("\n 请输入您的姓名(姓名为end结束):");scanf("%s",);if(strcmp(,"end")==0) break;/*判断姓名是否为end,用字符串判断*/printf("\n 请输入学号:");scanf("%d",&xs.num);printf("\n 性别:");scanf("%s",&xs.sex);printf("\n 请输入数学的成绩:");scanf("%f",&xs.math);printf("\n 请输入英语的成绩:");scanf("%f",&xs.yingyu);printf("\n 请输入政治的成绩:");scanf("%f",&xs.zhengzhi);printf("\n 请输入语文的成绩:");scanf("%f",&xs.ywen);xs.aver=0;/*给平均分变量赋初值*/xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;xs.sum=0;xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;fwrite(&xs,sizeof(stu),1,fp); //将成绩信息写入文件system("cls");}fclose(fp);}void xingming(){FILE *fp;student xs;char name[10];printf("\n 输入要查学生的姓名: ");scanf("%s",name);if((fp=fopen("student.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(strcmp(,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/{printf("\n 学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex, xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);break;}}if(feof(fp))printf("\n 查找失败"); /*学生不存在*/fclose(fp);}void xuehao(){FILE *fp;student xs;int num;printf("\n 输入要查学生的学号: ");scanf("%d",&num);if((fp=fopen("student.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/{printf("\n 学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs .math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);break;}}if(feof(fp)) printf("\n 查找失败");fclose(fp);}//查询void search(){char ch1;system("cls");printf(" 请输入按何种方式查询:\n");printf("\n 1-姓名,2-学号:");ch1=getchar();/*用字符接收*/switch(ch1)/*判断*/case '1':xingming();break;case '2':xuehao();break;}printf("\n 按任意键返回主菜单");getch();/*让屏幕停留同时按任意键返回*/}//修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;void modi(){student xs;FILE *fp;char name[10];system("cls");printf("\n 输入要修改的学生的姓名: ");scanf("%s",name);if((fp=fopen("student.dat","rb+"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(strcmp(,name)==0)/*判断输入要修改的姓名是否存在*/{printf(" 修改前学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);printf("\n 请输入该生的数学成绩:");scanf("%f",&xs.math);printf("\n 英语成绩:");scanf("%f",&xs.yingyu);printf("\n 政治成绩:");scanf("%f",&xs.zhengzhi);printf("\n 语文成绩:");scanf("%f",&xs.ywen);xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4;xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen;break;}}if(!feof(fp)){printf(" \n 修改后的学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/}elseprintf("\n 学生不存在,修改失败!!");fclose(fp);printf("\n 按任意键返回主菜单");getch();}//插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。

vc大作业报告学生信息管理系统

vc大作业报告学生信息管理系统

v c大作业报告学生信息管理系统Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】高级程序设计项目训练报告指导教师:黄欢时间 2012 年 7 月 27 日专业年级: 姓名:学号:报告分程序功能:1) 学生基本信息录入功能2) 学生信息查询功能3)学生信息的删除学生信息包括:姓名、性别、学号、班级、出生年月、手机号码、已经获得学分等输入输出数据的说明:输入学生信息点击确定,在“学生信息查询”中输入姓名,就可以在“查询结果”中输出相应信息。

报告内容一、分析设计的是一个基于MFC对话框的C++应用程序,创建了一个主对话框,和一些必要的子对话框。

在主对话框中添加列表控件用来显示学生的基本信息。

主要用到了在MFC中运用编辑框的只是,还有插入位图。

二、操作运行后点击“学生信息录入”显示:输入相关信息在确定。

在选中信息点击删除,可进行删除操作。

点击“学生信息查询”显示:输入名字,若有信息储存,则在查询结果中显示,若无信息储存则显示:主代码:// zxyDlg.cpp : implementation file//#include "stdafx.h"#include "zxy.h"#include "zxyDlg.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif////////////////////////////////////////////////////////////////////////// ///// CAboutDlg dialog used for App Aboutclass CAboutDlg : public CDialog{public:CAboutDlg();// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA// ClassWizard generated virtual function overrides//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support//}}AFX_VIRTUAL// Implementationprotected://{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()};CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT}void CAboutDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)// No message handlers//}}AFX_MSG_MAPEND_MESSAGE_MAP()////////////////////////////////////////////////////////////////////////// ///// CZxyDlg dialogCZxyDlg::CZxyDlg(CWnd* pParent /*=NULL*/): CDialog(CZxyDlg::IDD, pParent){//{{AFX_DATA_INIT(CZxyDlg)// NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);}void CZxyDlg::DoDataExchange(CDataExchange* pDX){CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CZxyDlg)DDX_Control(pDX, IDC_BUTTON3, m_button_change);DDX_Control(pDX, IDC_BUTTON2, m_button_del);DDX_Control(pDX, IDC_BUTTON1, m_button_enter);DDX_Control(pDX, IDC_LIST4, m_list_ctrl);//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(CZxyDlg, CDialog)//{{AFX_MSG_MAP(CZxyDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_BUTTON1, OnButton1)ON_BN_CLICKED(IDC_BUTTON2, OnButton2)ON_BN_CLICKED(IDC_BUTTON3, OnButton3)//}}AFX_MSG_MAPEND_MESSAGE_MAP()////////////////////////////////////////////////////////////////////////// ///// CZxyDlg message handlersBOOL CZxyDlg::OnInitDialog(){CDialog::OnInitDialog();// Add "About..." menu item to system menu.// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);}}// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon// TODO: Add extra initialization herem_list_ctrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);CRect rect;m_list_ctrl.GetClientRect(&rect);int nColInterval=rect.Width()/16;m_list_ctrl.InsertColumn(0,_T("学号"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(1,_T("姓名"),LVCFMT_LEFT,nColInterval*2);m_list_ctrl.InsertColumn(2,_T("性别"),LVCFMT_CENTER,nColInterval*1+5);m_list_ctrl.InsertColumn(3,_T("班级"),LVCFMT_LEFT,nColInterval*2);m_list_ctrl.InsertColumn(4,_T("出生日期"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(5,_T("电话号码"),LVCFMT_LEFT,nColInterval*3);m_list_ctrl.InsertColumn(6,_T("已获学分"),LVCFMT_LEFT,nColInterval*2);return TRUE; // return TRUE unless you set the focus to a control }void CZxyDlg::OnSysCommand(UINT nID, LPARAM lParam){if ((nID & 0xFFF0) == IDM_ABOUTBOX){CAboutDlg dlgAbout;dlgAbout.DoModal();}else{CDialog::OnSysCommand(nID, lParam);}}// If you add a minimize button to your dialog, you will need the code below// to draw the icon. For MFC applications using the document/view model, // this is automatically done for you by the framework.void CZxyDlg::OnPaint(){if (IsIconic()){CPaintDC dc(this); // device context for paintingSendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;// Draw the icondc.DrawIcon(x, y, m_hIcon);}else{CDialog::OnPaint();}}// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CZxyDlg::OnQueryDragIcon(){return (HCURSOR) m_hIcon;}#include "MyDialog_enter.h"void CZxyDlg::OnButton1(){// TODO: Add your control notification handler code hereCMyDialog_enter *pwd=new CMyDialog_enter(this);pwd->Create(IDD_DIALOG1,this);pwd->ShowWindow(1);}#include "student.h"void CZxyDlg::List_Show(void){m_list_ctrl.DeleteAllItems();int nItem = m_list_ctrl.GetItemCount();for (inti=0;i<people[0].AllNumber||i==people[0].AllNumber;i++,nItem++) {m_list_ctrl.InsertItem(nItem, people[i].sno);m_list_ctrl.SetItemText(nItem, 1,people[i].sname);m_list_ctrl.SetItemText(nItem, 2,people[i].sex);m_list_ctrl.SetItemText(nItem, 3,people[i].inst);m_list_ctrl.SetItemText(nItem, 4,people[i].brondata);m_list_ctrl.SetItemText(nItem, 5,people[i].phone);m_list_ctrl.SetItemText(nItem, 6,people[i].grade);}}void CZxyDlg::OnButton2(){// TODO: Add your control notification handler code hereint nItem=m_list_ctrl.GetSelectionMark();//AfxMessageBox(people[nItem].sname,MB_OK);if (nItem==-1){AfxMessageBox("您未选择任何内容!",MB_OK);}else{if (AfxMessageBox("确认删除学生"+people[nItem].sname+"的信息",MB_YESNO)==IDYES){for (;nItem<people[0].AllNumber;nItem++){people[nItem].All_Copy(people[nItem+1]);}people[0].AllNumber--;List_Show();}}}#include "MyDialog_2.h"void CZxyDlg::OnButton3(){// TODO: Add your control notification handler code hereCMyDialog_2 *pwnd=new CMyDialog_2(this);pwnd->Create(IDD_DIALOG2,this);pwnd->ShowWindow(1);}BOOL CZxyDlg::PreTranslateMessage(MSG* pMsg) //屏蔽回车和ESC按键{// TODO: 在此添加专用代码和/或调用基类{// 屏蔽回车和ESC 键// 屏蔽ESC 键退出if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x1b)return TRUE;// 回车if (pMsg->message == WM_KEYDOWN && pMsg->wParam == 0x0d )return TRUE;}return CDialog::PreTranslateMessage(pMsg);}遇到的问题及解决方法(编译错误提示及如何解决)1、主要遇到了一些成员变量添加错误的问题,在通过Ctrl+W操作显示窗口中重新添加后得以改正,是缺少成员变量的问题。

C++大作业:学生信息管理系统(附代码)

C++大作业:学生信息管理系统(附代码)

学生信息管理系统(附代码)题目要求:设计一个类CStudent,类中包含一个学生的基本数据如下:编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。

并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。

如:1 LiPing m 18 89 98 94请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。

并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。

要求成员函数完成以下功能:(1)从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。

(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。

(3)按姓名对学生信息进行检索并将检索结果显示在屏幕上。

(4)计算某编号学生的总成绩与平均成绩。

(5)列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。

Code:1. /****************************************2. *名称: student.cpp *3. *描述: 学生管理程序*4. *功能: 添加,修改,按条件查询学生信息*5. *环境: Fedora Linux 11 & GCC & x86 *6. *备注: davelv第一次Class于2010-01-10 *7. *更新: 新建了可复用的搜索模板searchframe *8. ****************************************/9.10. #include <iostream>11. #include <cstring>12. #include <vector>13. #include <fstream>14. #include <cstdlib>15.16. using namespace std;17. #define CIN_LEN 1024//缓冲区长度18. #define FILENAME "data"//数据文件名19. /////////////////////////////////////20. // 结构和类//21. ///////////////////////////////////22. struct data//学生个人信息23. {24. int id;//学号25. char name[20];//名字26. char major[20];//专业27. char sex;//性别28. double ch,en,ma;//成绩29. int grade;//年级30. };31.32. class CStudent33. {34. protected:35. bool altered;//是否修改36. data info;//学生信息37. public:38. static int nowid ;//新学生自增id39. static void displayhead();//显示表头40. static void displayshorthead();//显示短表头41. CStudent();//构造42. void displayinfo();//显示全部学生信息43. void displayshortinfo();//显示学生短信息44. double getsum();//取总成绩45. double getave();//取得平均分46. double getch();//取语文成绩47. double geten();//取外语成绩48. double getma();//取数学成绩49. int set(bool isnew);//设置学生信息50. int getgrade();//取年级51. int getid();//取学号52. bool isaltered();//取是否修改53. char getsex();//取性别54. char* getname();//取姓名55. char* getmajor();//取专业56. data* getinfo();//取学生全部信息57. //定义友元函数以便重载运算符58. friend ostream& operator<<(ostream&,const CStudent&);59. friend istream& operator>>(istream&,CStudent&);60.61. };62.63. int CStudent::nowid = 1;//初始化类静态成员64.65. CStudent::CStudent()//基类构造66. {67. info.id=CStudent::nowid++;//子增id68. strcpy(,"None");//名字69. info.ch=0;//语文成绩70. info.en=0;//外语成绩71. info.ma=0;//数学成绩72. info.grade=1;//年级73. altered=false;//未被修改74. }75.76. int CStudent::getgrade()77. {78. return info.grade;79. }80.81. double CStudent::getsum()82. {83. return info.ch+info.en+info.ma;84. }85. double CStudent::getave()86. {87. return (info.ch+info.en+info.ma)/3;88. }89. double CStudent::getch()90. {91. return info.ch;92. }93.94. double CStudent::geten()95. {96. return info.en;97. }98.99. double CStudent::getma()100. {101. return info.ma;102. }103.104. int CStudent::getid()105. {106. return info.id;107. }108.109. char CStudent::getsex()110. {111. return info.sex;112. }113.114. char * CStudent::getname()115. {116. return ;117. }118. bool CStudent::isaltered()119. {120. return altered;121. }122. data *CStudent::getinfo()123. {124. return &info;125. }126. void CStudent::displayinfo()127. {128. cout<<*this<<"\t"<<getsum()<<"\t"<<getave()<<endl;//利用重载运算符输出129. }130. void CStudent::displayshortinfo()131. {132. cout << *this<<endl;133. }134. void CStudent::displayhead()135. {136. cout<<"\n\t学号\t姓名\t性别\t专业\t年级\t中文\t英文\t数学\t总分\t平均分\n"; 137. }138. void CStudent::displayshorthead()139. {140. cout<<"\n\t学号\t姓名\t性别\t专业\t年级\t中文\t英文\t数学\n";141. }142. int CStudent::set(bool isalter)143. {144. cout<<"输入学生信息:\n";145. displayshorthead();146. if (isalter)147. displayshortinfo();148. cout<<"\t"<<info.id<<"\t";149. cin.clear();150. cin>> *this;//从标准输入获取学生信息151. altered=true;//已修改152.153. if(cin.fail())154. {155. cout<<"录入失败\n";156. cin.clear();157. cin.ignore(CIN_LEN,'\n');//这两行是用来清空输入缓冲158. return -1;159. }160. else161. {162. cout<<"录入成功\n";163. return 1;164. }165. }166.167. //重载输出符168. ostream &operator<<(ostream& out,const CStudent &right)169. {170. //输出学生的全部信息171. out <<"\t"<<.id<<"\t"<<<<"\t"<<.sex<<"\t" 172. <<.major<<"\t"<<.grade<<"\t"<<.ch<<"\t" 173. <<.en<<"\t"<<.ma;174. return out;175. }176. //重载输入符177. istream& operator>>(istream& in,CStudent& right)178. {179. //输入除ID外的其他信息180. in >>>>.sex>>.major181. >>.grade>>.ch>>.en>>.ma; 182. return in;183. }184.185. /////////////////////////////////186. // 初始化函数//187. ////////////////////////////////188. int initial(vector<CStudent*> &stu)189. {190. fstream file;//输入文件191. CStudent *p;192.193. file.open(FILENAME, fstream::in|fstream::binary);//二进制输入打开194.195. if (!file)//文件是否打开成功196. return -1;197. while( file.peek()!=EOF )//是否到文件末尾198. {199. p=new CStudent();//新建一个学生对象200. file.read((char*) p->getinfo(),sizeof(data));//读入学生对象201. if(file.fail())//检查读入是否失败202. return -2;203. stu.push_back(p);//对象加入vector204. }205. if(!stu.empty())//如果从文件读入了对象206. CStudent::nowid = stu.back()->getid()+1;//则自增id设置为最后一个学生id+1 207. file.close();//关闭208. return stu.size();//返回对象个数209. }210. ////////////////////////////////211. // 信息增加函数//212. ///////////////////////////////213. void insert(vector<CStudent*> &stu)214. {215. char c='y';//输入控制字符216.217. int flag = 1;//标志位,1表示新增成功218.219. CStudent *p=new CStudent();220.221. while(c != 'n')//是否继续新增222. {223. flag = p->set(false);//设置学生信息224. if( flag == 1 )//如果设置成功225. {226. stu.push_back(p);//对象加入vector227. p = new CStudent();//新建下一个对象228. }229. cout << "是否继续添加学生(any/n)?";230. cin.clear();231. cin.ignore(CIN_LEN,'\n');232. cin.get(c);233. }234. //删除最后一个新建的对象,因为没有使用它235. delete p;236. CStudent::nowid--;237. }238.239. ///////////////////////////////240. // 查询全部信息函数//241. /////////////////////////////242. int comparebynone(const void *a, const void *b )243. {244. return 0;245. }246. ////////////////////////////////247. // 按学号比较函数//248. //////////////////////////////249. int comparebyid(const void *a, const void *b )250. {251. return *(const int *)a - ((CStudent *)(b))->getid();252. }253. ///////////////////////////////254. // 按姓名比较函数//255. //////////////////////////////256. int comparebyname(const void *a, const void *b )257. {258. return strcmp((const char *)a, (const char *)(((CStudent *)b)->getname())); 259. }260. ////////////////////////////////261. // 按年级比较函数//262. //////////////////////////////263. int comparebygrade(const void *a, const void *b)264. {265. return (*(const int *)a - ((CStudent *)b)->getgrade());266. }267. /////////////////////////////////////268. // 按总分和性别比较函数//269. ///////////////////////////////////270. int comparebymarkandsex(const void *a, const void *b)271. {272. double mark;273. char sex;274. sscanf((const char*)a,"%lf%c",&mark,&sex);275. return !(276. ( ((CStudent*)b)->getsum() >= mark )277. && ( (sex =='n') || (sex == ((CStudent*)b)->getsex()) )278. );279.280.281. }282. ///////////////////////////////283. // 搜索模板//284. /////////////////////////////285. template <typename T>286. void searchframe(const char *info, T &condition ,vector<CStudent *> &stu, int (*compare)(const void *a, const void *b) ,bool isalter)287. {288. char c='y';289. int flag;290. while(c != 'n')291. {292. cin.clear();293.294. if(info != NULL)295. {296. cout<< "输入"<<info<<":";297. //cin.ignore(CIN_LEN,'\n');298. cin>>condition;299. }300.301. if(cin.fail())302. {303. cout << "输入错误\n";304. }305. else306. {307. //遍历vector查找308. for(vector<CStudent*>::size_type ix =flag=0; ix!=stu.size(); ++ix)309. { //判断是name是否相等310. if(compare(&condition,stu[ix]) == 0)311. {312. if( isalter )313. stu[ix]->set(isalter);314. else315. {316. if(flag == 0)317. CStudent::displayhead();318. stu[ix]->displayinfo();319. }320. flag = 1;321. }322. }323. if (flag == 0)//没有查到324. {325. cout<<"没有";326. if(info == NULL)327. cout<<"符合条件";328. else329. cout<<info<<"为"<<condition;330. cout<<"的学生\n";331. }332. }333. cout << "是否继续(any/n)?";334. cin.clear();335. cin.ignore(CIN_LEN,'\n');336. cin.get(c);337. }338. }339.340. ////////////////////////////////341. // 信息检索函数//342. //////////////////////////////343. void fetch(vector<CStudent*> &stu)344. {345. int choose,id,grade;346. char name[20],markandsex[20];347.348. while (true)349. {350. cout << "\n\t1.显示全部学生信息\n"351. "\t2.按学号查学生信息\n"352. "\t3.按姓名查学生信息\n"353. "\t4.按年级查学生信息\n"354. "\t5.按成绩和性别查询\n"355. "\t6.返回上级菜单\n\n";356. lchoose:357. cout<<"输入您的选择:";358. choose=0;359. cin>>choose;360. switch(choose)361. {362. case 1 :searchframe(NULL,choose,stu,comparebynone,false); break; 363. case 2 :searchframe("学号",id,stu,comparebyid,false); break;364. case 3 :searchframe("姓名",name,stu,comparebyname,false); break;365. case 4 :searchframe("年级",grade,stu,comparebygrade,false); break;366. case 5 :searchframe("分数和性别",markandsex,stu,comparebymarkandsex,false); break;367. case 6 :return ;368. default: cout<<"输入有误\n";cin.clear();cin.ignore(CIN_LEN,'\n');goto lchoose;369. }370. }371. }372. ////////////////////////////////373. // 信息保存函数//374. //////////////////////////////375. int save(vector<CStudent*> &stu)376. {377. fstream file;378.379. file.open(FILENAME, fstream::out|fstream::binary);//二进制写打开文件380. if (!file)//判断打开是否成功381. return -1;382. //遍历全部对象383. for(vector<CStudent*>::size_type ix =0; ix!=stu.size(); ++ix)384. { //判断当前对象是否已修改385. if(stu[ix]->isaltered())386. { //修改了则写入文件387. file.seekp(ix*sizeof(data));388. file.write((char*) stu[ix]->getinfo(),sizeof(data));389. //写入是否成功390. if(file.fail())391. return -2;392. }393.394. }395. file.close();396. return 0;397. }398.399. ///////////////////////////////400. // 主函数//401. //////////////////////////////402.403. int main()404. {405. vector<CStudent *> stu ;406.407. system("clear");//清屏408. //读入数据文件409. if(initial(stu)<0)410. {411. cout<<"初始化失败,请检查数据文件\""<<FILENAME<<"\"是否完好\n"; 412. return -1;413. }414.415. int choose;416. //主菜单循环417. while(true)418. {419. cout << "\n *----------学生信息管理系统----------*\n\n" 420. " 1.录入信息\n"421. " 2.修改信息\n"422. " 3.检索学生\n"423. " 4.保存数据\n"424. " 5.保存退出\n"425. " 6.不保存退出\n\n"426. " *---------modify by davelv-----------*\n";427. lchoose:428. cout<<"输入您的选择:";429. choose=0;430. cin>>choose;431. switch(choose)432. {433. case 1 :insert(stu);break;434. case 2 :searchframe("学号",choose,stu,comparebyid,true);break;435. case 3 :fetch(stu);break;436. case 4 :if(save(stu) <0 )437. {438. cout<<"保存失败,请检查数据文件\""<<FILENAME<<"\"是否完好\n";439. };break;440. case 5 :if(save(stu) <0 )441. {442. cout<<"保存失败,请检查数据文件\""<<FILENAME<<"\"是否完好\n";443. }return 0;444. case 6 :return 0;445. default:cout<<"输入有误\n";cin.clear();cin.ignore(CIN_LEN,'\n');goto lchoose;446. }447. } 448. return 0; 449. }。

c++大作业学生信息管理系统

c++大作业学生信息管理系统

面向对象程序设计大作业------学生信息管理系统学院名称专业班级学生姓名 ____学号指导教师 ___完成时间:年月日学生信息管理系统1.编程目的模仿日常生活中所用的信息管理系统,自行设计一个简单的学生信息管理系统,要求能实现简单的增加,删除,查找学生信息的功能以及能显示学生的基本信息(包括姓名,学号,性别,家庭住址等),在窗口中显示运行结果。

2.系统简介程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。

应用程序正常运行后,要在屏幕上显示一个文字菜单;要求用户输入数据时,要给出清晰、明确的提示信息。

3.编程思路为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

4.总体设计为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

5.关键技术说明将学生信息定义为一个类,采用多文件保存不同的信息数据。

6.源代码#include<iostream>#include<fstream>#include<string>static int N;using namespace std;void add(){int num;string name,politic,address;char sex;ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);} while(1){cout<<" ★请输入学生信息:\n\n\n"<<endl;cout<<" ◆请输入学号:\n"<<endl;cin>>num;if(num==0)break;cout<<" \n ◆请输入姓名:\n"<<endl;cin>>name;cout<<" \n ◆请输入性别:\n"<<endl;cin>>sex;cout<<" \n ◆请输入政治面貌:\n"<<endl; cin>>politic;cout<<" \n ◆请输入家庭住址:\n"<<endl;cin>>address;cout<<"\n";outfile<<num<<" "<<name<<" "<<sex<<" "<<politic<<" "<<address<<endl;N++;}outfile.close();}void change(){int num[200];string name[200],politic[200],address[200];char sex[200];int n;string nam,poli,addr;char s;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i] ; }infile.close();ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<" !注意输入学号为0是停止输入!\n"<<endl;cout<<" ★请输入你要修改学生的学号:\n"<<endl;cin>>n;cout<<"\n";if(n==0)break;cout<<"\n ★请输入修改后的姓名:\n"<<endl;cin>>nam;cout<<"\n";cout<<" ★请输入修改后的性别:\n"<<endl;cin>>s;cout<<"\n";cout<<" ★请输入修改后的政治面貌:\n"<<endl;cin>>poli;cout<<"\n";cout<<" ★请输入修改后家庭住址:\n"<<endl;cin>>addr;cout<<"\n";for(int i=0;i<N;i++){if(num[i]==n){name[i]=nam;sex[i]=s;politic[i]=poli;addr ess[i]=addr;}outfile<<num[i]<<" "<<name[i]<<" "<<sex[i]<<""<<politic[i]<<" "<<address[i]<<endl; }outfile.close();cout<<"修改完毕!\n"<<endl;}}void search(){int num[200];string name[200],politic[200],address[200];char sex[200];int n;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i] ;}infile.close();while(1){cout<<"请输入按何种方式查找:"<<endl;cout<<"---------------------------------"<<endl;cout<<" | ";cout<<"1.按学号查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"2.按姓名查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"3.按性别查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"4.按政治面貌查找";cout<<" |"<<endl;cout<<" | ";cout<<"5.按家庭住址查找";cout<<" |"<<endl;cout<<" | ";cout<<"6.返回主菜单 "; cout<<" |"<<endl;cout<<" | ";cout<<"0.退出查找 "; cout<<" |"<<endl;cout<<"---------------------------------\n\n"<<endl;cin>>n;cout<<"\n";if(n==6)break;switch(n){case 1:while(1){cout<<"请输入你要查找的学号(输入0返回查找方式):"<<endl;cin>>num[199];if(num[199]==0)break;for(int i=0;i<N;i++){if(num[i]==num[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 2:while(1){cout<<"请输入你要查找的姓名(输入0返回查找方式):"<<endl;cin>>name[199];if(name[199]=="0")break;for(int i=0;i<N;i++){if(name[i]==name[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;};break;case 3:while(1){cout<<"请输入你要查找的性别(输入0返回查找方式):"<<endl;cin>>sex[199];if(sex[199]=='0')break;for(int i=0;i<N;i++){if(sex[i]==sex[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 4:while(1){cout<<"请输入你要查找的政治面貌(输入0返回查找方式):"<<endl;cin>>politic[199];if(politic[199]=="0")break;for(int i=0;i<N;i++){if(politic[i]==politic[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 5:while(1){cout<<"请输入你要查找的家庭住址(输入0返回查找方式):"<<endl;cin>>address[199];if(address[199]=="0")break;for(int i=0;i<N;i++){if(address[i]==address[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;default:cout<<"输入错误!\n"<<endl;break;}}}void del(){int num[200],n;string name[200],politic[200],address[200];char sex[200];ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<" 学号姓名性别政治面貌家庭住址"<<endl;for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i];cout<<" "<<num[i]<< " "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}infile.close();ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<"\n\n!注意输入学号为0是停止删除!\n"<<endl;cout<<"★请输入你要删除学生的学号:"<<endl;cin>>n;if(n==0)break;for(int i=0;i<N;i++){if(num[i]!=n)outfile<<num[i]<<" "<<name[i]<<""<<sex[i]<<" "<<politic[i]<<" "<<address[i]<<endl;}cout<<"删除完毕!"<<endl;N--;}outfile.close();}void show(){ int num;string name,politic,address;char sex;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<"学号姓名性别政治面貌家庭住址"<<endl;for(int i=0;i<N;i++){infile>>num>>name>>sex>>politic>>address;cout<<num<<" "<<name<<" "<<sex<<" "<<politic<<" "<<address<<endl<<endl;}}int main(){int n;while(1){cout<<"---------------------------------"<<endl;cout<<" | ";cout<<"1.增加学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"2.删除学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"3.修改学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"4.查找学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"5.显示学生记录~";cout<<" |"<<endl;cout<<" |";cout<<"(注意:输入学号为0时退出输入!)";cout<<"|"<<endl;cout<<"---------------------------------\n\n"<<endl;cout<<" ☆请选择:\n"<<endl;cin>>n;cout<<"\n";if(n==0)break;switch(n){case 1:add();break;case 2:del();break;case 3:change();break;case 4:search();break;case 5:show();break;default:break;}}}7.测试(主界面及各功能模块的运行图及说明)一:主界面二:增加学生记录:三:删除学生记录:四:修改学生记录:五:查找学生记录:六:显示学生记录8.系统评价及展望系统能实现简单的增加,删除,修改,查找学生信息,但是如果不按要求输入的时候可能会出现系统崩溃,得不到运行结果。

c语言大作业学生管理系统

c语言大作业学生管理系统

c语言大作业学生管理系统C语言大作业学生管理系统随着信息技术的不断发展,计算机在各行各业的应用越来越广泛。

其中,学生管理系统是教育领域中非常重要的一部分。

在本次大作业中,我们将设计和实现一个基于C语言的学生管理系统,以实现对学生在学籍、成绩等方面的全面管理。

一、确定主题和背景学生管理系统是一个普遍存在的应用领域,它可以帮助学校或教育机构有效地管理学生信息,包括学生基本信息、成绩、学籍等。

在过去,这些信息通常是通过人工方式进行管理和查询的,这种方式不仅效率低下,而且容易出错。

因此,设计和实现一个自动化的学生管理系统是非常必要的。

二、详细阐述主题我们的学生管理系统将采用C语言进行编写,使用结构体等数据结构来存储学生信息。

系统的主要功能将包括:学生信息的输入、修改、查询和打印,以及成绩的录入、修改、查询和统计等。

为了使系统更加健壮和易于维护,我们将采用模块化的编程方法,将不同的功能模块分开实现。

三、分析现有技术目前,已经存在许多成熟的学生管理系统软件,它们的功能和性能各不相同。

其中,一些开源的学生管理系统软件如D7 student和STUDENT2等,可以为我们提供一些参考和启示。

然而,这些软件也存在一些不足之处,例如界面不够友好、操作不够简便等。

因此,我们需要深入了解这些现有技术,并根据实际需求进行改进和创新。

四、设计与实现在设计与实现阶段,我们将按照以下步骤进行:1、需求分析:明确系统的功能需求和性能要求,为后续的编码和测试提供依据。

2、系统设计:根据需求分析结果,设计系统的整体架构和模块划分,并绘制相应的流程图和数据结构图。

3、编码实现:根据系统设计,使用C语言进行编码实现。

在编码过程中,我们将遵循良好的编码规范,确保代码的可读性、可维护性和可扩展性。

4、测试与调试:在完成编码后,我们将进行单元测试和集成测试,确保系统的各个模块能够正常工作并相互协同。

同时,我们还将进行调试,修复可能存在的错误和缺陷。

c大作业学生信息管理系统源代码

c大作业学生信息管理系统源代码

c大作业学生信息管理系统源代码IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】学生信息管理系统源代码:#include<>#include<>#include<>#include<>#include<>#include<>structstudent{charnum[30];intmaths;charname[30];intchinese;charclas[30];intenglish;inttotal;floataverage;student*next;};<<endl;abort();}(t,80);while(instuf>>num0>>name0>>clas0>>chinese0>>maths0>>english0){s=newstudent;strcpy(s->num,num0);strcpy(s->name,name0);strcpy(s->clas,clas0);s->chinese=chinese0;s->maths=maths0;s->english=english0;s->total=s->chinese+s->maths+s->english;s->average=float(s->total)/3;if(head==NULL)head=s;elsep->next=s;p=s;}p->next=NULL;();}<<endl;abort();}outstuf<<"学号姓名班级语文数学英语总分均分序号"<<endl;while(head){outstuf<<head->num<<""<<head->name<<'\t'<<head->clas<<'\t'<<""<<head->chinese<<'\t'<<head->maths<<'\t'<<head->english<<'\t'<<head->total<<'\t'<<setprecision(3)<<head->average<<'\t'<<""<<n<<endl;n=n+1;head=head->next;}();}voidmain(){student*head=NULL;intn;chars[30];cout<<"********************************************************************************"; cout<<"*★欢迎使用学生成绩管理系统★*";cout<<"*管理员:XXX*";cout<<"*请选择您想使用的功能:*";cout<<"*功能名请输入功能名请输入*";cout<<"*◆导入学生成绩文件1◆按学号小到大排序7*";cout<<"*◆插入学生成绩信息2◆按姓名首字母排序8*";cout<<"*◆删除学生成绩信息3◆按班级的类别排序9*";cout<<"*◆修改学生成绩信息4◆导出学生成绩文件10*";cout<<"*◆查询学生成绩信息5◆其它功能......*";cout<<"*◆按成绩高到低排序6◆退出管理系统0*";cout<<"********************************************************************************"; cout<<"您的输入是:";cin>>n;createlist(head);while(n>0){switch(n){case1:cout<<"导入的需管理的学生成绩信息表:"<<endl;showlist(head);break;case2:charu(head);cout<<"插入后的学生成绩信息表:"<<endl;showlist(head);break;case3:shanchu(head);cout<<"删除后的学生成绩信息表:"<<endl;showlist(head);break;case4:change(head);cout<<"修改后的学生成绩信息表:"<<endl;showlist(head);break;case5:cout<<"请选择查询学生成绩的方式:"<<endl;cout<<"方式请输入方式请输入"<<endl;cout<<"●查询个人成绩1●查询数学成绩4"<<endl;cout<<"●查询班级成绩2●查询英语成绩5"<<endl;cout<<"●查询语文成绩3●查询总分成绩6"<<endl;cout<<"您的输入是:";cin>>n;switch(n){case1:geren(head);break;case2:zongfen(head);chabanji(head);break;case3:yuwen(head);chayuwen(head);break;case4:shuxue(head);chashuxue(head);break;case5:yingyu(head);chayingyu(head);break;case6:zongfen(head);chazongfen(head);break;}break;case6:cout<<"请选择需排序的成绩的类型:"<<endl;cout<<"类型请输入类型请输入"<<endl;cout<<"●按语文成绩排序1●按英语成绩排序3"<<endl; cout<<"●按数学成绩排序2●按总分成绩排序4"<<endl; cout<<"您的输入是:";cin>>n;switch(n){case1:yuwen(head);cout<<"按【语文】成绩排序后的学生成绩信息表:"<<endl; showlist(head);break;case2:shuxue(head);cout<<"按【数学】成绩排序后的学生成绩信息表:"<<endl; showlist(head);break;case3:yingyu(head);cout<<"按【英语】成绩排序后的学生成绩信息表:"<<endl; showlist(head);break;case4:zongfen(head);cout<<"按【总分】成绩排序后的学生成绩信息表:"<<endl;showlist(head);break;}break;case7:xuehao(head);cout<<"按【学号】从小到大排序后的学生成绩信息表:"<<endl;showlist(head);break;case8:xingming(head);cout<<"按【姓名】首字母排序后的学生成绩信息表:"<<endl;showlist(head);break;case9:banji(head);cout<<"按【班级】的类别排序后的学生成绩信息表:"<<endl;showlist(head);break;case10:cout<<"请选择需导出的学生成绩数据文件的内容:"<<endl;cout<<"内容请输入内容请输入";cout<<"●按总分成绩排序的成绩表1●按姓名首字母排序的成绩表3";cout<<"●按学号大小排序的成绩表2●按班级分类别排序的成绩表4";cout<<"您的输入是:";cin>>n;switch(n){case1:zongfen(head);cout<<"按【总分】成绩排序的成绩表已导出"<<endl;cout<<"在生成的文件中"<<endl;cout<<"请注意查看!"<<endl;strcpy(s,"");show(head,s);break;case2:xuehao(head);cout<<"按【学号】大小排序的成绩表已导出"<<endl;cout<<"在生成的文件中"<<endl;cout<<"请注意查看!"<<endl;strcpy(s,"");show(head,s);break;case3:xingming(head);cout<<"按【姓名】首字母排序的成绩表已导出"<<endl;cout<<"在生成的文件中"<<endl;cout<<"请注意查看!"<<endl;strcpy(s,"");show(head,s);break;case4:banji(head);cout<<"按【班级】分类排序的成绩表已导出"<<endl;cout<<"在生成的文件中"<<endl;cout<<"请注意查看!"<<endl;strcpy(s,"");show(head,s);break;}break;}cout<<"继续操作请按回车键!"<<endl;cgets(s);cout<<endl<<endl<<endl;cout<<"********************************************************************************"; cout<<"*★欢迎使用学生成绩管理系统★*";cout<<"*管理员:XXX*";cout<<"*请选择您想使用的功能:*";cout<<"*功能名请输入功能名请输入*";cout<<"*◆导入学生成绩文件1◆按学号小到大排序7*";cout<<"*◆插入学生成绩信息2◆按姓名首字母排序8*";cout<<"*◆删除学生成绩信息3◆按班级的类别排序9*";cout<<"*◆修改学生成绩信息4◆导出学生成绩文件10*";cout<<"*◆查询学生成绩信息5◆其它功能......*";cout<<"*◆按成绩高到低排序6◆退出管理系统0*";cout<<"********************************************************************************"; cout<<"您的输入是:";cin>>n;}cout<<endl<<"您所使用的功能已完成,谢谢使用!"<<endl;cout<<"欢迎再次使用!"<<endl<<endl;}。

c++大作业学生信息管理系统

c++大作业学生信息管理系统

面向对象程序设计大作业------学生信息管理系统学院名称专业班级学生姓名 ____学号指导教师 ___完成时间:年月日学生信息管理系统1.编程目的模仿日常生活中所用的信息管理系统,自行设计一个简单的学生信息管理系统,要求能实现简单的增加,删除,查找学生信息的功能以及能显示学生的基本信息(包括姓名,学号,性别,家庭住址等),在窗口中显示运行结果。

2.系统简介程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。

应用程序正常运行后,要在屏幕上显示一个文字菜单;要求用户输入数据时,要给出清晰、明确的提示信息。

3.编程思路为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

4.总体设计为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

5.关键技术说明将学生信息定义为一个类,采用多文件保存不同的信息数据。

6.源代码#include<iostream>#include<fstream>#include<string>static int N;using namespace std;void add(){int num;string name,politic,address;char sex;ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);} while(1){cout<<" ★请输入学生信息:\n\n\n"<<endl;cout<<" ◆请输入学号:\n"<<endl;cin>>num;if(num==0)break;cout<<" \n ◆请输入姓名:\n"<<endl;cin>>name;cout<<" \n ◆请输入性别:\n"<<endl;cin>>sex;cout<<" \n ◆请输入政治面貌:\n"<<endl; cin>>politic;cout<<" \n ◆请输入家庭住址:\n"<<endl;cin>>address;cout<<"\n";outfile<<num<<" "<<name<<" "<<sex<<" "<<politic<<" "<<address<<endl;N++;}outfile.close();}void change(){int num[200];string name[200],politic[200],address[200];char sex[200];int n;string nam,poli,addr;char s;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i] ; }infile.close();ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<" !注意输入学号为0是停止输入!\n"<<endl;cout<<" ★请输入你要修改学生的学号:\n"<<endl;cin>>n;cout<<"\n";if(n==0)break;cout<<"\n ★请输入修改后的姓名:\n"<<endl;cin>>nam;cout<<"\n";cout<<" ★请输入修改后的性别:\n"<<endl;cin>>s;cout<<"\n";cout<<" ★请输入修改后的政治面貌:\n"<<endl;cin>>poli;cout<<"\n";cout<<" ★请输入修改后家庭住址:\n"<<endl;cin>>addr;cout<<"\n";for(int i=0;i<N;i++){if(num[i]==n){name[i]=nam;sex[i]=s;politic[i]=poli;addr ess[i]=addr;}outfile<<num[i]<<" "<<name[i]<<" "<<sex[i]<<""<<politic[i]<<" "<<address[i]<<endl; }outfile.close();cout<<"修改完毕!\n"<<endl;}}void search(){int num[200];string name[200],politic[200],address[200];char sex[200];int n;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i] ;}infile.close();while(1){cout<<"请输入按何种方式查找:"<<endl;cout<<"---------------------------------"<<endl;cout<<" | ";cout<<"1.按学号查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"2.按姓名查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"3.按性别查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"4.按政治面貌查找";cout<<" |"<<endl;cout<<" | ";cout<<"5.按家庭住址查找";cout<<" |"<<endl;cout<<" | ";cout<<"6.返回主菜单 "; cout<<" |"<<endl;cout<<" | ";cout<<"0.退出查找 "; cout<<" |"<<endl;cout<<"---------------------------------\n\n"<<endl;cin>>n;cout<<"\n";if(n==6)break;switch(n){case 1:while(1){cout<<"请输入你要查找的学号(输入0返回查找方式):"<<endl;cin>>num[199];if(num[199]==0)break;for(int i=0;i<N;i++){if(num[i]==num[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 2:while(1){cout<<"请输入你要查找的姓名(输入0返回查找方式):"<<endl;cin>>name[199];if(name[199]=="0")break;for(int i=0;i<N;i++){if(name[i]==name[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;};break;case 3:while(1){cout<<"请输入你要查找的性别(输入0返回查找方式):"<<endl;cin>>sex[199];if(sex[199]=='0')break;for(int i=0;i<N;i++){if(sex[i]==sex[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 4:while(1){cout<<"请输入你要查找的政治面貌(输入0返回查找方式):"<<endl;cin>>politic[199];if(politic[199]=="0")break;for(int i=0;i<N;i++){if(politic[i]==politic[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 5:while(1){cout<<"请输入你要查找的家庭住址(输入0返回查找方式):"<<endl;cin>>address[199];if(address[199]=="0")break;for(int i=0;i<N;i++){if(address[i]==address[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;default:cout<<"输入错误!\n"<<endl;break;}}}void del(){int num[200],n;string name[200],politic[200],address[200];char sex[200];ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<" 学号姓名性别政治面貌家庭住址"<<endl;for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i];cout<<" "<<num[i]<< " "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}infile.close();ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<"\n\n!注意输入学号为0是停止删除!\n"<<endl;cout<<"★请输入你要删除学生的学号:"<<endl;cin>>n;if(n==0)break;for(int i=0;i<N;i++){if(num[i]!=n)outfile<<num[i]<<" "<<name[i]<<""<<sex[i]<<" "<<politic[i]<<" "<<address[i]<<endl;}cout<<"删除完毕!"<<endl;N--;}outfile.close();}void show(){ int num;string name,politic,address;char sex;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<"学号姓名性别政治面貌家庭住址"<<endl;for(int i=0;i<N;i++){infile>>num>>name>>sex>>politic>>address;cout<<num<<" "<<name<<" "<<sex<<" "<<politic<<" "<<address<<endl<<endl;}}int main(){int n;while(1){cout<<"---------------------------------"<<endl;cout<<" | ";cout<<"1.增加学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"2.删除学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"3.修改学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"4.查找学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"5.显示学生记录~";cout<<" |"<<endl;cout<<" |";cout<<"(注意:输入学号为0时退出输入!)";cout<<"|"<<endl;cout<<"---------------------------------\n\n"<<endl;cout<<" ☆请选择:\n"<<endl;cin>>n;cout<<"\n";if(n==0)break;switch(n){case 1:add();break;case 2:del();break;case 3:change();break;case 4:search();break;case 5:show();break;default:break;}}}7.测试(主界面及各功能模块的运行图及说明)一:主界面二:增加学生记录:三:删除学生记录:四:修改学生记录:五:查找学生记录:六:显示学生记录8.系统评价及展望系统能实现简单的增加,删除,修改,查找学生信息,但是如果不按要求输入的时候可能会出现系统崩溃,得不到运行结果。

C语言大作业——学生通讯录管理系统

C语言大作业——学生通讯录管理系统

C语言大作业——学生通讯录管理系统#include#include//#define NULL 0#define LEN sizeof(struct message)struct message //定义结构体{char name[15];char number[15];char phone[15];char qq[13];char addr[25];struct message *next; //指向下一数据};int n;void creat() //建立电话簿{int num;char choice[5]={'2'};FILE *fp;struct message *head;struct message *p,*q;n = 0;p = q = (struct message *) malloc(LEN);fp=fopen("通讯录1.txt","wb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);head = 0;num = 1;while(num!=0){n = n+1;if(n==1) head = p;else q->next = p;q = p;p = (struct message *) malloc(LEN); //分配存储区while(choice[0]!='1' && choice[0]!='0') //判断是否继续{printf("\n1 继续输入\n 0 返回\n");printf("请选择操作:");scanf("%s",choice);}switch(choice[0]){case '1':{fp=fopen("通讯录1.txt","rb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);choice[0] = '2';} continue;case '0': num = 0;system("cls");}}q->next = 0;}void add() //添加通讯录{int num;char choice[5]={'2'};FILE *fp;struct message *head;struct message *p,*q;n = 0;p = q = (struct message *) malloc(LEN); //分配空间fp=fopen("通讯录1.txt","ab");system("cls");printf("\n请输入姓名:"); //输入内容scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);head = 0;num = 1;while(num!=0){n = n+1;if(n==1) head = p;else q->next = p;q = p;p = (struct message *) malloc(LEN); //分配空间while(choice[0]!='1' && choice[0]!='0') //判断是否继续{printf("\n1 继续输入\n 0 返回\n");printf("请选择操作:");scanf("%s",choice);}switch(choice[0]){case '1':{fp=fopen("通讯录1.txt","rb");system("cls");printf("\n请输入姓名:");scanf("%s",p->name);printf("\n请输入电话号码:");scanf("%s",p->phone);printf("\n请输入学号:");scanf("%s",p->number);printf("\n请输入QQ:");scanf("%s",p->qq);printf("\n请输入住址:");scanf("%s",p->addr);fwrite(p,LEN,1,fp);fclose(fp);choice[0] = '2';} continue;case '0': num = 0;system("cls");}}q->next = 0;}void findname(struct message * fphead) //按姓名查找{ struct message *p;int a = 0;char findname[20];system("cls");printf("请输入要查找的姓名:\n");scanf("%s",findname);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->name,findname)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void findphone(struct message * fphead) //按电话查找{struct message *p;int a = 0;char findphone[15];system("cls");printf("请输入要查找的电话:\n");scanf("%s",findphone);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->phone,findphone)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void findnumber(struct message * fphead) //按学号查找{struct message *p;int a = 0;char findnumber[15];system("cls");printf("请键入要查找的学生学号:\n");scanf("%s",findnumber);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->number,findnumber)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);a = 1;}}if(a != 1)printf("无此通讯录!\n");}void modify(struct message * fphead) //修改记录{FILE *fp;struct message *p,*q;int a = 0;char findname[15];system("cls");printf("请键入要查找的姓名:\n");scanf("%s",findname);for(p=fphead->next;p!=NULL;p=p->next){if(strcmp(p->name,findname)==0){printf("姓名电话号码学号QQ 住址\n");printf("%-15s %-15s %-15s %-13s %-25s\n\n\n\n",p->name,p->phone,p->number,p->qq,p->addr);printf("\n请键入新姓名:");scanf("%s",p->name);printf("\n请键入新电话号码:");scanf("%s",p->phone);printf("\n请键入新学号:");scanf("%s",p->number);printf("\n请键入新QQ:");scanf("%s",p->qq);printf("\n请键入新住址:");scanf("%s",p->addr);fp = fopen("通讯录2.txt","wb");q = fphead->next; //P为链表头指针while(q!=0){fwrite(q,LEN,1,fp);if(q->next!=0)q = q->next;elseq = 0;}fclose(fp);unlink("通讯录1.txt"); //用新文件覆盖原文件rename("通讯录2.txt", "通讯录1.txt");printf("修改成功!");a = 1;}}if(a != 1)printf("无此通讯录!\n");}void del(struct message * fphead) //删除记录{FILE *fp,*fq;struct message *p,*q,*r;char sname[15];p = q = (struct message *) malloc(LEN);p = fphead;system("cls");fp = fopen("通讯录1.txt","rb");fq = fopen("通讯录2.txt","wb");printf("请输入欲删除记录的姓名:");scanf("%s",sname);while(strcmp(p->name,sname)!=0 && p->next!=0) //查找节点并删除该节点q = p;p = p->next;}if(strcmp(p->name,sname)==0){if(p==fphead)fphead = p->next;else{q->next = p->next;}r = fphead->next; //r为链表头指针while(r!=0){fwrite(r,LEN,1,fq);if(r->next!=0)r = r->next;elser = 0;}printf("删除成功!");}else{printf("无此通讯录!");}fclose(fp);fclose(fq);unlink("通讯录1.txt"); //用新文件覆盖原文件rename("通讯录2.txt", "通讯录1.txt");}struct message * open(void) //打开文件,载入链表{FILE *fp;struct message *p=NULL,*q=NULL,*temp=NULL,*fphead=NULL;fp=fopen("通讯录1.txt","rb");fphead=(struct message *)malloc(LEN); //分配空间temp = q = fphead;while(! feof(fp)) //循环读取,载入链表p=(struct message *)malloc(LEN);temp=q;q->next=p;q=p;fread(p,LEN,1,fp);}temp->next=NULL;fclose(fp);return(fphead); //返回链表头指针}void print() //显示通讯录{struct message *p;FILE *fp;system("cls");if((fp=fopen("通讯录1.txt","rb"))!=NULL){printf("姓名电话号码学号QQ 住址\n");p = (struct message *)malloc(LEN); //分配空间while(!feof(fp)){fread(p,LEN,1,fp);printf("%-15s %-15s %-15s %-13s %-25s\n",p->name,p->phone,p->number,p->qq,p->addr);}fclose(fp);else{printf("未建立通讯录!");}}void main() //主函数{FILE * fp;struct message * fphead;int begin = 1,f;char choice[5];while(begin == 1){printf("\t\t>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>\n");printf("\t\t\t\t欢迎使用学生通讯录\n");printf("\t\t<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<\n\n\n");printf("\t\t\t*主窗口菜单*\n\n");printf("\t\t\t1:显示通讯录中所有记录;\n\n");printf("\t\t\t2:建立新通讯录;\n\n");printf("\t\t\t3:添加新记录;\n\n");printf("\t\t\t4:查询通讯录中的记录;\n\n");printf("\t\t\t5:修改通讯录中的记录;\n\n");printf("\t\t\t6:删除通讯录中的记录;\n\n");printf("\t\t\t0:退出通讯录\n\n");printf("请选择操作:");scanf("%s",choice);switch(choice[0])case '1':{print();printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '2':{creat();} continue;case '3':{add();} continue;case '4':{if((fp = fopen("通讯录1.txt","rb")) != NULL){fclose(fp);system("cls");printf("1按姓名查询;\n2按电话查询;\n3按学号查询;\n"); printf("请输入查询方式:");scanf("%d",&f);if(f==1){fphead = open();findname(fphead);}if(f==2){fphead = open();findphone(fphead);}else if(f==3){fphead = open();findnumber(fphead);}}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '5':{if((fp = fopen("通讯录1.txt","rb")) != NULL) {fclose(fp);fphead = open();modify(fphead);}else{printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");}continue;case '6':{if((fp = fopen("通讯录1.txt","rb")) != NULL) {fclose(fp);fphead = open();del(fphead);}else{system("cls");printf("未建立通讯录!");}printf("按任意键返回主菜单!\n");getch();system("cls");} continue;case '0': exit(0);default:{system("cls");printf("输入错误,按任意键返回主菜单!\n"); getch();}}}system("pause"); }。

C语言大作业 基于数组的学生信息管理系统

C语言大作业 基于数组的学生信息管理系统

gets(p->major); printf("请输入学生的班级号(1-2),按 Enter 键结束:\n"); scanf("%d",&p->classNo); getchar(); printf("请输入学生的成绩(0-100) :\n"); for(j=0;j<3;j++) { printf("请输入第%d 门成绩:\n",j); scanf("%d",&p->score[j]); getchar(); } } void Output(STU *p) { printf("学号\t 姓名\t 专业\t\t 班级 \t 成绩 0\t 成绩 1\t 成绩 2\n"); pri(p);
} case 2: { getchar(); Save(stu); printf("文件保存成功!\n"); Ask(); break; } case 3: { printf("请输入想提取第几个学生的信息:\n"); scanf("%d",&n); if (n>=0 && n<N) Output(stu+n-1); else printf("没有这名学生!请重新输入!"); Ask(); break; }
//主函数开始 void main()
{ int choose;//功能编号 int i,j,m,n;//控制循环的数字以及控制函数的数字 char filename[10];//文件名称 STU stu[N];//定义长度为 N 的 STU 型的数组 STU *p;//定义 STU 型的指针 p=stu;//让其指向 stu 的数组,方便以后用指针 p 对数组 stu 直接操作 while(1) { printf("\t\t*****欢迎使用学生信息管理系统*****\n"); printf("\t\t**********************************\n"); printf("\t1-输入学生信息;\n"); printf("\t2-学生信息存盘;\n"); printf("\t3-将某个学生信息表格化输出;\n"); printf("\t4-从文件中随机读取第 n 个学生的信息;\n"); printf("\t5-求所有学生某门课程的最高分和分数最高的学生的姓名;\n"); printf("\t6-对所有的学生,按总平均成绩由低到高进行简单选择排序;\n"); printf("\t7-对某个班级的学生,按总平均成绩由高到低进行起泡排序;\n"); printf("\t8-对某个专业的学生,按某门课程成绩由低到高进行直接插入排序;\n"); printf("\t9-班级和成绩的综合查找;\n"); printf("\t10-读取文件中的全部信息;\n"); printf("\t 其他-退出。\n"); printf("请输入您想选择的功能编号:"); scanf("%d",&choose); switch(choose) { case 1: { for(i=0;i<N;i++) { Input(stu+i); } Ask(); break;
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

面向对象程序设计大作业------学生信息管理系统学院名称专业班级学生姓名 ____学号指导教师 ___完成时间:年月日学生信息管理系统1.编程目的模仿日常生活中所用的信息管理系统,自行设计一个简单的学生信息管理系统,要求能实现简单的增加,删除,查找学生信息的功能以及能显示学生的基本信息(包括姓名,学号,性别,家庭住址等),在窗口中显示运行结果。

2.系统简介程序正常运行后,屏幕上显示一个文字菜单(根据序号选定相应的操作项目),当用户选定操作项目所对应的序号时,根据应用程序的提示信息,从键盘上输入相应的数据。

应用程序正常运行后,要在屏幕上显示一个文字菜单;要求用户输入数据时,要给出清晰、明确的提示信息。

3.编程思路为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

4.总体设计为各项操作功能设计一个菜单,应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

5.关键技术说明将学生信息定义为一个类,采用多文件保存不同的信息数据。

6.源代码#include<iostream>#include<fstream>#include<string>static int N;using namespace std;void add(){int num;string name,politic,address;char sex;ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);} while(1){cout<<" ★请输入学生信息:\n\n\n"<<endl;cout<<" ◆请输入学号:\n"<<endl;cin>>num;if(num==0)break;cout<<" \n ◆请输入姓名:\n"<<endl;cin>>name;cout<<" \n ◆请输入性别:\n"<<endl;cin>>sex;cout<<" \n ◆请输入政治面貌:\n"<<endl; cin>>politic;cout<<" \n ◆请输入家庭住址:\n"<<endl;cin>>address;cout<<"\n";outfile<<num<<" "<<name<<" "<<sex<<" "<<politic<<" "<<address<<endl;N++;}outfile.close();}void change(){int num[200];string name[200],politic[200],address[200];char sex[200];int n;string nam,poli,addr;char s;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i] ; }infile.close();ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<" !注意输入学号为0是停止输入!\n"<<endl;cout<<" ★请输入你要修改学生的学号:\n"<<endl;cin>>n;cout<<"\n";if(n==0)break;cout<<"\n ★请输入修改后的姓名:\n"<<endl;cin>>nam;cout<<"\n";cout<<" ★请输入修改后的性别:\n"<<endl;cin>>s;cout<<"\n";cout<<" ★请输入修改后的政治面貌:\n"<<endl;cin>>poli;cout<<"\n";cout<<" ★请输入修改后家庭住址:\n"<<endl;cin>>addr;cout<<"\n";for(int i=0;i<N;i++){if(num[i]==n){name[i]=nam;sex[i]=s;politic[i]=poli;addr ess[i]=addr;}outfile<<num[i]<<" "<<name[i]<<" "<<sex[i]<<""<<politic[i]<<" "<<address[i]<<endl; }outfile.close();cout<<"修改完毕!\n"<<endl;}}void search(){int num[200];string name[200],politic[200],address[200];char sex[200];int n;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i] ;}infile.close();while(1){cout<<"请输入按何种方式查找:"<<endl;cout<<"---------------------------------"<<endl;cout<<" | ";cout<<"1.按学号查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"2.按姓名查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"3.按性别查找 "; cout<<" |"<<endl;cout<<" | ";cout<<"4.按政治面貌查找";cout<<" |"<<endl;cout<<" | ";cout<<"5.按家庭住址查找";cout<<" |"<<endl;cout<<" | ";cout<<"6.返回主菜单 "; cout<<" |"<<endl;cout<<" | ";cout<<"0.退出查找 "; cout<<" |"<<endl;cout<<"---------------------------------\n\n"<<endl;cin>>n;cout<<"\n";if(n==6)break;switch(n){case 1:while(1){cout<<"请输入你要查找的学号(输入0返回查找方式):"<<endl;cin>>num[199];if(num[199]==0)break;for(int i=0;i<N;i++){if(num[i]==num[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 2:while(1){cout<<"请输入你要查找的姓名(输入0返回查找方式):"<<endl;cin>>name[199];if(name[199]=="0")break;for(int i=0;i<N;i++){if(name[i]==name[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;};break;case 3:while(1){cout<<"请输入你要查找的性别(输入0返回查找方式):"<<endl;cin>>sex[199];if(sex[199]=='0')break;for(int i=0;i<N;i++){if(sex[i]==sex[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 4:while(1){cout<<"请输入你要查找的政治面貌(输入0返回查找方式):"<<endl;cin>>politic[199];if(politic[199]=="0")break;for(int i=0;i<N;i++){if(politic[i]==politic[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;case 5:while(1){cout<<"请输入你要查找的家庭住址(输入0返回查找方式):"<<endl;cin>>address[199];if(address[199]=="0")break;for(int i=0;i<N;i++){if(address[i]==address[199]){cout<<"查找结果为:"<<endl;cout<<"学号姓名性别政治面貌家庭住址"<<endl;cout<<num[i]<<" "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}}cout<<"查找完毕!\n"<<endl;}break;default:cout<<"输入错误!\n"<<endl;break;}}}void del(){int num[200],n;string name[200],politic[200],address[200];char sex[200];ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<" 学号姓名性别政治面貌家庭住址"<<endl;for(int i=0;i<N;i++){infile>>num[i]>>name[i]>>sex[i]>>politic[i]>>address[i];cout<<" "<<num[i]<< " "<<name[i]<<" "<<sex[i]<<" "<<politic[i]<<" "<<""<<address[i]<<endl<<endl;}infile.close();ofstream outfile("student1.txt",ios::out);if(!outfile){cerr<<"open file error!";exit(1);}while(1){cout<<"\n\n!注意输入学号为0是停止删除!\n"<<endl;cout<<"★请输入你要删除学生的学号:"<<endl;cin>>n;if(n==0)break;for(int i=0;i<N;i++){if(num[i]!=n)outfile<<num[i]<<" "<<name[i]<<""<<sex[i]<<" "<<politic[i]<<" "<<address[i]<<endl;}cout<<"删除完毕!"<<endl;N--;}outfile.close();}void show(){ int num;string name,politic,address;char sex;ifstream infile("student1.txt",ios::in);if(!infile){cerr<<"open file error!";exit(1);}cout<<"学号姓名性别政治面貌家庭住址"<<endl;for(int i=0;i<N;i++){infile>>num>>name>>sex>>politic>>address;cout<<num<<" "<<name<<" "<<sex<<" "<<politic<<" "<<address<<endl<<endl;}}int main(){int n;while(1){cout<<"---------------------------------"<<endl;cout<<" | ";cout<<"1.增加学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"2.删除学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"3.修改学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"4.查找学生记录~";cout<<" |"<<endl;cout<<" | ";cout<<"5.显示学生记录~";cout<<" |"<<endl;cout<<" |";cout<<"(注意:输入学号为0时退出输入!)";cout<<"|"<<endl;cout<<"---------------------------------\n\n"<<endl;cout<<" ☆请选择:\n"<<endl;cin>>n;cout<<"\n";if(n==0)break;switch(n){case 1:add();break;case 2:del();break;case 3:change();break;case 4:search();break;case 5:show();break;default:break;}}}7.测试(主界面及各功能模块的运行图及说明)一:主界面二:增加学生记录:三:删除学生记录:四:修改学生记录:五:查找学生记录:六:显示学生记录8.系统评价及展望系统能实现简单的增加,删除,修改,查找学生信息,但是如果不按要求输入的时候可能会出现系统崩溃,得不到运行结果。

相关文档
最新文档