题 目 一:学分和绩点计算器——求改正
题目描述:开发一个能够自动计算适合于南京邮电大学学生使用的所获学分和绩点的计算器。并且该绩点计算器能够保证良好的扩展性能。
基本要求:(1)输入课程名、学分和成绩,通过绩点计算公式计算相应的绩点;
(2)判断所获得的绩点是否合格,能给出相应的结果提示;
(3)程序操作友好、界面美观。
提高要求:(1)从文件中读取课程的学分与成绩,并保存绩点计算的结果;
(2)根据排序算法排序,给出每门课程所获得的绩点。
设计提示:根据南京邮电大学的本科生《南京邮电大学学生学籍管理办法》规定:为反映学生学习的质量,采用学分绩点制的学习质量评定方法。学生学分绩点以平均学分绩点(GPA)表示,其计算方法如下:
低于60分折合为0绩点,不及格折合为0绩点
60—69 分折合为1.0—1.9绩点,及格折合为1.0绩点;
70—79 分折合为2.0—2.9绩点,中等折合为2.0绩点;
80—89 分折合为3.0—3.9绩点,良好折合为3.0绩点;
90—100分折合为4.0—5.0绩点,优秀折合为4.0绩点。
平均学分绩点(GPA)= ∑(课程学分数×绩点数×K)
________________________________________ ∑课程学分数
平均学分绩点分为学年平均学分绩点和累积平均学分绩点:即按学年结算的平均学分绩点称为学年平均学分绩点;从入学后累积结算的平均学分绩点积为累积平均学分绩点。
1. #include<iostream>
2. #include<fstream>
3. #include<sstream>
4. #include<string>
5. #include<iomanip>
6. #include<vector>
7. #include<algorithm>
8. #include<numeric>
9. #include<functional>
10.
11. using namespace std;
12.
13.
14.
15.
16. class Course{
17. private:
18. int no;//序号
19. string year;//学年学期
20. int code;//课程代码
21. string name;//课程名称
22. float credit;//学分
23. int score;//成绩
24. string quality;//成绩性质
25. string courseQua;//课程性质
26. float gpa;//绩点,(非绩点和)
27.
28.
29. public:
30. //构造与析构 及赋值运算符
31. Course(){}
32. Course(int noV,string yearV,int codeV,string nameV,float creditV,int scoreV,string qualityV,string courseQuaV="#")
33. :no(noV),year(yearV),code(codeV),name(nameV),credit(creditV),score(scoreV),quality(qualityV),courseQua(courseQuaV){}
34. Course(const Course& temp)
35. {
36. no = temp.no;
37. year = temp.year;
38. code = temp.code;
39. name = temp.name;
40. credit = temp.credit;
41. score = temp.score;
42. quality = temp.quality;
43. courseQua = temp.courseQua;
44. gpa = temp.gpa;
45. }
46. ~Course(){}
47. Course& operator = (const Course& temp)
48. {
49. no = temp.no;
50. year = temp.year;
51. code = temp.code;
52. name = temp.name;
53. credit = temp.credit;
54. score = temp.score;
55. quality = temp.quality;
56. courseQua = temp.courseQua;
57. gpa = temp.gpa;
58. return *this;
59. }
60.
61. //访问器成员函数
62. string getYear() const {return year;}
63. string getName() const {return name;}
64. float getCredit() const {return credit;}
65. float getGpa() const {return gpa;}
66. int getScore() const {return score;}
67.
68.
69. //mutator 函数
70. void set(int noV,string yearV,int codeV,string nameV,float creditV,int scoreV,string qualityV,string courseQuaV="#")
71. {
72. no=noV;
73. year=yearV;
74. code=codeV;
75. name=nameV;
76. credit=creditV;
77. score=scoreV;
78. quality=qualityV;
79. courseQua=courseQuaV;
80. }
81. void setGpa()
82. {
83. if(score<60) gpa = 0;
84. if(score>=60&&score<=62) gpa = 1.0;
85. if(score>=63&&score<=65) gpa = 1.5;
86. if(score>=66&&score<=69) gpa = 1.8;
87. if(score>=70&&score<=72) gpa = 2.0;
88. if(score>=73&&score<=75) gpa = 2.5;
89. if(score>=76&&score<=79) gpa = 2.8;
90. if(score>=80&&score<=82) gpa = 3.0;
91. if(score>=83&&score<=85) gpa = 3.5;
92. if(score>=86&&score<=89) gpa = 3.8;
93. if(score>=90&&score<=92) gpa = 4.0;
94. if(score>=93&&score<=95) gpa = 4.5;
95. if(score>=96&&score<=100) gpa = 4.8;
96. }
97.
98. void show()
99. {
100. cout<<left<<setw(10)<<year<<setw(36)<<name;
101. cout<<setw(5)<<credit<<setw(5)<<score;
102. cout<<setw(6)<<quality<<setw(6)<<gpa<<endl;
103. }
104.
105. //运算符重载
106. bool operator < (const Course& temp) const
107. {
108. if(score < temp.score) return true;
109. else return false;
110. }
111.
112. bool operator > (const Course& temp) const
113. {
114. if(score > temp.score) return true;
115. else return false;
116. }
117.
118.
119. friend class List;
120.
121. };
122.
123.
124. class CourseSigma: public Course
125. {
126. private:
127. float creditPlusGpa;
128. public:
129. CourseSigma(const Course& temp):Course(temp),creditPlusGpa(temp.getCredit() * temp.getGpa()){}
130. bool operator < (const CourseSigma& temp) const
131. {
132. return creditPlusGpa < temp.creditPlusGpa? true : false ;
133. }
134.
135. bool operator > (const CourseSigma& temp) const
136. {
137. return creditPlusGpa > temp.creditPlusGpa? true : false ;
138. }
139.
140. void show()
141. {
142. cout<<left<<setw(10)<<getYear()<<setw(36)<<getName();
143. cout<<setw(5)<<getCredit()<<setw(5)<<getScore();
144. cout<<setw(6)<<getGpa()<<setw(5)<<creditPlusGpa<<endl;
145. }
146. };
147.
148.
149. class List{
150. public:
151. vector<Course> data;
152.
153. public:
154. List(){}
155. ~List(){}
156.
157. //
158. void add(const Course& temp){data.push_back(temp);}//在矢量尾添加一个元素
159. void sort_des(){sort( data.begin() , data.end() , less<Course>() );}//升序排序
160. void sort_asc(){sort( data.begin() , data.end() , greater<Course>() );}//降序排序
161. void clear_list(){ data.clear(); }
162.
163. int getAmount()
164. {
165. int count = 0 ;
166. vector<Course>::iterator iter = data.begin();
167. while( iter != data.end() )
168. {
169. count++;
170. iter++;
171. }
172. return count;
173. }
174.
175. void show()
176. { int i=0;
177. vector<Course>::iterator iter = data.begin();
178. while( iter != data.end() )
179. {cout<<left<<setw(3)<<i++; iter++->show();}
180. }
181.
182. //用于输出运算后的内容
183.
184. float getCreditSum()//获得学分和
185. {
186. float sum = 0;
187. vector<Course>::iterator iter = data.begin();
188. while( iter != data.end() )
189. {
190. sum += iter->getCredit();
191. iter ++;
192. }
193. return sum;
194. }
195. float getGpaSum()//获得绩点和(Σ学分*绩点)
196. {
197. float sum = 0;
198. vector<Course>::iterator iter = data.begin();
199. while( iter != data.end() )
200. {
201. sum += ( (iter->getCredit()) * (iter->getGpa()) );
202. iter++;
203. }
204.
205. return sum;
206. }
207.
208. float getAverageGpa(){return getGpaSum()/getCreditSum(); }
209.
210.
211. };
212.
213.
214. void declaration();//用于在程序之前输出内容声明
215. void stat_a();
216. void stat_b();
217. void stat_c();
218. void stat_d();
219. void stat_e();
220.
221.
222. List list;//数据矢量作为全局对象
223. float gpa_sum = 0;
224. float credit_sum = 0;
225. float average_gpa = 0;
226. List list2;
227. void function1_b();
228. ///////////////////////////////////////////////////////////////////////////////////////////
229. ///////////////////////////////////////////////////////////////////////////////////////////
230.
231. int main()
232. {
233. declaration();
234.
235. //功能实现
236. //打开文件,载入数据,生成数据库, 显示数据
237. ifstream infile;
238. infile.open("1.txt");
239. if(!infile) cout<<"文件打开失败! @_@# 请确认您的工作目录下包含文件\"1.txt\" !"<<endl;
240. else
241. {
242. cout<<"\a数据开始载入!"<<endl<<endl;
243. int no;//序号 0
244. string year;//学年学期 1
245. int code;//课程代码 2
246. string name;//课程名称 3
247. float credit;//学分 4
248. int score;//成绩 5
249. string quality;//成绩性质 6
250. string courseQua;//课程性质 7
251.
252. Course courseTemp;
253. string::size_type pos[10]={0};
254. string data[8];
255. string buf;//存储从文件中读来的一行数据
256.
257.
258. while( getline( infile , buf ) )
259. {
260. istringstream inStr;
261. istringstream inStr2,inStr4,inStr5;
262.
263. pos[0] = buf.find_first_not_of(" ");
264. pos[1] = buf.find_first_of(" " , pos[0] );
265. data[0] = buf.substr(pos[0] , pos[1]-pos[0]);
266. //cout<<data[0]<<"x"<<endl;
267. if(data[0] != "序号") {inStr.str(data[0]); inStr>>no;inStr.sync();}
268. else continue;
269.
270. for(int i = 1 ; i <= 6 ; i ++ )
271. {
272. pos[i] = buf.find_first_not_of(" ", pos[i] );
273. pos[i+1] = buf.find_first_of(" " , pos[i] );
274. data[i] = buf.substr(pos[i] , pos[i+1]-pos[i]);
275.
276. //cout<<data[i]<<endl;
277. /*switch(i)
278. {
279. case 1:year = data[1]; break;
280. case 2:{istringstream inStr2(data[2]); inStr>>code; break;}
281. case 3:name = data[3]; break;
282. case 4:{istringstream inStr4(data[4]); inStr>>credit; break;}
283. case 5:{istringstream inStr5(data[5]); inStr>>score; break;}
284. case 6:quality = data[6]; break;
285. }*/
286. }
287. year = data[1];
288. inStr2.str( data[2] ); inStr2>>code;//cout<<inStr2.str()<<" "<<code<<endl;
289. name = data[3];
290. inStr4.str( data[4] ); inStr4>>credit;//cout<<inStr4.str()<<" "<<credit<<endl;
291. if( data[5] == "优" ) score = 95;
292. else if( data[5] == "良" ) score = 85;
293. else if( data[5] == "中" ) score = 75;
294. else if( data[5] == "及格" ) score = 65;
295. else if( data[5] == "不及格" ) score = 0;
296. else
297. {inStr5.str( data[5] ); inStr5>>score;}//cout<<inStr5.str()<<" "<<score<<endl;}
298. quality = data[6];
299.
300. //cout<<left<<setw(2)<<no<<left<<setw(10)<<year<<left<<setw(30)<<name<<left<<setw(5)<<credit<<left<<setw(5)<<score<<left<<setw(6)<<quality<<endl;
301. courseTemp.set(no , year , code , name , credit , score , quality);
302. courseTemp.setGpa();
303. list.add(courseTemp);
304. }
305.
306. }
307.
308. //进行各门课程绩点的计算与设置
309.
310.
311.
312.
313. cout<<endl<<"数据载入成功!可以进行运算了。"<<endl<<endl;
314.
315. list.show();cout<<endl;
316. system("pause");
317. cout<<"--------------------------------\a我是华丽的分割线------------------------------"<<endl<<endl;
318.
319.
320.
321.
322. //进入功能菜单
323. cout<<"请选择:"<<endl;
324. cout<<" a.我要查看 降序排列的成绩;\n\n b.我要查看 降序排列的 学科总绩点(= 学分 x 绩点);\n\n c.我要查看 平均绩点。\n"<<endl<<endl;
325. cout<<"请选择 (不区分大小写): ";
326. char choice = '0';
327. cin>>choice;
328. cout<<endl;
329. bool end=false;
330. while( 1 )
331. {
332. switch(choice)
333. {
334. case 'a': case 'A': cout<<"-----------------------------------------------------------------------------\n"<<endl;cout<<"\a按成绩从高到低: \n"<<endl; list.sort_asc();list.show();cout<<endl;break;
335. case 'b': case 'B': cout<<"-----------------------------------------------------------------------------\n"<<endl;function1_b();cout<<'\a'<<endl;break;
336. case 'c': case 'C':
337. {
338. cout<<"-----------------------------------------------------------------------------\n"<<endl;
339. cout<<"\a您的 "<<list.getAmount()<<" 门成绩: 总学分为: "<<list.getCreditSum()<<" ; 平均绩点为: "<<list.getAverageGpa()<<" 。"<<endl;
340. end=true;cout<<endl;break;
341. }
342. default: cout<<"对不起,您的输入有误!"<<endl<<endl;cout<<"\a-----------------------------------------------------------------------------\n"<<endl;
343. }
344. system("pause");
345. cin.sync();//【】刷新cin缓冲区??
346. if( end == true ) {cout<<"--------------------------------\a我是华丽的分割线------------------------------"<<endl;break;}
347. cout<<"--------------------------------\a我是华丽的分割线------------------------------\n"<<endl;
348. cout<<" a.我要查看 降序排列的成绩;\n\n b.我要查看 降序排列的 学科总绩点(= 学分 x 绩点);\n\n c.我要查看 平均绩点。\n"<<endl<<endl;
349. cout<<"请选择 (不区分大小写): ";
350. cin>>choice;
351. cout<<endl;
352. }
353.
354.
355. ::gpa_sum = list.getGpaSum();
356. ::credit_sum = list.getCreditSum();
357. ::average_gpa = list.getAverageGpa();
358.
359. ofstream out;
360. out.open("成绩结果输出.txt");
361. out<<"您的总学分为: "<< credit_sum <<endl;
362. out<<"您的所有课程的平均绩点为:"<< average_gpa <<endl;
363. out<<"\n"<< endl <<endl;
364. //out.close();
365.
366.
367.
368. //统计功能
369. /*
370. 1.按学期。学年 统计学分和绩点
371. 2.低于平均绩点的学科,对绩点贡献
372. 3.高于平均绩点的学科,
373. 4.最不淡定的成绩,高一分则增加多少绩点
374. */
375.
376. end=false;
377. while(true)
378. {
379. cout<<endl<<endl;
380. cout<<"【统计功能菜单】\n"<<endl;
381. cout<<"请 选 择 :\n"<<endl;
382. cout<<"a.查看【低于平均绩点】的学科;\n"<<endl;
383. cout<<"b.查看【高于平均绩点】的学科;\n"<<endl;
384. cout<<"c.查看各【学期】获得的学分、绩点;\n"<<endl;
385. cout<<"d.查看各【学年】获得的学分、绩点;\n"<<endl;
386. cout<<"e.查看让你【不淡定】的学科。\n"<<endl;
387. cout<<"f.退出。\n"<<endl;
388. cout<<"请 选 择 :";
389.
390. cin>>choice;
391. cout<<"\n"<<endl;
392. cin.sync();
393. cout<<endl;
394. switch(choice)
395. {
396. case 'a': case 'A': stat_a(); break;
397. case 'b': case 'B': stat_b(); break;
398. case 'c': case 'C': stat_c(); break;
399. case 'd': case 'D': stat_d(); break;
400. case 'e': case 'E': stat_e(); break;
401. case 'f': case 'F': cout<<"感谢您的使用!\n"<<endl; end=true; break;
402. default:
403. cout<<"对不起,您的输入有误!"<<endl<<endl;
404. cout<<"\a-----------------------------------------------------------------------------\n"<<endl;
405. }
406.
407. if( end ) break;
408.
409. }
410.
411.
412.
413.
414.
415.
416. cout<<"\a\a\a\a\aBy 张哲 [仪器科学与工程学院] 2010级\n"<<endl;
417. cout<<"程序终止。\n"<<endl;
418. system("pause");
419. system("pause");
420. return 0;
421. }
422.
423.
424.
425. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
426. ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
427.
428.
429. void function1_b()
430. {
431. vector<CourseSigma> list3;
432. vector<Course>::iterator iter = ::list.data.begin();
433. while( iter != ::list.data.end() )
434. {
435. //(*iter).show();
436. list3.push_back(CourseSigma(*iter));
437. iter++;
438. }
439.
440. sort(list3.begin(), list3.end(), greater<CourseSigma>() );
441.
442. cout<<left<<setw(10)<<"学年:"<<setw(36)<<"学科:"<<setw(5)<<"学分:"<<setw(5)<<"成绩:"<<setw(6)<<"绩点:"<<setw(5)<<"学分 x 绩点"<<endl;
443.
444. vector<CourseSigma>::iterator iter2 = list3.begin();
445. while( iter2 != list3.end())
446. (*iter2++).show();
447.
448. cout<<endl<<endl;
449. }
450.
451.
452.
453. void stat_a()//【低于平均绩点】
454. {
455. cout<<"-----------------------------------------------------------------------------\n"<<endl;
456. list2.clear_list();
457. for(vector<Course>::iterator iter = list.data.begin() ; iter < list.data.end() ; iter ++ )
458. {
459. if( iter->getGpa() < ::average_gpa ) list2.add(*iter);
460. }
461.
462. cout<<"您的【低于】平均绩点的课程如下:"<<endl<<endl;
463. list2.show();
464. cout<<endl<<endl;
465.
466. cout<<"--------------------------------\a我是华丽的分割线------------------------------"<<endl<<endl;
467. system("pause");
468. }
469. void stat_b()//【高于平均绩点】
470. {
471. cout<<"-----------------------------------------------------------------------------\n"<<endl;
472. list2.clear_list();
473. for(vector<Course>::iterator iter = list.data.begin() ; iter < list.data.end() ; iter ++ )
474. {
475. if( iter->getGpa() > ::average_gpa ) list2.add(*iter);
476. }
477.
478. cout<<"您的【高于】平均绩点的课程如下:"<<endl<<endl;
479. list2.show();
480. cout<<endl<<endl;
481.
482. cout<<"--------------------------------\a我是华丽的分割线------------------------------"<<endl<<endl;
483. system("pause");
484. }
485. void stat_c()//【学期】
486. {
487. cout<<"-----------------------------------------------------------------------------"<<endl;
488. vector<string> semester_list;
489. semester_list.push_back(list.data.front().getYear());
490. bool is_inList = false;
491. for(vector<Course>::iterator iter = list.data.begin()+1; iter != list.data.end(); iter++)
492. {
493. for(vector<string>::iterator iter2 = semester_list.begin(); iter2 != semester_list.end(); iter2++)
494. {
495. if((*iter).getYear() == *iter2) { is_inList = true ; break;}
496. }
497.
498. if(is_inList == false)
499. {
500. //cout<<(*iter).getYear()<<endl;
501. semester_list.push_back((*iter).getYear());
502.
503. }
504. is_inList = false ;
505. }
506.
507. int count_years = semester_list.size();
508. vector< vector<Course> > list_by_year(count_years);
509. vector< vector<Course> >::iterator iter_complex = list_by_year.begin();
510. vector<Course>::iterator iter_Course;
511. vector<string>::iterator iter_string;
512. for(iter_string = semester_list.begin(); iter_string != semester_list.end(); iter_string++)
513. {
514. for(iter_Course = ::list.data.begin(); iter_Course != ::list.data.end(); iter_Course++)
515. {
516. if((*iter_string) == (*iter_Course).getYear() ) (*iter_complex).push_back(*iter_Course);
517. }
518. iter_complex++;
519. }
520.
521. for(iter_complex = list_by_year.begin(); iter_complex != list_by_year.end(); iter_complex++)
522. {
523. cout<<endl;
524. cout<<(*iter_complex).front().getYear()<<"学期 :\n "<<endl;
525. /*
526. for(iter_Course = (*iter_complex).begin(); iter_Course != (*iter_complex).end(); iter_Course++)
527. {
528. (*iter_Course).show();
529. }
530. */
531.
532. List list_temp;
533. list_temp.data.assign((*iter_complex).begin(),(*iter_complex).end());
534. list_temp.show();
535. cout<<endl;
536. cout<<"该学期您取得的总学分为:"<<list_temp.getCreditSum() <<" 平均绩点为:"<<list_temp.getAverageGpa() <<endl;
537. cout<<endl;
538. cout<<"-----------------------------------------------------------------------------"<<endl;
539.
540. }
541.
542. cout<<'\a'<<endl;
543. system("pause");
544. }
545. void stat_d()//【学年】
546. {
547. cout<<"-----------------------------------------------------------------------------"<<endl;
548. vector<string> semester_list;
549. semester_list.push_back(list.data.front().getYear().substr(0,5));
550. bool is_inList = false;
551. for(vector<Course>::iterator iter = list.data.begin()+1; iter != list.data.end(); iter++)
552. {
553. for(vector<string>::iterator iter2 = semester_list.begin(); iter2 != semester_list.end(); iter2++)
554. {
555. if((*iter).getYear().substr(0,5) == *iter2) { is_inList = true ; break;}
556. }
557.
558. if(is_inList == false)
559. {
560. //cout<<(*iter).getYear()<<endl;
561. semester_list.push_back((*iter).getYear().substr(0,5));
562.
563. }
564. is_inList = false ;
565. }
566.
567. int count_years = semester_list.size();
568. vector< vector<Course> > list_by_year(count_years);
569. vector< vector<Course> >::iterator iter_complex = list_by_year.begin();
570. vector<Course>::iterator iter_Course;
571. vector<string>::iterator iter_string;
572. for(iter_string = semester_list.begin(); iter_string != semester_list.end(); iter_string++)
573. {
574. for(iter_Course = ::list.data.begin(); iter_Course != ::list.data.end(); iter_Course++)
575. {
576. if((*iter_string) == (*iter_Course).getYear().substr(0,5) ) (*iter_complex).push_back(*iter_Course);
577. }
578. iter_complex++;
579. }
580.
581. for(iter_complex = list_by_year.begin(); iter_complex != list_by_year.end(); iter_complex++)
582. {
583. cout<<endl;
584. cout<<(*iter_complex).front().getYear().substr(0,5)<<"学年 :\n "<<endl;
585. /*
586. for(iter_Course = (*iter_complex).begin(); iter_Course != (*iter_complex).end(); iter_Course++)
587. {
588. (*iter_Course).show();
589. }
590. */
591.
592. List list_temp;
593. list_temp.data.assign((*iter_complex).begin(),(*iter_complex).end());
594. list_temp.show();
595. cout<<endl;
596. cout<<"该学年您取得的总学分为:"<<list_temp.getCreditSum() <<" 平均绩点为:"<<list_temp.getAverageGpa() <<endl;
597. cout<<endl;
598. cout<<"-----------------------------------------------------------------------------"<<endl;
599.
600. }
601.
602. cout<<'\a'<<endl;
603.
604. system("pause");
605. }
606. void stat_e()//【不淡定】2,5,9
607. {
608. cout<<"-----------------------------------------------------------------------------\n"<<endl;
609. cout<<"功能简介:\n"<<endl;
610. cout<<"此功能将统计您的成绩的个位为[2,5,9]的学科\n\n在此情况下,当您的成绩再增加1分,您的绩点会相应的上升一个等级.\n\n"<<endl;
611. cout<<"友情提示:\n\n 老师必定也不会故意将您的成绩绩点降低等级的,要相信老师已经努力帮您提分了\n\n 所以当您看到结果时,就请不要在心中默默问候老师了.....囧rz\n\n"<<endl;
612. vector<Course> list_NotCalm;
613. int mod = 0;
614. for(vector<Course>::iterator iter = list.data.begin(); iter != list.data.end(); iter++)
615. {
616. mod = (*iter).getScore()%10;
617. if(mod == 2 || mod == 5 || mod == 9)
618. list_NotCalm.push_back(*iter);
619. }
620.
621. if(list_NotCalm.size() == 0) cout<<"恭喜您!老师都很给力啊!"<<endl;
622. else
623. {
624. cout<<left<<setw(10)<<"学年:"<<setw(36)<<"学科:"<<setw(5)<<"学分:"<<setw(5)<<"成绩:"<<setw(6)<<"性质:"<<setw(6)<<"绩点:"<<endl;
625. for(vector<Course>::iterator iter2 = list_NotCalm.begin(); iter2 != list_NotCalm.end(); iter2++)
626. (*iter2).show();
627. }
628. cout<<endl;
629. cout<<"-----------------------------------------------------------------------------"<<endl;
630. cout<<'\a'<<endl;
631.
632. system("pause");
633. }
634.
635.
636.
637.
638. void declaration()//用于在程序之前输出内容声明
639. { //cout<<""<<endl; cout<<endl;
640.
641. cout<<"********************************************"<<endl;//再版声明
642. cout<<"*【东南大学】 学分绩点计算器 1.0.2 升级版 *"<<endl;
643. cout<<"********************************************"<<endl;
644. cout<<" -----By 张哲 "<<endl;
645. cout<<" -----From 【220仪科学院】"<<endl;
646. cout<<" 2011/7/5 发布"<<endl;
647. cout<<""<<endl;//程序使用说明
648. cout<<"What's NEW !(新版本更新了什么功能)"<<endl;//what's new
649. cout<<"1.美化输出格式;\n\n2.使用STL库,优化内存管理;\n\n3.新增计算总学分功能;\n\n4.新增多种绩点分析功能;\n\n5.优化了数据读入,无需手动修改\"优良中及格\"形式的成绩。\n"<<endl;
650.
651. cout<<"请按任意键,进入 “使用说明” 界面。\n"<<endl;
652. system("pause");
653. cout<<"--------------------------------\a我是华丽的分割线------------------------------"<<endl;
654.
655. cout<<"\n\n【使 用 说 明 :】"<<endl<<endl;
656. cout<<"1.打开校园网的【学生登录】网页,并登入【成绩服务】--【成绩查询】;\n"<<endl;
657. cout<<"2.将成绩表格全部复制下来(【注意】:最下面的【学年】和【总学分】两行不要!);\n"<<endl;
658. cout<<"3.将刚刚复制的表格粘贴在 ”1.txt“。【 请保证文件与该程序在【同一目录下】 】;\n"<<endl;
659. cout<<"4.请自行删去【不计算绩点】的诸如人文,经管,自然科学等课程;\n"<<endl;
660. cout<<"5.如果您确保以上操作已经正确执行,\n"<<endl;
661. system("pause");
662. //cout<<"\n"<<endl;
663. //cout<<"\n"<<endl;
664.
665.
666.
667. cout<<endl;
668. cout<<endl;
669. cout<<"--------------------------------\a我是华丽的分割线------------------------------"<<endl;
670. }