小猪0452
用个多维数组,共用体。。。。。 
#include "h"#include "h"#include "h"#include "STRINGH"#include "DOSh"#include "h"#include "h"#include "h"#define key_down 80#define key_up 72#define key_esc 1#define key_alt_f 33#define key_alt_x 45#define key_enter 28#define key_alt_c 46#define key_alt_e 18#define key_alt_s 31#define key_alt_d 32#define key_alt_r 19#define key_alt_p 25#define key_alt_o 24 struct student { char name[20]; long num; char age[2]; char sex[4]; char xibie[16]; char jiguan[50]; struct{ float chinese; float english; float math; float total; float ave;}score; struct student *next; };struct student agent[50];struct student *head,*this1,*new1,*new2,*stud;char numstr[40]={' ',' '};int n=0;int r=0;int k=0;long num;int get_key();void box(int startx,int starty,int high,int width);void new1name(void),listall(void),wfile(void),rfile(void);struct student *insert(struct student *head ,struct student *stud);void cjlr(),cjtj(),cjpx(),cxxs(),list(),cxcj();void del();int mmm();int nnn();void ab(); mmm(){char aaa[6],bbb[6]; char d; //int r=0; int i=0; FILE *fp; char a[6]; char b[6]; clrscr(); if((fp=fopen("file1","r"))==NULL) { window(1,1,80,25); textbackground(1); textcolor(0); clrscr(); window(20,8,60,20); textbackground(14); textcolor(0); clrscr(); gotoxy(8,2); cprintf("NO UER!"); fclose(fp); fp=fopen("file1","w"); gotoxy(2,4); printf("Please input name:"); gets(a);fwrite(a,6,1,fp); gotoxy(2,8); printf("Please input key:"); gets(b); fwrite(b,6,1,fp); fclose(fp); ab(); } else { window(1,1,80,25);textbackground(1);textcolor(0); clrscr(); window(20,8,60,20); textbackground(14); textcolor(0); clrscr(); gotoxy(8,2); cprintf("Input Your Name And Password:"); gotoxy(2,8); cprintf(" PWD:"); gotoxy(2,4); cprintf("NAME:"); scanf("%s",aaa); gotoxy(7,8); while(d=getch()) { if(d==13) break; cprintf("*"); bbb[i]=d; i++; } fp=fopen("file1","r"); fread(a,6,1,fp); fread(b,6,1,fp); fclose(fp); for(i=0;i<=5;i++) { if(aaa[i]!=a[i] || bbb[i]!=b[i]) exit(0); } } ab();}nnn(){union REGS inregs ,outregs;ah=0x2a;intdos(&inregs,&outregs);window(60,24,80,25);textbackground(14);textcolor(0);clrscr();cprintf("Data is 2004-%d-%/n",dh,dl);return 0;}void ab(){int i;clrscr();window(1,1,80,25);textbackground(1);textcolor(0);clrscr();window(20,8,62,20);textbackground(14);textcolor(128);clrscr(); for(i=0;i<=11;i++) {window(20,8+i,62,9+i); textbackground(i); textcolor(128+i*2); clrscr(); cprintf(" Welcome To Students Management System!"); }getch();} main(){int i,key,x,y,l;char *menu[]={"input(F)","print1(O)","del(D)","find(C)","print(P)","save(S)","exit(X)"};char *red[]={"input","printf1","del","find","print","cpoy","exit"};char *f[]={"xueji luru","chengji luru","chenji tongji","add student","chengji paixu"};char *c[]={"student","chengji"};char buf[16*10*4],buf1[16*4];struct student *stud;if(k++==0)mmm();window(1,2,80,25);textbackground(15);textcolor(0);clrscr();textbackground(1);clrscr();window(1,1,80,1);textbackground(15);textcolor(0);clrscr();window(1,1,80,2);gotoxy(1,1);for(i=0,l=0;i<7;i++){x=wherex();y=wherey();cprintf(" %s",menu[i]);l=strlen(menu[i]);gotoxy(x,y);textcolor(RED);cprintf(" %s",red[i]);x=x+l+4;gotoxy(x,y);textcolor(BLACK);}nnn();if(r++==0)main();window(1,2,80,25);while(1){key=0;while(bioskey(1)==0);key=get_key();if(key==key_alt_x) exit(0) ;if(key==key_alt_s) wfile();if(key==key_alt_d) del();if(key==key_alt_r) rfile();if(key==key_alt_p) listall();if(key==key_alt_o) list();if(key==key_alt_f){textbackground(0);textcolor(15);gotoxy(4,1);cprintf("%s",menu[0]);gettext(4,2,18,12,buf);window(4,2,18,8);textbackground(15);textcolor(0);clrscr();window(4,2,19,9);box(1,1,7,16);for(i=2;i<7;i++){gotoxy(2,i);cprintf("%s",f[i-2]);}gettext(2,2,18,3,buf1);textbackground(0);textcolor(15);gotoxy(2,2);cprintf("%s",f[0]);y=2;key=get_key();while(key!=key_alt_x && key!=key_enter && key!=key_esc){if(key==key_up || key==key_down){puttext(2,y,18,y+1,buf1);if(key==key_up)y=y==2?6:y-1;if(key==key_down)y=y==6?2:y+1;gettext(2,y,18,y+1,buf1);textbackground(0);textcolor(15);gotoxy(2,y);cprintf("%s",f[y-2]);}key=get_key();}if(key==key_alt_x) exit(0);if(key==key_enter){switch(y-1){case 1 : new1name();break;case 2 : cjlr();break;case 3 : cjtj();break;case 4 : insert(head,stud);break;case 5 : cjpx();break;default : break;}}}else{window(1,1,80,1);puttext(2,2,19,10,buf);textbackground(15);textcolor(0);gotoxy(4,1);cprintf("%s",menu[0]);}if(key==key_alt_c){textbackground(0);textcolor(15);gotoxy(39,1);cprintf("%s",menu[3]);gettext(39,2,50,7,buf1);window(39,2,49,5);textbackground(15);textcolor(0);clrscr();window(39,2,49,6);box(39,1,4,11);for(i=2;i<4;i++){gotoxy(2,i);cprintf("%s",c[i-2]);}gettext(39,2,49,3,buf1);textbackground(0);textcolor(15);gotoxy(2,2);cprintf("%s",c[0]);y=2;key=get_key();while(key!=key_alt_x&&key!=key_enter&&key!=key_esc){if(key==key_up||key==key_down) {puttext(39,y,49,y+1,buf1); if(key==key_up) y=y==2?3:y-1; if(key==key_down) y=y==3?2:y+1; gettext(39,y,49,y+1,buf1); textbackground(0); textcolor(15); gotoxy(2,y); cprintf("%s",c[y-2]); } key=get_key();} if(key==key_alt_x) exit(0); if(key==key_enter) {switch(y-1) {case 1: cxxs();break; case 2: cxcj();break; default:break; } } } else {window(1,1,80,2); puttext(39,2,49,7,buf); textbackground(15); textcolor(0); gotoxy(39,1); cprintf("%s",menu[3]); } } }int get_key() { union REGS rg; ah=0; int86(0x16,&rg,&rg); return ah; } void box(int startx,int starty,int high,int width) { int i; gotoxy(startx,starty); putch(0xda); for(i=starty+1;inext!=NULL) this1=this1->next; this1->next=new1; } this1=new1; printf("/nRecord%d:",n+1); printf("/nXing Ming:"); gets(this1->name); printf("/nXue Hao:"); gets(numstr); this1->num=atol(numstr); printf("/nNian Ling:"); gets(this1->age); printf("/nXing Bie:"); gets(this1->sex); printf("/nXue Yuan:"); gets(this1->xibie); printf("/nJi Guan:"); gets(this1->jiguan); n++; this1->next=NULL; printf("Are you sure input :Y/N?"); if(getch()=='n') main(); else new1name(); }} */ void new1name(void) { int key; char a; window(1,2,80,25); textbackground(BLUE); clrscr(); cprintf("Are you sure input?"); key=get_key(); while(key!=key_alt_x && key!=key_esc) { window(1,2,80,25); textbackground(BLUE); clrscr(); new1=new2=(struct student *)malloc(sizeof(struct student)); if(head==NULL) head=new1; else { this1=head; while(this1->next!=NULL) this1=this1->next; this1->next=new1; } this1=new1; printf("/nRecord%d:",n+1); printf("/nXing Ming:"); gets(&a); gets(this1->name); printf("/nXue Hao:"); gets(numstr); this1->num=atol(numstr); printf("/nNian Ling:"); gets(this1->age); printf("/nXing Bie:"); gets(this1->sex); printf("/nXue Yuan:"); gets(this1->xibie); printf("/nJi Guan:"); gets(this1->jiguan); n++; this1->next=NULL; printf("Are you sure input :Y/N?"); if(getch()=='n') main(); else new1name(); } main();} /*listallhanshuyonglaishuchuquanburenyuandejilu*/ void listall(void) { int i=0; window(1,2,80,25);textbackground(1);textcolor(0);clrscr(); if(head==NULL) {cprintf("/nempty list /n");return; } this1=head; do { cprintf("/nrecord number %d/n",++i); cprintf(" name:%s",this1->name); cprintf(" number:%ld",this1->num); cprintf(" age:%s",this1->age); cprintf(" sex:%s",this1->sex); cprintf(" xibie:%s",this1->xibie); cprintf(" jiguan:%s",this1->jiguan); cprintf(" chinese:%2f",this1->hinese); cprintf(" english:%2f",this1->lish); cprintf(" math:%2f",this1->ath); cprintf(" total:%2f",this1->al); cprintf(" ave:%2f/n",this1->ave); this1=this1->next; //this1->next=NULL; }while(this1!=NULL); getch(); main(); } //*insert struct student *insert(struct student *head,struct student *stud) { struct student *p0,*p1,*p2; p1=head; p0=stud; if(head==NULL) {head=p0;p0->next=NULL;} else while((p0->num>p1->num) && (p1->next!=NULL)) {p2=p1;p1=p1->next;} if(p0->num<=p1->num) {if(head==p1) {head=p0; p0->next=p1; } else {p2->next=p0; p1->next=p1; } } else {p1->next=p0; p0->next=NULL; } n=n+1; return(head); } void wfile(void) {FILE *fptr; char a[10]; if(n<1) {printf("/nCan't write empty /n");return;} // char a[10]; cprintf("Please input filename:"); gets(a); if((fptr=fopen(a,"wb"))==NULL) printf("/nCant' open file /n"); else {this1=head; while(this1->next!=NULL) {fwrite(this1,sizeof(struct student ),1,fptr); this1=this1->next; } // fwrite(this1,sizeof(struct student ),1,fptr); fclose(fptr); printf("/nFile of %d records have /n",n); } getch(); main(); } //*rfile void rfile(void) {FILE *fptr; char b[10]; cprintf("Please input filename:"); gets(b); if((fptr=fopen(b,"rb"))==NULL) printf("/nCan't open file %s/n",b); else {n=0; head=(struct student *)malloc(sizeof(struct student)); this1=head; fread(this1,sizeof(struct student),1,fptr); n++; while(1) {if(feof(fptr)) {fclose(fptr); this1->next=NULL;printf("/nFile Total agents is now %/n",n);getch(); main() ; }else{ this1->next=(struct student *)malloc(sizeof(struct student)); this1=this1->next; fread(this1,sizeof(struct student),1,fptr); n++; }} this1->next=NULL; //fread(this1,sizeof(struct student),1,fptr); //n++; fclose(fptr); printf("/nFile Total agents is now %/n",n); } getch(); main(); } //*wfile /*void wfile(void) {char a[10]; FILE *fptr; if(n<1) {printf("/nCan't write empty /n");return;} cprintf("Please input filename:"); gets(a); if((fptr=fopen(a,"wb"))==NULL) {cprintf("/nCant' open file ");puts(a);cprintf("/n"); } else {fwrite(agent,sizeof(struct student ),n,fptr); fclose(fptr); printf("/nFile of %d records /n",n); } getch(); main(); } //*rfile void rfile(void) {FILE *fptr; char a[10]; cprintf("Please input filename:"); gets(a); if((fptr=fopen(a,"wb"))==NULL) {cprintf("/nCan't open file ");puts(a); } else {while(fread(&agent[n],sizeof(agent[n]),1,fptr)==1) n++; fclose(fptr); printf("/nFile Total agents is now %/n",n); } getch(); main(); } */ //*cjlr void cjlr(void) {struct student *p1; long num; char ddd[5]; char ccc[5]; window(1,2,80,25); textbackground(BLUE); clrscr(); p1=head; printf("input the student' number:"); scanf("%ld",&num); if(head==NULL) { printf("/nlist null!/n"); } p1=head; while(num!=p1->num && p1->next!=NULL) {p1=p1->next;} if(p1->num==num) {printf("chinese:"); scanf("%f",&p1->hinese); // gets(ccc);printf("/n"); // p1->hinese=atof(ccc); printf("english:"); scanf("%f",&p1->lish); // gets(numstr); //p1->lish=atof(numstr); //getch(); printf("math:"); scanf("%s",ddd); // gets(ddd); p1->ath=atof(ddd); p1->al=p1->hinese+p1->lish+p1->ath; p1->ave=(p1->hinese+p1->lish+p1->ath)/0; } getch(); main(); } //*cjlr /*void cjlr(void) {struct student *p1; long num; char ddd[4]; window(1,2,80,25); textbackground(BLUE); clrscr(); p1=head; printf("input the student' number:"); scanf("%ld",&num); if(head==NULL) { printf("/nlist null!/n"); } p1=head; while(num!=p1->num && p1->next!=NULL) {p1=p1->next;} if(p1->num==num) {printf("chinese:"); scanf("%f",p1->hinese); //gets(numstr); //p1->hinese=atof(numstr); //getch(); printf("english:"); scanf("%f",p1->lish); //gets(numstr); //p1->lish=atof(numstr); // getch(); printf("math:"); //scanf("%f",p1->ath); gets(ddd); p1->ath=atof(ddd); p1->ave=(p1->hinese+p1->lish+p1->ath)/0; getch(); } getch(); main(); } */ //*del void del() {struct student *p1,*p2; long num; window(1,2,80,25); textbackground(BLUE); clrscr(); printf("input the del student' number:"); scanf("%ld",&num); if(head==NULL) { printf("/nlist null!/n"); exit(1); } p1=head; while(num!=p1->num && p1->next!=NULL) {p2=p1;p1=p1->next; } if(num==p1->num) {if(p1==head) head=p1->next; else p2->next=p1->next; printf("the %ld message have del/n",num); n=n-1; } else printf("No find %ld!/n",num); getch(); main(); } // void cjtj(void) {struct student *p; for(p=head;p!=NULL;p=p->next) { p->al=p->hinese+p->lish+p->ath; p->ave=p->al/0; } } // void cjpx(void) { struct student *p,*p1; int i,j,t; float temp; for(i=0;inext; if(p->alal) {temp=p->al; p->al=p1->al; p1->al=temp; } } } // void cxxs(void) { struct student *p; char name1[20]; window(1,2,80,25); textbackground(BLUE); clrscr(); printf("shu ru yao cha xun de xue sheng de xing ming:"); gets(name1); for(p=head;p!=NULL;p=p->next) {if(strcmp(p->name,name1)==0) {printf("xingming:%s/n",p->name); printf("xuehao:%ld/n",p->num); printf("nianling:%s/n",p->age); printf("xingbie:%s/n",p->sex); printf("xibie:%s/n",p->xibie); printf("jiguan:%s/n",p->jiguan); } } getch(); main(); } /*chaxunchengji*/ void cxcj(void) { struct student *p; char name2[20]; int i; window(1,2,80,25); textbackground(BLUE); clrscr(); printf("shu ru yao cha xu de xue sheng de xingming:"); gets(name2); for(p=head;p!=NULL;p=p->next) {if(strcmp(p->name,name2)==0) {printf("xingming:%s/n",p->name); printf("chinese:%2f/n",p->hinese); printf("english:%2f/n",p->lish); printf("math:%2f/n",p->ath); printf("total:%2f/n",p->al); printf("ave:%2f/n",p->ave); } }getch(); main(); }/*dayingmugexueshen*/void list(void){ char name3[20]; int i=0; window(1,2,80,25); textbackground(BLUE); clrscr(); printf("shu ru yao da ying de xue sheng xingming:"); gets(name3); if(head==NULL) { printf("/nempty /n"); return; } for(this1=head;this1!=NULL;this1=this1->next) { if(strcmp(this1->name,name3)==0) {printf("/nnrecord number %d/n",++i); printf("xingmming:%s/n",this1->name); printf("xuehao:%ld/n",this1->num); printf("nianling:%d/n",this1->age); printf("xingbie:%s/n",this1->sex); printf("xueyuan:%s/n",this1->xibie); printf("jiguan:%s/n",this1->jiguan); printf("chinese:%2f/n",this1->hinese); printf("english:%2f/n",this1->lish); printf("math:%2f/n",this1->ath); printf("total:%2f/n",this1->al); printf("ave:%2f/n",this1->ave); } } getch(); main(); }
在给我补充点分 哈哈 我毕业设计也是做的这个 我找找
#ifndef H_STUDENT_HH #define H_STUDENT_HH #include "h" #include "h" #include "h" #define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/ #define numsubs 5 /*学科数目*/ typedef struct message_student /*结构体定义*/ { char number[6]; char name[20]; char sex[4]; float subject[numsubs]; float score; float average; int index; }student; extern int numstus; /*学生数目*/ extern student *pointer; /*指向结构体数组*/ extern int lens; int menu_select(); /*函数声明*/ int openfile(student stu[]); int findrecord(student stud[]); int writetotext(student stud[]); void welcome(); void display1(); void showtable(); void sort(student stu[]); void deleterecord(student stu[],int i); void addrecord(student stud[]); void display(student stud[],int n1,int n2); void amendrecord(student stud[]); void count(student stud[]); void sortnum(student stud[]); void sortnum2(student stud[]); void sortname(student stud[]); void sortname2(student stud[]); void sortcount(student stud[]); void sortcount2(student stud[]); void statistic(student stud[]); void display1(); #endif //#include "h" int menu_select() { char c; printf("/n/n"); printf(" | 增加学生记录 统计信息 |/n"); printf(" | 查询学生记录 打开文件 |/n"); printf(" | 修改学生记录 保存文件 |/n"); printf(" | 学生纪录排序 显示记录 |/n"); printf(" | 退出系统 |/n"); printf("/n/n"); printf("请选择(0-8):"); c=getchar(); getchar(); return (c-'0'); } //#include "h" int findrecord(student stud[]) /*查找信息*/ { char str[2]; int i,num; if(numstus==0) { printf("没有可被查找的记录/n"); return -1; } else { printf("以何种方式查找?/学号/姓名/名次/n"); gets(str); if(str[0]=='1') /*按学号查找*/ { printf("请输入学号:"); gets(str); for(i=0;i<=numstus;i++) if(strcmp(str,stud[i]umber)==0) { display(stud,i,i); break;