HUNAN UNIVERSITY
程序设计训练
报 告
学生学号 *********** ***********
专业班级 电气工程及其自动化
指导老师 黄友荣
院长 (系主任) 王耀南
2011年 7月 8 日
一.设计内容与要求
编制一个学生籍贯信息记录簿,每个学生信息包括:学号、姓名、籍贯。具体功能要求如下: 2.读取磁盘文件并显示输出所有学生的籍贯信息;
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;了不起的盖茨比2012
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<p2->next->number)
r4=q3;
q3=q3->next;
}
if(r4!=p2)
{
s5=r4->next;
r4->next=s5->next;
2012安徽文综
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;
}
}
2.3 按学号或姓名查询其籍贯;
/*****************************查询函数*************************/
void hjxmselect(void) //按学号方式查询函数
{
ssmmx:
int n=0;
long hh;
system("cls");
printf("\n ★★★★★欢迎使用户籍管理系统★★★★★\n");
printf("\n ★★★查询编辑信息★★★\n");