天天看点

c++封装链表实现-->学生信息管理分析系统

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

<code>//class.h 头文件</code>

<code>#include &lt;string&gt;</code>

<code>#include &lt;iostream&gt;</code>

<code>#include &lt;iomanip&gt;            //实现setw()宽字节输出</code>

<code>using</code> <code>namespace</code> <code>std;</code>

<code>class</code> <code>stuDate</code>

<code>{</code>

<code>public</code><code>:</code>

<code>        </code><code>struct</code> <code>student</code>

<code>        </code><code>{</code>

<code>            </code><code>string name;       </code><code>//姓名   </code>

<code>            </code><code>string sex;            </code><code>//性别</code>

<code>            </code><code>int</code> <code>id;</code>

<code>            </code><code>float</code> <code>eng,math,chinese,c,sum;</code>

<code>            </code><code>struct</code> <code>student *next;</code>

<code>        </code><code>};</code>

<code>};</code>

<code>class</code> <code>stuList :</code><code>public</code> <code>stuDate</code>

<code>private</code><code>:</code>

<code>    </code><code>int</code> <code>num;       </code><code>//人数</code>

<code>    </code><code>struct</code> <code>student *head;</code>

<code>    </code><code>stuList();</code>

<code>    </code><code>void</code> <code>_creat();</code>

<code>    </code><code>void</code> <code>_print();</code>

<code>    </code><code>void</code> <code>_sort();</code>

<code>stuList::stuList()</code>

<code>    </code><code>this</code><code>-&gt;head=NULL;</code>

<code>    </code><code>this</code><code>-&gt;num=0;</code>

<code>}</code>

<code>void</code> <code>stuList::_creat()</code>

<code>    </code><code>char</code> <code>res = </code><code>'Y'</code><code>;</code>

<code>    </code><code>struct</code> <code>student *p1,*p2;</code>

<code>    </code><code>p1=p2=</code><code>new</code> <code>struct</code> <code>student;</code>

<code>    </code><code>while</code><code>(res==</code><code>'Y'</code> <code>|| res == </code><code>'y'</code><code>)</code>

<code>    </code><code>{</code>

<code>        </code><code>if</code><code>(</code><code>this</code><code>-&gt;head == NULL)</code>

<code>            </code><code>this</code><code>-&gt;head=p1;</code>

<code>            </code><code>p1-&gt;id=0;</code>

<code>        </code><code>}</code>

<code>        </code><code>else</code>

<code>            </code><code>p2-&gt;next=p1;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"Name:"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;p1-&gt;name;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"Sex:"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;p1-&gt;sex;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"Chinese:"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;p1-&gt;chinese;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"Math:"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;p1-&gt;math;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"English:"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;p1-&gt;eng;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"C语言:"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;p1-&gt;c;</code>

<code>        </code><code>p1-&gt;id=</code><code>this</code><code>-&gt;num+1;</code>

<code>        </code><code>p1-&gt;sum=p1-&gt;chinese+p1-&gt;math+p1-&gt;eng+p1-&gt;c;</code>

<code>        </code><code>this</code><code>-&gt;num++;</code>

<code>        </code><code>p2=p1;</code>

<code>        </code><code>p1=</code><code>new</code> <code>struct</code> <code>student;</code>

<code>        </code><code>cout&lt;&lt;</code><code>"\n是否继续输入(Y/N):"</code><code>;</code>

<code>        </code><code>cin&gt;&gt;res;</code>

<code>        </code><code>if</code><code>(res ==</code><code>'N'</code><code>|| res == </code><code>'n'</code><code>)</code>

<code>            </code><code>break</code><code>;</code>

<code>    </code><code>}</code>

<code>    </code><code>p2-&gt;next=NULL;</code>

<code>void</code> <code>stuList::_print()</code>

<code>    </code><code>struct</code> <code>student *temp;</code>

<code>    </code><code>temp=</code><code>this</code><code>-&gt;head;</code>

<code>    </code><code>cout&lt;&lt;</code><code>"id"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"name"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"sex"</code><code>&lt;&lt;setw(10)&lt;&lt;</code><code>"Chinese"</code><code>&lt;&lt;setw(5)</code>

<code>        </code><code>&lt;&lt;</code><code>"Math"</code><code>&lt;&lt;setw(8)&lt;&lt;</code><code>"English"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"C"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"Sum"</code><code>&lt;&lt;endl;</code>

<code>    </code><code>for</code><code>(</code><code>int</code> <code>i=0;i&lt;</code><code>this</code><code>-&gt;num;i++)</code>

<code>        </code><code>cout&lt;&lt;temp-&gt;id&lt;&lt;setw(5)&lt;&lt;temp-&gt;name&lt;&lt;setw(5)&lt;&lt;temp-&gt;sex&lt;&lt;setw(5)&lt;&lt;temp-&gt;chinese&lt;&lt;setw(5)</code>

