📄 stu_info_manager.cpp
字号:
#include<iostream.h>
#include<string.h>
#include<fstream.h>
#include<stdlib.h>
#include<time.h>
#include<conio.h>
//************************************************************
//*******************课程信息*********************************
//************************************************************
typedef struct{
char course_name[10];
float point;
char teacher[20];
}course;
//************************************************************
//*********************学生信息*******************************
//************************************************************
typedef struct{
long int number;
char name[20];
int age;
char sex[10];
course course_number[2];
}student;
//************************************************************
//*********************哈希关键函数***************************
//************************************************************
long int key_1(long int number){
number=number%10000;
number=number%11;
return number;
}
//************************************************************
//****************确认出入是否满足条件函数********************
//************************************************************
void confirm(char j){
for(;j!='y'&&j!='Y'&&j!='n'&&j!='N';){
cout<<"--|||请输入Y/N,谢谢:\n.";
cin>>j;
}
}
//************************************************************
//********************显示学生信息函数************************
//************************************************************
void showinformation(student *information){
cout<<"学号: "<<information->number<<endl;
cout<<"姓名: "<<information->name<<endl;
cout<<"年龄: "<<information->age<<endl;
cout<<"性别: "<<information->sex<<endl;
cout<<"第一科课程名: "<<information->course_number[0].course_name<<endl;
cout<<"第一科课程分数: "<<information->course_number[0].point<<endl;
cout<<"第一科课程任课老师: "<<information->course_number[0].teacher<<endl;
cout<<"第二科课程名: "<<information->course_number[1].course_name<<endl;
cout<<"第二科课程分数: "<<information->course_number[1].point<<endl;
cout<<"第二科课程任课老师: "<<information->course_number[1].teacher<<endl;
}
//************************************************************
//*********************检测学号是否重复***********************
//************************************************************
void examenumber(long int number,student *information){
int n;
for(n=0;n!=100;n++){
if(information[n].number==number){
cout<<"=.=你输入的学号已存在,请重新输入:\n";
cin>>number;
n=-1;
}
}
}
//************************************************************
//******************初始读入数据构建哈希表********************
//************************************************************
void firstread( student *information)
{
fstream datafile;
long int number,key;
datafile.open("first.txt",ios::in|ios::out);
if(!datafile){
cout<<"\n";
exit(0);
}
while(!datafile.eof()){
datafile>>number;
key=key_1(number);
while(information[key].number!=0){
key++;
}
if(key>=100){
cout<<"所建立的哈希表有误!请注意啦!\n";
abort();
}
information[key].number=number;
datafile>>information[key].name;
datafile>>information[key].age;
datafile>>information[key].sex;
datafile>>information[key].course_number[0].course_name;
datafile>>information[key].course_number[0].point;
datafile>>information[key].course_number[0].teacher;
datafile>>information[key].course_number[1].course_name;
datafile>>information[key].course_number[1].point;
datafile>>information[key].course_number[1].teacher;
}
datafile.close();
}
//************************************************************
//*************关闭程序时将学生信息重新写入文件***************
//************************************************************
void closedatafile(student *information){
fstream datafile;
int n;
datafile.open("first.txt",ios::out);
for(n=0;n!=100;n++){
if(information->number!=0){
datafile<<information->number<<' ';
datafile<<information->name<<' ';
datafile<<information->age<<' ';
datafile<<information->sex<<' ';
datafile<<information->course_number[0].course_name<<' ';
datafile<<information->course_number[0].point<<' ';
datafile<<information->course_number[0].teacher<<' ';
datafile<<information->course_number[1].course_name<<' ';
datafile<<information->course_number[1].point<<' ';
datafile<<information->course_number[1].teacher;
information++;
n++;
break;
}
information++;
}
for(;n!=100;n++){
if(information->number!=0){
datafile<<"\n";
datafile<<information->number<<' ';
datafile<<information->name<<' ';
datafile<<information->age<<' ';
datafile<<information->sex<<' ';
datafile<<information->course_number[0].course_name<<' ';
datafile<<information->course_number[0].point<<' ';
datafile<<information->course_number[0].teacher<<' ';
datafile<<information->course_number[1].course_name<<' ';
datafile<<information->course_number[1].point<<' ';
datafile<<information->course_number[1].teacher;
}
information++;
}
datafile.close();
}
void main()
{
int n,s,l,t,p,q;
char name[20],j,i,m,k;
int age;
char sex[10];
long int number,key;
char course_name_1[10],course_name_2[10];
float point_1,point_2;
char teacher_1[20],teacher_2[20];
student *information,*information_1;
information_1=(student*)malloc(100*sizeof(student));
information=(student*)malloc(100*sizeof(student));
for(n=0;n!=100;n++){
information[n].number=0;
}
firstread(information);
step_1: system("cls");
cout<<"\n\n*******************学生信息管理系统**************************\n\n\n";
cout<<"1:学生信息数据处理系统\n\n";
cout<<"2:学生信息查询系统\n\n";
cout<<"3:学生信息排序系统\n\n";
cout<<"4:学生信息统计系统\n\n";
cout<<"5:退出系统\n\n";
cout<<"请输入您想要进入的模块号:";
cin>>i;
for(;i!='1'&&i!='2'&&i!='3'&&i!='4'&&i!='5';){
cout<<"--|||麻烦输入1~5之间的数,谢谢合作:\n";
cin>>i;
}
switch(i){
case '1': step_2: system("cls");
cout<<"\n\n****************欢迎进入学生信息处理系统*****************\n\n\n";
cout<<"1:添加学生信息\n\n";
cout<<"2:修改学生信息\n\n";
cout<<"3:删除学生信息\n\n";
cout<<"4:返回上一级\n\n";
cout<<"请输入您想要进行操作的序号:\n\n";
cin>>j;
for(;j!='1'&&j!='2'&&j!='3'&&j!='4';){
cout<<"--|||麻烦输入1~4之间的数,谢谢合作:\n";
cin>>j;
}
switch(j){
case '1': step_3: system("cls");
cout<<"请输入您要添加学生的学号:\n";
cin>>number;
examenumber(number,information);
cout<<"请输入此学生的姓名:\n";
cin>>name;
cout<<"请输入此学生的年龄:\n";
cin>>age;
cout<<"请输入此学生的性别:\n";
cin>>sex;
cout<<"请输入此学生第一科课程名:\n";
cin>>course_name_1;
cout<<"请输入此课程的成绩:\n";
cin>>point_1;
cout<<"请输入此课程的任课老师:\n";
cin>>teacher_1;
cout<<"请输入此学生第二科课程名:\n";
cin>>course_name_2;
cout<<"请输入此课程的成绩:\n";
cin>>point_2;
cout<<"请输入此课程的任课老师:\n";
cin>>teacher_2;
key=key_1(number);
while(information[key].number!=0){
key++;
}
if(key>=100){
cout<<"所建立的哈希表有误!请注意啦!\n";
abort();
}
information[key].number=number;
strcpy(information[key].name,name);
information[key].age=age;
strcpy(information[key].sex,sex);
strcpy(information[key].course_number[0].course_name,course_name_1);
information[key].course_number[0].point=point_1;
strcpy(information[key].course_number[0].teacher,teacher_1);
strcpy(information[key].course_number[1].course_name,course_name_2);
information[key].course_number[1].point=point_2;
strcpy(information[key].course_number[1].teacher,teacher_2);
cout<<"添加成功,是否继续添加(Y/N):\n";
cin>>m;
confirm(m);
if(m=='y'||m=='Y')
goto step_3;
else goto step_2;
case '2': step_4: system("cls");
cout<<"请输入您要修改信息学生的学号:\n";
cin>>number;
for(n=0;n!=100;n++){
if(information[n].number==number){
cout<<"您要修改学生的原始信息:\n\n";
showinformation(&information[n]);
break;
}
}
if(n>=100){
cout<<"-.=|||很抱歉,未能找到您要修改学生的信息,是否继续修改其他学生信息(Y/N):\n";
cin>>m;
confirm(m);
if(m=='y'||m=='Y')
goto step_4;
else goto step_2;
}
else {
step_5: cout<<endl<<"1.学号 2.姓名 3.年龄 4.性别\n\n";
cout<<"5.第一科课程名 6.第一科课程分数 7.第一科课程任课老师\n\n";
cout<<"8.第二科课程名 9.第二科课程分数 10.第二科课程任课老师\n\n";
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -