数学建模社区-数学中国

标题: 【转载】C++源代码--学生&教工管理系统 求大神帮忙改错~! [打印本页]

作者: wangzheng3056    时间: 2013-7-23 15:39
标题: 【转载】C++源代码--学生&教工管理系统 求大神帮忙改错~!
#include <stdlib.h>1 }% O' J/ w5 ~5 M+ O5 Z/ h2 ~( Q
#include <stdio.h>
# c" f& O' S3 B. t3 e" @& H/ ^& m% A1 W#include <malloc.h>
$ Z8 Q* ]4 z  |' U#include <string.h> ( T( F. e0 }5 w  h$ M' o) w
typedef struct worker( W" ?# v9 s2 y+ i3 t3 ?: g) n
{( p) g8 b+ D9 w, U( d& b
int id;
: e, g* a$ h  k6 m, bchar name[20];  H0 u, V& K3 t
char sex[3];
) o( e/ y. s( u6 z) {+ Lint age;* p. [! P1 t# F" x
char edu[50];
6 F) j6 T5 @2 Q% kint wages;
7 E$ @" I' x: S9 t' zchar adr[255];( n& e0 o8 n& A6 o3 r& D& N8 J
char phone[13];
, a( |  |* l+ h}WORKER, *PWORKER;) r% j: I! O2 v3 k  X2 G3 _% ]
//typedef struct WORKER *PWORKER;
! E: n( k, m4 {5 `1 O' K1 [typedef struct link+ @" Q" Y/ z5 q8 f: W; f" {2 d" I/ c
{# q- W! \$ `+ ?0 b
WORKER w;
; {4 \- l# h% ~/ l9 f# `struct link *next;! O' X! i: f  `
}LINK, *PLINK;5 B, S6 U5 E, B' |
//typedef struct LINK *PLINK; /*创建职工信息链表*/
- M" e# \# R& Q( ZPLINK create()2 |! M3 ]$ w' A, D- D* |
{
) L$ r9 w( C# M# G9 {PLINK p=(PLINK)malloc(sizeof(LINK));. k. N: w- X& u) D# f
if(NULL!=p)
& S, E" G; d  r' W- Q5 ?{( h$ |% }4 o* Y7 A( @$ }
p->next=NULL;" {( K) R0 K' _8 _8 n/ X/ I2 C
return p;
  I' g& l* a5 r5 u}
4 x5 E0 N( t- R5 Yprintf("内存不足!\n");) n$ m9 c7 [5 \% `' I: D" W; k
return NULL;
' b7 ^) k- a9 L6 |5 @+ I} /*显示程序界面文字*/
* `7 m) U2 P; f1 kvoid message()" K( j6 D$ [7 C8 G# H% j8 i
{ system("color 0f");/*设置当前窗口的背景色和前景色*/! a( T% }+ A* m
/* 0 = 黑色 8 = 灰色
/ e" `3 d+ h: X, W1 = 蓝色 9 = 淡蓝色- @: y5 ]# v3 Z% O. {" ?. I
2 = 绿色 A = 淡绿色
; [& T* n* B- N! D$ w2 f1 w3 = 浅绿色 B = 淡浅绿色
! v$ h  k. E  @, l" e/ Q4 = 红色 C = 淡红色
  G9 [: B* `# o* f) L8 o5 = 紫色 D = 淡紫色
. ?8 k" Q/ w5 y+ E* |6 = 黄色 E = 淡黄色
; r( n+ K, K5 B% k0 G+ V7 = 白色 F = 亮白色*/
, j" y. U/ A2 w2 |, Fsystem("cls");
$ q; f: J  E7 ~' l( d+ }0 Rprintf("\t\t************************************************\n\n");0 I$ p# R( O# A7 r
printf("\t\t>>>>>>>>>>>>>>欢迎进入职工管理系统<<<<<<<<<<<<<<\n\n");
* Y5 A% X- l; S9 B0 qprintf("\t\t************************************************\n\n");4 U' w) w$ p2 ^. C. e: i
printf("\t\t ************** Choose Function *************\n\n");. z' T% E" H0 G; E) R9 f
printf("\t\t ************ 帮助 请输入:0************\n\n");" @8 H" q7 \( z3 |1 Z* Y* j( \
printf("\t\t ************录入职工信息 请输入:1************\n\n");; B& B# c, {# |+ V9 S# ?" K: \! x
printf("\t\t ************浏览职工信息 请输入:2************\n\n");: ]" H/ a+ g: B( W
printf("\t\t ************查询职工信息 请输入:3************\n\n");
! k" v+ N% s0 U, Vprintf("\t\t ************删除职工信息 请输入:4************\n\n");" @. ^& \2 J( B+ Q. _
printf("\t\t ************修改职工信息 请输入:5************\n\n");
9 D: L; H3 x$ \' [4 Q+ j& cprintf("\t\t ************ 清屏 请输入:6************\n\n");3 e: A8 T& G& r: e2 P
printf("\t\t ************ 退出 请输入:7************\n\n");% t) o( @! C4 D! G
printf("\t\t************************************************\n\n");
- w; ^8 z9 S; e$ o, k4 C: Mprintf("\t\t************************************************\n\n");: g7 _5 _, Z$ |
} void find_sr(PLINK plink, char* str)! N: N# y$ ^; B0 M, q' M6 h
{, ~4 ]" q9 a- k) K$ F( M
for(PLINK curr = plink->next; curr != NULL; curr = curr->next)" ~2 [  N+ g% W+ F
{) O; ~) [% E9 I; B) ~
if(strcmp(curr->w.edu, str) == 0). d# a& ]' \# W6 n$ R
{7 p5 Y+ Q  w2 b/ x4 Z0 m* Q
printf("职工工号:%d\n",curr->w.id);
/ C9 s0 b# v, r1 w0 Q) E2 Oprintf("职工姓名:%s\n",curr->w.name);+ R7 Q: N! }4 I- c9 u
printf("职工性别:%s\n",curr->w.sex);2 V. W6 N& N8 X- }/ t8 T
printf("职工年龄:%d\n",curr->w.age);
- j7 W6 L0 i6 F2 T9 K+ L1 xprintf("职工学历:%s\n",curr->w.edu);
: o, D% o6 P% q) |) f' Uprintf("职工工资:%d\n",curr->w.wages);7 w) a; ?+ }9 {: f! r
printf("职工住址:%s\n",curr->w.adr);
; I0 t$ P- e- o9 h8 Xprintf("职工电话:%s\n",curr->w.phone); }
( Z2 y5 x: r) e6 _# g+ y}$ ]' |/ _! Z+ I7 K1 w( W
} void findid(PLINK plink, int id)
2 G& e, w" r2 G% R% y& Z0 s+ W{! a9 j5 ^1 ^$ Y' P* S) g
for(PLINK curr = plink->next; curr != NULL; curr = curr->next)0 [- m9 p8 W: t) V# G  T0 N* z  H
{
$ y, X9 R8 O9 @5 K" {if(curr->w.id == id). ^3 J3 R& w+ Y: {
{2 O; a  B, `, }2 S; b
printf("职工工号:%d\n",curr->w.id);
7 _# y- C5 ]/ R) C0 o& @printf("职工姓名:%s\n",curr->w.name);1 F$ j  A+ d0 A# f! D
printf("职工性别:%s\n",curr->w.sex);
- J4 W; L9 C3 H' \printf("职工年龄:%d\n",curr->w.age);
1 b* P8 G3 ?1 V: Uprintf("职工学历:%s\n",curr->w.edu);& B2 \' r" r1 Q  M
printf("职工工资:%d\n",curr->w.wages);5 \. Y: r0 X# k
printf("职工住址:%s\n",curr->w.adr);
. Q! |! O' d& Y* z& ]  c# F' Hprintf("职工电话:%s\n",curr->w.phone); }
- l1 P2 v( v# A% C0 W$ J6 j6 `}- _& J, }9 f8 v7 y# S% ?
} void show(PLINK plink)6 b/ ^- d5 b) p) e$ d. `( F) D
{ for(PLINK curr = plink->next; curr != NULL; curr = curr->next)
' x' P7 N1 ?. A; b, S- @6 h' R) D{1 M3 g6 i  U* \! e
printf("职工工号:%d\n",curr->w.id);0 [7 ^9 l) y# c5 ^
printf("职工姓名:%s\n",curr->w.name);) B1 n$ e" H+ r4 y
printf("职工性别:%s\n",curr->w.sex);& B0 ~. ^  m$ O1 g- z1 ^, f
printf("职工年龄:%d\n",curr->w.age);% m9 f/ `: z7 y* B
printf("职工学历:%s\n",curr->w.edu);/ T& }% p/ {* z/ c
printf("职工工资:%d\n",curr->w.wages);+ b! l$ N, O7 I0 \3 R: i
printf("职工住址:%s\n",curr->w.adr);- N- f2 }9 n4 `/ X5 _, n
printf("职工电话:%s\n",curr->w.phone);6 `$ S; f& K. Z: I6 ?0 }
}
, N1 Q9 [1 G/ V- ^} /*录入职工信息*/
$ b4 U" j( e) F# Kint add(PLINK p)& g: ]' i1 g( j) w/ K, }- x
{
3 @; {- C9 Z8 p1 X0 x! ?PLINK h = NULL;
7 Y+ l$ P( k1 }3 EPLINK q=(PLINK)malloc(sizeof(LINK));, P! G7 P: T7 y, I
if(NULL==q)/ d1 ?% V- M- k7 p1 p
{
. z  |( \. o$ O% I4 aprintf("录入失败提示:内存不足!\n");
) D% f7 _$ l8 S4 rreturn 7;3 G# V! S1 r5 u2 H; P
}7 H8 Y; }' u/ F+ D
printf("请输入职工号(数字):");# a! f( ?. Y6 E: q  v3 L( B2 |7 M
scanf("%d",&q->w.id);
8 S1 `* ^) I- rh=p->next;
  D/ \* Z$ i; g! mwhile(h)0 s) D  J# i* k; h- I" K
{% n* `7 A2 `( X3 y5 Y8 n
if(h->w.id==q->w.id)- p; B$ R! H. u: R' [, ^9 v2 A
{) H4 `+ X4 K- m0 m5 a! _" ]: o
free(q);' g# m1 \$ d  ^8 R
printf("录入失败提示:此职工号已经存在!\n");
' q8 d$ `: ^" Q  t/ Creturn 7;
# u1 F8 `$ ^/ O- b% B$ I}
" [) w( u' z- ?2 p. Q; q4 k$ Sh=h->next;
  u. K8 a5 b! F. ?}# I0 s( v0 ?% q8 z# S' D9 f; [0 D
