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 }