欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

学生选题信息管理系统

程序员文章站 2022-05-29 11:43:17
// //本人大一写东忙西忙写的,感觉很一般,巩固基础麻,没有别的大神写的那么酷炫,但是还是基本任务完成了。 //需先建立student.txt文件#include #include #include #include #include using namespace std; #define OK... ......
//
//本人大一写东忙西忙写的,感觉很一般,巩固基础麻,没有别的大神写的那么酷炫,但是还是基本任务完成了。
//需先建立student.txt文件


#include<fstream> #include<cstring> #include<stdio.h> #include<iostream> #include<stdlib.h> using namespace std; #define ok 1 #define error 0 #define overflow -1 #define list_init_space 100 //存储空间初始分配量 #define list_inc_space 10 //存储空间分配增量 int node = 1; typedef struct student { int age; //年龄 int student_id; //学号 int course_id; //题目编号 char student_name[40]; //姓名 char sex[10]; //性别 char class[40]; //班级 char specialty[40]; //专业 char course_name[40]; //题目名称 char keyword[40]; //关键词 char technology[40]; }student; typedef struct stent_list { struct student *stu; //存储空间基址 int length; //当前长度 int listsize; //当前分配的存储容量(以sizeof(student)为单位 }stent_list; int stent_listinit(stent_list &s) { //在内存中分配空间 s.stu = (student*)malloc(list_inc_space*sizeof(student)); if(!s.stu) exit(overflow); //存储空间分配失败 //构造一个空的线性表 s.length = 0; s.listsize = list_inc_space; //初始存储容量 return ok; }//函数stent_listinit结束 void write(stent_list &s, int n) { fstream myfile; myfile.open("student.txt",ios::out|ios::binary); //fstream myfile("student.txt",ios::out|ios::binary); if(! myfile) { cout<<"该文件不能打开!"<<endl; abort(); //异常终止函数 } int count = n; myfile<<count<<endl<<endl; for(int i = 0; i <= count; i++) { myfile<<(s.stu[i]).student_id<<" "<<(s.stu[i]).student_name<<" "<<(s.stu[i]).sex<<" "<<(s.stu[i]).age<<" "<<(s.stu[i]).class<<" "<<(s.stu[i]).specialty<<" "<<s.stu[i].course_id<<" "<<s.stu[i].course_name<<" "<<s.stu[i].keyword<<" "<<s.stu[i].technology<<" "<<endl; } myfile.close(); } /**************************************/ //函数名: read(stent_list &s) //参数: (传入) stent_list s顺序表 //返回值: int型,返回1表示创建成功,0表示失败 //功能: 读取顺序表中的内容 /*************************************/ int read(stent_list &s) { fstream myfile; myfile.open("student.txt",ios::in|ios::binary); //fstream myfile("student.txt",ios::out|ios::binary); if(! myfile) { cout<<"该文件不能打开"<<endl; abort(); } int count; myfile.seekg(0); myfile>>count; for(int i = 0; i <= count; i++) { myfile>>s.stu[i].student_id>>s.stu[i].student_name>>s.stu[i].sex>>s.stu[i].age>>s.stu[i].class>>s.stu[i].specialty>>s.stu[i].course_id>>s.stu[i].course_name>>s.stu[i].keyword>>s.stu[i].technology; } myfile.close(); return count; } /*****************************************/ //函数名:add(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 添加学生信息 /*****************************************/ void add(stent_list &s) { int n = read(s); int i = 0; char sign = 'f'; cout<<endl<<"请输入增加的学生的相关信息:"<<endl; while(sign != 'n') { loop: cout<<"学号:"; cin>>s.stu[i].student_id; cout<<endl; int c = 0; while(c < i) { c++; if(s.stu[i].student_id == s.stu[i-c].student_id) { cout<<"你输入的学号已经存在!请重新输入" <<endl; goto loop; } } cout<<"姓名:"; cin>>s.stu[i].student_name; cout<<endl; cout<<"性别:"; cin>>s.stu[i].sex; cout<<endl; cout<<"年龄:"; cin>>s.stu[i].age; cout<<endl; cout<<"班级:"; cin>>s.stu[i].class; cout<<endl; cout<<"专业:"; cin>>s.stu[i].specialty; cout<<endl; cout<<"题目编号:"; cin>>s.stu[i].course_id; cout<<endl; cout<<"题目名称:"; cin>>s.stu[i].course_name; cout<<endl; cout<<"关键词:"; cin>>s.stu[i].keyword; cout<<endl; cout<<"实现技术:"; cin>>s.stu[i].technology; cout<<endl; cout<<"提示:是否继续写入学生信息?(y/n):"; cin>>sign; i++; } write(s, i); } /*****************************************************/ //函数名: search_student_id(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 根据学号查找学生信息 /*****************************************************/ void search_student_id(stent_list &s) { int n = read(s); int s; int i = 0; cout<<endl<<"查找学生信息:"<<endl; cout<<"请输入需要查找学生的学号:"<<endl; cin>>s; while((s.stu[i].student_id - s) != 0 && i < n) i++; if(i == n) { cout<<"提示: 对不起,无法找到该学生的信息! "<<endl; } else { cout<<"***************************"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; } } /*******************************************************/ //函数名: search_student_name(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 根据学生姓名查找学生信息 /*******************************************************/ void search_student_name(stent_list &s) { int n = read(s); char a[100]; cout<<"请输入需要查找的姓名:"<<endl; cin>>a; for(int i = 0; i < n; i++) if(strcmp(s.stu[i].student_name, a) == 0) { cout<<"****************************"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; } } /*******************************************************/ //函数名: search_course_id(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 根据学生课程设计的编号查找 /*******************************************************/ void search_course_id(stent_list &s) { int n = read(s); int b; int i = 0; cout<<"请输入需要查找的题目编号:"<<endl; cin>>b; while((s.stu[i].course_id - b) != 0 && i < n) i++; if(i == n) { cout<<"提示:对不起,无法找到该信息!"<<endl; } else { for(i = 0; i < n; i++) if(s.stu[i].course_id - b == 0) { cout<<"******************************"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; } } } /****************************************************/ //函数名: search_course_name(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 根据课程设计名称查找 /***************************************************/ void search_course_name(stent_list &s) { int n = read(s); char c[100]; cout<<"请输入需要查找的题目名称:"<<endl; cin>>c; for(int i = 0; i < n; i++) if(strcmp(s.stu[i].course_name, c) == 0) { cout<<"******************************"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; } } /******************************************************/ //函数名: search(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 选择查找关键词 /******************************************************/ void search(stent_list &s) { int n = read(s); cout<<"**(1)根据学号查询 **"<<endl; cout<<"**(2)根据姓名查询 **"<<endl; cout<<"**(3)根据编号查询 **"<<endl; cout<<"**(4)根据名称查询 **"<<endl; cout<<endl; int c; cout<<"请输入选择: "; cin>>c; switch(c) { case 1: search_student_id(s);break; case 2: search_student_name(s);break; case 3: search_course_id(s);break; case 4: search_course_name(s);break; default: cout<<"输入错误,请重新输入!"<<endl; } write(s, n); } /*******************************************/ //函数名: student_alter(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 修改学生信息 /******************************************/ void student_alter(stent_list &s) { int n = read(s); int s; int i = 0; cout<<endl<<"修改学生信息:"<<endl; cout<<"请输入需要修改学生的学号:"<<endl; cin>>s; while((s.stu[i].student_id - s) != 0 && i < n) i++; if(i == n) { cout<<"提示:对不起,无该学生的信息!!!"<<endl; } else { cout<<"该学生的信息:"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; cout<<"请重新输入该学生的信息"<<endl; cout<<"学号:"; cin>>s.stu[i].student_id; cout<<endl; cout<<"姓名:"; cin>>s.stu[i].student_name; cout<<endl; cout<<"性别:"; cin>>s.stu[i].sex; cout<<endl; cout<<"年龄:"; cin>>s.stu[i].age; cout<<endl; cout<<"班级:"; cin>>s.stu[i].class; cout<<endl; cout<<"专业:"; cin>>s.stu[i].specialty; cout<<endl; cout<<"题目编号:"; cin>>s.stu[i].course_id; cout<<endl; cout<<"题目名称:"; cin>>s.stu[i].course_name; cout<<endl; cout<<"关键词:"; cin>>s.stu[i].keyword; cout<<endl; cout<<"实现技术:"; cin>>s.stu[i].technology; cout<<endl; char c; cout<<"是否保存数据?(y/n)"<<endl; cin>>c; if(c == 'y') cout<<"修改成功!"<<endl; write(s, n); } } /**************************************/ //函数名: student_delete(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 删除学生信息 /*************************************/ void student_delete(stent_list &s) { int n = read(s); int s; int i = 0, j; cout<<endl<<"删除学生信息:"<<endl; cout<<"请输入需要删除学生的学号:"<<endl; cin>>s; while((s.stu[i].student_id - s) != 0 && i < n) i++; if(i == n) { cout<<"提示:记录为空!!!"<<endl; } else { cout<<"提示:已成功删除!"<<endl; cout<<"你要删除的信息如下:"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; for(j = i; j < n-1; j++) { s.stu[j].student_id = s.stu[j+1].student_id; strcpy(s.stu[j].student_name,s.stu[j+1].student_name); strcpy(s.stu[j].sex,s.stu[j+1].sex); s.stu[j].age = s.stu[j+1].age; strcpy(s.stu[j].class,s.stu[j+1].class); strcpy(s.stu[j].specialty,s.stu[j+1].specialty); s.stu[j].course_id = s.stu[j+1].course_id; strcpy(s.stu[j].course_name,s.stu[j+1].course_name); strcpy(s.stu[j].keyword,s.stu[j+1].keyword); strcpy(s.stu[j].technology,s.stu[j+1].technology); } } write(s, n-1); } /******************************************/ //函数名: total(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 统计学生信息 /*****************************************/ void total(stent_list &s) { int n = read(s); char c[100]; int ok = 0; cout<<"请输入需要查找的题目名称:"<<endl; cin>>c; for(int i = 0; i < n; i++) if(strcmp(s.stu[i].course_name, c) == 0) { cout<<"你要统计的信息如下:"<<endl; cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; ok = 1; } if(ok == 0) { cout<<"没有此条记录!"<<endl; } } /********************************************/ //函数名: display(stent_list &s) //参数: (传入)stent_list s,顺序表 //返回值: 空 //功能: 输出所有学生的全部信息 /********************************************/ void display(stent_list &s) { int n = read(s); cout<<endl<<"显示全部学生信息:"<<endl; if(! s.stu) { cout<<"没有记录"<<endl; } else { for(int i = 0; i < n; i++) { cout<<"学号:"<<s.stu[i].student_id<<endl; cout<<"姓名:"<<s.stu[i].student_name<<endl; cout<<"性别: "<<s.stu[i].sex<<endl; cout<<"年龄:"<<s.stu[i].age<<endl; cout<<"班级:"<<s.stu[i].class<<endl; cout<<"专业:"<<s.stu[i].specialty<<endl; cout<<"题目编号:"<<s.stu[i].course_id<<endl; cout<<"题目名称:"<<s.stu[i].course_name<<endl; cout<<"关键词:"<<s.stu[i].keyword<<endl; cout<<"实现技术:"<<s.stu[i].technology<<endl; } } } int main() { char choice; cout<<endl<<endl<<"\t\t\t"<<" **欢迎使用课程设计选题管理系统**" <<endl<<endl; cout<<"\t\t\t"<<"1.*********添加新的记录**********"<<endl; cout<<"\t\t\t"<<"2.*********查询记录信息**********"<<endl; cout<<"\t\t\t"<<"3.*********修改学生信息**********"<<endl; cout<<"\t\t\t"<<"4.*********删除学生信息**********"<<endl; cout<<"\t\t\t"<<"5.*********统计所有记录**********"<<endl; cout<<"\t\t\t"<<"6.*********显示所有记录**********"<<endl; cout<<"\t\t\t"<<"0.********* 退出系统 **********"<<endl; stent_list s; stent_listinit(s); cout<<"\t\t\t"<<"请输入您的选择:"; cin>>choice; if(choice == '0') { cout<<endl<<"\t"<<"\t"<<"\t"<<"谢谢使用本系统! "<<endl<<endl; exit(0); } else if(choice == '1') { add(s); system("pause"); main(); } else if(choice == '2') { search(s); system("pause"); main(); } else if(choice == '3') { student_alter(s); system("pause"); main(); } else if(choice == '4') { student_delete(s); system("pause"); main(); } else if(choice == '5') { total(s); system("pause"); main(); } else if(choice == '6') { display(s); system("pause"); main(); } else { cout<<"\t"<<"输入错误,请重新输入你的选择:"; main(); } return 0; }