printf("请输入职工姓名(文字):");! N0 M7 Z. n, g) C
scanf("%s",&q->w.name);8 F0 i; ?6 P9 v6 A: }& Q$ e* u
printf("请输入职工性别(文字):");: O0 H* b1 @' C4 R  Q- E( R
scanf("%s",&q->w.sex);/ @5 n1 p5 y, g2 o
printf("请输入职工年龄(数字):");. o9 ^  f9 j" S: Q9 ]
scanf("%d",&q->w.age);
) p& Z; g* I: {2 T3 vprintf("请输入职工学历(文字):");
' H5 B0 g( S9 t2 C! {# }; _* e5 ~scanf("%s",&q->w.edu);
- H6 K& u( z% p8 c. A1 n( xprintf("请输入职工工资(数字):");  ?) U, `% d6 T$ X4 L+ {
scanf("%d",&q->w.wages);  K3 h9 R. W# A3 x" L4 I) L$ c0 e
printf("请输入职工住址(文字):");( f7 S( E9 H2 v9 Q7 a$ X8 `3 E( n: K
scanf("%s",&q->w.adr);
; h7 v8 m! l. B8 I. _6 L; Dprintf("请输入职工电话(文字):");5 U& F  F( v0 i+ h$ J3 X
scanf("%s",&q->w.phone);  E4 ?2 M1 V' S3 x
q->next=p->next;
  I4 V. ~5 H) x4 i4 vp->next=q;/ _7 O. @5 n4 ?  _" w
printf(".^_^.录入成功!.^_^.\n");
" s/ v7 ?0 O" yreturn 7;
' T% ~5 w9 q1 b/ {# a} /*按姓名查询*/6 U1 e  i5 i/ G' y& o
PLINK findname(PLINK p,char *name)) V) S4 x. b9 q# a: S+ V
{
2 o- E0 d- O& F: {& L7 C0 Pmessage();
) N- ^% k" l& ~9 Lprintf("按姓名 查询\n");
+ Q4 Q" @) x1 u. _printf("职工号\n姓名\n性别\n年龄\n学历\n工资\n住址\n电话\n");
+ J0 {1 r5 l& V3 W3 i+ F1 Swhile(NULL!=p->next)
1 Z$ s  i' v4 I2 D8 I{
; r0 Z- Y; F. w. d; a+ n; ~7 oif(0==strcmp(p->next->w.name,name))
4 E& e/ Q$ {( v0 W: S2 t{# U, y8 P3 p/ ]7 D) u- g& S  @
printf("%d\t%s\t%s\t%d\t%s\t%d\t%s\t%s\n",4 j" B: T. Z/ O3 M4 c. |
p->next->w.id,p->next->w.name,p->next->w.sex,p->next->w.adr,
1 C4 ~2 Z% q: n8 _) Q' Z+ A! Xp->next->w.edu,p->next->w.wages,p->next->w.adr,p->next->w.phone);
" l) Q1 K4 J# V0 C% r" ^1 dreturn p;
. A5 V+ {' K: u6 _$ _2 q. J}
0 ?7 S) M1 I0 g+ X* pp=p->next;# |7 u9 E3 p, M5 H$ G  [
}+ b3 S4 D- p' l: ^
printf(".^_^.查询结束!.^_^.\n");4 w, [" K5 \/ n$ O& N( I% B
return NULL;& \) I+ |( `% a# N) D
} /*按职工号删除职工信息*/
  K4 W! F: i( m* H! Dint del(PLINK p,int id)
# S) |$ c+ N$ U9 r; U{
& y4 E. u+ D  z' O/ lmessage();( Z/ E& N1 ]( c9 D* ?1 [
printf("按职工号删除职工信息\n");1 X( P7 S5 ^- p7 r/ J( V
while(NULL!=p->next)6 k" }* a- k" ?) B8 c8 Q3 }# v
{
. i3 q- T% n, G1 Hif(p->next->w.id==id)
0 q; z; e* v( G9 r) B{/ Q+ ]  K1 V: l" M1 b* i4 N4 W6 ^" m
PLINK q=p->next;
: Q9 j* y7 B! ~" e( l. ep->next=p->next->next;
1 c, i- b+ }9 J6 hfree(q);
! j  {% r1 V" q6 L; N. wprintf(".^_^.删除成功!.^_^.\n");4 {" e2 k$ ?2 E( p1 @1 b
return 1;
* l) W" u9 p' A( F5 W- i" ]) _0 \}
; V' o  k! \7 k2 o8 c0 K3 o5 jp=p->next;4 V2 q3 w; U6 i4 O9 s
}% Q' \3 O) @  K/ @- O
printf("没有你输入的职工号!\n");0 C# j% t; T" T& p
return 7;& `: s1 K, P+ \; d* U' t& A
} /*程序结束释放内存*/8 D7 o; b; O2 C1 ~# G! |! e0 g
void release(PLINK p)9 d7 [+ w/ ]5 x8 L& h% L9 }
{" h% H* f, n' s) l  Z, M: `8 |: b" T
PLINK q;  q% ~6 @+ {1 i* k# A; V0 K
while(NULL!=p->next)
* B# T6 b$ _3 Y9 z{2 A9 ~5 P; i: S7 w
q=p;' N  x6 m6 O3 h( T3 q8 ?8 m- y3 a7 L
p=p->next;
0 ]) B: ?6 f0 b0 ~1 wfree(q);! e2 @% U% y2 I
}
, u  B7 f) h: F/ J8 Rfree(p);
* u8 I9 G. o# i; L} /*查询调用*/2 z8 ^8 J. y8 d' X  r. x% F( M& ^0 B
void search()
# C% n; V; l: r3 h# s) I# f{" h* ^. d* F4 y7 D7 d1 u3 o8 ]8 D
int id;
- V/ c5 u) `5 C5 g8 Z) Q, {char name[20];# h3 k$ i0 X' m6 y- v& v
char str[20];5 g( W) M% I0 g+ v3 G: D
PLINK pworker;" {  |% O- M' M: c7 z
int l;  `' }4 F6 S$ q/ J% o( C8 ?5 l
printf("\t\t\t\t*姓名查找按:1*\n");
1 x. ^9 K$ z  f/ e) e5 f+ rprintf("\t\t\t\t*学历查找按:2*\n");
1 o( `; g5 R; Qprintf("\t\t\t\t*职工号查按:3*\n");& y: K* r7 z7 T
scanf("%d",&l);
% A1 ?6 d1 r% h: z; m5 [  lif(l>0&&l<4)4 y, m* G% t. [5 Q$ w
{switch(l)
: c' D* w, g. ]8 }4 X7 k{
0 s! {8 \8 E6 m3 \' Ecase 1:printf("请输入要查询的职工姓名:");
" h) a! ?4 D: l& c) a, H! gscanf("%s",name);
3 @' A2 I2 y6 i7 [( H' A/ nfindname(pworker,name);
" k6 E, S6 L) x1 A7 ~break;0 r0 v6 g$ c2 G" \5 e3 T5 [" H
case 2:printf("请输入要查询的职工学历: ");
; b! I8 U  {/ w, w& J" @scanf("%s", str);. T5 Z  H, B# P/ q
find_sr(pworker, str);
: r5 p. U- \. D" |, ~break;
+ s. P, |$ d- h0 q! zcase 3:printf("请输入要查询的职工号:");
! c: ~$ A7 e  n/ E: z, Iscanf("%d",&id);
) A; O& p- e8 ^3 r& t, `findid(pworker,id);+ |( f1 v2 E% S: P
break;% U0 S) P( N' g& E' E9 r; A
}
0 [" Q) s, c& ~7 H- b% {printf("\n\n选择完毕!!!");9 ^& ?: i. `+ W5 d2 B, D
}
  |3 J3 C% v4 f; \, d) ^else printf("\t\t\t\t输入有误!!!");
