这是第一个学术休假的项目,主体部分在回家时的火车上完成的,隔了几天继续加工,今天终于完成,这是学生管理系统的beta版本,后续还将继续完善。
学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。试设计一学生信息管理系统,使之能提供以下功能:
(1)系统以菜单方式工作
(2)学生信息录入功能(学生信息用文件保存)---输入
(3)学生信息浏览功能---输出
(4)查询、排序功能
按学号查询
按姓名查询
(5)学生信息的删除与修改(可选项)
/* *Copyright (c) 2015,烟台大学计算机学院 *All gight reserved. *文件名称:temp.cpp *作者:邵帅 *完成时间:2015年1月19日 *版本号:v1.0 */ #include<fstream> #include<iostream> #include<cstdlib> #include<string> using namespace std; void showmeun(void); int name_search(string ,int ); int num_search(string ,int ); void showinfo(int num); void showchange(void); int open(void); void save(int num); struct Student { string number; string name; string old; string sex; string birthday; string add; string phone; string mail; }; //档案结构体 Student stu[8000]; int main() { int choice,i; string numkey,namekey; int num=0,add,addsum,cut; while (1) { num=open(); showmeun();//打开开始菜单 cin>>choice; if (choice==0) { cout<<"感谢使用@Mayuko学生管理系统!"<<endl; break; } else if (choice==1) { cout<<"请输入学生的学号:"; cin>>numkey; i=num_search(numkey,num); if (i==-1) { cout<<"无此学生信息!"<<endl; continue; } else showinfo(i); cout<<endl; } else if (choice==2) { cout<<"请输入学生的姓名:"; cin>>namekey; i=name_search(namekey,num); if (i==-1) { cout<<"无此学生信息!"<<endl; continue; } else showinfo(i); cout<<endl; } else if (choice==3) { cout<<"学生的信息如下:"<<endl; for (i=0; i<num; i++) { showinfo(i); cout<<endl; } } else if (choice==4) { cout<<"请输入写入的个数;"; cin>>addsum; cout<<"请依次输入学生的学号、姓名、年龄、性别(M or F)、出生年月、地址、电话、E—mail"<<endl; cout<<"列如:201401 晓凡 18 M 19961218 地球村 17862817891 xiaofan@163.com"<<endl; //打开文件 ofstream outfile("students.txt",ios::app); if (!outfile) { cout<<"打开文件失败!"; exit(1); } num+=addsum; for (add=num; add<(addsum+num); add++) { cin>>stu[add].number>>stu[add].name>>stu[add].old>>stu[add].sex>>stu[add].birthday>>stu[add].add>>stu[add].phone>>stu[add].mail; outfile<<stu[add].number<<" "<<stu[add].name<<" "<<stu[add].old<<" "<<stu[add].sex<<" "<<stu[add].birthday<<" "<<stu[add].add<<" "<<stu[add].phone<<" "<<stu[add].mail<<endl; } outfile.close(); cout<<"写入结束!共写入"<<addsum<<"条记录,现共有"<<num<<"条记录。"<<endl; //文件写入结束 } else if (choice==5) { cout<<"请输入要修改学生的学号:"; cin>>numkey; i=num_search(numkey,num); cout<<"您正在修改“"; showinfo(i); cout<<"”的信息"<<endl; showchange(); cin>>cut; cout<<"请输入修改的内容:"; while (1) { if (cut==1) cin>>stu[i].number; else if (cut==2) cin>>stu[i].name; else if (cut==3) cin>>stu[i].old; else if (cut==4) cin>>stu[i].sex; else if (cut==5) cin>>stu[i].birthday; else if (cut==6) cin>>stu[i].add; else if (cut==7) cin>>stu[i].phone; else if (cut==8) cin>>stu[i].mail; else { cout<<"输入错误,即将返回"<<endl; break; } save(num); cout<<"修改成功!"<<endl; break; } } } return 0; } int open(void) { int num=0; ifstream infile("students.txt",ios::in); if (!infile) { cout<<"打开文件失败!"; exit(1); } while (infile>>stu[num].number) { infile>>stu[num].name; infile>>stu[num].old; infile>>stu[num].sex; infile>>stu[num].birthday; infile>>stu[num].add; infile>>stu[num].phone; infile>>stu[num].mail; num++; } infile.close(); //文件读取结束 return num; } void save(int num) { int add; ofstream outfile("students.txt",ios::out); if (!outfile) { cout<<"打开文件失败!"; exit(1); } for (add=0; add<num; add++) { outfile<<stu[add].number<<" "<<stu[add].name<<" "<<stu[add].old<<" "<<stu[add].sex<<" "<<stu[add].birthday<<" "<<stu[add].add<<" "<<stu[add].phone<<" "<<stu[add].mail<<endl; } outfile.close(); } void showmeun(void) { cout<<"-----------------"<<endl; cout<<"学生信息管理系统"<<endl; cout<<"-----------------"<<endl; cout<<"1、按学号查找"<<endl; cout<<"2、按姓名查找"<<endl; cout<<"3、学生信息浏览"<<endl; cout<<"4、学生信息录入"<<endl; cout<<"5、修改学生信息"<<endl; cout<<"请选择功能(键入0退出):"; } void showchange(void) { 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-E-mail"<<endl; cout<<"--------------"<<endl; cout<<"请输入要修改的选项:"; } void showinfo(int num) { cout<<stu[num].number<<" "<<stu[num].name<<" "<<stu[num].old<<" "<<stu[num].sex<<" "<<stu[num].birthday<<" "<<stu[num].add<<" "<<stu[num].phone<<" "<<stu[num].mail; } int name_search(string key,int n) { int i; for (i=0; i<n; i++) { if (key==stu[i].name) return i; } return i; } int num_search(string key,int n) { int i=-1; for (i=0; i<n; i++) { if (key==stu[i].number) return i; } return i; }运行结果:
另外,temp文件夹的文件“students.txt”文件截图:
@ Mayuko