<code>            </code><code>&lt;&lt;temp-&gt;math&lt;&lt;setw(5)&lt;&lt;temp-&gt;eng&lt;&lt;setw(5)&lt;&lt;temp-&gt;c&lt;&lt;setw(5)&lt;&lt;temp-&gt;sum&lt;&lt;endl;</code>

<code>        </code><code>temp=temp-&gt;next;</code>

<code>    </code><code>cout&lt;&lt;endl;</code>

<code>    </code><code>cout&lt;&lt;</code><code>"------------------------------------------------------------总人数:"</code><code>&lt;&lt;</code><code>this</code><code>-&gt;num;</code>

<code>void</code> <code>stuList::_sort()</code>

<code>    </code><code>struct</code> <code>student *first;            </code><code>/*排列后有序链的表头指针*/</code>

<code>    </code><code>struct</code> <code>student *tail;             </code><code>/*排列后有序链的表尾指针*/</code>

<code>    </code><code>struct</code> <code>student *p_max;               </code>

<code>    </code><code>struct</code> <code>student *max;</code>

<code>    </code><code>struct</code> <code>student *p;</code>

<code>    </code><code>p=</code><code>this</code><code>-&gt;head;</code>

<code>    </code><code>if</code><code>(</code><code>this</code><code>-&gt;head!=NULL)</code>

<code>        </code><code>first=NULL;</code>

<code>            </code><code>while</code> <code>(head != NULL)</code>

<code>            </code><code>{</code>

<code>                </code><code>for</code> <code>(p=</code><code>this</code><code>-&gt;head,max=</code><code>this</code><code>-&gt;head; p-&gt;next!=NULL; p=p-&gt;next)</code>

<code>                </code><code>{</code>

<code>                    </code><code>if</code> <code>(p-&gt;next-&gt;sum &gt; max-&gt;sum)         </code><code>//以总分排序</code>

<code>                    </code><code>{</code>

<code>                        </code><code>p_max=p;</code>

<code>                        </code><code>max=p-&gt;next;</code>

<code>                    </code><code>}</code>

<code>                </code><code>}</code>

<code>                </code><code>if</code><code>(first==NULL)</code>

<code>                    </code><code>first=max;</code>

<code>                    </code><code>tail=max;</code>

<code>                </code><code>else</code>

<code>                    </code><code>tail-&gt;next=max;</code>

<code>                </code><code>if</code><code>(max==</code><code>this</code><code>-&gt;head)</code>

<code>                    </code><code>this</code><code>-&gt;head=</code><code>this</code><code>-&gt;head-&gt;next;</code>

<code>                    </code><code>p_max-&gt;next=max-&gt;next;</code>

<code>            </code><code>}</code>

<code>            </code><code>if</code><code>(first!=NULL)</code>

<code>                </code><code>tail-&gt;next=NULL;</code>

<code>            </code><code>cout&lt;&lt;</code><code>"id"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"name"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"sex"</code><code>&lt;&lt;setw(10)&lt;&lt;</code><code>"Chinese"</code><code>&lt;&lt;setw(5)</code>

<code>                </code><code>&lt;&lt;</code><code>"Math"</code><code>&lt;&lt;setw(8)&lt;&lt;</code><code>"English"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"C"</code><code>&lt;&lt;setw(5)&lt;&lt;</code><code>"Sum"</code><code>&lt;&lt;endl;</code>

<code>            </code><code>for</code><code>(</code><code>int</code> <code>i=0;i&lt;</code><code>this</code><code>-&gt;num;i++)</code>

<code>                </code><code>cout&lt;&lt;first-&gt;id&lt;&lt;setw(5)&lt;&lt;first-&gt;name&lt;&lt;setw(5)&lt;&lt;first-&gt;sex&lt;&lt;setw(5)&lt;&lt;first-&gt;chinese&lt;&lt;setw(5)</code>

<code>                    </code><code>&lt;&lt;first-&gt;math&lt;&lt;setw(5)&lt;&lt;first-&gt;eng&lt;&lt;setw(5)&lt;&lt;first-&gt;c&lt;&lt;setw(5)&lt;&lt;first-&gt;sum&lt;&lt;endl;</code>

<code>                </code><code>first=first-&gt;next;</code>

<code>//stu.cpp    调用class。h</code>

<code>#include "class.h"</code>

<code>int</code> <code>main()</code>

<code>    </code><code>stuList A;</code>

<code>    </code><code>A._creat();</code>

<code>    </code><code>A._print();</code>

<code>    </code><code>A._sort();</code>

<code>    </code><code>return</code> <code>0;</code>

本文转自 nw01f 51CTO博客,原文链接:http://blog.51cto.com/dearch/1758724,如需转载请自行联系原作者

继续阅读