+ |0 `: e( z+ P} /*修改职工信息*/( J( t* \- T0 V% u: k5 R* t  c
int modify(PLINK p)- u& v. R: e: B, P. C% B! E. [& W
{ int id;9 i  w( W+ q5 @
PLINK q;5 h4 p; ^5 q0 Y" V3 Y2 @# }2 I9 l
PLINK h = NULL;; s2 L  N9 K, U# L% m' q% V
printf("请输入职工号(数字):");
( u2 W7 J' f0 S/ W/ Xscanf("%d",&id);
  Z# s) O" x$ `3 `# g+ M- s0 sh=p->next;
8 H3 e9 z; V! r" i4 d8 b# H- vwhile(h)
# r7 v4 V7 `' g5 U/ y0 U2 @9 T  j; F  p{
* x, I( Z0 Z% u4 [% oif(h->w.id==id)
8 x/ Q" M/ R5 E+ V{3 E- i9 k, H1 X- ~: G1 O. B
break;
1 W9 u# F9 c; S6 N$ e}0 K5 @! M" _3 |5 _% W8 [7 p
h=h->next;  Y; m* M, C. E' K2 o1 ]/ ^
}
" M4 ?7 S- A0 w* y( Z6 Qif (h == NULL)( U! z5 T4 ]: x4 O
{
, g( V) r! d' m. Q6 i1 H- r4 m/ yprintf("找不到此职工,请重试\n");& G- V& Z0 Z# O( ?, T; O0 d8 T0 d
return 7;
/ O% `3 j. t# M$ _, p}
, w* @# i  g- `6 o' Wprintf("请输入职工姓名(文字):");6 L) p* p- E7 i% k1 q6 F$ i# ?3 R
scanf("%s",&h->w.name);" w: Y: l1 \) P* Z
printf("请输入职工性别(文字):");
1 R  f0 ?5 j2 I4 d" ]- Hscanf("%s",&h->w.sex);
8 p6 ~9 n4 d, Zprintf("请输入职工年龄(数字):");  u9 M; z, M/ j5 L$ t
scanf("%d",&h->w.age);
) N' K+ K: n" xprintf("请输入职工学历(文字):");
- o9 k- w- [( ^4 m- {- W1 ~scanf("%s",&h->w.edu);
* [9 f7 }8 [7 z0 Yprintf("请输入职工工资(数字):");! p; u' c# B5 I1 w+ Q8 i" n
scanf("%d",&h->w.wages);
* L; e: l  @: b0 W: C& gprintf("请输入职工住址(文字):");+ R1 i0 h0 f  l7 S7 ~
scanf("%s",&h->w.adr);
# @+ R, ]3 A* ?+ ^, ]printf("请输入职工电话(文字):");
; K( G' ?0 i8 R+ oscanf("%s",&h->w.phone);( `' b' {; I1 W- q
q->next=p->next;9 }  S$ i/ j; t8 ?& N  T: {
p->next=q;
. d& C2 }% F* {' M% a6 p  Gprintf(".^_^.修改成功!.^_^.\n");4 Q( b% z- `: I- B4 b8 O
return 7;5 `+ K& z+ b2 m2 l  ?  n" l
} int main()/ }5 A) i8 r9 f
{' s, Q  z% g+ p! u0 ], y
8 }* V, g8 ^' @8 ~6 \) |/ V% Z5 Q
int cmd=0;
" E/ X; [. a! m/ S# [3 ~! Zint id;& ]. S% e, r3 f1 n5 y! ]$ L
char name[20];. W: u; i- A, }4 ^/ q1 v
char str[20];
7 c9 ~8 z4 g' S8 ^; c. N3 HPLINK pworker;2 H. M+ _# C! g8 {( n6 G( \6 h+ U: g
if(!(pworker=create()))' _+ v8 ~1 X" }, a. U5 T" P
{
) n9 z8 e; X5 V0 bexit(0);8 J% @  @' C! ?$ b, j
}
# y5 \; Z7 X, J/ Q% _% Mwhile(cmd!=7)
7 p3 W8 j% p3 ~4 X. Z{
( l. w2 D; p- D% C& iswitch(cmd)
) D) j4 P- H" e. `. C& c{/ a$ E, Z7 h$ u" u& C9 C9 }
case 0: message(); break;4 s9 K9 e1 c" P- O
case 1: add(pworker); break;0 \# Y* B. P7 R3 d6 E
case 2: show(pworker); break;- M# }# k; ?! Y- j/ y4 T
case 3: search(); break;
  x8 U: i+ \6 e6 k! Z0 ccase 4: printf("请输入要删除的职工号:");
' e- e$ w* j4 @/ m. k8 gscanf("%d",&id);
8 r7 z9 l, K- P, Mdel(pworker,id);
$ [7 R; m( V% ^& Zbreak;. z2 w2 I9 m1 s
case 5: modify(pworker); break;! T+ c$ c( b8 Z& O1 k
case 6: message(); break;
( h6 u8 A* m6 I  {}
$ \6 n( D5 r( fprintf("请输入操作命令数字:\n");
5 L# t6 C; X" p* g( S/ c! Gscanf("%d",&cmd);
" o) j3 W6 X6 B( r, {$ e( \}
! e& Y, h5 u: j4 D5 Dprintf("谢谢使用!\n");
! U& h4 z( ^; crelease(pworker);
9 r4 V: b$ n; z: B  @. creturn 0;1 Z7 x# p* ~# H6 l
}
& a  i: ]8 O* t9 K7 a% B/ L. t2 B$ P3 U! V5 z: L" n; m
6 z& ]1 H  d. r: t" d+ c
这是职工信息表 能运行出来不过查询功能不行能帮忙看一下是什么原因吗。。再此谢谢了!1 i, c! M" O( U( e7 b. o
! ]* H; X/ z2 ^. @! O7 i% K' d

5bde8c5494eef01f15b25a35e1fe9925bd317d69.jpg (118.36 KB, 下载次数: 111)

5bde8c5494eef01f15b25a35e1fe9925bd317d69.jpg






欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5