#include<bios.h>
$ M0 ?. G1 q& y#include<dos.h> /*頭文件*/
: O9 _. N6 A7 N, O5 P#include<conio.h>
( N- y& I+ b% H) g6 q' U& D#include<ctype.h>
- b7 i9 w- c3 [: X" c#include<process.h>
( o. v9 a5 k! M( X2 V#include<stdlib.h>
! b7 i' X( x6 Z5 i#include<stdio.h>
5 [! E' ^# }2 X$ e3 F#include<string.h>
3 ?+ }; k# s8 A. B% M, t2 t' \5 C j: K) |9 F+ H3 V6 E) ]8 G- k/ pint shoudsave=0;
9 W5 R& u, Y% m' K2 G! e& z6 j( L. x#define NULL 0
- @- h5 C5 s' J/ Y! P#define F1 0x3b00
6 g. z0 T1 V! G0 Z1 k/ A#define F2 0x3c00
& a- q% C2 Z$ B! o1 J0 `/ D3 r#define F3 0x3d00
3 ]% x3 U1 o/ P2 F' P! t#define F4 0x3e00
5 J, W3 ]4 }4 g* J: `, U" r#define F5 0x3f00
* U8 r8 y- r N. C3 F" l3 {#define F6 0x4000
7 b$ A' j2 k! K+ w" P+ Z! w9 D5 K5 J, H% S! l4 I% c3 h. I- Z+ R) K+ |9 |8 L! k8 }' u0 }struct student
, ~$ O* w0 q1 J+ _# `{
/ ]. R4 u+ |& l; z; f* S+ pchar num[15];
7 y9 f/ M" A. E$ rchar name[10];
0 _' u3 W @6 d9 Hchar sex[10];
, _" Z, b- a" Z8 wchar bo[10];
: Q1 d4 N( X' ~1 g# y! i0 l- l+ ^char ad[50];
( ]7 b, ^. F/ \$ l8 Tchar tel[15];
' Y `9 u* E7 Q ]3 w6 O% dchar E[15];
( s5 u8 y1 q0 i4 Echar neartime[10];/* 最近更新時(shí)間 */
: F2 w' V( Q3 C' {};
7 I! d: Q3 V8 l& t G: ?5 F* L( h- \# U% k& F5 B8 Y6 _# T; J* utypedef struct n
7 `0 C, |* B6 w& l3 s2 s{
* d7 B; `3 Q0 R" E' |struct student data;
* _8 U7 L6 p' E8 v) X3 Ystruct n *next;
% Q9 Y1 N- X! R7 D: I6 L}N,*Link;
; N# A1 u" y5 }3 W: Q# I8 J8 e4 R u X% N E' Z8 q2 v: J, ` kvoid HelpMessage()
" `: S# Q2 q, a! A{ clrscr();
' ~) }% h; C( C! V3 d! H, ^printf("\ \n 使用方法:系統輸入數據后,將在當前目錄中建立一個(gè)文件\n 此程序在WIN-TC下運行通過(guò)\n\n此系統還有許多不夠完整和嚴密性,敬請指正!");
5 t4 |/ s% r1 ? ^% P3 l mgetch();
* k S, S* D, |}
, }2 A5 \% M/ p. f1 f8 B# S/ ?, Q" o5 C% e3 Q! B kint GetKey(void) /*此函數返回一個(gè)按鍵的數值*/
. R5 N, I2 W$ K{ int key;
2 i7 i. H* Y. _8 F! E; mkey=bioskey(0); /*bioskey為調用BIOS鍵盤(pán)接口*/
: Q& z0 L; J8 Q% W% ?$ Eif(key<<8) /*位移*/
; [3 a- O" I9 [0 T7 H{
& q, H' B, C) s4 h2 Pkey=key&0x00ff;
; b' ~. S* V) }! r l o5 s* n, I' ]4 H: r! Q! S; F}
1 F, r: C& m: U. p: T, Nreturn key; /*返回按鍵*/
/ g8 b* K4 D/ P! L$ ~" w}
1 e4 ^0 F! K3 O9 |. ]" T. j- p Y# }* x0 `# t) N/ f# \) \& X6 l N9 j. K6 qvoid paint()
0 y- |/ V1 f5 A0 n9 @8 q{
% j4 S3 R. d7 J6 p& d" F: u% Hprintf("********************************************************************************");
. a: B$ n# Y" P; z1 Mprintf("\t1登記學(xué)生資料\t\t\t\t\t2刪除學(xué)生資料\n");
9 ^- p- s _2 c) a* } z8 I- r/ n7 dprintf("\t3查詢(xún)學(xué)生資料\t\t\t\t\t4修改學(xué)生資料\n");
2 i# ]2 ^) O& K8 ]; [printf("\t5保存學(xué)生資料\t\t\t\t\t0退出系統\n");
/ W+ H, R! y) c5 K$ b+ F2 R* v) Xprintf("********************************************************************************\n");
( _/ Q- D6 {9 P0 p2 D}
Z5 w, |/ m/ T( F6 j$ q' j, `: m' W( F/ }/ t7 bvoid print()
* R, Y1 ^3 K1 k; y# @{
( b& e8 N, M7 Xprintf("-----------------------------------------------------------------------\n");
. S1 {7 U. d7 O5 S0 ^6 I}
' S N; {" `* e- p, @void Wrong()
. I9 T& _6 C# E1 E6 U2 c9 G! S{
; l1 Y8 s! ^% Z& v: ?- Rprintf("\n=====>提示:輸入錯誤!\n");
0 d7 s1 P) v, f4 ~9 i1 k}
- @1 D0 M3 {1 x( D+ j/ c/ |# v2 y, r4 K1 ^( w" A' uvoid Nofind()
5 e" o4 u# K. G7 Y{
3 w j: g7 J/ l" o4 \; T- u8 Vprintf("\n=====>提示:沒(méi)有找到該學(xué)生!\n");
# q" K4 M3 G$ @2 P8 s}
9 W( o3 d5 }4 V' t. Wu( H7 j6 E8 s% B `void printe(N *p)
z) n: w: @1 q! j{
& v, p4 Z) A( A0 ?$ N9 Xprintf("%-12s%s\t%s\t%d\t%d\t%d\t %d\t\n",p->data.num,p->data.name,p->data.sex,p->data.bo,p->data.ad,p->data.tel,p->data.E);
: E- K9 | s1 _3 x- s}
" P! k" X- ^. g9 c# Z. |, m" H8 H% S2 n" M1 H2 }N* Locate(Link l,char findmess[],char nameornum[]) /* 定位連表中符合要求的接點(diǎn),并返回該指針 */
1 X+ g0 M: `! C% b{
5 L2 M7 ?0 i2 l" @. A& E' MN *r;
9 q; z6 H+ O6 ^# w; @) A$ g# _if(strcmp(nameornum,"num")==0) /* 按學(xué)號查詢(xún) */
7 @9 J' ^- R+ ? T- k2 U4 U+ [{
/ c$ V! H; y* e5 O8 cr=l->next;
& ]9 A+ k9 L7 j4 R# A" g8 C' pwhile(r!=NULL)
O- e" {# A' M{
3 p9 I% d, I; h7 T$ \! Pif(strcmp(r->data.num,findmess)==0)
, m" Z4 f- z7 B) u) r5 Creturn r;
! L# `3 p( f6 r2 h% m1 nr=r->next;
5 R8 a0 v- ?! \: r7 ~5 }}
; z5 |0 r& s1 E}
: ^& _* A8 M) jelse if(strcmp(nameornum,"name")==0) /* 按姓名查詢(xún) */
\' ]% o; \1 w{
9 I0 Z/ b, R/ l" _! p! Hr=l->next;
4 B) o9 Y. [1 nwhile(r!=NULL)
6 F3 r" w( ~2 `: R9 r& _* {{
. q9 \/ [1 V, vif(strcmp(r->data.name,findmess)==0)
4 X" k' c5 Y* n8 v/ [: Dreturn r;
3 C Q7 r1 t. n Nr=r->next;
# W+ V+ K8 Q5 @- m$ i" F, |$ i}
( n2 t' \( v2 L# F" b# @; Q( g& f- u}
0 q' K7 l. g2 s. ~2 g) J2 j& [8 ~return 0;
) h% i1 ? f3 { F' r j4 q4 u}
' v- n2 `0 I) a- w1 Q1 T6 \4 L, X- p0 h7 Mvoid Add(Link l) /* 增加學(xué)生 */
" G5 G ?8 F$ y& C{
; B: r5 _3 @) i$ d! [N *p,*r,*s;
- B4 A) ~$ m8 d$ _- b+ Cchar num[15];
& h- r" r* T% ]r=l;
^# f4 ~7 ~" N6 ]+ x9 X/ j: N1 ps=l->next;
2 ?% z8 t* I$ q- A# {3 lwhile(r->next!=NULL)
# Z: b; C$ e! J4 [0 f# n ~3 vr=r->next; /* 將指針置于最末尾 */
: t* n% W/ z1 M; b5 x9 `3 ~while(1)
) n2 l: @* D9 W% z5 |{
' d. p$ ^8 E0 ]$ T) iprintf("請你輸入學(xué)號(以'0'返回上一級菜單
");
6 P0 O5 v" `: K1 s5 S: d# Tscanf("%s",num);
) x8 N1 B! V/ g& ^( hif(strcmp(num,"0")==0)
) W6 O* \. _5 e* c% I M* Sbreak;
7 F8 P+ S6 p, N& C1 e+ }5 Iwhile(s)
: _: r, _% ~7 N# q{
k9 x1 [* I" i( {# Y4 X0 ?. nif(strcmp(s->data.num,num)==0)
! t2 @4 d9 o! G1 U/ G2 o8 W{
* _8 g7 |5 _" E2 ~4 |printf("=====>提示:學(xué)號為'%s'的學(xué)生已經(jīng)存在,若要修改請你選擇'4 修改'!\n",num);
/ F2 W7 y( p( Y' L! u6 dprint();
/ S r' U$ K1 s7 yprinte(s);
0 o: \) x& G% ]- vprint();
% K' Y- f2 b, E5 lprintf("\n");
' Q: e+ m) V; P% Wreturn;
- ]. X( ^- Y1 `. y0 v}
6 u( v7 J! F* z3 ss=s->next;
_/ O; V, g* g" I/ v}
$ k. j! U7 Z' w7 A1 H) a" N( u- b2 [; `/ \7 ]$ tp=(N *)malloc(sizeof(N));
/ S/ P: s7 k' } `! E/ m2 j& T5 G3 ]strcpy(p->data.num,num);
* z( `/ ]( g5 s& z Aprintf("請你輸入姓名:");
( r8 E0 x, p1 N% o8 V6 yscanf("%s",p->data.name);
B9 ~5 Y, i7 V' R+ hgetchar();
# D+ ?2 t5 V; cprintf("請你輸入性別:");
% a' }& M9 D! b: u t: Qscanf("%s",p->data.sex);
; s% k* P9 f$ K6 Ygetchar();
6 L& h7 T' a" o# y6 O$ \printf("請你輸入生日:");
% ]+ q% `3 s4 d6 P0 Iscanf("%d",&p->data.bo);
8 w+ u' f/ t7 w5 @4 p1 Kgetchar();
( a! I2 x* L7 R$ |- t4 S! X/ \; }printf("請你輸入地址:");
8 Y; A( o: q5 h5 B( l5 u# vscanf("%d",&p->data.ad);
2 S& X: M7 b, wgetchar();
J* B4 A, E; z/ jprintf("請你輸入電話(huà):");
1 ?2 V' h4 S. V/ o) gscanf("%d",&p->data.tel);
/ o1 D" e5 H! I9 K) r( Qgetchar();
" b1 k7 f9 P% B3 p8 i P/ q/ nprintf("請你輸入E-mail:");
% m1 U6 |# F6 j3 n, Y$ p% g* Hscanf("%d",&p->data.E);
+ q3 [6 D! n" {: G4 Rgetchar();
* @, J: u6 f- P9 P) X& G1 V9 b* O' H' d, m ~- C- c: j+ D. S6 M& A: up->next=NULL;
5 p; Y/ M- Z3 Cr->next=p;
2 z7 h, D) F. i }5 r3 i+ |' |r=p;
) r a+ `0 }* |# B7 `9 Y D) ]shoudsave=1;
7 H1 B, S& I; _$ Q V' A m2 |: ~* P1 P9 Y$ _}
$ Y* `; ?; j1 M8 T d7 ^1 k}
4 C1 B$ G" b% o% N8 [, q5 B) u4 K( Z- q9 [9 X% ?, Uvoid Qur(Link l) /* 查詢(xún)學(xué)生 */
6 Q4 M! Z9 y ], B$ a9 F. q7 }+ |{
/ m7 s: S3 _: ?& S. zint sel;
, T; P* E# ~# u1 g7 pchar find[20];
5 ^6 [7 Q; e y3 ?N *p;
# E: C% D; d1 F) ~2 |3 q ~. {9 T1 N. p9 M$ ], Zif(!l->next)
$ ~* r# M9 X/ L( Q, u+ I" G{
9 [$ i5 J \5 B: \& p# J" rprintf("\n=====>提示:沒(méi)有資料可以查詢(xún)!\n");
' q: v& B1 e$ b/ Sreturn;
4 G7 M- w3 f" d; O# x- f4 b2 v% ~, n5 S' |4 ? G) ? [; N6 I7 }3 o8 H; ~}
: v1 x z3 d* u X; M! V1 Gprintf("\n=====>1按學(xué)號查找\n=====>2按姓名查找\n");
& R8 X6 {+ N1 m4 m; }, Cscanf("%d",&sel);
7 X$ J& h, ?: x3 t6 h( ]' Bif(sel==1)/* 學(xué)號 */
9 @7 X9 N! A( ^# _{
; T7 w/ E9 y `printf("請你輸入要查找的學(xué)號:");
: f! r+ F+ T/ C& @7 \5 Dscanf("%s",find);
8 q4 o- V6 w6 {* w5 T* ?9 Fp=Locate(l,find,"num");
* m. V+ A$ a4 O X# wif(p)
3 |/ D' s( ~5 p{
. k- Z2 S5 D- j. `; y/ cprintf("\t\t\t\t查找結果\n");
, H$ g# O- R1 l+ `6 A5 Pprint();
3 v. U N( t1 `/ S t# Sprinte(p);
( [, q- U9 L# N; y3 a) y0 dprint();
/ ], I- v0 `7 w! w. z" Q1 B* o* k}
3 c+ `9 U' `0 M( |else
! M& Y4 U' s4 g' cNofind();
% u7 j6 `# b" Z1 \" B a}
. H$ ]* ]3 O0 m( e! h3 g# lelse if(sel==2) /* 姓名 */
' S) \; }& o3 m& o. C1 E1 m: a5 z y{
* B7 Q3 J4 {" l% ^7 nprintf("請你輸入要查找的姓名:");
0 q) j, D s# m3 Rscanf("%s",find);
/ h4 |6 R1 |! ~& k; vp=Locate(l,find,"name");
9 X; g$ \# F) s! Cif(p)
7 L& A" G( g+ B' t{
: ]& ]( d4 O4 P. C9 b4 qprintf("\t\t\t\t查找結果\n");
0 |9 R1 Y+ s# E4 |print();
% z& i2 I' } \& Q: E: J. Pprinte(p);
, G X+ Q2 K! S2 r' Vprint();
9 n; B! _; G6 _7 \}
* ~2 |# {5 W/ P6 P) O8 J1 S; melse
1 u w6 u7 X J3 ]Nofind();
1 G7 d& K' k& f0 t/ i! N}
, {9 ]5 g% I, F6 ?) g! Felse
1 m' k- x1 B" W& eWrong();
9 \7 a* T7 g. @9 o$ H$ G- @/ W" ~, e, n& n2 o) s) o' n}
6 N# i+ t, P. C3 w' x. `$ w) x& S jvoid Del(Link l) /* 刪除 */
* X- C$ X7 C2 f( ?; z$ _% h! E{
) n% q2 \# P Q1 ]; Qint sel;
2 ]3 }) I% \+ A1 M* j1 ~6 V# o1 V& vN *p,*r;
+ _. |$ v. y6 S$ q3 O+ Xchar find[20];
) z! m* X% `, r& a- ^0 [. n# dif(!l->next)
! X! J6 f% Y6 L- _$ {{
9 k! r7 W" @( M4 o3 p! y4 }printf("\n=====>提示:沒(méi)有資料可以刪除!\n");
# o p! V) v( ~( W- Ureturn;
$ @3 a% W- b" c, u2 w}
* H" f! `6 ^: D! y2 P$ N* Q# Pprintf("\n=====>1按學(xué)號刪除\n=====>2按姓名刪除\n");
0 z; f8 Z1 }) ^5 Cscanf("%d",&sel);
3 X9 p& w5 w+ G2 d" j! mif(sel==1)
$ K1 a7 y! k/ V$ O7 f: G5 `{
! m& @. Z- c$ P, l0 i% Sprintf("請你輸入要刪除的學(xué)號:");
' C3 K+ J6 ^2 h o5 Yscanf("%s",find);
/ N2 ~& h" w& Y. y: w8 Zp=Locate(l,find,"num");
# Q. o+ \0 h( B* iif(p)
4 |9 s) r% ?' O' E- n+ T& d{
2 O+ \/ c7 B0 Z6 {r=l;
; t# `' o& S. ~( L: W( `while(r->next!=p)
' m( T. N3 C: k& M' ir=r->next;
" K- d" I t. Tr->next=p->next;
1 S. _5 @; V5 F2 i. jfree(p);
2 k G; v* ]( b$ R$ w( Rprintf("\n=====>提示:該學(xué)生已經(jīng)成功刪除!\n");
! k7 s& \: u' m$ M) h4 Ashoudsave=1;
8 q1 H5 V# W. c}
* k& e* q, S% }1 u. Y, t! Xelse
: W6 k6 }8 m; O: a- L F2 U2 ZNofind();
( A) g' V0 z1 v0 K! V}
2 W `2 ~& a$ ]$ Delse if(sel==2)
/ L1 @2 Y2 y8 Y8 `! }" ]! Y! u{
# `+ i$ U- _4 c6 o' oprintf("請你輸入要刪除的姓名:");
0 c+ h& P) b1 k: z" Y& a! Y, \scanf("%s",find);
& Q r' n8 v0 e* t1 o( N. g# {9 Rp=Locate(l,find,"name");
, j& H* E& l t0 }if(p)
& U6 D9 ~$ U2 B. H% o3 \{
$ I9 C7 ~- j& S1 Or=l;
/ x& d$ H( M4 e3 F7 i1 Jwhile(r->next!=p)
3 o( L3 g. V2 o, Y0 Lr=r->next;
6 u! t5 f5 d2 G# |r->next=p->next;
3 G8 O+ i. W9 t8 |free(p);
8 q$ D' a4 e8 H$ d0 I" r# _+ Lprintf("\n=====>提示:該學(xué)生已經(jīng)成功刪除!\n");
4 [" Y5 }: C# y. sshoudsave=1;
, E' [1 A; G/ { }8 C}
F1 R; _& x8 `else
( s3 }# h$ Y3 d' c1 e' [( T" LNofind();
' \' F- Z8 M8 P1 y V}
5 r' t- [9 P, J5 R0 \else
# k3 ]' T# v: B4 | X* C" yWrong();
/ g8 h& w" h5 U2 i9 V. [. _}
& s. h' s7 Z; v& [9 L' ?; s3 c; z0 F1 }$ Q: j) }$ D5 {void Modify(Link l)
# r2 W, g2 j/ L- Z6 }: d{
2 i4 m/ n- f# j) Y' dN *p;
M2 A9 q7 I& G" a2 T$ Vchar find[20];
& u: I: v- {0 u/ Cif(!l->next)
, L: l" @* u+ @1 n% w5 [" @{
4 M8 \5 b9 c5 |/ c" }7 Uprintf("\n=====>提示:沒(méi)有資料可以修改!\n");
4 f: d {& v6 j* ^. M' h* mreturn;
7 N# I; N# \+ B) `9 X; N' i}
) _% U7 v+ c! V. Z3 a* A$ P4 I* ~printf("請你輸入要修改的學(xué)生學(xué)號:");
2 _ `' t0 E' u* hscanf("%s",find);
], r/ R/ W9 K& e [p=Locate(l,find,"num");
8 @5 k4 F& G& K+ b$ b/ }if(p)
O: a2 O- m* h6 N6 e8 L{
+ R; h6 G- S; u8 j: l9 ~. h. wprintf("請你輸入新學(xué)號(原來(lái)是%s):",p->data.num);
3 A9 w: _5 r. Q2 j& l% a! lscanf("%s",p->data.num);
' s; |7 Z: r, K8 fprintf("請你輸入新姓名(原來(lái)是%s):",p->data.name);
' D$ @' C* q; i Mscanf("%s",p->data.name);
/ ^# v% A" y! w$ I! c, m; egetchar();
4 N! P' d! A9 R1 F" \printf("請你輸入新性別(原來(lái)是%s):",p->data.sex);
5 i. f4 ^. Q$ B( ?( q( uscanf("%s",p->data.sex);
( B6 {( G% f& k- |) d6 D! oprintf("請你輸入新的生日(原來(lái)是%s):",p->data.bo);
i: m; @& L8 W9 L9 @$ |scanf("%d",&p->data.bo);
2 E6 K+ a6 Q/ A1 Ggetchar();
3 k* n$ h+ b2 a: V- }printf("請你輸入新的地址(原來(lái)是%s):",p->data.ad);
2 u- c0 G! T8 F7 O# fscanf("%d",&p->data.ad);
; f. I. S. c0 `; a1 u$ G! a, lgetchar();
6 z& Y, I! \# W ~. b( f2 Uprintf("請你輸入新的電話(huà)(原來(lái)是%s):",p->data.tel);
& q+ h" O3 z5 W) y8 [2 Wscanf("%d",&p->data.tel);
# W% v" h6 N! k/ p2 [7 Lgetchar();
8 P$ d2 u! c; ^7 F/ s1 G0 q0 bprintf("請你輸入新的E-mail(原來(lái)是%s):",p->data.E);
y2 H& h+ c$ d) D( bscanf("%d",&p->data.E);
L8 w* C ~- ^& `8 k" pgetchar();
- t8 b! @3 M( H" \- c& f4 Gp2 ?0 ^( p5 F! O+ o) _! tprintf("\n=====>提示:資料修改成功!\n");
' h) d5 X h! e* fshoudsave=1;
; \3 f; O$ d! C+ m4 ?0 P}
. g( G( K8 H' x! Q; X S" V7 G! Relse
: |$ t& p3 H5 N( i @3 h6 g9 LNofind();
, M/ Z; q3 v+ q4 E( h; G2 n9 i7 L5 x}
: M5 x. n' ~3 k% F+ R# M2 N n' r* S! _4 P/ D0 s, Vvoid Disp(Link l)
0 l f+ N5 r: D' h. B$ A4 y7 c{
" M8 L$ W* l; u8 F \+ yN *p;
% V* Q2 F1 q* `8 A4 J% {p=l->next;
& Z: c8 h. I C7 q0 I) _3 o+ p }" {if(!p)
! h) K" |3 ~7 n- [; y y{
0 t" g% f: B6 s, _- V' y, G6 Hprintf("\n=====>提示:沒(méi)有資料可以顯示!\n");
* e& Z2 q, k! X3 ~return;
2 R! @. S8 f" V" ^4 ^$ `: j}
1 u" l$ B* X, A4 ?& kprintf("\t\t\t\t顯示結果\n");
) P' F* Q3 M2 } N2 e0 m8 sprint();
( ^# A( n5 F: ]printf("\n");
1 W) l' n3 N0 o) g) y4 d" h' \while(p)
9 Y, S8 G" y# `+ f# d: N{
) l0 f2 |' u, u$ h! `% Pprinte(p);
: u% h& a/ Q: p, r& Hp=p->next;
1 C" j4 n- w: ~) P}
6 U) ^" H& Y, Sprint();
- C! L/ R' U4 d- Yprintf("\n");
" {% M, W s& o$ \" f) Q! o( ?- C3 @: v}
/ A+ I& P! y1 z% `: }6 k' u( {1 g u4 O c5 _void Sort(Link l)
9 F( X9 R# C0 p1 t' |; M7 s{
A4 v9 _2 c- B$ v0 GLink ll;
# Q" F( H( g. \0 o$ s/ u% M* n' zN *p,*rr,*s;
: l- V% S- h8 z) [4 y& X: Y0 p g1 y6 a3 V% Z& y; Vll=(Link)malloc(sizeof(N)); /* 用于做新的連表 */
, \1 z$ l# P& a1 b# b5 Z9 zll->next=NULL;
% d3 i* Z' ^- p- c3 v& X- |9 E) t* ]. H7 B# A" Cif(l->next==NULL)
: e/ ~5 O4 S5 ~4 h1 d+ T{
! m7 X( ^4 `$ K2 S, i6 Rprintf("\n=====>提示:沒(méi)有資料可以排序!\n");
# @% H, V( k' T; X& breturn ;
v7 `# Y& p3 m( A1 x4 w2 ]}
9 Z: W+ m# L, ~+ u9 r* e+ E1 Bp=l->next;
: U6 G, j% T& c) f6 e$ f- w8 fwhile(p)
3 L- ]: D) L7 T, m' E8 A{
`. T- i/ j5 T4 m; _6 ^/ os=(N*)malloc(sizeof(N)); /* 新建接點(diǎn)用于保存信息 */
5 [5 b6 H& Z7 G4 ~$ U& V5 Zs->data=p->data;
- ?' t. n1 s5 w& u; Cs->next=NULL;
0 j m) O8 }2 G1 v* a0 G8 w) r! B+ g( S% O4 a5 c! }rr=ll;
3 L& T) a9 `0 Y! o& b! K+ swhile(rr->next!=NULL )
7 F% M y/ x i8 o& n; S3 Lrr=rr->next;
/ t. d1 @' ~# V; v/ Hif(rr->next==NULL)
. @% X. ?! H! t: o' W# G$ j- `: ]rr->next=s;
* Q0 r" S7 d0 melse
! o( z5 _4 z `0 Y. E; \) x. D2 N{
) x0 H8 [* A' ^3 j5 f/ X' M- F4 y% ks->next=rr->next;
8 L8 u' ^) @7 U% `rr->next=s;
" k" K8 `+ K) }! J}
# ?- q% l$ p: f. ]! j, Vp=p->next;
$ q; c) I! r6 I}
* v: q3 s1 v Gfree(l);
; f& N) K) w+ t' Ol->next=ll->next;
5 f9 c# e6 |6 k& |printf("\n=====>提示:排序已經(jīng)完成!\n");
$ |4 [( _* u; i. d}
& ~" }2 B* I* h5 {2 ?0 t8 O+ U( O G/ ovoid Save(Link l)
* d0 d y S p4 D1 b{
% _7 ?! \1 @0 T% z/ B. FFILE* fp;
' t7 [, o. {' F H- a5 u1 pN *p;
6 d5 @, F; L" l2 o, @$ D6 J8 ~int flag=1,count=0;
# e; b9 U. d; c3 y) @fp=fopen("c:\\student","wb");
4 P. N) d2 W) {if(fp==NULL)
* q8 H8 U& \4 ]) U{
. r9 z8 j0 C/ J+ f& [- ^printf("\n=====>提示:重新打開(kāi)文件時(shí)發(fā)生錯誤!\n");
4 e0 F( C! Q4 y/ j/ u/ Sexit(1);
* d* k M+ x8 N. r2 s! a" ^}
]4 D4 a0 T$ Up=l->next;
. V: h& d8 H0 f9 Q1 u" G3 x6 A2 e/ Y$ T% ?while(p)
! x! s4 V( L2 k# \{
! p; \/ T. n: v7 Wif(fwrite(p,sizeof(N),1,fp)==1)
8 i$ y2 N, ]- W- w0 V5 u2 g{
/ G# n6 d) J0 p) Q, sp=p->next;
0 e, |1 t4 O; S$ J; \1 v& ccount++;
3 @- l; p+ a* { p' Q+ p& T% U}
% ^7 R8 w$ n3 ielse
% x) A" a6 J* m7 I0 z{
% d( U$ i5 D+ J9 Pflag=0;
/ E& j( j7 y, t E" obreak;
" G3 J3 }' v' `1 T+ {) w, N* l V: d}
+ S5 F! y- L, d% \) N}
: o. U, d; O0 \0 J8 d5 U6 p) _if(flag)
) r6 D- c: F' z4 T, [- Y& Q: O{
* D& f( M# h* ?3 r* ]$ x$ U1 Q& w! m. }printf("\n=====>提示:文件保存成功.(有%d條記錄已經(jīng)保存.)\n",count);
1 h2 Y/ d$ G( lshoudsave=0;
; i: J1 |3 o! \/ b}
% y r T3 `# P% N! i* Z+ J! E- nfclose(fp);
$ q- ~; d3 m( G}
. V" B3 h. w6 _% q. T' T3 |( Q: V& R2 y' ivoid main()
x& D! o7 ?- p$ b1 X8 m{
: p% G; j2 w; ]7 \5 PLink l;/* 連表 */
% s0 { M& G4 E% k! sFILE *fp; /* 文件指針 */
9 [: Y" w- t) E1 }char ch;
+ ]) T# d, B; k6 J0 Xchar jian;
6 R& P) n. d2 b! ^" iN *p,*r;
. X3 H$ w; I8 M0 q+ l- R) N1 eint count=0;
5 K- k" n/ I$ I5 y2 @int key;
* R. `3 a5 [. ^7 }" k6 u" e4 w$ f) M/ s! \- J2 Zprintf("\t\t\t\t學(xué)生成績(jì)管理系統\n\t\t\t\t-------\n");
, V" }/ F; y" ql=(N*)malloc(sizeof(N));
) S0 _0 {6 m. u0 O2 Pl->next=NULL;
/ q4 k4 _9 X( Y; j8 X0 n8 ]6 Fr=l;
0 G0 K! {( u: U( Z9 g0 e1 w- W) l7 f7 efp=fopen("C:\\student","rb");
6 i& f. l1 t% h. I" n4 d6 Qif(fp==NULL)
9 | O" ?/ v) f0 O }9 u% }3 T2 v9 q7 T/ M" _{
1 t% a: m4 v" V% kprintf("\n=====>提示:文件還不存在,是否創(chuàng )建?(y/n)\n");
- _6 n" N( C$ F* ~/ n! u5 k$ {scanf("%c",&jian);
5 f, r: {4 K ?. e+ i. Kif(jian=='y'||jian=='Y')
% r) `2 W8 Y7 }fp=fopen("C:\\student","wb");
% ^9 E6 ~9 @/ f5 B2 [( Lelse
: G/ F& O& K4 dexit(0);
" X A% V& ?7 F, z/ T}
0 L$ Q- s: s8 `) h# [) Xprintf("\n=====>提示:文件已經(jīng)打開(kāi),正在導入記錄......\n");
0 _9 U b3 `; E* F" w$ Q; j! G' G( y9 `7 P! x' |: _while(!feof(fp))
9 \4 v6 R; [* s7 X+ `! |4 N{
: f, Z+ c. O* X$ cp=(N*)malloc(sizeof(N));
9 M4 ]$ c3 W% Y$ M# G* n) Tif(fread(p,sizeof(N),1,fp)) /* 將文件的內容放入接點(diǎn)中 */
, [) p9 ?! A8 j) \, y5 p4 h/ h v) @{
' v3 m% U$ C$ H5 Hp->next=NULL;
5 j$ M' U- } M- _( {: N# pr->next=p;
# x4 q' n# z! T( C6 gr=p; /* 將該接點(diǎn)掛入連中 */
1 y7 ]& `0 N4 p* E7 |count++;
* M' B5 p! @5 Q5 t}
' X6 R$ c% M' }3 U0 o}
7 ~( B, a% E3 ]) v3 i) c5 H7 b" C3 o0 A1 |( H: r% t* r9 xfclose(fp); /* 關(guān)閉文件 */
! b, B$ @2 H ]4 U2 C& U8 _printf("\n=====>提示:記錄導入完畢,共導入%d條記錄.\n",count);
1 k- H. @8 V" j. I8 K2 D3 v6 _( m* Swhile(1)
7 T2 b1 ]& C' f4 D8 B$ t- N( i{
# q) q; O5 l- {$ f7 Cpaint();
; [! G0 p' o, b [2 |$ Dprintf("請選擇:");
/ o) G$ t3 V/ Z. ^& ~! [3 sscanf("%d",&key);
( P9 H: B- l& V. b) E# p; W; t7 Ekey=GetKey();
" N9 I# }* w: V+ c/ |) A( @! H3 {: C5 _if(key==0)
: [& Q3 G) W* _- P4 I0 d# `' }9 L{
5 i% o+ {: j# Y3 k9 a- e- sif(shoudsave==1)
) [0 o9 }% t: r2 O{ getchar();
. G5 y3 \6 h: I% G/ w# e+ uprintf("\n=====>提示:資料已經(jīng)改動(dòng),是否將改動(dòng)保存到文件中(y/n)?\n");
% z" O$ v- M; g2 d+ z% ~$ Mscanf("%c",&ch);
; R/ u5 l5 V! M7 C1 b3 F7 B$ _ Cif(ch=='y'||ch=='Y')
; h* V: w4 J8 w6 A. OSave(l);
) ]0 B% ?; K# g0 M/ @4 e6 Q}
, \5 Y4 X4 g- b4 i9 U1 k' Mprintf("\n=====>提示:你已經(jīng)退出系統,再見(jiàn)!\n");
$ f3 z) W: g. t3 q( o' S4 Ibreak;
5 l) z1 n$ U( i6 ^) O}
, z+ L& S" s- P8 Z# b8 G3 C. M' D4 b- o/ z" c1 R' Pswitch(key)
- l6 X% n% J' H* a{
* ?6 r$ c4 G, _case F1:Add(l);break;
" M% F# B1 l/ g. ncase F2
el(l);break;
1 P6 A7 }; r# i2 ~case F3
ur(l);break;
1 \$ i' e, c5 ~( V8 v! w. O( |case F4:Modify(l);break;
: M' Z) y2 I% \5 S/ v6 O4 [# fcase F5:Save(l);break;
& r/ I/ F- V/ b3 k( E& @! f, Ocase F6:HelpMessage(); break;
- j$ [9 p! {$ ~% U( |# W! rdefault:Wrong();getchar();break;
4 p- A7 A. }! [6 S}
+ h- p$ B. F* Y5 R2 l}
7 S5 U) O* \9 ^0 p}