

1 // 2 // main.cpp 3 // 2013-7-17作业1 4 // 5 // Created by 丁小未 on 13-7-17. 6 // Copyright (c) 2013年 dingxiaowei. All rights reserved. 7 // 8 //1.有这样一个学生系统,用于学校存储学生信息,当有新生的时候存储新生信息,有学生毕业的时候删除学生信息,还可以修改学生信息,比如学生突然更改了姓名或者学生换了专业。学生信息至少要有姓名,学号,年龄,性别,专业,手机号码。 9 //条件:使用类Student,完成。 10 #include <iostream> 11 #define NUM 50 12 using namespace std; 13 14 class Student 15 { 16 private: 17 int num;//学号 18 string name;//姓名 19 int age; //年龄 20 char sex; //性别 21 string profession;//专业 22 string telphone; 23 public: 24 Student() 25 { 26 27 } 28 Student(int nu,string na,int ag,char sx,string pr,string te) 29 { 30 num = nu; 31 name = na; 32 age = ag; 33 sex = sx; 34 profession = pr; 35 telphone = te; 36 } 37 void SetNum(int nu) 38 { 39 num = nu; 40 } 41 void SetName(string na) 42 { 43 name = na; 44 } 45 void SetAge(int ag) 46 { 47 age = ag; 48 } 49 void SetSex(char sx) 50 { 51 sex = sx; 52 } 53 void SetProfession(string pr) 54 { 55 profession = pr; 56 } 57 void SetTelphone(string te) 58 { 59 telphone = te; 60 } 61 Student* GetStudent() 62 { 63 Student *stu; 64 return stu; 65 } 66 int GetNum() 67 { 68 return num; 69 } 70 string GetName() 71 { 72 return name; 73 } 74 int GetAge() 75 { 76 return age; 77 } 78 char GetSex() 79 { 80 return sex; 81 } 82 string GetProfession() 83 { 84 return profession; 85 } 86 string GetTelphone() 87 { 88 return telphone; 89 } 90 91 //还要有整体的赋值,可以用单目运算符重写= 92 Student&operator = (const Student & other) 93 { 94 if (this == &other) { 95 return *this; 96 } 97 this->num = other.num; 98 this->name = other.name; 99 this->age = other.age; 100 this->sex = other.sex; 101 this->profession = other.profession; 102 this->telphone = other.telphone; 103 } 104 }; 105 106 107 //输入学生,返回输入的个数 108 int setStudent(Student stu[],int n) 109 { 110 int i=0; 111 int j; 112 int iTemp; 113 string sTemp; 114 char cTemp; 115 int f=0; 116 do { 117 cout<<"请输入学生学号"<<endl; 118 cin>>iTemp; 119 stu[i].SetNum(iTemp); 120 cout<<"请输入学生姓名"<<endl; 121 cin>>sTemp; 122 stu[i].SetName(sTemp); 123 cout<<"请输入学生年龄"<<endl; 124 cin>>iTemp; 125 stu[i].SetAge(iTemp); 126 cout<<"请输入学生性别"<<endl; 127 cin>>cTemp; 128 stu[i].SetSex(cTemp); 129 cout<<"请输入学生专业"<<endl; 130 cin>>sTemp; 131 stu[i].SetProfession(sTemp); 132 cout<<"请输入学生手机号"<<endl; 133 cin>>sTemp; 134 stu[i].SetTelphone(sTemp); 135 i++; 136 cout<<"请问要输入学生信息吗?(1.要 2.不要)"; 137 cin>>f; 138 } while (1==f); 139 // for (i=0; i<n; i++) { 140 // printf("请问要输入学生信息吗?(1.要 2.不要)"); 141 // cin>>j; 142 // if (2==j) { 143 // break; 144 // } 145 // else 146 // { 147 // cout<<"请输入学生学号"<<endl; 148 // cin>>iTemp; 149 // stu[i].SetNum(iTemp); 150 // cout<<"请输入学生姓名"<<endl; 151 // cin>>sTemp; 152 // stu[i].SetName(sTemp); 153 // cout<<"请输入学生年龄"<<endl; 154 // cin>>iTemp; 155 // stu[i].SetAge(iTemp); 156 // cout<<"请输入学生性别"<<endl; 157 // cin>>cTemp; 158 // stu[i].SetSex(cTemp); 159 // cout<<"请输入学生专业"<<endl; 160 // cin>>sTemp; 161 // stu[i].SetProfession(sTemp); 162 // cout<<"请输入学生手机号"<<endl; 163 // cin>>sTemp; 164 // stu[i].SetTelphone(sTemp); 165 // } 166 // } 167 return i;//返回输入的学生数 168 } 169 170 //返回查找学号为什么的学生的下标 171 int findStudent(Student *stu,int n,int findNum)//要查询的Student数组,实际查询的条数,要查询的学号 172 { 173 int i; 174 int m=-1; 175 for (i=0; i<n; i++) { 176 if(stu[i].GetNum()==findNum) 177 { 178 m=i; 179 break; 180 } 181 } 182 return m; //返回Stu的下标 183 } 184 185 //删除一条学生信息 186 int deleteStudent(Student *stu,int n,int deleteStudentNum) //在学生数组中删除学号为deleteStudentNum的学生,并且个数减少1 187 { 188 int i; 189 int j=0; 190 for (i=0; i<n; i++) { 191 if (stu[i].GetNum()==deleteStudentNum) { 192 for (j=i; j<n-1; j++) { 193 stu[j]=stu[j+1]; 194 } 195 n--; 196 i--; 197 } 198 } 199 return n; //返回n-1 200 } 201 Student addStudent() 202 { 203 Student stu; 204 int iTemp; 205 char cTemp; 206 string sTemp; 207 cout<<"请输入学生学号"<<endl; 208 cin>>iTemp; 209 stu.SetNum(iTemp); 210 cout<<"请输入学生姓名"<<endl; 211 cin>>sTemp; 212 stu.SetName(sTemp); 213 cout<<"请输入学生年龄"<<endl; 214 cin>>iTemp; 215 stu.SetAge(iTemp); 216 cout<<"请输入学生性别"<<endl; 217 cin>>cTemp; 218 stu.SetSex(cTemp); 219 cout<<"请输入学生专业"<<endl; 220 cin>>sTemp; 221 stu.SetProfession(sTemp); 222 cout<<"请输入学生手机号"<<endl; 223 cin>>sTemp; 224 stu.SetTelphone(sTemp); 225 return stu; 226 } 227 //添加一个学生(可能有点问题) 228 int insertStudent(Student *stu,int n) 229 { 230 Student s=addStudent(); 231 stu[n] = s; 232 return ++n; 233 } 234 235 //修改学生信息 236 void alterStudent() 237 { 238 239 } 240 241 //打印标题行 242 void printTitle() 243 { 244 cout<<"学号 "<<"姓名 "<<"年龄 "<<"性别 "<<"专业 "<<"手机号"<<endl; 245 } 246 247 //输出打印学生信息 248 void getStudent(Student *stu,int n) 249 { 250 int i; 251 printTitle();//打印标题 252 for (i=0; i<n; i++) { 253 cout<<stu[i].GetNum()<<" "<<stu[i].GetName()<<" "<<stu[i].GetAge()<<" "<<stu[i].GetSex()<<" "<<stu[i].GetProfession()<<" "<<stu[i].GetTelphone()<<" "<<endl; 254 } 255 } 256 //显示菜单 257 void showMenu() 258 { 259 cout<<">>>>>>>>>>>>欢迎使用学生信息管理系统<<<<<<<<<<<<<<<"<<endl; 260 cout<<"***********************************************"<<endl; 261 cout<<"* 1.初始化学生 2.添加学生 *"<<endl; 262 cout<<"* 3.修改学生 4.删除学生 *"<<endl; 263 cout<<"* 5.显示所有学生 6.退出 *"<<endl; 264 cout<<"***********************************************"<<endl; 265 } 266 //菜单选择 267 int get_menu_choice() 268 { 269 int menu_ch; 270 do { 271 cout<<"选择菜单选项:"; 272 cin>>menu_ch; 273 if ((menu_ch<0)||(menu_ch>6)) { 274 cout<<"error!"<<endl; 275 } 276 } while ((menu_ch<0)||(menu_ch>6)); 277 return menu_ch; 278 } 279 int main(int argc, const char * argv[]) 280 { 281 282 Student* stu = new Student[NUM]; 283 284 int r1=0; 285 int r2;//保存查找的学号 286 int choose; 287 while (1) { 288 showMenu(); 289 switch (get_menu_choice()) { 290 case 1: 291 r1=setStudent(stu,NUM);//返回输入的个数 292 break; 293 case 2: 294 r1=insertStudent(stu,r1); 295 getStudent(stu, r1); 296 break; 297 case 3: 298 cout<<"请输入要修改的学生的学号:"; 299 int nn; 300 cin>>nn; 301 r2=findStudent(stu, r1, nn); 302 if (r2==-1) { 303 cout<<"没有该学生!"; 304 } 305 else 306 { 307 int iTemp; 308 char cTemp; 309 string sTemp; 310 cout<<"请输入学生学号"<<endl; 311 cin>>iTemp; 312 stu[r2].SetNum(iTemp); 313 cout<<"请输入学生姓名"<<endl; 314 cin>>sTemp; 315 stu[r2].SetName(sTemp); 316 cout<<"请输入学生年龄"<<endl; 317 cin>>iTemp; 318 stu[r2].SetAge(iTemp); 319 cout<<"请输入学生性别"<<endl; 320 cin>>cTemp; 321 stu[r2].SetSex(cTemp); 322 cout<<"请输入学生专业"<<endl; 323 cin>>sTemp; 324 stu[r2].SetProfession(sTemp); 325 cout<<"请输入学生手机号"<<endl; 326 cin>>sTemp; 327 stu[r2].SetTelphone(sTemp); 328 } 329 break; 330 case 4: 331 cout<<"请输入要删除学生的学号:"; 332 int n; 333 cin>>n; 334 r2=findStudent(stu, r1, n); 335 if (r2==-1) { 336 cout<<"没有该学生!"; 337 } 338 else 339 { 340 r1=deleteStudent(stu, r1, n); 341 cout<<"删除成功!"<<"\n"<<"显示所有学生"<<endl; 342 getStudent(stu, r1); 343 } 344 break; 345 case 5: 346 getStudent(stu, r1); 347 break; 348 case 6: 349 cout<<"您已经成功退出系统,欢迎再次使用!谢谢!"<<endl; 350 break; 351 default: 352 break; 353 } 354 } 355 return 0; 356 }