没有合适的资源?快使用搜索试试~ 我知道了~
首页学生籍贯信息记录簿(1)创建信息链表并以磁盘文件保存;
学生籍贯信息记录簿(1)创建信息链表并以磁盘文件保存;

(1)创建信息链表并以磁盘文件保存; (2)读取磁盘文件并显示输出所有学生的籍贯信息; (3)按学号或姓名查询其籍贯; (4)按籍贯查询并输出该籍贯的所有学生; (5)能添加、删除和修改学生的籍贯信息;
资源详情
资源评论
资源推荐

编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体
功能:
(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(" ★★★★★欢迎使用户籍管理系统★★★★★");
printf(" ★★★录入信息★★★");

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;
else
x2->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;
else
q->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;
}
}
else
p=p->next;
剩余15页未读,继续阅读


















安全验证
文档复制为VIP权益,开通VIP直接复制

评论4