学生籍贯信息记录簿_C语言课程设计
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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->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);