1.题目描述
学籍管理系统:
根据信息管理系统的业务流程、要求以及所要实现的目标,完成以下功能:
(1)建立学生档案的管理和维护。实现计算机自动化管理*。
(2)建立学生成绩管理机制,在计算机的支持下快速的完成学生成绩的查询和修改。
(3)建立课程设置管理,在计算机的支持下实现课程的添加、修改。
(4)建立班级设置管理,在计算机的支持下实现班级的添加、删除和修改。
(5)实现系统的权限设置管理,保证系统安全性。(登录密码输错3次不允许登录)
(6)使用姓名学号查找学生信息。
(7)将学生信息保存在文件中。
2.分析思路
使用类来储存学生信息,实现学生信息的管理修改。
3. 输入:
1,密码的设置输入及登录输入。
2,功能选择的输入。
3,学生信息输入
void sr() //////初始化输入学生信息 { cout<<"请输入姓名"; cin>>xm; cout<<"请输入入学日期中间用空格隔开"; time.shuru(); ll=shurupanduan(time.year,time.month,time.day); if(ll==0) time.shuru(); cout<<"请输入班级"; cin>>bj; cout<<"请输入课程(5门)中间用空格隔开"; for(int i=0;i<5;i++) { cin>>kc[i]; for(intj=0;j<i;j++) { while(kc[i]==kc[j]) { cout<<"您已经选过该课程请重新输入"<<endl; cin>>kc[i]; } } }
4.输出:
1,学生信息的输出。
2,学生信息的文件储存。
5.程序代码:
#include<iostream> #include <string> #include<conio.h> #include<iomanip> #include<time.h> # include<fstream> void bangzhu(); void bcxx(int); void dqsj(); bool pdxhcf(int,int); int shurupanduan(int,int,int); int runnian(int ); using namespace std; struct sj { intyear,month,day; ////////时间结构体 void shuru() {cin>>year>>month>>day; } }; class student ////////////学生类 { public : string xm,kc[5]; int bj,xh,cj[5],ll; sj time; voidsrxhh() { cout<<"请输入学号"; cin>>xh; } void sr() //////初始化输入学生信息 { cout<<"请输入姓名"; cin>>xm; cout<<"请输入入学日期中间用空格隔开"; time.shuru(); ll=shurupanduan(time.year,time.month,time.day); if(ll==0) time.shuru(); cout<<"请输入班级"; cin>>bj; cout<<"请输入课程(5门)中间用空格隔开"; for(int i=0;i<5;i++) { cin>>kc[i]; for(intj=0;j<i;j++) { while(kc[i]==kc[j]) { cout<<"您已经选过该课程请重新输入"<<endl; cin>>kc[i]; } } } system("cls"); } void chengji() ///////成绩录入 { int i; for(i=0;i<5;i++) { cout<<"请输入"<<kc[i]<<"的成绩"<<endl; cin>>cj[i]; } } void chengjisc() ///////成绩输出 { inti; for(i=0;i<5;i++) { cout<<kc[i]<<" "; cout<<cj[i]<<' '; } } }; void cxkb(student t) { intn; cout<<"继续查询课程表请输入1,结束请输入0"<<endl; cin>>n; if(n==1) for(int i=0;i<5;i++) cout<<t.kc[i]<<' '; } string mima() ////////初始化设置密码 { cout<<"****************************学籍管理系统*********************************"<<endl; dqsj(); cout<<"请设置密码:"; string mm1,mm2; char ch; while ((ch=_getch())!=13) { mm1+=ch; cout<<"*"; } cout<<endl; cout<<"请再次确认密码:"; while ((ch=_getch())!=13) { mm2+=ch; cout<<"*"; } system("cls"); if(mm1==mm2) return mm1; else mima(); } int denglu(string mm) /////////登陆程序 { cout<<"****************************学籍管理系统*********************************"<<endl; dqsj(); cout<<"请输入登陆密码:"; string mm1,mm2,mm3; char ch; while ((ch=_getch())!=13) { mm1+=ch; cout<<"*"; } system("cls"); cout<<"****************************学籍管理系统*********************************"<<endl; dqsj(); if(mm==mm1) return 1; else { cout<<"密码错误,您还有两次机会,请重试"; while ((ch=_getch())!=13) { mm2+=ch; cout<<"*"; } system("cls"); if(mm==mm2) return 1; else { cout<<"密码错误,您还有一次机会,请重试"; while ((ch=_getch())!=13) { mm3+=ch; cout<<"*"; } system("cls"); if(mm==mm3) return 1; else { cout<<"密码错误,请明天再试"; return 0; } } } } student chazhaoxg(student t) //信息修改 {cout<<"修改姓名请输入1,修改入学时间请输入2,修改班级请输入3."<<endl; cout<<"修改课程请输入4,修改成绩请输入5"; int a,i; string xk; cin>>a; switch(a) { case 1:cin>>t.xm;break; case2:cin>>t.time.year>>t.time.month>>t.time.day;break; case 3:cin>>t.bj;break; case 4:for(i=0;i<5;i++)cin>>t.kc[i];break; case 5: cout<<"请输入课程名"<<endl; cin>>xk;for(i=0;i<5;i++) { if(t.kc[i]==xk) {cout<<"请输入成绩"<<endl; cin>>t.kc[i]; } }break; } return t; } void shuchuxinxi(student t) //输出学生信息 { cout<<t.xh<<' '<<t.xm<<''<<t.time.year<<t.time.month<<t.time.day<<t.bj<<''; } student stu[500]; int main() ////主函数.................. { intn=0,i,xh; string mm,xm; //密码 mm=mima(); //密码设置 i=denglu(mm); if(i) { int a; system("cls"); while(1) { cout<<"****************************学籍管理系统*********************************"<<endl; dqsj(); bangzhu(); cin>>a; system("cls"); cout<<"****************************学籍管理系统*********************************"<<endl; dqsj(); if(a==0) break; else { switch(a) { case1: stu[n].srxhh(); while(!pdxhcf(n,stu[n].xh)) { cout<<"已存在该学生请重新输入"<<endl; stu[n].srxhh(); } stu[n].sr(),n++; break; case 2: for(i=0;i<n;i++) { cout<<stu[i].xh<<''; cout<<stu[i].xm<<endl; } break; case 3: cout<<"请输入学号 "; cin>>xh; for(i=0;i<n;i++) if(stu[i].xh==xh) stu[i]=chazhaoxg(stu[i]);break; case 6: cout<<"请输入学号 "; cin>>xh; for(i=0;i<n;i++) if(stu[i].xh==xh) stu[i].chengji();break; case7: cout<<"请输入学号 "; cin>>xh; for(i=0;i<n;i++) if(stu[i].xh==xh) stu[i].chengjisc(); break; case4: cout<<"请输入学号 "; cin>>xh; for(i=0;i<n;i++) if(stu[i].xh==xh) { shuchuxinxi(stu[i]); cxkb(stu[i]); }break; case5: cout<<"请输入姓名 "; cin>>xm; for(i=0;i<n;i++) if(stu[i].xm==xm) {shuchuxinxi(stu[i]); cxkb(stu[i]); }break; case 9:bangzhu();break; case8:bcxx(n);break; } } } } return 0; } void bangzhu() //操作指令提示 { cout<<"请输入以下指令"<<endl<<endl; cout<<" 1.添加学生 "; cout<<" 2.输出所有学生 "<<endl; cout<<"============================"; cout<<"============================"<<endl; cout<<" 3.输入学号修改学生信息 "; cout<<" 4,用学号查找学生信息 "<<endl; cout<<"============================"; cout<<"============================"<<endl; cout<<" 5,用姓名查找学生信息 " ; cout<<" 6,成绩输入 "<<endl; cout<<"============================"; cout<<"============================"<<endl; cout<<" 7,成绩查询 "; cout<<" 8,保存学生信息"<<endl; cout<<"============================"; cout<<"============================"<<endl; cout<<" 9.菜单 "; cout<<" 0.结束本程序 "<<endl ; cout<<"============================"; cout<<"============================"<<endl; } int shurupanduan(int a,int b,int c=1) //判断输入年月日是否正确 {int l=1,q,ll; if(a<=0||b<=0||b>12||c<0) {l=0; cout<<"您的输入有误请重新输入"<<endl;} switch(b) { case 1:q=31;break; case 2:q=28;break; case 3:q=31;break; case 5:q=31;break; case 7:q=31;break; case 8:q=31;break; case 10:q=31;break; case 12:q=31;break; case 4:q=30;break; case 6:q=30;break; case 9:q=30;break; case 11:q=30;break; } ll=runnian(a); if(ll) q++; if(c>q) { l=0; cout<<"您的输入有误请重新输入"<<endl;} return l; } int runnian(int a) //判断是是否为闰年 { intl=0; if((a%4==0&&a%100!=0)||(a%400==0)) l=1; return l; } void bcxx(int n) { cout<<"请输入文本名称和后缀名:"; char s[20]; cin>>s; ofstream outfile(s,ios::out); inti=0; studentt; outfile<<" 学号"<<" 姓名"<<" 出生日期"<<" 班级"<<endl; for(i=0;i<n;i++) { t=stu[i]; outfile<<fixed<<setw(12)<<t.xh<<''<<fixed<<setw(6)<<t.xm<<' ' <<fixed<<setw(7)<<t.time.year<<t.time.month<<t.time.day<<"" <<fixed<<setw(4)<<t.bj<<''; } } void dqsj() //输出现在时间以及当前月份日历 { time_t t = time(NULL); struct tm *local = localtime(&t); int year = local -> tm_year + 1900; int month = local -> tm_mon + 1; int day = local -> tm_mday; int hour = local -> tm_hour; int minute = local -> tm_min; int second = local -> tm_sec; cout <<"当前时间: "<<" "<<year<<"年"<<month<<"月"<<day<<"日"<<''; cout <<endl<<" "<<hour<<":"<<minute<<":"<<second<<endl<<endl; } bool pdxhcf(int n,int a)//判断学号是否重复 { booll=1; inti; for(i=0;i<n;i++) { if(a==stu[i].xh) { l=0; break; } } returnl; }
6.程序运行结果截图
重复课程不允许选择。
可以将学生信息保存到文件
可以使用姓名和学号查询学生信息
可以实现成绩的输入和修改