zhfq 发布留言 2008-10-20 19:36 我用C做的学生成绩管理想在VC6.0中运行可...........大家来看看吧#include #include #include #include /*包含getch*/
typedef struct student { int position;/*序号*/ char num[15];/*学号*/ char name[20];/*姓名*/ char sex;/*性别*/ int chinese;/*语文成绩*/ int math;/*数学*/ int english;/*英语*/ float ave;/*平均*/ struct student *next; }stu; stu* head; char password[]="123";
void main() { char choice; stu *p; char s[10]; int flag=0,i,k=3; system("cls");
while(k>0) { printf("\n\n\nenter password:(123):"); scanf("%s",s); if(!strcmp(s,password)) { printf("pass\n"); flag=1;printf("press any key!"); getch(); getchar(); system("cls"); break; } else { printf("error enter again!\n"); k--; } }
if(!flag) { printf("you have enter 3 times!"); getch();exit(0); }
printf("\n\n\n\n\t\twhether enter the systerm Yes or No?\n"); scanf("%c",&choice); if(choice=='n'||choice=='N') exit(0); system("cls");
while(1) { printf("===================\t\t\t ==========================="); printf("\t\t\t\t wecome to the systerm\n"); printf("\nauthor:zhao\tmajor:computer\tnum:2074020029\n\n\n"); print(); printf("\nenter choice(0-10):"); scanf("%d",&i); /*system("cls");*/ if(i<0||i>10) { printf("enter number from 0 to 9\nplease inter again:"); scanf("%d",&i); } system("cls"); switch(i) { case 1: create(); break; case 2: lookdata() ; break; case 3: insert(); break; case 4: find(); break; case 5: change(); break; case 6: avesubject(); break; case 7: save(head); break; case 8: delet(); break; case 9: order(); break; case 10: load(); break; case 0: exit(0); break; } printf("press any key to continue!\n"); getch(); system("cls"); } }
/*typedef struct student stu ;*/ void create();/**建立人员数据*/ void lookdata();/**查看全部数据*/ void get(stu *p);/**输入每个学生的数据**/ void insert();/*插入数据*/ void find();/**查找*/ void change();/*修改*/ void avesubject(); void save (stu *p);/**保存数据**/ void lookone(stu* x);/**显示某个人的数据**/ void delet(); void order(); void load(); void cmeaverage();
void caverage();/**中文平均值**/
void maverage();/**数学平均值**/
void eaverage();/**平均值**/ void print(); void sort(stu *p1,stu *p2); void ordera(); void orderc(); void orderm(); void ordere(); //===========================================================
void get(stu *p)/**输入每个学生的数据**/ { float sum; static int n=0; printf("input num:"); gets(p->num); while(1) { ++n; if(n==1) break; else { stu *p2=head; while(strcmp(p2->num,p->num)&&p2!=NULL) p2=p2->next; if(p2==NULL) break; if(strcmp(p2->num,p->num)) break; else { printf("this number has existed please input agian!\n"); gets(p->num); } } } printf("input name:"); gets(p->name); for(p->sex='t';p->sex!='m'&&p->sex!='M'&&p->sex!='f'&&p->sex!='F';) { printf("input sex:"); scanf("%c",&p->sex); getchar(); }
printf("input chinese:"); scanf("%d",&p->chinese); for(;p->chinese<0||p->chinese>100;) { printf("please input again:"); scanf("%d",&p->chinese); }
printf("input math:"); scanf("%d",&p->math); for(;p->math<0||p->math>100;) { printf("please input 输入again:"); scanf("%d",&p->math); } printf("input english:"); scanf("%d",&p->english); for(;p->english<0||p->english>100;) { printf("please input again:"); scanf("%d",&p->english); } getchar(); sum=(float)(p->chinese+p->math+p->english); p->ave=sum/3; p->position=0; }
void create()/**建立人员数据*/ { int k=0; char ch='y'; stu *p1,*p2; p2=p1=(stu *)malloc(sizeof(stu)); while(ch!='n'&&ch!='N') { printf("if you want to enter the data 'y' or 'n'"); scanf("%c",&ch); getchar(); if(ch=='n'||ch=='N') break;
get(p1); k++; if(k==1) head=p1; else p2->next=p1; p2=p1; p1=(stu *)malloc(sizeof(stu)); } if(k==0) head=NULL; p2->next=NULL; } void lookone(stu* x)/**显示某个人的数据**/ {
printf("position is:%d\n",x->position); printf("num is:%s\n",x->num); printf("name is:%-s\n",x->name); printf("sex is:%c\n",x->sex); printf("chinese is:%d\n",x->chinese); printf("math is:%d\n",x->math); printf("english is:%d\n",x->english); printf("average score is:%5.1f\n",x->ave); } void find()/**查找*/ { char n[15]; stu *p=head; printf("input number:"); scanf("%s",n); while(strcmp(p->num,n)&&p!=NULL) p=p->next; if(strcmp(p->num,n)) printf("not foud\n"); else lookone(p); } void change()/*修改*/ { char n[15]; stu *p=head; printf("input number:"); scanf("%s",n); getchar(); while(strcmp(p->num,n)&&p!=NULL) p=p->next; if(strcmp(p->num,n)) printf("not foud\n"); else { printf("you can input the data you want to change\n\n"); get(p); } }
void insert()/*插入数据*/ { stu *p,*p1,*p2; p=(stu *)malloc(sizeof(stu)); get(p); p2=p1=head; if(head==NULL) head=p; else while(p1!=NULL&&p1->numnum) { p2=p1; p1=p1->next; } if(p1==head) { head=p; p->next=p2; } else { p2->next=p; p->next=p1 ; } } void caverage()/**中文平均值**/ { int n=0; stu *p=head; int max=-32768,min=32767; float ave=0,sum=0; while(p!=NULL) { if(p->chinese>max) max=p->chinese; if(p->chinese min=p->chinese; sum=sum+p->chinese; p=p->next; n++; } ave=sum/n; printf("chinese:\n"); printf("max=%d\t",max); printf("min=%d\t",min); printf("average is:%5.1f\n\n",ave); } void maverage()/**数学平均值**/ { int n=0; stu *p=head; int max=-32768,min=32767; float ave=0,sum=0; while(p!=NULL) { if(p->math>max) max=p->math; if(p->math min=p->math; sum=sum+p->math; p=p->next; n++; } ave=sum/n; printf("math:\n"); printf("max=%d\t",max); printf("min=%d\t",min); printf("average is:%5.2f\n\n",ave); } void eaverage()/**平均值**/ { int n=0; stu *p=head; int max=-32768,min=32767; float ave=0,sum=0; while(p!=NULL) { if(p->english>max) max=p->english; if(p->english min=p->english; sum=sum+p->english; p=p->next; n++; } ave=sum/n; printf("english:\n"); printf("max=%d\t",max); printf("min=%d\t",min); printf("average is:%5.2f\n\n",ave); } void cmeaverage() {
caverage();
maverage();
eaverage(); }
void avesubject() { int i=0; printf("<1>chinese avrage score\n\n"); printf("<2>math average score\n\n"); printf("<3>english average score\n\n"); printf("<4>all subject average score\n\n"); printf("<5>exit\n"); printf("please enter your choice from 1 to 5 :"); while(1) { scanf("%d",&i); if(i<1||i>5) printf("enter again\n"); else break; } system("cls"); switch(i) { case 1: caverage();break; case 2: maverage();break; case 3: eaverage();break; case 4: cmeaverage();break; case 5: return; }
} void lookdata()/**查看全部数据*/ { stu *p=head; printf("the student's data is:\n"); printf("position number\tname\t\tsex\tchinese\tmath\tenglish\taverage\n"); while(p!=NULL) { printf("NO.%d ",p->position); printf("%10s\t",p->num); printf("%-15s",p->name); printf(" %c\t",p->sex); printf("%d\t%d\t%d\t%5.1f\n\n",p->chinese,p->math,p->english,p->ave); p=p->next; } } void save (stu *p)/**保存数据**/ { FILE *fp; char file[10]; printf("enter file name:"); scanf("%s",file); if((fp=fopen(file,"wb"))==NULL) { printf("cant open this file\n"); return; } while(p!=NULL) { fwrite(p,sizeof(stu),1,fp); p=p->next; } fclose(fp); } void print() { printf("< 1>enter the data\n\n"); printf("< 2>display the data\n\n"); printf("< 3>insert data\n\n"); printf("< 4>fing someone\n\n"); printf("< 5>modify the data\n\n"); printf("< 6>look average score in every subject\n\n"); printf("< 7>save the data\n\n"); printf("< 8>delete one data\n\n"); printf("< 9>order the data\n\n"); printf("<10>load the data\n\n"); printf("< 0>exit"); } void delet() { char n[15]; stu *p1,*p2; char k; printf("please input the number:"); scanf("%s",n); getchar(); printf("Do you really want to delete this student 'y' or 'n'\n"); k=getchar(); if(k=='n'||k=='N') return; while(k!='y'&&k!='Y') { printf("please chose 'y' or 'n' "); k=getchar(); } p2=p1=head; if(head==NULL) { printf("have not found\n"); getch(); return; } if(strcmp(p1->num,n)==0) { head=p1->next; return; } while(strcmp(p1->num,n)&&p1!=NULL) { p2=p1; p1=p1->next; } if(p1==NULL) { printf("have not found"); return; } else p2->next=p1->next; printf("successfully delete this student\n"); return ; }
void load() { FILE *fp; stu *p1,*p2; int m=0; char filename[20]; printf("please input the file name:"); scanf("%s",filename);
if((fp=fopen(filename,"rb"))==NULL) { printf("cannot open this file\n");
return; }
p2=p1=(stu *)malloc(sizeof(stu)); while(fread(p1,sizeof(stu),1,fp)==1) {m++;
if(m==1) head=p1; else {p2->next=p1; p2=p1; } p1=(stu*)malloc(sizeof(stu)); }
p2->next=NULL; fclose(fp); }
void sort(stu *p1,stu *p2) { char s[20];char n[20];char x; float c,m,e; float f; strcpy(s,p1->num);strcpy(p1->num,p2->num);strcpy(p2->num,s); /*s=p1->num;p1->num=p2->num;p2->num=s;*/ strcpy(n,p1->name);strcpy(p1->name,p2->name);strcpy(p2->name,n); x=p1->sex;p1->sex=p2->sex;p2->sex=x; c=p1->chinese;p1->chinese=p2->chinese;p2->chinese=c; m=p1->math;p1->math=p2->math;p2->math=m; e=p1->english;p1->english=p2->english;p2->english=e; f=p1->ave;p1->ave=p2->ave;p2->ave=f;
}
void ordera() { stu * p1,* p2; int i=1; if(head==NULL) return; else { for(p1=head;p1!=NULL;p1=p1->next,++i) for(p2=p1->next,p1->position=i;p2!=NULL;p2=p2->next) if((p1->ave)<(p2->ave)) { sort(p1,p2) ; p2->position=i; } } } void ordern()/*按学号排序*/ { stu * p1,* p2; int i=1; if(head==NULL) return; else { for(p1=head;p1!=NULL;p1=p1->next,++i) for(p2=p1->next,p1->position=i;p2!=NULL;p2=p2->next) if(strcmp(p1->num,p2->num)>0) { sort(p1,p2) ; p2->position=i; } } } void orderc() { stu * p1,* p2; int i=1; if(head==NULL) return; else { for(p1=head;p1!=NULL;p1=p1->next,++i) for(p2=p1->next,p1->position=i;p2!=NULL;p2=p2->next) if((p1->chinese)<(p2->chinese)) { sort(p1,p2) ; p2->position=i; } } } void orderm() { stu * p1,* p2; int i=1; if(head==NULL) return; else { for(p1=head;p1!=NULL;p1=p1->next,++i) for(p2=p1->next,p1->position=i;p2!=NULL;p2=p2->next) if((p1->math)<(p2->math)) { sort(p1,p2) ; p2->position=i; } } } void ordere() { stu * p1,* p2; int i=1; if(head==NULL) return; else { for(p1=head;p1!=NULL;p1=p1->next,++i) for(p2=p1->next,p1->position=i;p2!=NULL;p2=p2->next) if((p1->english)<(p2->english)) { sort(p1,p2) ; p2->position=i; } } } void order() { int i; printf("\n\n<1>order the data according to the number of student\n\n"); printf("<2>order the data according to the average score\n\n"); printf("<3>order the data according to the chinese score\n\n"); printf("<4>order the data according to the math score\n\n"); printf("<5>order the data according to the english score\n\n"); printf("<6>exit\n"); printf("enter the choice frome 1 to 6 :"); scanf("%d",&i); if(i<0||i>6) { printf("please enter choice again:"); scanf("%d",&i); } switch(i) { case 1 :ordern();break; case 2 :ordera();break; case 3 :orderc();break; case 4 :orderm();break; case 5 :ordere();break; case 6 :return;
} system("cls"); } -------------Configuration: A - Win32 Debug-------------------- Compiling... A.C D:\A.C(31) : error C2065: 'password' : undeclared identifier D:\A.C(31) : warning C4047: 'function' : 'const char *' differs in levels of indirection from 'int ' D:\A.C(31) : warning C4024: 'strcmp' : different types for formal and actual parameter 2 D:\A.C(63) : warning C4013: 'print' undefined; assuming extern returning int D:\A.C(75) : warning C4013: 'create' undefined; assuming extern returning int D:\A.C(77) : warning C4013: 'lookdata' undefined; assuming extern returning int D:\A.C(79) : warning C4013: 'insert' undefined; assuming extern returning int D:\A.C(81) : warning C4013: 'find' undefined; assuming extern returning int D:\A.C(83) : warning C4013: 'change' undefined; assuming extern returning int D:\A.C(85) : warning C4013: 'avesubject' undefined; assuming extern returning int D:\A.C(87) : warning C4013: 'save' undefined; assuming extern returning int D:\A.C(89) : warning C4013: 'delet' undefined; assuming extern returning int D:\A.C(91) : warning C4013: 'order' undefined; assuming extern returning int D:\A.C(93) : warning C4013: 'load' undefined; assuming extern returning int D:\A.C(108) : error C2371: 'create' : redefinition; different basic types D:\A.C(111) : error C2371: 'insert' : redefinition; different basic types D:\A.C(112) : error C2371: 'find' : redefinition; different basic types D:\A.C(117) : error C2371: 'delet' : redefinition; different basic types D:\A.C(118) : error C2371: 'order' : redefinition; different basic types D:\A.C(119) : error C2371: 'load' : redefinition; different basic types D:\A.C(127) : error C2371: 'print' : redefinition; different basic types D:\A.C(230) : error C2371: 'create' : redefinition; different basic types D:\A.C(232) : error C2065: 'x' : undeclared identifier D:\A.C(232) : error C2223: left of '->position' must point to struct/union D:\A.C(233) : error C2223: left of '->num' must point to struct/union D:\A.C(234) : error C2223: left of '->name' must point to struct/union D:\A.C(235) : error C2223: left of '->sex' must point to struct/union D:\A.C(236) : error C2223: left of '->chinese' must point to struct/union D:\A.C(237) : error C2223: left of '->math' must point to struct/union D:\A.C(238) : error C2223: left of '->english' must point to struct/union D:\A.C(239) : error C2223: left of '->ave' must point to struct/union D:\A.C(297) : error C2371: 'find' : redefinition; different basic types D:\A.C(375) : error C2371: 'avesubject' : redefinition; different basic types D:\A.C(418) : error C2371: 'lookdata' : redefinition; different basic types D:\A.C(428) : error C2065: 'p' : undeclared identifier D:\A.C(428) : warning C4047: '!=' : 'int ' differs in levels of indirection from 'void *' D:\A.C(430) : warning C4022: 'fwrite' : pointer mismatch for actual parameter 1 D:\A.C(431) : error C2223: left of '->next' must point to struct/union D:\A.C(436) : error C2371: 'print' : redefinition; different basic types D:\A.C(450) : error C2371: 'delet' : redefinition; different basic types D:\A.C(495) : error C2371: 'load' : redefinition; different basic types D:\A.C(536) : warning C4244: '=' : conversion from 'int ' to 'float ', possible loss of data D:\A.C(536) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data D:\A.C(537) : warning C4244: '=' : conversion from 'int ' to 'float ', possible loss of data D:\A.C(537) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data D:\A.C(538) : warning C4244: '=' : conversion from 'int ' to 'float ', possible loss of data D:\A.C(538) : warning C4244: '=' : conversion from 'float ' to 'int ', possible loss of data D:\A.C(625) : error C2371: 'order' : redefinition; different basic types D:\A.C(652) : error C2040: 'password' : 'char []' differs in levels of indirection from 'int ' Error executing cl.exe.
A.exe - 28 error(s), 21 warning(s)Vincent8 发布留言 2008-10-21 10:52 不错啊
页: [1] 特别说明:如网页特效代码中有引用图片文件等,请自己下载到本地调试! |