版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
PAGEPAGE1桂林理工大学博文管理学院实习报告实习名称:C语言课程设计专业班级:通信学生姓名:学号:指导老师:实习时间:20XX年6月6日至20XX年6月17日目录1设计目的 42功能描述 42.1模块功能 42.1.1添加功能 42.1.2删除功能 42.1.3查询功能 43总体设计 103.1功能模块设计 103.1.1添加功能设计 103.1.2删除功能设计 113.1.3查询功能设计 113.2数据结构设计 113.3函数功能描述 113.3.1#include<stdio.h> 113.3.2#include<ctype.h> 113.3.3#include<string.h> 113.3.4#include<stdlib.h> 123.3.5各功能描述 124程序实现 124.2运行结果 135总结 17
C语言课程设计学生籍贯信息记录设计要求:基本功能可以存储学生信息;按学号和姓名查找该学生的籍贯;按籍贯可以查询所有学生的信息;可以对学生的信息加以修改;可以删除学生的信息;拓展功能写入文件读取文件创新(自拟)功能:程序实现的其它功能由个人自拟。设计要求具体说明学生籍贯信息包括:学号、姓名、省份,县市名称。试设计一学生籍贯信息管理,使之能提供以下功能:1)系统以菜单方式工作(用键盘输入1~8之间的数来选择功能,其中8为退出);2)学生籍贯信息录入功能(包括学号、姓名、省份、县市名称);3)学生籍贯信息整体浏览功能;4)按学号查询学生籍贯信息;5)按省份查询统计学生人数信息;6)按照学号查询修改学生信息;7)按照输入的学号信息的删除学生籍贯记录信息。8)根据“省份”由小到大排序。题目要求按分析、设计、编码、调试和测试的软件开发过程完成这个应用程序。2)为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。3)界面应友好,操作应流畅。输入要求应用程序运行后,在屏幕上显示一个菜单。用户可以根据需求,选定相应的操作项目。进入每个操作后,一般应有相应的子菜单,或有相应的提示信息,根据提示信息的要求,从键盘或文件输入相应的信息。输出要求应用程序运行后,要在屏幕上显示一个菜单。2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。提示设计一个结构体类型和一维数组类型,用来存放学生籍贯记录信息。1设计目的1.巩固和加深学生对C语言课程的基本知识的理解和掌握;2.掌握C语言编程和程序调试的基本技能;3.利用C语言进行基本的软件设计;4.掌握书写程序设计说明文档的能力5.提高运用C语言解决实际问题的能力2功能描述2.1模块功能2.1.1添加功能添加学生基本信息中可以输入学生学号,学生姓名和学生班级。添加学生成绩可以输入学生的学号、姓名、省份,县市。并且可以判断输入数据的合法性。2.1.2删除功能能够删除输入错误或者不想要的陈旧信息。2.1.3查询功能能查询学生基本信息开始开始提示输入检查学的合法性放入结构体数组中YN结束图2添加(学生籍贯信息)开始开始提示输入姓名检查姓名的合法性输入学号检查学号合法性输入籍贯检查籍贯的合法性记录放入结构体数组中结束YNYNYN图3添加(学生成绩)开始开始提示输入检查调出学生籍贯信息删除结束YN图4删除(学生籍贯信息)开始开始提示输入检查删除结束YN图5删除(学生籍贯信息)开始开始输入查询的姓名判断姓名是否存在Y输出籍贯信息结束N图6查询(学生籍贯信息查询)开始开始输入查询的学号n判断学生存在输出该学生籍贯信息结束YN图7查询(学生籍贯信息)3总体设计3.1功能模块设计3.1.1添加功能设计
添加分为两部分添加学生基本信息学号。添加学生基本信息中要求输入学号、姓名、省份,县市。添加学生成绩要求输入学生的课学号、姓名、省份,县市。其中用结构体来建立输入的学生信息的形式。两个结构体间用静态链表连接,使其联系起来。3.1.2删除功能设计删除也分为两部分删除学生基本信息。删除用后一个来覆盖前一个原理进行操作。3.1.3查询功能设计查询学生成绩可以用3种方法来进行。学号、姓名、省份,县市。班级查询,可输入课程代号,可得班平均分。3.2数据结构设计先建立两个结构体studen1,student2。再设立全局变量,建立循环以验证输入的合法性,全局变量累加,全局变量累减。3.3函数功能描述3.3.1#include<stdio.h>在使用标准函数库中的输入输出函数时,编译系统要求程序提供有关的信息(例如对这些输入输出函数的声明),#include<stdio.h>的作用就是用来提供这些信息的,stdio.h是C编译系统提供的一个文件名,stdio是“standardinput&output”的缩写,即有关标准输入输出的信息。在程序中用到系统提供的标准函数库中的输入输出函数时,应在程序的开头写上一行:#include"stdio.h"或者是#include<stdio.h>,这样才能调用库函数3.3.2#include<ctype.h>#include<ctype.h>是在调用字符函数时,在源文件中包含的头文件。字符函数如:intisspace(intch);检查ch是否为空格制表或换行字符。“ctype”中c为字符型char的缩写,type为类型。3.3.3#include<string.h>string.h是个头文件,里面写的是关于字符串操作的一些基本函数。当程序中涉及对字符串的操作时,会用到这个头文件里面的函数。所以要把它include(包含)进来。3.3.4#include<stdlib.h>stdlib.h里面定义了五种类型、一些宏和通用工具函数。类型例如size_t、wchar_t、div_t、ldiv_t和lldiv_t;宏例如EXIT_FAILURE、EXIT_SUCCESS、RAND_MAX和MB_CUR_MAX等等;常用的函数如malloc()、calloc()、realloc()、free()、system()、atoi()、atol()、rand()、srand()、exit()等等。具体的内容你自己可以打开编译器的include目录里面的stdlib.h头文件看看。3.3.5各功能描述添加功能…….4程序实现核心算法及说明1、//主函数voidmain(){ intfun; read_data(); menu(); while(1) { printf("请输入功能号[0-7]:",&fun); scanf("%d",&fun); switch(fun) { case0: //退出 break; case1: //查看所有学生信息 view_data(); break; case2: //输入学生记录 add_data(); break; case3: //删除学生记录 delete_data(); break; case4: //编辑学生记录 edit_data(); break; case5: //查询(学号) query_data_no(); break;case6: //查询(姓名)query_data_name(); break;case7: //查询(籍贯) sort_data_address();break; } if(fun==0)break; to_menu(); }}其上为本程序的主函数,对已经定义好的子函数进行调用,是整个程序的主体部分。其中的每一个“case”语句分别对应其子函数的程序以及对其进行使用。}4.2运行结果图1查看所有学生信息图3编辑学生的学号图5按照学生姓名查询图6按照学生的籍贯查询图2删除学生的学号图4按照学生学号查询图1查看所有学生信息图3编辑学生的学号图5按照学生姓名查询图6按照学生的籍贯查询图2删除学生的学号图4按照学生学号查询5总结本程序的用途很广,能为学校对学生的管理提供很大的帮助;其编写过程其实不易,工作量很大,需要自己认真仔细地去完成,丝毫不能有一点的差错,否则该程序将是一团糟的,什么也执行不了;同时也真让我体会到了C语言的困难之处,也不是一朝一夕能学成的,所以还需要自己继续努力,对C语言做更深更全面的了解。此次工作我们分工细致,工作积极,各自完成了自己所分担的责任,也完成的比较完善。总之是我和同伴一起努力共同完成的结果。****大学C语言课程设计报告题 目:学生宿舍管理系统系部名称:专业名称:班级:学号:学生姓名:指导教师:时间:课程设计目的1.
设计一个ubuntu下的学生宿舍管理系统2.
掌握用C语言定义单链表结构,并实现其创建、插入、删除等基本操作。 二、课程设计内容用C语言编写“学生宿舍管理系统”,要求如下:创建链表,录入数据。数据的读写操作。数据的更新操作。数据的删除和插入。请你要求对数据进行查找。按要求排序。设计总体菜单界面。 三、实验要求1、录入数据学生的基本信息,包括学号、姓名、性别、年龄、专业、班级等。宿舍楼的基本信息,包括宿舍楼号、学生所住的房间号和宿舍床位号等。2、数据存储信息的录入要求用链表,把输入的信息要求存储到指定文件夹中,以便随时查看,也可供程序调用,方便操作人员不用重复输入数据。3、数据的更新更新包括插入、删除、修改。删除分根据学号删除和根据学生的楼层信息删除。5、数据的查询查询可以根据学号和宿舍信息不同方面进行查询,方便操作者使用。6、数据的排序操作者可以使所输入的信息按学号排序。7、数据的统计按整体统计,统计所有学生人数,男生人数和女生人数。四、概要设计 1.系统结构图(功能模块图)主函数主函数录入存储数据操作输出信息输入统计查找修改删除插入显示排序2.功能模块说明:(1).数据录入:创建单链表,调用Initnode()函数申请头结点,在调用append(),在调用Write_to_File()函数将信息写入文件中,(2)插入模块:先将文件信息读出,再调用insert()函数,可以向文件中插入信息。插入模块:先将文件信息读出,再调用del()函数,可以将输入错误或者需要的信息删除。(4)修改模块:先将文件信息读出,再调用modify()函数,将输入错误的信息修改。(5)查询模块:先将文件信息读出,再调用search(),在search()中有调用两个数,一个按照宿舍信息查询sushe_search(),需要楼号和宿舍号,一个按照生信息查询xuehao_search()需要学生学号或者姓名。(6)排序模块:先将文件信息读出,再调用sort(),按照学生学号排序,拍完续没有直接写入文件,如果要直接写入调用文件读入函数Write_to_File().(7)统计模块:先将文件信息读出,再调用tongji()函数,统计了女生人数和男生人数,还统计了总人数.五.详细过程和运行结果:删除模块开始开始输入要删除学生的学号输入要删除学生的学号num组织循环,扫描存储学生信息的链表组织循环,扫描存储学生信息的链表p->num:nump->num:num!===删除该学生信息删除该学生信息结束结束开始插入模块开始头插入学生信息头插入学生信息 输入插入的学生信息输入插入的学生信息将其入栈,即将插入的学生信息插到了最前面将其入栈,即将插入的学生信息插到了最前面结束结束查找模块开始开始选择查找方式选择查找方式按宿舍信息查找按学生学号查找按宿舍信息查找按学生学号查找组织循环,扫描存储学生信息的链表表输入要查找的学生组织循环,扫描存储学生信息的链表表输入要查找的学生lounum,sushenum,chuangnum输入要查找的学生学号输入要查找的学生学号nump->lounum:sushenup->sushenum:sushenup->lounum:sushenup->sushenum:sushenup->chuangnum:chuangnump->num:num!=!=输出该学生的信息输出该学生的信息输出该学生信息输出该学生信息结束结束开始开始输入要修改的学生学号输入要修改的学生学号num组织循环,扫描存储学生信息的链表表组织循环,扫描存储学生信息的链表表p->num:p->num:num==修改学生信息修改学生信息结束结束开始开始组织循环,扫描存储学生信息的链表表组织循环,扫描存储学生信息的链表表选出学号最小的学生,与第一选出学号最小的学生,与第一学生交换存储位置在余下的学生中选出学号最小的学生与第二个学生交换存储位置在余下的学生中选出学号最小的学生与第二个学生交换存储位置以此类推,直至排序完成以此类推,直至排序完成结束结束开始统计模块开始组织循环,扫描存储学生信息的链表表组织循环,扫描存储学生信息的链表表p->sex=mp->sex=wp->sex=mp->sex=wCount2++Count2++Count1++结束结束六.参考文献:《C语言程序设计》:王曙燕七.源代码#include<stdio.h>#include<stdlib.h>#include<string.h>//#include<conio.h>typedefstructStudent{int num;/*学号*/char name[15];/*姓名*/char sex;/*性别*/char zhuanye[20];/*专业*/int lounum;/*楼号*/int sushenum;/*宿舍号*/int chuangnum;/*床号*/structStudent*next;}Stu;voidWrite_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%d\n",p->num,p->name,p->sex,p->zhuanye,p->lounum,p->sushenum,p->chuangnum);p=p->next;}fclose(fp);}voidInitStu(Stu**h)/*创建头结点*/{(*h)=(Stu*)malloc(sizeof(Stu));if(h==NULL){printf("创建失败!!");getchar(); getchar();exit(0);} (*h)->next=NULL;}voidappend()/*录入学生信息*/{Stu*head;Stu*p,*q;charch;InitStu(&head);q=head;while(1){ system("clear"); printf("请录入学生信息\n"); p=(Stu*)malloc(sizeof(Stu)); printf("\n学号:");scanf("%d",&p->num); printf("\n姓名:");scanf("%s",p->name); printf("\n性别:");scanf("%c",&p->sex); printf("\n专业:");scanf("%s",p->zhuanye); printf("\n楼号:");scanf("%d",&p->lounum); printf("\n宿舍号:");scanf("%d",&p->sushenum); printf("\n床号:");scanf("%d",&p->chuangnum); p->next=q->next;q->next=p;q=p; printf("按任意键继续录入,按0结束录入"); getchar();ch=getchar();if(ch=='0')break;}Write_to_File(head);}voidRead_from_File(Stu*h)/*读出文件信息*/{FILE*fp;Stu*p,*q;inti;fp=fopen("sushe.txt","r");if(fp==NULL){printf("打开失败");exit(0);}q=h;while(!feof(fp)){p=(Stu*)malloc(sizeof(Stu));i=fscanf(fp,"%d%s%c%s%d%d%d\n",&p->num,p->name,&p->sex, p->zhuanye,&p->lounum,&p->sushenum,&p->chuangnum); if(i==EOF) break;q->next=p;q=p;} q->next=NULL;fclose(fp);}intdisplay()/*显示文件信息*/{Stu*head=NULL;Stu*p;InitStu(&head);Read_from_File(head); //printf("ok!\n");p=head->next;system("clear");if(!p){printf("无内容!");printf("\n按任意键键返回\n");getchar(); getchar();return0;}printf("学号姓名性别专业楼号宿舍号床号\n\n");while(p){printf("%-8d%-10s%-6c%-14s%-8d%-8d%-5d\n",p->num,p->name,p->sex,p->zhuanye, p->lounum,p->sushenum,p->chuangnum);p=p->next;}printf("\n按任意键返回\n");getchar(); getchar();return1; }voiddel()/*删除学生信息*/{Stu*head;Stu*p,*q;charch,h;intN;intlounum,sushenum,chuangnum;InitStu(&head);Read_from_File(head);q=head;p=head->next; do { system("clear"); printf("\n1.根据学生学号删除\n"); printf("\n2.根据宿舍信息删除\n"); printf("\n请选择删除方式:"); scanf("%c",&ch); while(1) { if(ch=='1') { printf("\n请输入学生学号:"); scanf("%d",&N); while(p) { if(p->num==N) { q->next=p->next; printf("删除成功!"); break; } q=p; p=p->next; } if(p==NULL) { printf("\n未找到此学生"); break; }else { free(p); } } elseif(ch=='2') { printf("\n请输入宿舍信息(楼号宿舍床号):"); scanf("%d%d%d",&lounum,&sushenum,&chuangnum); while(p!=NULL) { if(p->lounum==lounum&&p->sushenum==sushenum&&p->chuangnum) { q->next=p->next; printf("删除成功!"); break; } q=p; p=p->next; } if(p==NULL) { printf("未找到此学生"); break; }else { free(p); } } break; } printf("\n\n是否继续:Y/N?"); scanf("%c",&h); }while(h=='Y'||h=='y'); Write_to_File(head);}voidinsert() /*用头插法插入学生信息*/{ Stu*p,*head; charch; InitStu(&head); Read_from_File(head); system("clear"); do { p=(Stu*)malloc(sizeof(Stu)); p->next=NULL; printf("\t\t请输入插入的学生信息:\n"); printf("\t学号:"); scanf("%d",&p->num); printf("\n\t姓名:"); scanf("%s",p->name); printf("\n\t性别:"); scanf("%c",&p->sex); printf("\n\t专业:"); scanf("%s",p->zhuanye); printf("\n\t楼号:"); scanf("%d",&p->lounum); printf("\n\t宿舍号:"); scanf("%d",&p->sushenum); printf("\n\t床号:"); scanf("%d",&p->chuangnum); p->next=head->next; head->next=p; printf("\n\n是否继续插入?Y/N"); scanf("%c",&ch); }while(ch=='y'||ch=='Y'); Write_to_File(head);}voidmodify()/*修改学生信息(按学号修改)*/{ Stu*head; Stu*p;charch;intN;InitStu(&head);Read_from_File(head); system("clear"); printf("\n\n请输入修改的学生学号:"); scanf("%d",&N); p=head->next; do { while(p!=NULL) { if(p->num==N) { system("clear"); printf("\n请输入新的学生信息:\n"); printf("\n学号:"); scanf("%d",&p->num); printf("\n姓名:"); scanf("%s",p->name); printf("\n性别:"); scanf("%c",&p->sex); printf("\n专业:"); scanf("%s",p->zhuanye); printf("\n楼号:"); scanf("%d",&p->lounum); printf("\n宿舍号:"); scanf("%d",&p->sushenum); printf("\n床号:"); scanf("%d",&p->chuangnum); break; } p=p->next; } if(p==NULL) printf("\n未找到此学生"); else { printf("修改成功\n"); }printf("\n\n继续修改?Y/N"); scanf("%c",&ch); }while(ch=='y'||ch=='Y'); Write_to_File(head);}voidxuehao_search(Stu*head)/*按照学生学号查找*/{intnum;Stu*p;charch;p=head->next;do{ system("clear"); printf("\n请输入要查找的学生学号:"); scanf("%d",&num);while(p!=NULL) {if(p->num==num) { printf("学号姓名性别专业楼号宿舍号床号\n\n");printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n",p->num,p->name,p->sex,p->zhuanye, p->lounum,p->sushenum,p->chuangnum); break; } p=p->next; }if(p==NULL) printf("\n未找到此学生");printf("\n\n继续查找?Y/N");scanf("%s",&ch);}while(ch=='Y'||ch=='y'); }voidsushe_search(Stu*head)/*按照宿舍信息查找*/{intlounum,sushenum,chuangnum;Stu*p;charch;p=head->next;do{ system("clear");printf("\n请输入要查找的学生宿舍信息(楼号宿舍床号):");printf("\n楼号:");scanf("%d",&lounum);printf("\n宿舍号:");scanf("%d",&sushenum);printf("\n床号:");scanf("%d",&chuangnum); while(p!=NULL) {if(p->lounum==lounum&&p->sushenum==sushenum &&p->chuangnum==chuangnum) { printf("学号姓名性别专业楼号宿舍号床号\n\n");printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n",p->num,p->name,p->sex, p->zhuanye, p->lounum,p->sushenum,p->chuangnum); break; } p=p->next; } if(p==NULL) printf("\n未找到此学生");printf("\n\n是否继续?Y/N"); scanf("%s",&ch);}while(ch=='y'||ch=='Y');}voidSearch()/*查找学生信息*/{intchoose;Stu*head;InitStu(&head);Read_from_File(head);system("clear"); printf("\n1.根据宿舍信息查找.");printf("\n2.根据学生学号查找.");printf("\n3.退出.\n\n");printf("\n请选择查找方式:");scanf("%d",&choose);switch(choose){case1:sushe_search(head);break; case2: xuehao_search(head); break;case3:break;}}voidsort()/*将学生信息按学号排序*/{Stu*head;Stu*i,*j,*k;Stu*m,*n;Stu*temp;intl=0;InitStu(&head);Read_from_File(head);//冒泡排序法for(m=head,i=head->next;i;m=i,i=i->next){k=i;for(n=i,j=i->next;j;n=j,j=j->next) {if(j->num<k->num) { k=j; break; } }if(i!=k) { m->next=j; n->next=i; temp=i->next; i->next=j->next; j->next=temp; i=head; }} system("clear"); printf("\n\n输入学生信息:\n\n");i=head->next;printf("学号姓名性别专业楼号宿舍号床号\n\n");while(i){printf("%-8d%-8s%-4c%-8s%-8d%-8d%-5d\n",i->num,i->name,i->sex, i->zhuanye, i->lounum,i->sushenum,i->chuangnum);i=i->next;}printf("\n按任意键返回!");getchar(); getchar();}v
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应商产品质量异议处理跟进催办函3篇范本
- 2025年直播选品视觉呈现 产品卖点可视化与场景化展示
- 人工智能语音技术识别与应用报告
- 汽车维修店发动机维修规范操作手册
- 远程教育培训课程设计手册
- 市场调研方案预案设计手册
- 2026年年度财务报告审批确认信(6篇)范文
- 2026年医学检验技师资格考试真题及答案
- 2026恒丰银行成都分行社会招聘32人考试参考题库及答案详解
- 2026天津北辰区双街镇社区卫生服务中心见习岗位火热招募中!笔试参考题库及答案详解
- GB/T 26949.2-2022工业车辆稳定性验证第2部分:平衡重式叉车
- 教练场地技术条件说明
- 道路交通事故现场图绘制讲解
- 胡寿松 自动控制原理(第7版)笔记和课后习题(含考研真题)及答案详解(第七版-上册)
- LY/T 3039-2018正交胶合木
- 2023中级保育员考试题库及答案(通用版)
- 胶衣应用常见问题及解决课件
- 《英语课程与教学论》课件
- 新课改新高考新挑战新策略课件
- 辽宁省辽阳市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
- 2021-2022学年北京市西城区人教版一年级下册期末考试数学试卷【含答案】
评论
0/150
提交评论