1 平台说明
1.1 使用平台
Microsoft Visual Studio 2022
1.1.1 简介
Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。
Visual Studio是最流行的Windows平台应用程序的集成开发环境。最新版本为 Visual Studio 2022版本,基于.NET Framework 4.8 。
2 学籍信息管理系统
2.1 要求
学籍信息:学号、姓名、性别、年龄、电话、专业等(学号不重复)
学籍信息管理功能:
(1)输入功能:学生信息录入(学生信息用文件保存)
(2)浏览功能:完成对全部学生信息的显示。
(3)查找功能:
①完成按学生的学号查询学生的相关信息,并显示。
②完成按学生的电话号码查询学生的相关信息,并显示。
③完成按学生的姓名查询学生的相关信息,并显示,允许重名。
(4)删除功能:通过输入学生的姓名完成对该名学生的信息进行删除。
(5)添加功能:完成添加新学生的信息的任务。
(6)修改功能:通过输入学生的姓名完成对该名学生的信息进行修改。
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student {
public:
friend void Input(Student stu[]);/*输入*/
friend void Statistic(Student stu[]);/*浏览*/
friend void Lookup(Student stu[]);/*查询*/
friend void Modify(Student stu[]);/*修改*/
friend void Delete(Student stu[]);/*删除*/
friend void Write(Student stu[], int n);
friend int Read(Student stu[]);
private:
char num;//学号
char name[30];//姓名
int age;//年龄
char sex[5];//性别
char p[30];//电话号码
char major[30];//专业
}stu[100];
void Write(Student stu[], int n) {
fstream myFile;
myFile.open("information.txt", ios::out | ios::binary);
if (!myFile) {
cout << "information.txt can't open!" << endl;
abort();
}
int count = n;
myFile << count << endl << endl;
for (int i = 0; i < count; i++) {
myFile << stu[i].num << "\t"
<< stu[i].name << "\t"
<< stu[i].age<< "\t"
<< stu[i].sex << "\t"
<< stu[i].p << "\t"
<< stu[i].major << endl;
}
myFile.close();
}
/*<< stu[i].num << "\t"
<< stu[i].name << "\t"
<< stu[i].age<< "\t"
<< stu[i].sex << "\t"
<< stu[i].p << "\t"
<< stu[i].major << endl;*/
int Read(Student stu[]) {
fstream myFile;
myFile.open("information.txt", ios::in | ios::binary);
if (!myFile) {
cout << "information.txt can't open!" << endl;
abort();
}
int count;
myFile.seekg(0);
myFile >> count;
for (int i = 0; i <= count; i++) {
myFile >> stu[i].num
>> stu[i].name
>> stu[i].age
>> stu[i].sex
>> stu[i].p
>> stu[i].major;
}
myFile.close();
return count;
}
void Input(Student stu[]) {
system("cls");
int i = 0;
int flag;
char sign = '0';
cout << endl << "======>> 请输入学生信息 <<======" << endl;
while (sign != 'n' && sign != 'N') {
loop:
cout << "学号:";
cin >> stu[i].num;
int c = 0;
while (c < i) {
c++;
if (stu[i].num == stu[i - c].num) {
cout << "您输入的学号已存在!请重新输入。" << endl;
goto loop;
}
}
cout << "姓名:";
cin >> stu[i].name;
cout << "年龄:";
cin >> stu[i].age;
cout << "性别:";
cin >> stu[i].sex;
cout << "电话号码:";
cin >> stu[i].p;
cout << "专业:";
cin >> stu[i].major;
cout << "======>> 提示:是否继续写入学生成绩 ?(y/n)";
cin >> sign;
i++;
}
Write(stu, i);
}
void Statistic(Student stu[]) {
system("cls");
int n = Read(stu);
cout << endl << "======>> 输出学生统计数据 <<======\n" << endl;
cout << "---------------------------------------" << endl;
cout << "学号" << "\t" << "姓名" << "\t" << "性别" << "\t" << "年龄" << "\t"<<"电话号码" << "\t"<<"专业" << "\t" << endl;
cout << "---------------------------------------" << endl;
for (int i = 0; i < n; i++)
cout << stu[i].num << "\t" << stu[i].name << "\t" << stu[i].sex << "\t" << stu[i].age << "\t" << stu[i].p << "\t" << stu[i].major << "\t" << endl;
cout << "---------------------------------------" << endl;
system("pause");
}
void Lookup(Student stu[]) {
system("cls");
int n = Read(stu);
int s;
int i = 0;
cout << endl << "======>> 查找学生成绩 <<======" << endl;
cout << "请输入要查找学生的学号:";
cin >> s;
while ((stu[i].num - s) != 0 && i < n)i++;
if (i == n) {
cout << "======>> 对不起,无法找到该学生...... <<======" << endl;
}
else {
cout << "----------------------------" << endl;
cout << "学号:" << stu[i].num << endl;
cout << "姓名:" << stu[i].name << endl;
cout << "年龄:" << stu[i]. age<< endl;
cout << "性别:" << stu[i].sex<< endl;
cout << "电话号码:" << stu[i].p<< endl;
cout << "专业:" << stu[i].major<< endl;
}
}
void Modify(Student stu[]) {
system("cls");
int n = Read(stu);
int s;
int i = 0;
cout << endl << "======>> 修改学生信息 <<======" << endl;
cout << "请输入要修改成绩学生的学号:";
cin >> s;
while ((stu[i].num - s) != 0 && i < n)i++;
if (i == n) {
cout << "======>> 对不起,无法找到该学生...... <<======" << endl;
}
else {
cout << "------------------------------------------------------------------------------------" << endl;
cout << "学号" << "\t" << "姓名" << "\t"
<< "年龄" << "\t" << "性别" << "\t" << "电话号码" << "\t"
<< "专业" << endl;
cout << "------------------------------------------------------------------------------------" << endl;
cout << stu[i].num << "\t" << stu[i].name << "\t"
<< stu[i].age << "\t" << stu[i].sex << "\t" << stu[i].p << "\t"
<< stu[i].major << endl;
cout << endl << "请重新输入该学生信息: " << endl;
cout << "学号:";
cin >> stu[i].num;
cout << "姓名:";
cin >> stu[i].name;
cout << "年龄:";
cin >> stu[i].age;
cout << "性别:";
cin >> stu[i].sex;
cout << "电话号码:";
cin >> stu[i].p;
cout << "专业:";
cin >> stu[i].major;
char c;
cout << "======>> 是否保存数据 ?(y/n)";
cin >> c;
if (c != 'n' && c != 'N')
Write(stu, n);
}
}
void Delete(Student stu[]) {
system("cls");
int n = Read(stu);
int s;
int i = 0, j;
cout << endl << "======>> 删除学生信息 <<======" << endl;
cout << "请输入要删除的学生的学号:";
cin >> s;
while ((stu[i].num - s) != 0 && i < n)i++;
if (i == n) {
cout << "======>> 对不起,无法找到该学生...... <<======" << endl;
}
else {
for (j = i; j < n - 1; j++) {
stu[j].num = stu[j + 1].num;
strcpy(stu[j].name, stu[j + 1].name);
strcpy(stu[j].sex, stu[j + 1].sex);
stu[j].age = stu[j + 1].age;
strcpy(stu[j].p, stu[j + 1].p);
strcpy(stu[j].major, stu[j + 1].major);
}
cout << "======>> 提示:已成功删除!" << endl;
}
Write(stu, n - 1);
}
int menu()
{
char c;
cout << "+---------------------------+\n";
cout << "| 欢迎使用学生学籍信息管理系统 |\n";
cout << "+---------------------------+\n";
cout << "提示:为保证您的操作得到保存,请按正常顺序退出系统^_^\n";
do {
system("cls");
cout << "********************************************************************************\n";
cout << "〓〓〓〓〓〓〓〓〓〓 ☆ 学 生 学 籍 管 理 系 统 ☆ 〓〓〓〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓★★★★★ ★★★★★★★ ★★★★★〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓〓〓★ ☆ 1.录入学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓〓〓★ ☆ 2.浏览学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓〓〓★ ☆ 3.查询学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓〓〓★ ☆ 4.删除学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓〓〓★ ☆ 5.修改学生信息 ☆ ★〓〓〓〓〓〓〓〓〓\n";
cout << "〓〓〓〓〓〓〓〓〓★ ☆ 0.安全退出系统 ☆ ★〓〓〓〓〓〓〓〓〓\n";
cout << "\n请选择:";//交互界面
cout << "请选择您的操作 (0-5):" << endl;
c = getchar();
} while (c < '0' || c > '5');
return (c - '0');
}
int main() {
for (;;) {
switch (menu()) {
case 1:/*输入*/
Input(stu);
break;
case 2: /* 浏览*/
Statistic(stu);
break;
case 3:
Lookup(stu); /*查询*/
system("pause");
break;
case 4:
Delete(stu); /*删除*/
system("pause");
break;
case 5:
Modify(stu); /* 修改*/
system("pause");
break;
case 0:
cout << endl << "================感谢您使用学籍信息管理系统==============\n" << endl;
exit(0);
}
}
return 0;
}
3 成绩管理系统
3.1 要求
成绩信息:学号,姓名,专业,语文,数学,英语成绩.
成绩信息管理提供以下功能:
(1)录入每个学生的学号、姓名和各科考试成绩。
(2)计算每门课程的总分和平均分
(3)计算每个学生的总分和平均分。
(4)按每个学生的总分由高到低排出名次表。
(5)按学号由小到大排出成绩表。
(6)按学号查询学生排名及其考试成绩。
(7)按姓名查询学生排名及其考试成绩。
(8)查询语文最高分的学生信息。
(9)查询总成绩最高的3名学生的学籍信息和总分。
#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
#define _CRT_SECURE_NO_DEPRECATE
#endif
#include <iostream>
#include <fstream>
#include <string>
using namespace std;
class Student {
public:
friend void Input(Student stu[]);
friend void Statistic(Student stu[]);
friend void Lookup(Student stu[]);
friend void Modify(Student stu[]);
friend void Delete(Student stu[]);
friend void Output(Student stu[]);
friend void Insert(Student stu[]);
friend void Sort(Student stu[]);
friend void Write(Student stu[], int n);
friend int Read(Student stu[]);
private:
int num;
char name[8];
char class_0[20];
float yuwen;
float shuxue;
float yingyu;
float average;
int order;
}stu[100];
void Write(Student stu[], int n) {
fstream myFile;
myFile.open("score.txt", ios::out | ios::binary);
if (!myFile) {
cout << "score.txt can't open!" << endl;
abort();
}
int count = n;
myFile << count << endl << endl;
for (int i = 0; i < count; i++) {
myFile << stu[i].class_0 << "\t"
<< stu[i].num << "\t"
<< stu[i].name << "\t"
<< stu[i].yuwen << "\t"
<< stu[i].shuxue << "\t"
<< stu[i].yingyu << "\t"
<< stu[i].average << endl;
}
myFile.close();
}
int Read(Student stu[]) {
fstream myFile;
myFile.open("score.txt", ios::in | ios::binary);
if (!myFile) {
cout << "score.txt can't open!" << endl;
abort();
}
int count;
myFile.seekg(0);
myFile >> count;
for (int i = 0; i <= count; i++) {
myFile >> stu[i].class_0 >> stu[i].num >> stu[i].name
>> stu[i].yuwen >> stu[i].shuxue >> stu[i].yingyu
>> stu[i].average;
}
myFile.close();
return count;
}
void Input(Student stu[]) {
system("cls");
int i = 0;
int flag;
char sign = '0';
cout << endl << "======>> 请输入学生成绩 <<======" << endl;
while (sign != 'n' && sign != 'N') {
cout << "班级:";
cin >> stu[i].class_0;
loop:
cout << "学号:";
cin >> stu[i].num;
int c = 0;
while (c < i) {
c++;
if (stu[i].num == stu[i - c].num) {
cout << "您输入的学号已存在!请重新输入。" << endl;
goto loop;
}
}
cout << "姓名:";
cin >> stu[i].name;
do {
flag = 0;
cout << "语文成绩:";
cin >> stu[i].yuwen;
if (stu[i].yuwen > 100 || stu[i].yuwen < 1) {
cout << " 对不起,请输入1-100之间的数字!!\n";
}
else {
flag = 1;
}
} while (flag == 0);
do {
flag = 0;
cout << "数学成绩:";
cin >> stu[i].shuxue;
if (stu[i].shuxue > 100 || stu[i].shuxue < 1) {
cout << " 对不起,请输入1-100之间的数字!!\n";
}
else {
flag = 1;
}
} while (flag == 0);
do {
flag = 0;
cout << "英语成绩:";
cin >> stu[i].yingyu;
if (stu[i].yingyu > 100 || stu[i].yingyu < 1) {
cout << " 对不起,请输入1-100之间的数字!!\n";
}
else {
flag = 1;
}
} while (flag == 0);
stu[i].average = (stu[i].yuwen + stu[i].shuxue + stu[i].yingyu )/ 3;
cout << " 平均分为:" << stu[i].average << endl;
cout << "======>> 提示:是否继续写入学生成绩 ?(y/n)";
cin >> sign;
i++;
}
Write(stu, i);
}
void Statistic(Student stu[]) {
system("cls");
int n = Read(stu);
cout << endl << "======>> 输出学生统计数据 <<======\n" << endl;
cout << "---------------------------------------" << endl;
cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t" << "平均分" << endl;
cout << "---------------------------------------" << endl;
for (int i = 0; i < n; i++)
cout << stu[i].class_0 << "\t" << stu[i].num << "\t" << stu[i].name << "\t" << stu[i].average << endl;
cout << "---------------------------------------" << endl;
system("pause");
}
void Lookup(Student stu[]) {
system("cls");
int n = Read(stu);
int s;
int i = 0;
cout << endl << "======>> 查找学生成绩 <<======" << endl;
cout << "请输入要查找学生的学号:";
cin >> s;
while ((stu[i].num - s) != 0 && i < n)i++;
if (i == n) {
cout << "======>> 对不起,无法找到该学生...... <<======" << endl;
}
else {
cout << "----------------------------" << endl;
cout << "班级:" << stu[i].class_0 << endl;
cout << "学号:" << stu[i].num << endl;
cout << "姓名:" << stu[i].name << endl;
cout << "语文:" << stu[i].yuwen << endl;
cout << "数学:" << stu[i].shuxue << endl;
cout << "英语:" << stu[i].yingyu << endl;
cout << "平均分:" << stu[i].average << endl;
}
}
void Modify(Student stu[]) {
system("cls");
int n = Read(stu);
int s;
int i = 0;
cout << endl << "======>> 修改学生成绩 <<======" << endl;
cout << "请输入要修改成绩学生的学号:";
cin >> s;
while ((stu[i].num - s) != 0 && i < n)i++;
if (i == n) {
cout << "======>> 对不起,无法找到该学生...... <<======" << endl;
}
else {
cout << "------------------------------------------------------------------------------------" << endl;
cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t"
<< "语文" << "\t" << "数学" << "\t" << "英语" << "\t"
<< "平均分" << endl;
cout << "------------------------------------------------------------------------------------" << endl;
cout << stu[i].class_0 << "\t" << stu[i].num << "\t" << stu[i].name << "\t"
<< stu[i].yuwen << "\t" << stu[i].shuxue << "\t" << stu[i].yingyu << "\t"
<< stu[i].average << endl;
cout << endl << "请重新输入该学生成绩: " << endl;
cin >> stu[i].yuwen;
cout << "语文:";
cin >> stu[i].shuxue;
cout << "数学:";
cin >> stu[i].yingyu;
cout << "英语:";
stu[i].average = (stu[i].yuwen + stu[i].shuxue + stu[i].yingyu
)/ 3;
cout << "平均分:" << stu[i].average << endl;
char c;
cout << "======>> 是否保存数据 ?(y/n)";
cin >> c;
if (c != 'n' && c != 'N')
Write(stu, n);
}
}
void Delete(Student stu[]) {
system("cls");
int n = Read(stu);
int s;
int i = 0, j;
cout << endl << "======>> 删除学生成绩 <<======" << endl;
cout << "请输入要删除的学生的学号:";
cin >> s;
while ((stu[i].num - s) != 0 && i < n)i++;
if (i == n) {
cout << "======>> 对不起,无法找到该学生...... <<======" << endl;
}
else {
for (j = i; j < n - 1; j++) {
strcpy(stu[j].class_0, stu[j + 1].class_0);
stu[j].num = stu[j + 1].num;
strcpy(stu[j].name, stu[j + 1].name);
stu[j].yuwen = stu[j + 1].yuwen;
stu[j].shuxue = stu[j + 1].shuxue;
stu[j].yingyu = stu[j + 1].yingyu;
stu[j].average = stu[j + 1].average;
}
cout << "======>> 提示:已成功删除!" << endl;
}
Write(stu, n - 1);
}
void Insert(Student stu[]) {
system("cls");
int n = Read(stu);
char s = '0';
cout << endl << "=======>> 增加学生成绩 <<========" << endl;
while (s != 'n' && s != 'N') {
cout << "班级:";
cin >> stu[n].class_0;
cout << "学号:";
cin >> stu[n].num;
cout << "姓名:";
cin >> stu[n].name;
cout << "语文成绩:";
cin >> stu[n].yuwen;
cout << "数学成绩:";
cin >> stu[n].shuxue;
cout << "英语成绩:";
cin >> stu[n].yingyu;
stu[n].average = (stu[n].yuwen + stu[n].shuxue + stu[n].yingyu
) / 3;
cout << "平均分:" << stu[n].average << endl;
n++;
cout << "======>> 是否继续插入(y/n)";
cin >> s;
}
Write(stu, n);
}
void Sort(Student stu[]) {
system("cls");
int i, j, k;
float s;
char t[20];
cout << endl << "======>> 降序排列 <<======" << endl;
int n = Read(stu);
for (i = 0; i < n - 1; i++) {
for (j = 0; j < n - 1; j++) {
if (stu[j].average < stu[j + 1].average) {
//交换课程
strcpy(t, stu[j + 1].class_0);
strcpy(stu[j + 1].class_0, stu[j].class_0);
strcpy(stu[j].class_0, t);
//num
k = stu[j + 1].num;
stu[j + 1].num = stu[j].num;
stu[j].num = k;
//name
strcpy(t, stu[j + 1].name);
strcpy(stu[j + 1].name, stu[j].name);
strcpy(stu[j].name, t);
//elec
s = stu[j + 1].yuwen;
stu[j + 1].yuwen = stu[j].yuwen;
stu[j].yuwen = s;
//shuxue
s = stu[j + 1].shuxue;
stu[j + 1].shuxue = stu[j].shuxue;
stu[j].shuxue = s;
//yingyu
s = stu[j + 1].yingyu;
stu[j + 1].yingyu = stu[j].yingyu;
stu[j].yingyu = s;
//average
s = stu[j + 1].average;
stu[j + 1].average = stu[j].average;
stu[j].average = s;
}
}
}
cout << "------------------------------------------------------------------------------------" << endl;
cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t"
<< "语文" << "\t" << "数学" << "\t" << "英语" << "\t"
<< "平均分" << endl;
cout << "------------------------------------------------------------------------------------" << endl;
for (int i = 0; i < n; i++) {
stu[i].order = i + 1;
cout << stu[i].class_0 << "\t" << stu[i].num << "\t" << stu[i].name << "\t"
<< stu[i].yuwen << "\t" << stu[i].shuxue << "\t" << stu[i].yingyu << "\t"
<< stu[i].average << endl;
}
Write(stu, n);
}
void Output(Student stu[]) {
system("cls");
int n = Read(stu);
cout << endl << "======>> 显示全部学生成绩 <<======" << endl;
if (!stu) {
cout << "没有记录";
}
else {
cout << "------------------------------------------------------------------------------------" << endl;
cout << "班级" << "\t" << "学号" << "\t" << "姓名" << "\t"
<< "语文" << "\t" << "数学" << "\t" << "英语" << "\t"
<< "平均分" << endl;
cout << "------------------------------------------------------------------------------------" << endl;
for (int i = 0; i < n; i++) {
cout << stu[i].class_0 << "\t" << stu[i].num << "\t" << stu[i].name << "\t"
<< stu[i].yuwen << "\t" << stu[i].shuxue << "\t" << stu[i].yingyu << "\t"
<<stu[i].average << endl;
}
cout << "------------------------------------------------------------------------------------" << endl;
}
}
int menu() {
char c;
do {
system("cls");
cout << "******************************************************" << endl;
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;
cout << " * 【0】退出管理系统 * " << endl;
cout << "******************************************************" << endl;
cout << "请选择您的操作 (0-8):" << endl;
c = getchar();
} while (c < '0' || c > '8');
return (c - '0');
}
int main() {
for (;;) {
switch (menu()) {
case 1:
Input(stu);
break;
case 2:
Statistic(stu);
break;
case 3:
Lookup(stu);
system("pause");
break;
case 4:
Modify(stu);
system("pause");
break;
case 5:
Delete(stu);
system("pause");
break;
case 6:
Insert(stu);
system("pause");
break;
case 7:
Sort(stu);
system("pause");
break;
case 8:
Output(stu);
system("pause");
break;
case 0:
cout << endl << "================感谢您使用学生成绩管理系统==============\n" << endl;
exit(0);
}
}
return 0;
}
【参考文献】
- 谭浩强《C++程序设计(第4版)》清华大学出版社
2.谭浩强《C++程序设计(第4版)学习辅导》清华大学出版社
致谢模板
在此,我衷心感谢我的导师xxx教授。感谢您在整个写作过程中给予我的悉心指导和无私帮助。从选题的初步构想到开题报告的撰写,再到论文的反复修改,您始终以严谨的态度和深厚的学识引导我,提供了许多宝贵的建议。您不仅教会了我如何进行学术研究,更让我领悟到写作的真正意义。您的关怀与支持使我能够顺利完成这篇论文。
同时,我也要感谢我的同学们,感谢你们在我修改论文时给予的帮助和建议。你们的支持使我在格式和内容上更加完善。
最后,我由衷地感谢所有曾经给予我帮助的人,是你们的支持与鼓励,成就了我今天的努力与成果。