没有合适的资源?快使用搜索试试~ 我知道了~
数据结构教材源代码,对初学者应该很有帮助吧!
资源推荐
资源详情
资源评论
附录(源程序以及调试结果分析中的界面)
#include”stdafx.h”
#include<string.h>
#include<stdio.h>
#include<malloc.h>
#define N 40
#define PR printf(“%s %s %s %s %s %s %s %s %s %s
“,
stu[i].num,stu[i].name,stu[i].score[0],stu[i].score[1],stu[i].sco
re[2],stu[i].score[3],stu[i].score[4],stu[i].score[5],stu[i].scor
e[6],stu[i].score[7],stu[i].score[8],stu[i].ave)
struct student
{char num[11];
char name[20];
int score[8];
float ave;
}stu[N];
typedef struct node {unsigned long int key;
struct node * link;}HNode;
typedef struct{int key;
float data; }RecNode;
/*保存函数*/
save(int n)
{FILE *fp;
int i;
if((fp=fopen("sc.txt","wb"))==NULL)
{printf("不能打开文件");
getch();return NULL;}
for(i=0;i<n;i++)
if(stu[i].ave!=0)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("文件输入错误");
fclose(fp);}
/*加载记录或可以计算记录个数的函数*/
load()
{FILE *fp;
int i;
if((fp=fopen("sc.txt","rb"))==NULL)
{printf("不能打开文件");
getch();return NULL;}
for(i=0;!feof(fp);i++)
fread(&stu[i],sizeof(struct student),1,fp);
fclose(fp);
return(i-1);}
/*一个任务结束时的选择浏览还是返回的函数*/
void printf_back()
printf("\n\n\t^-^★ ★成功 ^-^\n\n");
printf("请选择:\n\n\t1).现在浏览全部\t2).返回: [ ]\b\b");
scanf("%d",&w);
if(w==1) browse();
else teacher();}
/*显示数据结构项目函数*/
void printf_face()
{printf("\n\t学号 姓名\t英语 数学 C语言 管理学 信检 体育 近代史 线数 平均
分\t\n");}
average(int i)
{int j,sum;
for(sum=0,j=0;j<8;j++)
sum+=stu[i].score[j];
stu[i].ave=sum/8.0;}
/*学号输入函数*/
no_input(int i,int n)
{int j,k,w1;
do
{w1=0;
printf("学号:");
scanf("%s",stu[i].num);
for(j=0;stu[i].num[j]!='\0';j++)
if(stu[i].num[j]<'0'||stu[i].num[j]>'9')
{puts("Input error! Only be made up of (0-9).Please
reinput!\n");
w1=1;break;
}
if(w1!=1)
for(k=0;k<n;k++) if(k!
=i&&strcmp(stu[k].num,stu[i].num)==0)
{puts("该记录已存在. 请重新输入!\n");
w1=1;break;}
}
while(w1==1);}
/*对分数输入*/
score_input(int i)
{int j;printf(" 1.英语 2.数学 3.C语言 4.管理学 5.信检 6.体育 7.近代史
8.线性代数\n");
for(j=0;j<8;j++)
{printf("score %d:",j+1);
scanf("%d",&stu[i].score[j]);}}
/*输入一个记录函数*/
input(int i)
{ no_input(i,i);
printf("姓名:");
scanf("%s",stu[i].name);
score_input(i);
average(i); }
/*显示一个记录的函数*/
printf_one(int i)
{int j;
printf("%11s %-10s",stu[i].num,stu[i].name);
for(j=0;j<8;j++)
printf("%-6d",stu[i].score[j]);
printf("%-7.2f\n",stu[i].ave);
}
void puts___() {puts("\
n----------------------------------------------------------------
----");
}
/*修改记录函数*/
modify_data(int i,int n)
{int c,w1;
do
{puts("\nmodify by =>\n\n 1).学号 2.姓名 3).数据结构 4).数学\n
5).数据库 6).数学建模 7).信息管理 8).体育 9).毛概\n 10).线性代数
11).all score 12).all data 13).cancel and back");
printf("请选择: [ ]\b\b");
scanf("%d",&c);
if(c>13||c<1)
{puts("\n选择错误! 重新选择!");
getchar(); }}
while(c>13||c<1);
do
{switch(c)
{case 1:no_input(i,n);break;
case 2:printf("姓名:");scanf("%s",stu[i].name);break;
case 3:printf("英语:");scanf("%d",&stu[i].score[0]);break;
case 4:printf("数学:");scanf("%d",&stu[i].score[1]);break;
case 5:printf("C语言:");scanf("%d",&stu[i].score[2]);break;
case 6:printf("管理学:");scanf("%d",&stu[i].score[3]);break;
case 7:printf(":信检");scanf("%d",&stu[i].score[4]);break;
case 8:printf("体育:");scanf("%d",&stu[i].score[5]);break;
case 9:printf("近代史:");scanf("%d",&stu[i].score[6]);break;
case 10:printf("线性代
数:");scanf("%d",&stu[i].score[7]);break;
case 11:score_input(i);break;
case 12:input(i);break;
case 13:teacher(); }
if(c>2&&c<10)
average(i);
puts("\nNow:\n");
printf_face();
printf_one(i);
printf("\n是否确定?\n\n\t1).确定 2).重新修改 3).不保存返回
[ ]\b\b");
scanf("%d",&w1); }
while(w1==2);
return(w1); }
/****************输入模块****************/
enter()
{int i,n;
printf("输入学生总数(0-%d)?:",N);
scanf("%d",&n);
printf("\n现在输入数据\n\n");
for(i=0;i<n;i++)
{printf("\nInput %dth student record.\n",i+1);
input(i); }
if(i!=0) save(n);
printf_back();}
/****************追加模块****************/
add()
{int i,n,m,k;
FILE *fp;
n=load();
printf("增加的学生总数(0-%d)?:",N-n);
scanf("%d",&m);
k=m+n;
for(i=n;i<k;i++)
{printf("\nInput %dth student record.\n",i-n+1);
input(i); }
if((fp=fopen("sc.txt","ab"))==NULL)
{printf("不能打开文件\n");
return;}
for(i=n;i<k;i++)
if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)
printf("文件输入错误\n");
fclose(fp);
printf_back();}
/****************修改模块****************/
modify()
{struct student s;
FILE *fp;
int i,n,k,w0=1,w1,w2=0;
n=load();
do
{system("cls");
k=-1;
puts___();
printf_face();
for(i=0;i<n;i++)
{if((i!=0)&&(i%10==0))
{printf("\n\nRemember NO.which needed modify. pass any
key to contiune . . .");
getch();
puts("\n\n");}
printf_one(i); }
puts___();
do{printf("\n\n输入修改学号! NO.:");
scanf("%s",s.num);
for(i=0;i<n;i++)
if(strcmp(s.num,stu[i].num)==0)
{k=i;
s=stu[i]; }
if(k==-1) printf("\n\n不存在! 重新输入");}
while(k==-1);
printf_face();
printf_one(k);
w1=modify_data(k,n);
if(w1==1)
{printf("\n ^-^ ★ ★成功 ^-^.\n\n是否修改其他?\n\n\t1).是 2).保存
返回\t[ ]\b\b");
scanf("%d",&w0);
w2=1; }
else
{w0=0;
if(w2==1)
stu[k]=s;}
if(w0!=1&&w2==1)
save(n); }
while(w0==1);
teacher();}
/****************删除模块****************/
剩余22页未读,继续阅读
资源评论
人多的烦恼
- 粉丝: 3
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功