《c语言课程设计程序电子版本.doc》由会员分享,可在线阅读,更多相关《c语言课程设计程序电子版本.doc(24页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、Good is good, but better carries it.精益求精,善益求善。c语言课程设计程序-#include#include#includestructs/定义一个s的结构体charnum12;charname15;charsex15;charbirthday15;charaddress10;charposition10;charmoney10;typedefstructnode/声明了一个structnode类型structsdata;structnode*next;/定义1个structnode类型的指针,它可以指向相应类型的变量。Node;voidAdd(Node*s
2、tudent)/自定义函数Node*p,*r,*s;charn12;r=student;s=student-next;while(r-next!=NULL)/这个循环的作用是使r为最后一个结点r=r-next;/将指针置于最末尾while(1)printf(*输入0返回主菜单!n);printf(n请你输入学号号:);scanf(%s,n);if(strcmp(n,0)=0)break;p=(Node*)malloc(sizeof(Node);/申请sizeof(Node)大小的空间printf(n请输入姓名:);scanf(%s,&p-data.name);printf(n请输入性别:);s
3、canf(%s,&p-data.sex);printf(n请输入出生年月:);scanf(%s,&p-data.birthday);printf(n请输入籍贯:);scanf(%s,&p-data.address);printf(n请输入政治面貌:);scanf(%s,&p-data.position);printf(n请输入家庭收入:);scanf(%s,&p-data.money);printf(提示:已经完成一条记录的添加。n);p-next=NULL;r-next=p;r=p;voidchange(Node*student)Node*p;charfind20;if(!student-n
4、ext)printf(n*没有资料可以修改!n);fflush(stdin);getchar();return;printf(请输入要修改的学号:);scanf(%s,find);p=student-next;while(p!=NULL)if(strcmp(p-data.num,find)=0)break;p=p-next;if(p!=NULL)intx;while(1)printf(完成修改请输入0n输入任意数再进行修改:);scanf(%d,&x);if(x=0)break;printf(请输入新学号(原来是%s):,p-data.num);scanf(%s,p-data.num);pri
5、ntf(请输入新学生姓名(原来是%s):,p-data.name);scanf(%s,p-data.name);printf(请输入新学生性别(原来是%s):,p-data.sex);scanf(%s,p-data.sex);printf(请输入新出生年月(原来是%s):,p-data.birthday);scanf(%s,p-data.birthday);printf(请输入新学生籍贯(原来是%s):,p-data.address);scanf(%s,p-data.address);printf(请输入新政治面貌(原来是%s):,p-data.position);scanf(%s,p-dat
6、a.position);printf(请输入新家庭收入(原来是%s):,p-data.money);scanf(%s,p-data.money);printf(n*该项记录资料已经成功修改!n);fflush(stdin);getchar();elseprintf(n*你要修改的信息不存在!n);fflush(stdin);getchar();voidDisp(Node*student)Node*p;p=student-next;if(!p)printf(n*没有记录可以显示!n);getchar();return;printf(tttt显示结果n);printf(学号学生姓名性别学生生日学生
7、籍贯政治面貌家庭收入n);while(p)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.address,p-data.position,p-data.money);p=p-next;getchar();getchar();voidTongji(Node*student)Node*p;intsel;intflag2=0,ha=0;charfind20;p=student-next;if(!student-next)printf(n*资料数为零!
8、n);getchar();return;printf(*n*0退出n*1按学号统计n*2按学生姓名统计n);scanf(%d,&sel);if(sel=1)printf(n输入你要统计分类的学号:);scanf(%s,find);while(p)if(strcmp(p-data.num,find)=0)flag2+;if(flag2=1&ha!=flag2)printf(学号学生姓名学生性别学生生日学生籍贯政治面貌家庭收入n);printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.
9、birthday,p-data.address,p-data.position,p-data.money);ha=flag2;elseif(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.address,p-data.position,p-data.money);ha=flag2;p=p-next;if(flag2)printf(n*按学生号%s统计分类的有%d条记录:*nn,find,flag2);elseprintf(n按学
10、号%s统计的结果为0个nn,find);elseif(sel=2)printf(n输入你要统计分类的学姓名:);scanf(%s,find);while(p)if(strcmp(p-data.name,find)=0)flag2+;if(flag2=1&ha!=flag2)printf(学号学生姓名学生性别学生生日政治面貌政治面貌家庭收入n);printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.address,p-data.position,p-d
11、ata.money);ha=flag2;elseif(flag2ha)printf(n%-13s%-11s%-7s%-10s%-13s%-10s%-5sn,p-data.num,p-data.name,p-data.sex,p-data.birthday,p-data.address,p-data.position,p-data.money);ha=flag2;p=p-next;if(flag2)printf(nnn共查找到%d条记录:nn,flag2);elseprintf(n按学生姓名%s统计分类的结果为0个nn,find);elseif(sel=0)return;fflush(stdin
12、);getchar();voidsave(Node*student)intn;Node*p;FILE*fp;/定义指向FILE类型文件的指针变量printf(需要保存文件吗?(按1保存,按0不保存));scanf(%d,&n);if(n=1)if(student-next=NULL)printf(无记录);elsep=student-next;if(fp=fopen(学生信息.txt,wb)=NULL)/打开输出文件,并使fp指向此文件printf(无法打开文件n);while(p!=NULL)fprintf(fp,%s%s%s%s%s%s%s,&p-data.num,&p-data.name
13、,&p-data.sex,&p-data.birthday,&p-data.address,&p-data.position,&p-data.money);p=p-next;fclose(fp);/关闭文件fflush(stdin);getchar();voiddismiss(Node*student)Node*p,*r;charfind20;if(!student-next)printf(n*没有资料可以显示!n);fflush(stdin);getchar();return;printf(n*请输入您要删除的学号!n);scanf(%s,find);p=student-next;while
14、(p!=NULL)if(strcmp(p-data.num,find)=0)break;p=p-next;if(!p)printf(n*找不到您想删除的学号!n);elser=student;while(r-next!=p)r=r-next;r-next=r-next-next;/删除节点getchar();voidmain()inta;Node*student;Node*p;student=(Node*)malloc(sizeof(Node);/通过malloc申请sizeof(Node)大小的一段连续内存空间,student-next=NULL;/指向的下一个结点p=student;whi
15、le(1)printf(n);printf(tttt学生信息管理系统n);printf(nt*);printf(nt1、添加记录n);printf(nt2、修改记录n);printf(nt3、浏览记录n);printf(nt4、分类查找记录n);printf(nt5、删除记录n);printf(nt0、退出n);printf(nn输入序号:);scanf(%d,&a);switch(a)/选择结构case0:return;break;case1:Add(student);save(student);break;case2:change(student);break;case3:Disp(student);break;case4:Tongji(student);break;case5:dismiss(student);break;default:printf(n*输入错误!n);break;system(cls);fflush(stdin);getchar();-