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

进一步掌握和利用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;elsex2->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;elseq->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;}}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  ",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;}}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  ",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;}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",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;
}

大家可以点个关注后续会持续更新0.0(在此先谢过各位了)

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

  1. C语言课设学生考勤系统(大作业)

    一.设计功能(文章仅供参考) (1)确定界面,使用户可选择操作项目 (2)录入功能:使用结构体,要求用户输入相应信息,并存入文件 (3)查询功能:通过姓名或学号查找,利用循环找到对应结构体数组元素,然 ...

  2. c语言课程设计学生籍贯信息记录簿,C语言课程设计 学生籍贯信息记录簿设计.doc...

    C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...

  3. C语言课程设计学生籍贯信息,C语言课程设计 学生籍贯信息记录簿设计.doc

    C语言与程序设计课程设计 学生籍贯信息记录簿设计 学 院 信息工程 班 级 物联1301班 学 号 131408119 姓 名 滕玲 一.设计目的 该软件主要是编辑一个学生籍贯信息记录簿记录每个学生信 ...

  4. C语言课设会员计费系统(大作业)

    一.项目简介 通过"会员卡计费系统"C语言课程设计的实践,掌握函数.数据的读取和存储. 二.任务概述 (1)新会员登记. (2)会员信息修改. (3)会员续费. (4)会员消费结算 ...

  5. C语言课设手机电话簿管理系统(大作业)

    一.任务概述(文章仅供参考) 用c设计出模拟手机通讯录管理系统,实现对手机中的通讯录进行管理 二.设计功能 查看功能:选择此功能时,列出下列三类选择.A办公类,B个人类,C商务类,当选中某类时,显示出 ...

  6. C语言编写学生籍贯信息记录簿

    学生籍贯信息记录簿 前言 这是本人第一次写博客,有不足之处请见谅. 本文是利用简单的C语言编写的学生籍贯信息记录簿,写这篇是为了记录学习过程,也为后来者提供一些参考和思路.我使用的平台为Visual ...

  7. 文件的记录c语言程序,c语言程序学生籍贯信息记录簿设计.docx

    c 语言程序学生籍贯信息记录簿设计 学生籍贯信息记录簿 课程设计报告书 班 级: 方 0909-1 学 号:姓 名: 苑 小 叶 指导教师 : 康 亚 男 石家庄铁道大学四方学院 2010年 07月 ...

  8. c语言程序学生籍贯信息记录,c语言程序学生籍贯信息记录簿设计.doc

    c语言程序学生籍贯信息记录簿设计 学生籍贯信息记录簿 PAGE PAGE 14 学生籍贯信息记录簿设计 课程设计报告内容 选择题目 题目:学生籍贯信息记录簿设计 内容摘要 摘要: 学生籍贯信息管理系统 ...

  9. c语言程序学生籍贯信息记录,C语言程序设计学生籍贯信息记录簿

    C语言程序设计学生籍贯信息记录簿 编制一个学生籍贯信息记录簿,每个学生信息包括:学号.姓名.籍贯.具体功能: (1)创建信息链表并以磁盘文件保存: (2)读取磁盘文件并显示输出所有学生的籍贯信息: ( ...

最新文章

  1. 漫水填充算法 - cvFloodFill() 实现
  2. 用户都跑了,你却还分不清流失用户和流失率
  3. Python Numpy 教程(使用 Jupyter 和 Colab)
  4. 0320-学习进度条
  5. Bing Speech Recognition 标记
  6. linux中如何查看某个端口是否被占用,LINUX中如何查看某个端口是否被占用
  7. [转] Java中的容器
  8. sql 从ip列表中查询ip段_IP地址段查询深度优化案例
  9. 简记mysql在tomcat下和hibernate一起使用,No suitable driver found for的问题
  10. 测试视频软件支持的格式,支持82种视频格式!电视平台最强的本地播放器!
  11. 2018.11.05._PYTHN_DJANGO_CLASS 144~CLASS147
  12. 有限自动机字符串匹配
  13. 智头条 | 四部门:2025年建立500家智能家居体验中心,小米发布人形仿生机器人,2022光亚展智能成主角
  14. macbook黑屏_Mac Book电脑黑屏开不了机三种解决方法
  15. java-php-python-ssm文献管理平台计算机毕业设计
  16. esxi设置群晖核显直通
  17. 电子量产工具:输入系统-输入管理单元测试
  18. FMU主板程序更新说明
  19. d3.js 旋转图形_Mac平台上一款方便实用的图形编辑软件
  20. android 绘图之Path与Paint详解

热门文章

  1. 基于微信小程序的二手汽车拍卖系统
  2. QT显示中文 连接上文
  3. 联想 p系列服务器,全面解读联想ThinkStation P系列工作站
  4. 论文阅读方法与技巧【教授经验】
  5. 预制发票MIR7 隐藏功能:持有/保存已完成/预制的区别
  6. 绩效管理能力:沟通技巧
  7. 30岁还一事无成,你该怎么办?
  8. python微博评论情感分析_基于Python的微博情感分析系统设计
  9. 基于单片机的刷卡考勤系统的设计
  10. 【2020最新】人工智能实战就业(面试)学习路线图