




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选#include<stdio.h>#include<dos.h>#define N sizeof(struct STH)#define GESHI "%-10ld%-10s%-5s%-4d/%-2d/%-4d%-12s%-12s%sn"#define PRINTF "学号 姓名 性别 生 日 系别
2、160; 班级 家庭住址n"struct STH* readfile();/*声明*/int insert(struct STH*);int n=0;struct dt int year; /*全局变量*/
3、 int month; int day;struct STH long num; /*学号不能以0开头*/ char name9; char sex5; struct dt birth;
4、60; char xi20; char ban20; char add30; struct STH* next;*head;/*输入模块*/input_message() char ch; int flag=1; do if(insert
5、(&head)!=0) n+; /*计数*/ else printf(&qu
6、ot;n有相同的的学号!"); printf("n是否连续?(y/n)"); getchar(); scanf("%c",&ch); if(ch='y'|ch='Y')
7、60; printf("n连续!"); getch(); flag=1;/*标志程序不结束*/
8、160; else flag=0; while(flag=1); save_message(); printf("按任意键连续."); getch();/*i
9、nsert()模块*/ /*被输入和插入模块所调用*/int insert(struct STH*h) struct STH *p,*p0; p=(struct STH*)malloc(N); printf("n请输入学号:"); scanf("%ld&qu
10、ot;,&p->num); printf("n请输入姓名:"); scanf("%s",p->name); printf("n请输入性别:"); getchar(); /*取走上一个留下来得n*/ scanf("%s",p->sex);
11、60; printf("n请输入生日(年月日,用回车隔开):n"); scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day); printf("n请输入系别:"); scanf("%s",p->xi); printf("n请输入班级:&qu
12、ot;); scanf("%s",p->ban); printf("n请输入家庭住址:"); scanf("%s",p->add); p->next=NULL; if(*h=NULL) *h=p;
13、 return 1; p0=*h; if(p0->num>p->num) p->next=p0; *h=p; ret
14、urn 1; while(p0->next!=NULL&&p0->next->num<p->num) p0=p0->next; if(p0->next=NULL) p0->next=p;
15、; return 1; else if(p0->next->num=p->num) free(p); /*有相同数据输入失败*/
16、60; return 0; else p->next=p0->next; p0->next=p; return 1; /*读文件模块*/
17、; /*读文件模块中创建了一个新的链表,其返回值为新链表的头指针*/struct STH *readfile() FILE *fp; struct STH *p,*p0;
18、; char ch; int i; if(fp=fopen("STH.txt","r")=NULL) printf("n不能读取文件!n"); return NULL;
19、0; /*留意要该*/ head=p=p0=(struct
20、STH *)malloc(N); fscanf(fp,"%d",&n); fscanf(fp,"%c",&ch); /*为了使学号和信息个数分开加入一个/*/ fscanf(fp,"%ld%s%s%d%d%d%s%s%s", &p->num,p->name,p-&
21、gt;sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add); p->next=NULL; i=1; /*假如只有一个数时跳出*/ if(n!=1) &
22、#160; do p=(struct STH *)malloc(N); fscanf(fp,"%ld%s%s%d%d%d%s%s%s",
23、0; &p->num,p->name,p->sex,&p->birth.year,&p->birth.month,&p->birth.day,p->xi,p->ban,p->add); p0->next=p;
24、 p0=p; i+; while(i<n); p0->next=NULL; fcl
25、ose(fp); return head;/*插入模块*/insert_message() struct STH *p; int flag=1; char ch; head=readfile(); do if(insert(&head)!=0)
26、; n+; save_message(); printf("");
27、0; /*计数*/ else printf("
28、n添加失败!n有相同的的学号!"); save_message(); getch(); printf("n是否连续?(y/n)");
29、160; getchar(); ch=getchar(); if(ch='y'|ch='Y') printf(
30、"n连续!"); flag=1;/*标志程序不结束*/ else flag=0; while(flag=1);
31、 printf("n按任意键连续."); getch();/*修改模块*/renew_message() struct STH *p; int i,flag=1; long num; p=head=readfile(); if(head=NULL)
32、60; printf("读文件有误!"); getch(); else printf("n请按输入要修改的同学的学号:"); scanf("%ld&q
33、uot;,&num); for(i=0;i<n;i+) if(p->num=num)
34、 p->num=num; printf("n已找到要%ld号同学的信息!n",num); pr
35、intf("原姓名为%s 要修改为:n",p->name); scanf("%s",p->name); printf("原性别为%s 要修改为:n&quo
36、t;,p->sex); scanf("%s",p->sex); printf("原生日为%d/%d/%d 要修改为:n",p->birth.year,p->birt
37、h.month,p->birth.day); scanf("%d%d%d",&p->birth.year,&p->birth.month,&p->birth.day); p
38、rintf("原系别为%s 要修改为:n",p->xi); scanf("%s",p->xi); printf("原班级为%s 要修改为:n",
39、p->ban); scanf("%s",p->ban); printf("原家庭住址为%s 要修改为:n",p->add);
40、; scanf("%s",p->add); printf("你所更改后的信息为:n");
41、; printf(PRINTF); printf(GESHI, p->num,p->name,p->s
42、ex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add); printf("n按任意键退出!n"); getc
43、h(); flag=1; break;
44、0; else p=p->next; if(flag!=1)
45、160; printf("无此人信息!n"); else save_message(); getch(); /*删除模块*/delete_message() int flag;
46、0; long num; char ch; struct STH*p,*p0; p0=p=head=readfile(); if(head=NULL) printf("文件读取出错!"); getch();
47、 else printf("请输入要删除同学的学号:n"); scanf("%ld",&num); if(p0->num=num)
48、160; head=p0->next; free(p0); flag=1; &
49、#160; n-; /*同学数减一*/ p=p0->next; while(p!=NULL)
50、60; if(p->num=num) p0->next=p->next; f
51、ree(p); flag=1; n-;
52、0; else p0=p; p=p->n
53、ext; if(p->next=NULL) flag=0; if(flag
54、=1) printf("n永久删除%ld号同学的信息?(y/n)",num); getchar();
55、; ch=getchar(); if(ch='y'|ch='Y') save_message(); else
56、160; printf("n撤消删除!"); getch();
57、 else printf("n删除失败!"); getch(); /*查
58、询模块*/inquire_message() int i,flag=0; long num; struct STH *p; p=head=readfile(); if(head=NULL) printf("文件读取出错!");
59、160; getch(); else printf("请输入要查询同学的学号:n"); scanf("%ld",&num); for(i=0;i<n;i+)&
60、#160; if(p->num=num) printf("n信息
61、已找到:n"); getch(); clrscr();
62、0; printf("*FOUND*n"); printf("-nn"); printf(PRINTF);
63、; printf(GESHI, p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p-&
64、gt;add); printf("n-n"); printf("*END*n");
65、; flag=1;break; else p=p->next; &
66、#160; if(flag=0) printf("n无此人信息!"); else printf(&
67、quot;n显示完毕!按任意键返回主菜单."); getch(); /*显示模块*/output_message() int i=0; struct STH*p; p=head=readfile(); if(head=NULL)
68、 printf("文件读取出错!"); getch(); else clrscr(); printf("n*STUDENT*n");
69、160; printf("-n"); printf(PRINTF); while(i<n) printf(GESHI,
70、; p->num,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add); p=p->next;
71、0; i+; printf("-n"); printf("*END*n"); printf("
72、;n显示完毕!n共%d条信息.n按任意键返回主菜单.",n); getch(); /*存档模块*/save_message() FILE *fp; int i; struct STH*p; p=head; if(fp=fopen("STH.txt","w&qu
73、ot;)=NULL) printf("读文件错误!"); exit(0); fprintf(fp,"%d",n); fprintf(fp,"%c",'/'); &
74、#160; &
75、#160; /*留意要该*/ for(i=0;i<n;i+) fprintf(fp,"%ld %s %s %d %d %d %s %s %s ", p->nu
76、m,p->name,p->sex,p->birth.year,p->birth.month,p->birth.day,p->xi,p->ban,p->add); p=p->next; fclose(fp); printf("n信息已经保存在STH.txt文件中!"); getch();
77、; /*主函数*/void main(void) int choice; char ch; FILE *fp; struct date d; getdate(&d); if(fp=fopen("STH.txt","r")=NULL)
78、160; fp=fopen("STH.txt","w"); fprintf(fp,"%d",0); fclose(fp); else fscanf(fp
79、,"%d",&n); fclose(fp); clrscr(); printf("制作人:通工0501 李艺凡"); printf("nnn"); printf("
80、0; * n"); printf(" 欢迎进入同学户籍系统
81、60; nn"); printf(" 1 创建记录n"); printf("
82、160; 2 添加记录n"); printf(" 3 查找记录n");
83、0; printf(" 4 删除记录n"); printf(" 5 修改记录n
84、"); printf(" 6 显示全部信息n"); printf("
85、 0 退出程序n"); printf(" * n"); printf("
86、0; %d年%d月%d日",d.da_year,d.da_mon,d.da_day); printf(" n
87、160; 请选择(0-6):"); scanf("%d",&choice); if(n=0) /*记录为空时不让其进行其他操作*/ while(choice<0|choice>1)
88、0; printf("记录为空,无法操作此项!"); printf("请重新输入:(0或1)n"); scanf("%d",&choi
89、ce); else while(choice<0|choice>6) printf(&q
90、uot;输入有误!n 请重新输入:n"); scanf("%d",&choice); do switch(choice)
91、160; case 1:input_message();break; case 2:insert_message();break; case
92、3:inquire_message();break; case 4:delete_message();break; case 5:renew_message();break; case 6:output_
93、message();break; case 0:break; printf("n按任意键返回主菜单!"); getchar(); ch='y' if(ch='Y'|ch='y') clrscr(); print
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 小学数学苏教版六年级下册四 比例教案设计
- 安全演讲稿经典(7篇)
- 中职生自我鉴定锦集(15篇)
- 军训心得体会300字左右高中(18篇)
- 专科毕业生自我鉴定参考(19篇)
- 幼儿实习工作情况总结(4篇)
- 人教版九年级上册数学教学工作计划(15篇)
- 小学信息技术第三册 第7课熙熙攘攘-插入表格及网上浏览教学设计 河大版
- 应急疏散演练实施方案范文(10篇)
- 保育员年度工作总结(20篇)
- B江水利枢纽工程毕业设计计算书
- HG+20231-2014化学工业建设项目试车规范
- 2024海南中考化学二轮重点专题突破 专题三 流程图题(课件)
- 急性冠脉综合征患者健康教育
- 道德与法治赛课一等奖:《勿忘国耻》教学课件(五下)
- 2024年全国初中数学竞赛试题含答案
- 任务花式喷泉PLC控制任务课件
- 手术室转运工人培训
- MOOC 电子线路分析基础-西安电子科技大学 中国大学慕课答案
- 15j403-1楼梯栏杆标准
- CATIA CAA二次开发开发教材
评论
0/150
提交评论