这篇文章主要讲解了“C语言如何实现学生籍贯信息记录簿”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言如何实现学生籍贯信息记录簿”吧!一、任务概述(文章仅供参考)进一步掌握和利用C语言进行
这篇文章主要讲解了“C语言如何实现学生籍贯信息记录簿”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言如何实现学生籍贯信息记录簿”吧!
进一步掌握和利用C语言进行课程设计的能力;
进一步理解和运用结构化程序设计的思想和方法;
初步掌握开发一个小型实用系统的基本方法;
创建信息链表并以磁盘文件保存;
2.读取磁盘文件并显示输出所有学生的籍贯信息;
3.按学号或姓名查询其籍贯;
4.按籍贯查询并输出该籍贯的所有学生;
5.能添加、删除和修改学生的籍贯信息
#include "dos.h"#include "stdio.h"#include "stdlib.h"#include "coNIO.h"#include "math.h"#include "string.h" struct hj { long number; char name[10],address[50]; 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; long xnumber; char xname[10]; char xaddress[50]; 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 请输入籍贯【25字内】:"); scanf("%s",xaddress); while(xnumber!=0) { n++; x1=(struct hj *)malloc(sizeof(struct hj)); x1->number=xnumber; strcpy(x1->name,xname); strcpy(x1->address,xaddress); if(n==1) head=x1; else x2->next=x1; x2=x1; printf("\n 请输入学号【15字内】:"); scanf("%ld",&xnumber); if(xnumber==0) break; printf("\n 请输入姓名【10字内】:"); scanf("%s",xname); 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; else q->next=p; q=p; } q->next=NULL; p=head; while(p!=NULL) { if(p->number==hh) { int a; printf("\n 结 果 → 学号=%ld 姓名=%s",p->number,p->name); 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; } } else p=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; else q->next=p; q=p; } q->next=NULL; p=head; while(p!=NULL) { if(strcmp(p->name,hh)==0) { int a; printf("\n 结 果 → 学号=%ld 姓名=%s ",p->number,p->name); 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; } } else p=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; else q->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 ",p->number,p->name); 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; } else p=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; else q->next=p; q=p; } q->next=NULL; struct hj *h2,*p2,*q3,*r4,*s5; h2=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=h2->next->next; free(h2); p=head; while(p!=NULL&&n>0) { n--; printf("\n学号=%ld 姓名=%s",p->number,p->name); 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("%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;}
感谢各位的阅读,以上就是“C语言如何实现学生籍贯信息记录簿”的内容了,经过本文的学习后,相信大家对C语言如何实现学生籍贯信息记录簿这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!
--结束END--
本文标题: C语言如何实现学生籍贯信息记录簿
本文链接: https://lsjlt.com/news/330712.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0