数据结构课程设计报告之成绩分析与全国交通咨询模拟(3)

2019-01-07 19:00

return(w1); /*返回控制值*/ }

/****************输入模块****************/ enter() /*输入模块*/ {int i,n;

printf(\输入学生总数(0-%d)?:\

scanf(\ /*要输入的记录个数*/ printf(\现在输入数据\\n\\n\ for(i=0;i

{printf(\ input(i); /*调用输入函数*/ }

if(i!=0) save(n); /*调用保存函数*/ printf_back();

return 0;/*一个任务结束时让用户选择是浏览还是返回*/ }

/****************追加模块****************/ add() /*追加模块*/ {int i,n,m,k; FILE *fp; n=load();

printf(\增加的学生总数(0-%d)?:\

scanf(\ /*输入要追加的记录个数*/ k=m+n; for(i=n;i

{printf(\ input(i); /*调用输入函数*/ }

if((fp=fopen(\ /*以ab方式打开文件,追加保存*/ {printf(\不能打开文件\\n\ return 0; }

for(i=n;i

return 0;/*一个任务结束时的选择浏览还是返回*/ }

11

/****************修改模块****************/ modify() /*修改模块*/ {struct student s; int i,n,k,w0=1,w1,w2=0; n=load(); do

{system(\ k=-1;

/*给用户看全部记录以便确认要修改的记录*/ puts___(); /*显示-----*/

printf_face(); /*调用显示数据结构项目函数*/ for(i=0;i

{if((i!=0)&&(i==0)) /*目的是分屏显示*/

{printf(\ . . .\ getch(); puts(\ }

printf_one(i); /*调用显示一个记录的函数*/ } puts___(); do

{printf(\输入修改学号! NO.:\

scanf(\ /*输入要修改的数据的学号*/ for(i=0;i

{k=i; /*找到要修改的记录*/

s=stu[i]; /*把stu[i](即当次修改的学生记录)备份给s,以便用户反悔时恢复名誉*/ }

if(k==-1) printf(\不存在! 重新输入\ }

while(k==-1); /*当K=-1表示没有找到*/ printf_face(); /*调用显示数据结构项目函数*/ printf_one(k); /*调用显示一个记录的函数*/

w1=modify_data(k,n); /*修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改*/

if(w1==1) /*W1等于1时则表示用户确定这次修改*/

{printf(\★成功★ ^-^.\\n\\n是否修改其他?\\n\\n\\t1).是 2).保存返回\\t[ ]\\b\\b\ scanf(\

12

w2=1; /*来控制保存,使w2=1是标记已有过修改*/ } else {w0=0; if(w2==1) stu[k]=s;

} //走到这里是由于用户没有确认这次修改(在调用修改函数w1=modify_data(k,n);时没有确认). 使W0=0,为了让终止循环,

//stu[k]=s//,则把备份的s恢复给stu[k](即当次修改的),这样的好处是确保在此之前修改过的成功保存,而本次(用户没有确认的)不修改*/

if(w0!=1&&w2==1) /*W0不等于1则表示正常返回,w2=1表示在此之前有过修改,这时就保存用户已确认修改的并返回*/

save(n); /*w2不等于1表示在此次之前没有修改过(即:第一次),而又反悔这次修改,则不保存返回*/ }

while(w0==1); teacher(); return 0; }

/****************删除模块****************/ del() /*删除模块*/ {struct student s; int i,n,k,c,w0=1; n=load(); do

{system(\ k=-1;

/*给用户看全部记录以便确认要删除的记录*/ puts___();

printf_face(); /*调用显示数据结构项目函数*/ for(i=0;i

{if((i!=0)&&(i==0)) /*目的是分屏显示,每10个一屏*/

{printf(\ . . .\ getch(); puts(\ }

printf_one(i); /*调用显示一个记录的函数*/ }

13

puts___(); do

{printf(\输入删除学号! NO.:\

scanf(\ /*输入要修改的数据的学号*/ for(i=0;i

{k=i; /*找到要修改的记录的下标赋给K*/ s=stu[i]; }

if(k==-1) printf(\不存在! 重新输入\表示没有找到相同之的*/ }

while(k==-1); puts(\

printf_face(); /*调用显示数据结构项目函数*/ printf_one(k); /*调用显示一个记录的函数*/

printf(\是否确定?\\n\\t1).是 2).否且删除其他 3).保存全部返回 [ ]\\b\\b\ scanf(\ if(c==1)

{stu[k].ave=0; /*stu[k].ave=0用来标识这个记录是要删除的.保存时则不保存stu[k].ave=0的数据*/

printf(\^-^ ★成功★ ^-^.\\n\\n是否重输?\\n\\t1).是 2).返回菜单\\t[ ]\\b\\b\ /*问是否继续*/

scanf(\ }

if(c==3) w0=0; /*w0=0不删除直接返回*/

if(w0!=1&&c!=3) /*只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录*/ save(n); }

while(w0==1); teacher();

return 0;/*返回教师介面*/ }

/****************查找模块****************/ int h(char k) {return(k%5);}

int linkinsert(HNode *t[],char k)

{/*向用拉链法处理冲突的散列表t中插入关键字为k的记录*/

14

int i; HNode *p; i=h(k); if(t[i]==NULL)

{p=(HNode*)malloc(sizeof(HNode)); p->key=k;p->link=NULL;

t[i]=p;printf(\return(1);} else {p=t[i];

while(p!=NULL) if(p->key==k)

{printf(\else if(p->link!=NULL) p=p->link;

else{p->link=(HNode*)malloc(sizeof(HNode)); p=p->link;p->key=k;p->link=NULL; printf(\getch(); } } return 0; }

HNode *linksearch(HNode *t[],char k)

{/*在用拉链法处理冲突的散列表t中查找关键字为给定值k的记录*/ HNode *p; int i; i=h(k);

if(t[i]==NULL)return(NULL); p=t[i];

while(p!=NULL) if(p->key==k)

{printf(\return(p);} else p=p->link; return(NULL); }

search() /*查找模块*/ {int i,n,k,w1=1,w2,w3,w4;

15


数据结构课程设计报告之成绩分析与全国交通咨询模拟(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:南京师范大学考研真题清单

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: