2010/5/29东北大学秦皇岛分校C语言课程设计C语言课程设计2一、有关变量、结构体的说明:1)对变量的说明:num[]是对成员的学号的定义数组,长度为不超过10个;name[]是对成员的姓名的定义数组,长度不超过20个字符;phone是对成员的手机号的定义,为一长整形;number[]是对活动的队长的学号的定义数组,长度不超过10个字符;nam[]是对活动名称的定义数组,活动名称所占字符不超过30个;date是对活动日期的定义,定义类型为整形。2)对结构体的说明:在本程序中定义了两个结构体,分别为Member和Activity,分别包含了社团中的成员信息和社团活动信息,这两个结构体分别包含了num[],name[],phone和number[],nam[],date等来实现程序的功能,这些在源文件的注释中都有体现。3)对函数的说明:Input()成员信息输入Display()显示所有成员信息Sort_by_num()按照成员学号对成员进行排序Delete_a_record()删除一条成员信息Query_a_record()查找并显示一个成员的信息Addfromtext()从文本文档中添加成员信息Writetotext()将成员信息写入文本文档C语言课程设计3Input_act()活动信息输入Display_act()显示所有活动信息Delete_a_act()删除一条活动记录Query()查询并显示一条活动信息AddfromText()从文本文档中读取活动信息WritetoText()将活动信息写入写入文本文档二、树形结构模块图:三、操作说明:这个程序很容易上手,运行该程序时,在出现的界面上会出现14个选项,分别为:1)成员信息输入;C语言课程设计42)显示所有成员记录;3)将成员按学号排序;4)删除一条成员信息;5)成员信息查询;6)从文本文档中读取成员信息;7)将成员信息写入文本文档;8)活动信息输入;9)显示所哟活动信息;10)删除一条活动信息;11)活动信息查询;12)从文本文档中读取数据;13)将活动信息写入文本文档;0)退出系统。具体如下所示:1.起始欢迎界面C语言课程设计52.成员信息输入3.显示所有成员信息4.将成员按照学号排序C语言课程设计65.删除一条成员信息6.成员信息查询7.从文本文档中读取成员信息8.将成员信息写入文本文档9.活动信息输入C语言课程设计710.显示所有活动信息11.删除一条活动信息12.活动信息查询13.从文本文档中读取活动信息此为读取数据失败时的提示。C语言课程设计814.将活动信息写入文本文档15.退出系统在操作时只需按照提示和自己的需要完成操作即可,简单容易,有效地节省使用者的时间,有效地提高工作效率。四、源程序及代码:#includestdio.h//引用库函数#includestdlib.h#includectype.h#includestring.htypedefstruct//定义结构体数组{charnum[10];//学号charname[30];//姓名longphone;//手机号码}Member;Membermeme[80];//结构体数组变量C语言课程设计9typedefstruct{charnumber[10];//学号charnam[20];//活动名称intdate;//活动日期}Activity;Activityact[80];intmenu_select()//菜单函数{intc;do{system(cls);//运行前清屏printf(\n);printf(***欢迎使用大学社团管理系统***\n);/*菜单选择*/printf(1.成员信息输入;\n);printf(2.显示所有成员记录;\n);printf(3.将成员按学号排序;\n);printf(4.删除一条成员信息;\n);C语言课程设计10printf(5.成员信息查询;\n);printf(6.从文本文档中读取成员信息;\n);printf(7.将成员信息写入文本文档;\n);printf(8.活动信息输入;\n);printf(9.显示所有活动信息;\n);printf(10.删除一条活动信息;\n);printf(11.活动信息查询;\n);printf(12.从文本文档中读取活动信息;\n);printf(13.将活动信息写入文本文档;\n);printf(0.退出系统。\n);printf(*****************************************\n);printf(*|||||欢迎使用|||||||||欢迎使用|||||*\n);printf(*****************************************\n);printf(\n);printf(请在0~13之间做出选择:);scanf(%d,&c);//读入选择}while(c0||c13);return(c);//返回选择}intInput(Membermem[],intn)//输入成员信息C语言课程设计11{inti=0;charsign,x[10];//x[10]为了清除多余的数据while(sign!='n'&&sign!='N')//判断{printf(成员学号:);//交互式输入scanf(%s,mem[n+i].num);printf(成员姓名:);scanf(%s,mem[n+i].name);printf(成员手机号:);scanf(%ld,&mem[n+i].phone);gets(x);//清除多余的输入printf(要输入更多的成员信息吗?(Y/N));scanf(%c,&sign);//输入判断i++;}return(n+i);}voidDisplay(Membermem[],intn)//显示所有成员记录{C语言课程设计12inti;printf(----------------------------------------\n);/*格式头*/printf(学号姓名手机\n);printf(----------------------------------------\n);for(i=1;in+1;i++)//循环输入{printf(%-16s%-15s%ld\n,mem[i-1].num,mem[i-1].name,mem[i-1].phone);if(i1&&i%10==0)//每十个暂停{printf(-----------------------------------\n);/*格式*/system(pause);printf(-----------------------------------\n);}}printf(\n);system(pause);}voidSort_by_num(Membermem[],intn)//对成员按照学号排序C语言课程设计13{inti,j,*p,*q,s;//定义指针类型用以排序chart[10];for(i=0;in-1;i++)//冒泡法排序for(j=0;jn-1;j++)if(strcmp(mem[j].num,mem[j+1].num)0){strcpy(t,mem[j+1].num);strcpy(mem[j+1].num,mem[j].num);strcpy(mem[j].num,t);strcpy(t,mem[j+1].name);strcpy(mem[j+1].name,mem[j].name);strcpy(mem[j].name,t);p=&mem[j+1].phone;q=&mem[j].phone;s=*p;*p=*q;*q=s;}}C语言课程设计14intDelete_a_record(Membermem[],intn)//按姓名查找并删除一条成员信息{chars[20];inti=0,j;printf(请输入要删除的成员姓名:);//交互式问询scanf(%s,s);while(strcmp(mem[i].name,s)!=0&&in)i++;/*查找判断*/if(i==n){printf(未发现此成员!\n);return(n);//返回失败信息}for(j=1;jn-1;j++){strcpy(mem[j].num,mem[j+1].num);strcpy(mem[j].name,mem[j+1].name);mem[j].phone=mem[j+1].phone;}printf(删除中...\n);printf(删除成功!);//返回成功信息return(n-1);C语言课程设计15}voidQuery_a_record(Membermem[],intn)/*查找并显示一个成员的信息*/{chars[20];inti=0;printf(请输入要查询的成员姓名:);/*交互式输入*/scanf(%s,s);while(strcmp(mem[i].name,s)!=0&&in)i++;/*查找判断*/if(i==n){printf(未发现此成员!);//显示失败信息return;}printf(查询中...\n);printf(该成员学号为:%s\n,mem[i].num);/*输出该成员信息*/printf(该成员手机号为:%d\n,mem[i].phone);}C语言课程设计16intAddfromtext(Membermem[],intn)//从文件中读取成员信息{inti=0,num;FILE*fp;//*定义文件指针charfilename[20];//定义文件名printf(请输入文件名(如wenjian.txt):);scanf(%s,filename);//输入文件名if((fp=fopen(filename,rb))==NULL)//打开文件{printf(打开文件错误,请检查文件的正确性!\n);//打开失败信息printf(\n);system(pause);return(n);}fscanf(fp,%d,&num);//读入总记录量while(inum)//循环读入数据{fscanf(fp,%s%s%d,mem[n+i].num,mem[n+i].name,&mem[n+i].phone);i++;C语言课程设计17}n+=num;fclose(fp);//关闭文件printf(读取中...\n);printf(读入文件成功!\n);printf(\n);system(pause);return(n);}voidWritetotext(Membermem[],intn)//将所有记录写入文件{inti=0;FILE*fp;//定义文件指针charfilename[20];//定义文件名printf(请输入要写入的文件名(如wenjian.txt):);//输入文件名scanf(%s,filename);if((fp=fopen(filename,w))==NULL)//打开文件{printf(不能打开此文件,请检查文件的正确性!\n);system(pause);C语言课程设计18return;}fprintf(fp,%d\n,n);//循环写入数据while(in){fprintf(fp,%-16s%-15s%d\n,mem[i].num,mem[i].name,mem[i].phone);i++;}fclose(fp);//关闭文件printf(正在写入信息...\n);printf(信息写入成功!\n);//返回成功信息}intInpute_act(Activityacti[],intn)//输入活动记录{intj=0;charsign,x[10];while(sign!='n'&&sign!='N'){C语言课程设计19printf(队长学号:);//交互式输入scanf(%s,&acti[n+j].number);printf(活动名称:);scanf(%s,acti