1、 按整体统计,统计所有学生人数,男生人数和女生人数。四、概要设计 1系统结构图(功能模块图)2功能模块说明:(1). 数据录入:创建单链表,调用Initnode()函数申请头结点,在调用append(),在调用Write_to_File()函数将信息写入文件中,(2) 插入模块:先将文件信息读出,再调用insert()函数,可以向文件中插入信息。(3) 插入模块:先将文件信息读出,再调用del()函数,可以将输入错误或者 需要的信息删除。(4) 修改模块:先将文件信息读出,再调用modify()函数,将输入错误的信息修改。(5) 查询模块:先将文件信息读出,再调用search(),在searc
2、h()中有调用两个数,一个按照宿舍信息查询sushe_search(),需要楼号和宿舍号,一个按照生信息查询xuehao_search()需要学生学号或者姓名。(6) 排序模块:先将文件信息读出,再调用sort (),按照学生学号排序,拍完续没有直接写入文件,如果要直接写入调用文件读入函数Write_to_File().(7) 统计模块:先将文件信息读出,再调用tongji()函数,统计了女生人数和男生人数,还统计了总人数.五详细过程和运行结果:删除模块 开始输入要删除学生的学号nump-num:num删除该学生信息结束组织循环,扫描存储学生信息的链表 != =插入模块 查找模块 选择查找方式
3、按学生学号查找输入要查找的学生学号num输出该学生的信息按宿舍信息查找输入要查找的学生lounum,sushenum,chuangnumlounum:sushenusushenum:chuangnum:chuangnum组织循环,扫描存储学生信息的链表表= 修改模块排序模块 统计模块 Count1+Count2+六参考文献: C语言程序设计: 曙燕七源代码#include stdlib.hstring.h/#include typedef struct Student int num; /*学号*/ char name15; /*姓名*/ char sex; /*性别*/ char zhuan
4、ye20; /*专业*/ int lounum; /*楼号*/ int sushenum; /*宿舍号*/ int chuangnum; /*床号*/ struct Student *next;Stu;void Write_to_File(Stu *L) /*将信息写入文件*/ FILE *fp; Stu *p; fp=fopen(sushe.txt,w); if(fp=NULL) printf(打开失败! getchar(); getchar(); exit(0); p=L-next; while(p) fprintf(fp,%d %s %c %s %d %d %dn,p-num,p-nam
5、e,p-sex, p-zhuanye,p-lounum,p-sushenum,p-chuangnum); p=p- fclose(fp);void InitStu(Stu *h) /*创建头结点*/ (*h)=(Stu *)malloc(sizeof(Stu); if(h=NULL)创建失败! (*h)-next=NULL;void append( ) /*录入学生信息*/ Stu *head; Stu *p,*q; char ch; InitStu(&head); q=head; while(1) system(clear printf(请录入学生信息n p=(Stu *)malloc(si
6、zeof(Stu);n学号: scanf(%d,&num);n姓名:%sname);n性别: %csex);n专业:zhuanye);n楼号:lounum);n宿舍号:sushenum);n床号: p-next=q- q-next=p; q=p;按任意键继续录入,按0结束录入 ch=getchar(); if(ch=0) break; Write_to_File(head); void Read_from_File(Stu *h) /*读出文件信息*/ int i;r打开失败 q=h; while(!feof(fp) p=(Stu *)malloc(sizeof(Stu); i=fscanf(
7、fp,name,&sex, p-zhuanye,&lounum,&sushenum,& if(i = EOF) break;next = NULL;int display() /*显示文件信息*/ Stu *head = NULL; Read_from_File(head); /printf(ok!n p=head- system( if(!p)无容!n按任意键键返回n return 0;学号 姓名 性别 专业 楼号 宿舍号 床号nn%-8d%-10s%-6c%-14s%-8d%-8d%-5dnsex,p-zhuanye,n按任意键返回n return 1;void del() /*删除学生信
8、息*/ char ch,h; int N; int lounum,sushenum,chuangnum; don1. 根据学生学号删除nn2. 根据宿舍信息删除nn 请选择删除式: scanf(, &ch); while(1) if(ch=1 printf(n请输入学生学号: scanf(N); while(p) if(p-num=N) q-next=p- printf(删除成功! break; q=p; p=p- if(p=NULL) printf(n未找到此学生 break; else free(p); else if(ch=2n请输入宿舍信息(楼号 宿舍 床号):%d %d %d whi
9、le(p!=NULL)lounum=lounum &sushenum=sushenum &chuangnum) 未找到此学生 nn是否继续 :Y/N?h); while(h=Y |h=yvoid insert() /*用头插法插入学生信息*/ Stu *p , *head; p=(Stu*)malloc(sizeof(Stu);tt请输入插入的学生信息 :n t 学号:nt 姓名:nt性别:nt 专业:nt 楼号:nt 宿舍号:nt 床号:next = head- head-next = p;nn是否继续插入?Y/N while(ch=|ch=void modify( ) /*修改学生信息(按
10、学号修改)*/nn请输入修改的学生学号: while(p! if(p- system(n请输入新的学生信息 : scanf( break; p=p- if(p=NULL) printf( else修改成功nnn 继续修改 ?void xuehao_search(Stu * head) /*按照学生学号查找*/ int num;next ;n请输入要查找的学生学号 : while(p! if(p-num = num )%-8d%-8s%-4c%-8s%-8d%-8d%-5dn p- if(p=NULL)nn 继续查找 ? | ch=void sushe_search(Stu *head) /*按
11、照宿舍信息查找*/n请输入要查找的学生宿舍信息(楼号 宿舍 床号) :n 楼号 :n 宿舍号 :n 床号 :sushenum=sushenum &chuangnum=chuangnum) p-nn 是否继续 ?void Search( ) /*查找学生信息*/ int choose;n1.根据宿舍信息查找.n2.根据学生学号查找.n3.退出.nnn请选择查找式:choose); switch(choose) case 1: sushe_search(head); case 2: xuehao_search(head); break; case 3:void sort( ) /*将学生信息按学号
12、排序*/ Stu *i,*j,*k; Stu *m,*n; Stu *temp; int l=0; /冒泡排序法 for(m=head,i=head-i;m=i,i=i-next) k=i; for(n=i,j=i-j;n=j,j=j- if(j-numnum) k=j; if(i!=k) m-next=j; n-next=i; temp=i- i-next=j- j-next=temp; i=head;nn输入学生信息 : nn i=head- while(i),i-num,i-name,i-lounum,i-sushenum,i- i=i-n按任意键返回!void tongji( ) /*统计学生信息*/ Stu *head,*p; int Count1,Count2; Count1=0; Count2=0; if(p-sex=w | p-W Count1+; else Count2+; p=p-t女生总数 : %dn ,Count1);t男生总数 :,Count2);t学生总数 :,Count1+Count2);t按任意键返回!void main()
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1