c++学生成绩管理系统 文件操作
来源:互联网 发布:淘宝网珀莱雅套装 编辑:程序博客网 时间:2024/06/04 23:35
我写了两个类,一个老师类,一个学生类,老师要输入密码,才能打开学生成绩的文件,老师的名字和密码也用了一个文件来单独储存。同时,在密码输入的时候,我采取对账号信息的保密,输入密码时会显示*号。
student头文件
#pragma once#include <string>#include <iostream>using namespace std;class Student{public:Student() :num(0),name(""),score(0) {}Student(int num,string name,double score);~Student();void setStudent(int n,string nam,double s);void showStudent();friend class Teacher;private:int num;string name;double score;};
teacher.h
#pragma once#include <string>#include <iostream>#include "student.h"using namespace std;const int upNum = 1000;class Teacher{public:Teacher(); virtual~Teacher();void work();void displayStudent();void insert();void deleteStudent();void searchStudent();void saveStudent();private:int N;//用户数目Student students[upNum];//student()};int pass();int chooseInMenu();int inputPassword();
student.cpp
#include"student.h"#include"teacher.h"Student::Student(int num,string name,double score):num(num),name(name),score(score){}Student::~Student(){}void Student::setStudent(int n, string nam, double s){this->num = n;this->name = nam;this->score = s;}void Student::showStudent(){cout << num << " " << name << " " << score << endl;}
teacher.cpp
#include "teacher.h"#include<iostream>#include<fstream>#include<cstdlib>#include<string>#include<ctype.h>using namespace std;Teacher::Teacher(){ifstream infile("student.txt", ios::in);if (!infile){cerr << "open error" << endl;exit(1);}int i = 0;int n;string nam;double sco;while (infile >> n >> nam >> sco ){students[i].setStudent(n,nam,sco);i++;}N = i;infile.close();}Teacher::~Teacher(){}void Teacher::saveStudent(){ofstream outfile("student.txt", ios::out);if (!outfile){cerr << "open error" << endl;exit(1);}int i;int k = N;for (i = 0; i < k; ++i){outfile << students[i].num << " ";outfile << students[i].name << " ";outfile << students[i].score << " ";}getchar();getchar();outfile.close();}void Teacher::work(){int iChoice;int j = 0;while (1){iChoice = chooseInMenu();switch (iChoice){case 1:insert();break;case 2:deleteStudent();break;case 3:searchStudent();break;case 4:displayStudent();break;case 0:j = 1;break;default:break;}if (j == 1)break;}}void Teacher::displayStudent(){int i;cout << "学号" << " " << "姓名" << " " << "操作系统成绩" << endl;for (i = 0; i < N; i++){students[i].showStudent();}}void Teacher::insert(){int n;string nam;double sco;cout << "请输入学号:";cin >> n;cout << endl;cout << "请输入名字:";cin >> nam;cout << "请输入操作系统成绩:";cin >> sco;students[N].setStudent(n, nam, sco);N++;}void Teacher::deleteStudent(){int i = 0;string nam;int j = -1;cout << "请输入要删除人的名字:";cin >> nam;for (i = 0; i < N; i++){if (students[i].name == nam){students[i].showStudent();j = i;}}if (j == -1){cout << "查无此人:" << endl;}else {for (i = j; j < N; j++){students[i].name = students[i + 1].name;students[i].num = students[i + 1].num;students[i].score = students[i + 1].score;}N--;}}void Teacher::searchStudent(){int i = 0;string nam;int j = -1;cout << "请输入要查找人的名字:";cin >> nam;for (i = 0; i < N; i++){if (students[i].name == nam){students[i].showStudent();j = i;}}}
work.cpp
#include<iostream>#include<fstream>#include<conio.h>#include<cstdlib>#include<cstring>#include<ctype.h>#include"teacher.h"using namespace std;int pass()//验证用户密码,正确返回1,错误返回0{char sNameInfile[20];char sPassInfile[20];ifstream infile("teacher.txt", ios::in);if (!infile){cout << "password file cannot open!" << endl;system("pause");exit(1);}infile >> sNameInfile >> sPassInfile;infile.close();char sName[20];char sPass[20];char ch;int iTry = 3;int right = 0;do{cout << "请输入您的姓名:";cin >> sName;cout << "请输入密码:";int i = 0;while ((ch = getch()) != '\r'){sPass[i++] = ch;putchar('*');}sPass[i] = '\0';fflush(stdin);cout << endl;if (strcmp(sPass, sPassInfile) == 0 && strcmp(sName, sNameInfile) == 0){right = 1;break;}else{iTry--;if (iTry < 0)cout << "对不起,您已输入超过三次" << endl;}} while (iTry);return right;}int chooseInMenu(){int i;while (1){cout << endl;cout << "+------------------------------------+" << endl;cout << "+ 1.插入信息 2.删除信息 +" << endl;cout << "+ 3.查找信息 4.显示信息 +" << endl;cout << "+-------------------------------------+" << endl;cout << "+ 0.退出 +" << endl;cout << "+------------------------------------+" << endl;cout << "请输入操作指令:";cin >> i;if (i >= 0 && i <= 9)break;elsecout << "请重新输入" << endl;}return i;}int inputPassword(){char ch;int iPass = 0;int i;while (1){for (i = 0; i < 6; i++){ch = getch();putchar('*');if (isdigit(ch))iPass = iPass * 10 + (ch - '0');else{iPass = 0;break;}}fflush(stdin);cout << endl;if (iPass == 0){cout << "密码要求全为数字" << endl;cout << "请重新输入" << endl;}elsebreak;}return iPass;}
#include<iostream>#include"teacher.h"using namespace std;int main(){cout << "+-------------------------------------------+" << endl;cout << " 学生成绩管理系统 " << endl;cout << "+-------------------------------------------+" << endl;Teacher t;if (pass()){Teacher t;t.work();t.saveStudent();}}
最近在自己看C++,之前对C语言比较熟悉,c++和没学没什莫区别,刚好看到友元,就用了友元类,因为我是练手,所以无所谓,但如果以后做东西,还是不太提倡友元,毕竟破坏了C++的封装性,这是小哥我第二个C++程序,程序很low,没啥水平,不过,以后会慢慢变好~喜欢我程序的同学欢迎点一波关注 ^_^
0 0
- c++学生成绩管理系统 文件操作
- 简易学生成绩管理系统(c++)
- 学生成绩管理系统-C
- 学生成绩管理系统(c++)
- C语言学生成绩管理系统
- 学生成绩管理系统【c】
- c链表 学生成绩管理系统
- C语言 学生成绩管理系统
- C语言--学生成绩管理系统
- 学生成绩管理系统 C语言
- C语言学生成绩管理系统
- c/c++学生成绩管理系统
- c-学生成绩管理系统
- C语言 学生成绩管理系统
- C语言学生成绩管理系统
- 学生成绩管理系统【C语言程序设计】
- c语言文件读取 学生成绩管理系统的设计与实现
- [转载]学生成绩管理系统C源代码
- Angular+SpringMVC+MongoDB集成单页面应用
- 基于CentOS 6.4系统的VPS安全设置与优化
- 运用WinDbg分析崩溃转储dmp文件的基本配置和简单命令(win7下)
- ubuntu服务器nginx+ sticky配置
- java 代码翻译
- c++学生成绩管理系统 文件操作
- Android 6.0 电池充电时间分析
- 新人报道
- Android亮屏和熄屏控制
- linux ssh远程linux不用输入密码登入
- 获取VS Addin Qt插件
- PHP的PSR系列规范
- jquery图片轮播代码
- input text事件