当前位置:文档之家› 学生籍贯信息记录簿系统课程设计源代码

学生籍贯信息记录簿系统课程设计源代码

+64编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。

具体功能:(1)创建信息链表并以磁盘文件保存;(2)读取磁盘文件并显示输出所有学生的籍贯信息;(3)按学号或姓名查询其籍贯;(4)按籍贯查询并输出该籍贯的所有学生;(5)能添加、删除和修改学生的籍贯信息;#include "dos.h"#include "stdio.h"#include "stdlib.h"#include "conio.h"#include "math.h"#include "string.h"/**********************建立链表******************************/struct hj{ int age;long number;char name[10],address[50],sex[2];struct hj *next;};/**************************文件操作函数******************************/FILE *fp;void openfile(char xx[20]){fp=fopen(xx,"ab+");if(fp==NULL)fp=fopen(xx,"wb");}/************************录入信息函数***********************************/void hjnew(void){system("cls");int n=0,xage;long xnumber;char xname[10];char xaddress[50];char xsex[2];struct hj *head;struct hj *x1,*x2;head=NULL;x2=NULL;printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★录入信息★★★\n");printf("\n 〓提示输入0返回上级菜单〓\n\n\n"); printf("\n 请输入学号【15字内】:");scanf("%ld",&xnumber);if(xnumber==0)goto haha;printf("\n 请输入姓名【10字内】:");scanf("%s",xname);printf("\n 请输入年龄【|-__-|】:");scanf("%d",&xage);printf("\n 请输入性别【男OR女】:");scanf("%s",xsex);printf("\n 请输入籍贯【25字内】:");scanf("%s",xaddress);while(xnumber!=0){n++;x1=(struct hj *)malloc(sizeof(struct hj));x1->number=xnumber;strcpy(x1->name,xname);strcpy(x1->sex,xsex);x1->age=xage;strcpy(x1->address,xaddress);if(n==1)head=x1;elsex2->next=x1;x2=x1;printf("\n 请输入学号【15字内】:");scanf("%ld",&xnumber);if(xnumber==0)break;printf("\n 请输入姓名【10字内】:");scanf("%s",xname);printf("\n 请输入年龄【|-__-|】:");scanf("%d",&xage);printf("\n 请输入性别【男OR女】:");scanf("%s",xsex);printf("\n 请输入籍贯【25字内】:");scanf("%s",xaddress);}x2->next=NULL;x1=head;while(x1!=NULL){openfile("hj.txt");char d[5]="四川";fwrite(x1,sizeof(struct hj),1,fp);fclose(fp);if(strstr(x1->address,d)!=NULL){openfile("schj.txt");fwrite(x1,sizeof(struct hj),1,fp);fclose(fp);}else{openfile("qthj.txt");fwrite(x1,sizeof(struct hj),1,fp);fclose(fp);}x1=x1->next;}haha:;}/*****************************查询函数*************************/void hjxmselect(void) //按学号方式查询函数{ssmmx:int n=0;long hh;system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★查询编辑信息★★★\n");printf("\n 〓提示输入0返回上级菜单〓\n\n\n"); printf(" 请您输入学号:");scanf("%ld",&hh);if(hh!=0){struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen("hj.txt","rb");if(fp==NULL){printf("\n没有记录,请输入记录然后再查询!");getch();goto jjx;}while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj));fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;p=head;while(p!=NULL){if(p->number==hh){int a;printf("\n 结果→ 学号=%ld 姓名=%s 年龄=%d 性别=%s ",p->number,p->name,p->age,p->sex);printf("\n 地址=%s",p->address);printf("\n\n 操作→ ⑴更改数据⑵删除数据⑶查询其他数据⑷返回上页⑸退出程序\n\n 请您选择操作:");ssmx:scanf("%d",&a);switch(a){void hjedit(struct hj *headd,struct hj *pp);void hjdelete(struct hj *headdd,struct hj *ss);case 1: hjedit(head,p);goto ssmmx;break;case 2: hjdelete(head,p);goto ssmmx;break;case 3: goto ssmmx;case 4: goto jjx;case 5:exit(0);default:printf("\n 错误的选择,请重新选择:");goto ssmx;}}elsep=p->next;}int iiii=0;printf("\n 没有此记录1.重新查询2.返回上一页3.退出程序!");printf("\n 请选择:");qqqq:scanf("%d",&iiii);switch(iiii){case 1: goto ssmmx;case 2: goto jjx;case 3: exit(0);default: printf("\n 错误的选择,请重新选择:");goto qqqq;}goto jjx;}jjx:;}void hjxhselect(void)//按姓名方式查询函数{ssmm:int n=0;char hh[10];system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★查询编辑信息★★★\n");printf("\n 〓提示输入0返回上级菜单〓\n\n\n"); printf(" 请您输入姓名:");scanf("%s",hh);if(strcmp(hh,"0")!=0){struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen("hj.txt","rb");if(fp==NULL){printf("\n没有记录,请输入记录然后再查询!");getch();goto jjj;}while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj));fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;p=head;while(p!=NULL){if(strcmp(p->name,hh)==0){int a;printf("\n 结果→ 学号=%ld 姓名=%s 年龄=%d 性别=%s ",p->number,p->name,p->age,p->sex);printf("\n 地址=%s",p->address);printf("\n\n 操作→ ⑴更改数据⑵删除数据⑶查询其他数据⑷返回上页⑸退出程序\n\n 请您选择操作:");ssm:scanf("%d",&a);switch(a){void hjedit(struct hj *headd,struct hj *pp);void hjdelete(struct hj *headdd,struct hj *ss);case 1: hjedit(head,p);goto ssmm;break;case 2: hjdelete(head,p);goto ssmm;break;case 3: goto ssmm;case 4: goto jjj;case 5:exit(0);default:printf("\n 错误的选择,请重新选择:");goto ssm;}}elsep=p->next;}int iii=0;printf("\n 没有此记录1.重新查询2.返回上一页3.退出程序!");printf("\n 请选择:");qqq:scanf("%d",&iii);switch(iii){case 1: goto ssmm;case 2: goto jjj;case 3: exit(0);default: printf("\n 错误的选择,请重新选择:");goto qqq;}goto jjj;}jjj: ;}void hjjgselect(void)//按籍贯方式查询{yyy:int i;system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★籍贯方式查询信息★★★\n\n\n"); printf("\n 一显示所有信息\n");printf("\n 二显示四川籍所有信息\n");printf("\n 三显示其它籍所有信息\n");printf("\n 四自定义查询信息\n");printf("\n 五←返回上级菜单\n");printf("\n 六↓退出程序\n");printf("\n\n 请选择:");scanf("%d",&i);switch(i){ void zdyselect(void);void allselect(char a[8]);case 1:allselect("hj.txt");goto yyy;break;case 2: allselect("schj.txt");goto yyy;break;case 3: allselect("qthj.txt");goto yyy;break;case 4: zdyselect();case 5: break;case 6: exit(0);}}void zdyselect(void){ssmmz:int n=0,j=0;char hh[10];system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★自定义查询信息★★★\n\n\n"); printf(" 请您输入地址关键字:");scanf("%s",hh);if(strcmp(hh,"0")!=0){struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen("hj.txt","rb");if(fp==NULL){printf("\n 没有记录,请输入记录然后再查询!");getch();goto jjz;}while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj));fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;p=head;while(p!=NULL){if(strstr(p->address,hh)!=NULL){int a;j++;printf("\n 结果→ 学号=%ld 姓名=%s 年龄=%d 性别=%s ",p->number,p->name,p->age,p->sex);printf("\n 地址=%s",p->address);printf("\n\n 操作→ ⑴更改数据⑵删除数据⑶查询下一条数据⑷返回上页⑸退出程序\n\n 请您选择操作:");ssmz:scanf("%d",&a);switch(a){void hjedit(struct hj *headd,struct hj *pp);void hjdelete(struct hj *headdd,struct hj *ss);case 1: hjedit(head,p);goto ssmmz;break;case 2: hjdelete(head,p);goto ssmmz;break;case 3: p=p->next;continue;case 4: goto jjz;case 5:exit(0);default:printf("\n 错误的选择,请重新选择:");goto ssmz;}p=p->next;}elsep=p->next;}if(j==0){printf("\n\n\n没有匹配的记录按任意键继续!");getch();fclose(fp);goto ssmmz;}else{ int xx;printf("\n\n查询完毕! ⑴继续查询⑵返回上一级菜单⑶退出程序");printf("\n请选择:");scanf("%d",&xx);if(xx==2)goto jjz;else if(xx==3)exit(0);}goto ssmmz;jjz: ;}}void allselect(char a[8])//全部查询{int n=0;int k=0;system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★籍贯方式信息★★★\n\n\n");struct hj *p;struct hj *q=NULL,*head=NULL;fp=fopen(a,"rb");if(fp==NULL){printf("\n对不起,没有记录无法查询!");goto xxxx;}rewind(fp);while(!feof(fp)){n++;p=(struct hj *)malloc(sizeof(struct hj)); fread(p,sizeof(struct hj),1,fp);if(n==1)head=p;elseq->next=p;q=p;}q->next=NULL;struct hj *h1,*p2,*q3,*r4,*s5;h1=p2=(hj *)malloc(sizeof(struct hj));p2->next=head;while(p2->next!=NULL){q3=p2->next;r4=p2;while(q3->next!=NULL){if(q3->next->number<p2->next->number) r4=q3;q3=q3->next;}if(r4!=p2){s5=r4->next;r4->next=s5->next;s5->next=p2->next;p2->next=s5;}p2=p2->next;}head=h1->next->next;free(h1);p=head;while(p!=NULL&&n>0){n--;printf("\n学号=%ld 姓名=%s 年龄=%d 性别=%s",p->number,p->name,p->age,p->sex);printf("\n地址=%s",p->address);p=p->next;}xxxx:printf("\n→显示完毕←\n⑴↑返回上级菜单⑵↓退出程序\n请选择:"); xxx:scanf("%d",&n);switch(n){case 1:break;case 2:exit(0);default:printf("\n错误的选择,请重新选择:");goto xxx;}}void hjselect(void)//查询编辑信息函数{cxbegin:int a;system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★查询编辑信息★★★\n\n\n");printf("\n 一按学号方式查询\n");printf("\n 二按姓名方式查询\n");printf("\n 三按籍贯方式查询\n");printf("\n 四→显示全部信息\n");printf("\n 五←返回上级菜单\n");printf("\n 请选择查询方式:");cxmm:scanf("%d",&a);switch(a){case 1: hjxmselect();goto cxbegin;break;case 2: hjxhselect();goto cxbegin;break;case 3: hjjgselect();goto cxbegin;break;case 4: allselect("hj.txt");goto cxbegin;break;case 5: break;default:printf("\n错误的选择,请重新选择:");goto cxmm;}}void hjde(void)//删除界面函数{cxxbegin:int a;system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n"); printf("\n ★★★删除信息★★★\n\n\n");printf("\n 一按学号方式删除\n");printf("\n 二按姓名方式删除\n");printf("\n 三按籍贯方式删除\n");printf("\n 四→删除全部信息\n");printf("\n 五←返回上级菜单\n");printf("\n 请选择删除方式:");cxxmm:scanf("%d",&a);int i=0;switch(a){case 1: hjxmselect();goto cxxbegin;break;case 2: hjxhselect();goto cxxbegin;break;case 3: zdyselect();goto cxxbegin;break;case 4:fp=fopen("hj.txt","wb");if(fp!=NULL)i++;fp=fopen("schj.txt","wb");if(fp!=NULL)i++;fp=fopen("qthj.txt","wb");if(fp!=NULL)i++;if(i==3){printf("\n 全部数据已经删除!!!!!!敲任意键继续");getch();}goto cxxbegin;break;case 5: break;default:printf("\n错误的选择,请重新选择:");goto cxxmm;}}//==============删除函数接口=============== void hjdelete(struct hj *headdd,struct hj *ss){struct hj *q;char d[5]="四川";if(headdd==ss){headdd=headdd->next;goto gogo;}q=headdd;while(q!=NULL){if(q->next->number==ss->number){break;}q=q->next;}q->next=ss->next;gogo:q=headdd;fp=fopen("hj.txt","wb");while(q!=NULL){fwrite(q,sizeof(struct hj),1,fp);q=q->next;}fclose(fp);q=headdd;fp=fopen("schj.txt","wb");while(q!=NULL){if(strstr(q->address,d)!=NULL){fwrite(q,sizeof(struct hj),1,fp);}q=q->next;}fclose(fp);q=headdd;fp=fopen("qthj.txt","wb");while(q!=NULL){if(strstr(q->address,d)==NULL){fwrite(q,sizeof(struct hj),1,fp);}q=q->next;}fclose(fp);}//===============编辑函数接口============== void hjedit(struct hj *headd,struct hj *pp){int n=0;struct hj *p,*p1,*p2;char d[5]="四川";printf("\n 输入→ 学号=");scanf("%ld",&pp->number);printf("\n 姓名=");scanf("%s",pp->name);printf("\n 年龄=");scanf("%d",&pp->age);printf("\n 性别=");scanf("%s",pp->sex);printf("\n 地址=");scanf("%s",pp->address);p=headd;fp=fopen("hj.txt","wb");while(p!=NULL){fwrite(p,sizeof(struct hj),1,fp);p=p->next;}fclose(fp);p1=headd;fp=fopen("schj.txt","wb");while(p1!=NULL){if(strstr(p1->address,d)!=NULL){fwrite(p1,sizeof(struct hj),1,fp);}p1=p1->next;}fclose(fp);p2=headd;fp=fopen("qthj.txt","wb");while(p2!=NULL){if(strstr(p2->address,d)==NULL){fwrite(p2,sizeof(struct hj),1,fp);}p2=p2->next;}fclose(fp);}/*****************************主函数****************************************/int main(int argc, char* argv[]){begin:int t;system("cls");printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n\n\n\n\n");printf(" 一录入学生籍贯信息\n\n");printf(" 二查编学生籍贯信息\n\n");printf(" 三删除学生籍贯信息\n\n");printf(" 四退出程序\n\n");printf(" 请您选择:");mm:scanf("%d",&t);switch(t){case 1: hjnew();break;case 2: hjselect();break;case 3: hjde();break;case 4:exit(0);default:printf("\n 错误的选择,请重新选择:");goto mm;}goto begin;return 0;}。

相关主题