c++课程设计 运动会管理系统(无图版)
来源:互联网 发布:python使用pip安装 编辑:程序博客网 时间:2024/05/01 01:59
#include <iostream> #include <fstream> #include <string> using namespace std; const int maxn=1023; string SName[maxn];//记录学生姓名 int SID[maxn];//记录学生学号 int SEvent[maxn]; //记录学生报名项目编号 int TotalN=0;//记录总报名学生数 int Sgender[maxn];//记录学生性别int TotalItems=0;//记录总项目数 int ItemLimit[maxn][2];//记录每个项目需要学生string ItemName[maxn];//记录每个项目的名称 string Password; string NewPassword; bool Cracked=false; string Transform_Code(string P)//密码的加密解密 { int tt=P.length(); int i; string ans=P; for (i=0;i<=tt-1;i++) ans[tt-1-i]=P[i]; return ans; } void Initialize()//读取数据文件,初始化程序{ ifstream infile,indata; infile.open("Items.txt",ios::in); infile>>TotalItems; cout<<"本次运动会共有 "<<TotalItems<<" 个项目。分别是:"<<endl; int i; for (i=1;i<=TotalItems;i++) { infile>>ItemName[i]>>ItemLimit[i][0]>>ItemLimit[i][1]; } infile.close(); indata.open("Data.txt",ios::in); indata>>TotalN; for (i=1;i<=TotalN;i++) { indata>>SID[i]>>SName[i]>>Sgender[i]>>SEvent[i]; ItemLimit[SEvent[i]][Sgender[i]]--; } string TmpP; indata>>TmpP; Password=Transform_Code(TmpP); NewPassword=Password; indata.close(); for (i=1;i<=TotalItems;i++) { cout<<ItemName[i]<<",余 "<<ItemLimit[i][0]<<" 女;"; cout<<"余 "<<ItemLimit[i][1]<<" 男"<<endl; } cout<<endl; } string getGender(int g) { if (g==0) return "女"; else return "男"; } void PrintEntry(int boolean,bool NotGenderIn) { //输出所有记录到屏幕或数据文件,参数决定输出到屏幕或是数据文件int i; if (boolean==0) { if (NotGenderIn) { for(i=1;i<=TotalN;i++) { cout<<SID[i]<<" "<<SName[i]<<" "; cout<<getGender(Sgender[i])<<" "<<ItemName[SEvent[i]]<<endl; } } else { for(i=1;i<=TotalN;i++) if (Sgender[i]==0) { cout<<SID[i]<<" "<<SName[i]; cout<<" "<<getGender(Sgender[i])<<" "<<ItemName[SEvent[i]]<<endl; } for(i=1;i<=TotalN;i++) if (Sgender[i]==1) { cout<<SID[i]<<" "<<SName[i]; cout<<" "<<getGender(Sgender[i])<<" "<<ItemName[SEvent[i]]<<endl; } } cout<<endl; } else { ofstream outfile; outfile.open("Data.txt",ios::out); outfile<<TotalN<<endl; for(i=1;i<=TotalN;i++) { outfile<<SID[i]<<" "<<SName[i]<<" "<<Sgender[i]<<" "<<SEvent[i]<<endl; } outfile<<NewPassword<<endl; outfile.close(); } } void ItemsStatistics()//输出报名余额{ int i; for (i=1;i<=TotalItems;i++) { cout<<i<<"."<<ItemName[i]<<",余 "<<ItemLimit[i][0]<<" 女;"; cout<<"余 "<<ItemLimit[i][1]<<" 男"<<endl; } cout<<endl; } void AddEntry()//添加或修改已有记录{ int i,temp,rSID; bool NotExisted=true; cout<<"请输入学号:"; cin>>temp; for (i=1;i<=TotalN;i++) if (SID[i]==temp) { NotExisted=false;//先查询是否已经存在要添加的学号rSID=i; break; } if (NotExisted) { TotalN++; SID[TotalN]=temp; cout<<"请输入姓名:"; cin>>SName[TotalN]; int gt=2; do { cout<<"请输入性别编号(0.女;1.男):"; cin>>gt; if ((gt!=0)&&(gt!=1)) cout<<"性别编号输入错误,请重选。"<<endl<<endl; } while ((gt!=0)&&(gt!=1));//防止用户输入 0 或 1 以外的数字Sgender[TotalN]=gt; cout<<endl; ItemsStatistics(); do { cout<<"请选择该学生报名项目:"; cin>>gt; if (ItemLimit[gt][Sgender[TotalN]]<=0) cout<<"该项目已经饱和,请重选。"<<endl<<endl; } while (ItemLimit[gt][Sgender[TotalN]]<=0);//防止项目饱和SEvent[TotalN]=gt; ItemLimit[SEvent[TotalN]][Sgender[TotalN]]--; cout<<"添加完成。"<<endl<<endl; } else { ItemLimit[SEvent[rSID]][Sgender[rSID]]++; ItemsStatistics(); cout<<"请选择该学生修改后的报名项目:"; cin>>SEvent[rSID]; ItemLimit[SEvent[rSID]][Sgender[rSID]]--; cout<<"修改完成。"<<endl<<endl; } } void SwapS(int an,int bn)//交换学生报名信息{ string Tstr; int Tsid; Tsid=SID[an]; SID[an]=SID[bn]; SID[bn]=Tsid; Tstr=SName[an]; SName[an]=SName[bn]; SName[bn]=Tstr; Tsid=SEvent[an]; SEvent[an]=SEvent[bn]; SEvent[bn]=Tsid; Tsid=Sgender[an]; Sgender[an]=Sgender[bn]; Sgender[bn]=Tsid; } void qs(int *d,int l,int r)//快速排序算法,按照学号排序{ int i,j,mid; i=l; j=r; mid=d[(l+r)/2]; do { while (d[i]<mid) i++; while (mid<d[j]) j--; if (i<=j) { SwapS(i,j); i++; j--; } } while (i<=j); if (l<j) qs(d,l,j); if (i<r) qs(d,i,r); } int Inquiry(int num)//按照学号查询{ int i; for(i=1;i<=TotalN;i++) { if (SID[i]==num) { cout<<SID[i]<<" "<<SName[i]<<" "<<ItemName[SEvent[i]]<<endl<<endl; return 0; } } cout<<"没有找到:学号为 "<<num<<" 的记录"<<endl; cout<<endl; } int SInquiry(string pp)//按照姓名查询{ int p; bool NotFound=true; for(p=1;p<=TotalN;p++) { if (SName[p]==pp) { cout<<SID[p]<<" "<<SName[p]<<" "<<ItemName[SEvent[p]]<<endl; NotFound=false; } } if (NotFound) cout<<"没有找到:姓名为 "<<pp<<" 的记录"<<endl; cout<<endl; } int DeleteItem(int StuID)//删除一条记录 { int i; for(i=1;i<=TotalN;i++) { if (SID[i]==StuID) { SID[i]=SID[TotalN]; SName[i]=SName[TotalN]; SEvent[i]=SEvent[TotalN]; TotalN--; cout<<"删除完成。"<<endl<<endl; return 0; } } cout<<"没有找到:学号为 "<<StuID<<" 的记录。"<<endl<<endl; } void InitializeUI()//初始化用户界面 { cout<<"1.列举所有记录"<<endl; cout<<"2.添加或修改(按学号)记录"<<endl; cout<<"3.删除指定记录(按学号)"<<endl; cout<<"4.根据姓名查询"<<endl; cout<<"5.根据学号查询"<<endl; cout<<"6.查询各运动项目余额"<<endl; cout<<"7.按学号排序(不区分性别)"<<endl; cout<<"8.按学号排序(区分性别)"<<endl; cout<<"9.修改密码"<<endl; cout<<"c.清除屏幕"<<endl; cout<<"s.保存但不退出"<<endl; cout<<"0.保存并退出"<<endl; cout<<endl; } bool ValidPswrd()//要求用户输入密码并验证{ if (Cracked) return true;//如果已经输入过则不再询问 bool ValidPswrd; string inputStr; cout<<"请输入密码: "; cin>>inputStr; if (Password==inputStr) { Cracked=true; return true; } else return false; } int main() { system("title 运动会管理系统DOS版——41005班 C++课程设计");//更改程序标题system("color 0B");//更改字体颜色 Initialize(); InitializeUI(); char X; while (X!='E') { string TmpStr; do { cout<<"请选择一项操作后按[Enter]:"; cin>>TmpStr; } while ((TmpStr.length()>1)||(TmpStr.length()==0)); cout<<endl; X=TmpStr[0]; switch (X) { case '1': { PrintEntry(0,false); break; } case '2': { if (ValidPswrd()) { AddEntry(); } else cout<<"密码错误。"<<endl<<endl; break; } case '3': { if (ValidPswrd()) { int Un;cout<<"请输入要删除的学号:"; cin>>Un; DeleteItem(Un); } else cout<<"密码错误。"<<endl<<endl; break; } case '4': { string N; cout<<"请输入要查询的姓名:"; cin>>N; SInquiry(N); break; } case '5': { int Un; cout<<"请输入要查询的学号:"; cin>>Un; Inquiry(Un); break; } case '6': { ItemsStatistics(); break; } case '7': { qs(SID,1,TotalN); PrintEntry(0,true); break; } case '8': { qs(SID,1,TotalN); PrintEntry(0,false); break; } case '9': { string Tp; cout<<"请输入您的旧密码:"; cin>>Tp; if (Tp==Password) { string ttp1,ttp2; do { ttp1="ttp1", ttp2="ttp2"; cout<<"请输入一个新密码:"; cin>>ttp1;cout<<"请确认您的输入:"; cin>>ttp2; if (ttp1!=ttp2) cout<<"两次密码不一致,请重新输入。"<<endl<<endl; } while (ttp1!=ttp2); NewPassword=Transform_Code(ttp1); Password=ttp2;//此操作很重要,使新密码立即生效 cout<<"修改成功。"<<endl<<endl; } else cout<<"密码错误。"<<endl<<endl; break; } case '0': { PrintEntry(1,false); cout<<"数据已经写入到:Data.txt"<<endl<<endl; return 0; } case 's': { PrintEntry(1,false); cout<<"数据已经写入到:Data.txt"<<endl<<endl; break; } case 'c': { system("cls"); InitializeUI(); break; } default:break; } } return 0; }
0 0
- c++课程设计 运动会管理系统(无图版)
- 课程设计(运动会管理系统)
- 课程设计无图版
- (C语言课程设计)图书管理系统
- 图书管理系统(c语言课程设计)
- 数据结构课程设计(运动会成绩管理系统)
- 运动会管理系统
- 学校运动会管理系统
- C语言课程设计 管理系统
- 课程设计:学生管理系统(c++)
- C语言课程设计—图书管理系统
- C语言课程设计—图书管理系统
- C语言课程设计---歌厅歌曲管理系统
- C语言课程设计--学生学籍管理系统
- C 语言----宿舍管理系统 课程设计
- 图书管理系统C语言课程设计2
- C语言课程设计之招生管理系统
- C语言学生管理系统课程设计
- Java的多态
- 关于字符串、整数互转
- 【c#基础】装箱与拆箱
- textview显示相关
- 守护进程
- c++课程设计 运动会管理系统(无图版)
- iOS 面试题(一)
- Oracle PGA
- Bug记录:微博的Java SDK返回经纬度错误
- 支持泛型的c语言栈
- java.util.Date和java.sql.Date的区别和相互转化
- 1.按键精灵----键盘鼠标命令
- EasyUI的DataGrid日期列(datebox)正确显示json时间格式
- 【转载】贝叶斯网络简介