学生籍贯信息记录簿_C语言课程设计

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

HUNAN UNIVERSITY 程序设计训练

报告

学生姓名岳全有邓江军

学生学号*********** *********** 专业班级电气工程及其自动化

指导老师黄友荣

院长 (系主任) 王耀南

2011年7月8 日

一.设计内容与要求

编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能要求如下:

1.创建信息链表并以磁盘文件保存;

2.读取磁盘文件并显示输出所有学生的籍贯信息;

3.按学号或姓名查询其籍贯;

4.按籍贯查询并输出该籍贯的所有学生;

5.能添加、删除和修改学生的籍贯信息;

6.显示输出江苏籍和非江苏籍学生的信息并可分别存盘。

二.主要技术指标及特点

3.0 信息描述(注:用流程图表示)

2.1 创建信息链表并以磁盘文件保存;

/**********************建立链表******************************/

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");

}

/************************主函数********************************/

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;

}

2.2 读取磁盘文件并显示输出所有学生的籍贯信息;

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 *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->numbernext->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);

相关文档
最新文档