资讯详情

C语言课设学生籍贯信息记录簿(大作业)

一、任务概述(文章仅供参考)

进一步掌握和运用C语言设计课程的能力; 进一步理解和运用结构化程序设计的思想和方法; 掌握开发小型实用系统的基本方法;

二、设计功能

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    { 
         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 

标签: jjx拉绳位移传感器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台