c语言课程设计报告及其源代码
C语言课程设计报告+源代码(成绩管理系统)

课程设计报告(专科)课程:C语言程序设计学号:0810720070姓名:班级:08级计算机应用师范专科班教师:时间:2009.6.8~2009.6.19计算机科学与技术系附录:源程序代码#include"stdio.h"#include"string.h"#include "conio.h"void input(struct class_list cla[6]);void total(struct class_list cla[6]);void search(struct class_list cla[6]);void modify(struct class_list cla[6]);void display(struct class_list cla[6]);int i,j,a=0,b[11]; //定义为全局变量struct student{char sex[5];char name[20];int num;double score;};struct class_list{struct student stu[50];}cla[10];int main(){int choice;printf("------------欢迎使用C语言成绩管理系统------------\n\n\n");do{printf("1.录入成绩2.统计成绩3.成绩查询4.修改学生信息5.显示成绩单0.退出\n");printf("请输入你的选择:");scanf("%d",&choice);if(choice<0||choice>5){printf("无效选择,请重选:");scanf("%d",&choice);}printf("\n");switch(choice){case 1:printf("只能使用一次此功能,请不要重复使用!!\n");input(cla); //成绩录入break;case 2:total(cla); //统计成绩break;case 3:search(cla); //成绩查询break;case 4:modify(cla); //修改学生信息break;case 5:display(cla); //显示成绩单break;case 0:break;}}while(choice!=0);printf("谢谢使用!\n");return 0;}void input(struct class_list cla[]) //成绩录入{int date; //学期printf("请输入学期:");scanf("%d",&date);printf("请输入班级的个数:");scanf("%d",&a);for(i=0;i<a;i++){printf("class:%d\n",i+1); //输出班级号printf("请输入学生的个数:");scanf("%d",&b[i]);printf("\n学号不能重复\n");for(j=0;j<b[i];j++)//输入学生的信息{printf("学号:");scanf("%d",&cla[i].stu[j].num);printf("姓名:");scanf("%s",cla[i].stu[j].name);printf("性别:");scanf("%s",cla[i].stu[j].sex);printf("C语言成绩:");scanf("%lf" ,&cla[i].stu[j].score);}if(j>=b[i])printf("人数已满\n");}if(i>=a)printf("班级已满\n\n");}void total(struct class_list cla[]){double sum,average;for(i=0;i<a;i++){sum=0;average=0;for(j=0;j<b[i];j++)sum=sum+cla[i].stu[j].score;average=sum/b[i];printf("班级:%d 总分:%.2lf 平均分:%.2lf\n",i+1,sum,average);}}void search(struct class_list cla[]){int choice2,num2,flag;char name2[20];do{printf("1.按姓名查找2.按学号查找3.查找学生不及格名单0.退出\n");printf("请输入你的选择:");scanf("%d",&choice2);switch(choice2){case 1:flag=0;printf("请输入你要查找的学生姓名:");scanf("%s",name2);for(i=0;i<a;i++)for(j=0;j<b[i];j++)if(strcmp(name2,cla[i].stu[j].name)==0){printf("班级:%d 学号:%d 姓名:%s 性别:%s c语言成绩:%.2f\n",i+1,cla[i].stu[j].num,cla[i].stu[j].name, cla[i].stu[j].sex,cla[i].stu[j].score);flag=1;}if(flag==0)printf("没有此学生信息!\n");break;case 2:flag=0;printf("请输入你要查找的学生学号:");scanf("%d",&num2);for(i=0;i<a;i++)for(j=0;j<b[i];j++)if(num2==cla[i].stu[j].num){printf("班级:%d 学号:%d 姓名:%s 性别:%s C语言成绩:%.2lf\n",i+1,cla[i].stu[j].num,cla[i].stu[j].name, cla[i].stu[j].sex,cla[i].stu[j].score);flag=1;}if(flag==0)printf("没有此学生信息!\n");break;case 3:flag=0;for(i=0;i<a;i++)for(j=0;j<b[i];j++){if(cla[i].stu[j].score<60)printf("班级:%d 学号:%d 姓名:%s 性别:%s c语言成绩:%.2lf\n",i+1,cla[i].stu[j].num,cla[i].stu[j].name,cla[i].stu[j].sex,cla[i].stu[j].score);flag=1;}if(flag==0)printf("没有学生不及格!\n");break;case 0:break;}}while(choice2!=0);}void modify(struct class_list cla[]) //修改学生信息{int choice2,num2,num3;int k,p,flag;float score2;char name2[20],name3[20],ch;if(a==0){printf("无班级,无人数,无法修改!\n");return ;}do{printf("1.增加学生信息 2.删除学生信息 3.修改姓名 4.修改学号 5.修改C语言成绩 6.退出\n");printf("请输入你的选择:");scanf("%d",&choice2);if(choice2<1||choice2>9){printf("无效选择,请重选:");scanf("%d",&choice2);}switch(choice2){case 1: //插入学生printf("请输入想插入的班级号1~10:");scanf("%d",&p);if(p>a){printf("无此班级,请重新输入:");printf("班级数为1~%d:",a);scanf("%d",&p);}b[p-1]++; //人数增加printf("请输入学生信息:\n");printf("学号:");scanf("%d",&cla[p-1].stu[b[p]].num);printf("姓名:");scanf("%s",cla[p-1].stu[b[p]].name);printf("c语言:");scanf("%lf",&cla[p-1].stu[b[p]].score);printf("性别:");scanf("%s",&cla[p-1].stu[b[p]].sex);printf("班级:%d 学号:%d 姓名:%s 性别:%s C语言成绩:%.2lf \n\n",p,cla[p-1].stu[b[p]].num,cla[p-1].stu[b[p]].name,cla[p-1].stu[b[p]].sex,cla[p-1].stu[b[p]].score);break;case 2: //删除学生printf("请输入要删除的学生姓名:");scanf("%s",name3);for(i=0;i<a;i++)for(j=0;j<b[i];j++){if(strcmp(name3,cla[i].stu[j].name)==0){flag=1;printf("班级:%d 学号:%d 姓名:%s 性别:%s c语言成绩:%.2\nf",i+1,cla[i].stu[j].num,cla[i].stu[j].name,cla[i].stu[j].sex,cla[i].stu[j].score);printf("你确认要删除此学生吗?<y/n> ");ch=getch();if(ch=='y'){for(k=j;k<b[i];k++){strcpy(cla[i].stu[k].name,cla[i].stu[k+1].name);strcpy(cla[i].stu[k].sex,cla[i].stu[k+1].sex);cla[i].stu[k].score=cla[i].stu[k+1].score;cla[i].stu[k].num=cla[i].stu[k+1].num;b[i]--;}printf("你已成功删除!\n");}else {flag=1;printf("删除未完成!\n");}if(b[i]==0)printf("班级%d为空!\n\n",i+1);}if(flag==0)printf("没有此学生!\n");}break;case 3: //修改的学生姓名flag=0;printf("请输入要修改的学生姓名:");scanf("%s",name2);for(i=0;i<a;i++){for(j=0;j<b[i];j++){if(strcmp(cla[i].stu[j].name,name2)==0){printf("请输入修改后的学生姓名:");scanf("%s",name3);strcpy(cla[i].stu[j].name,name3);flag=1;}}}if(flag==0)printf("无此人信息\n");break;case 4: //修改的学生学号flag=0;printf("请输入要修改的学生学号:");scanf("%d",&num2);for(i=0;i<a;i++){for(j=0;j<b[i];j++){if(cla[i].stu[j].num==num2){printf("请输入修改后的学生学号:");scanf("%d",&num3);cla[i].stu[j].num=num3;flag=1;}}}if(flag==0)printf("无此人信息\n");break;case 5: //修改学生的c语言成绩flag=0;printf("请输入要修改的C语言成绩的学生姓名:");scanf("%s",name2);for(i=0;i<a;i++){for(j=0;j<b[i];j++){if(strcmp(cla[i].stu[j].name,name2)==0){printf("请输入修改后的C语言成绩:");scanf("%f",&score2);cla[i].stu[j].score=score2;flag=1;}}}if(flag==0)printf("无此人信息\n");break;case 6:printf("\n");break;}}while(choice2!=6);}void display(struct class_list cla[]) //输出成绩单{if(a==0){printf("无班级,无人数,无法输出\n");return ;}for(i=0;i<a;i++){printf("班级:%d\n",i+1);for(j=0;j<b[i];j++)printf("学号:%d 姓名:%s 性别:%s c语言成绩:%.2lf\n",cla[i].stu[j].num,cla[i].stu[j].name,cla[i].stu[j].sex,cla[i].stu[j].score);}printf("\n");}。
c语言课设实验报告-记事本程序(含源码)

C语言课设实验报告[记事本程序]班级:学号:姓名:指导老师:C语言课设实验报告#define key_down 80#define key_up 72#define key_esc 1#define key_alt_f 33#define key_alt_x 45#define key_enter 28#define key_alt_e 18int get_key();void box(int startx,int stary,int high,int width);{int i,key,x,y,l;char *w=NULL,*d=NULL,*s=NULL;FILE *fp;char *menu[]={ "File ", "Edit ","Format","View","Help"};char *red[]={ "F", "E","F","V","H"};char *f[]={ "New ", "Open" , "Save", "Another","Quit alt_x"};char *e[]={"Search","Search next","Replace","Date"};char buf[16*10*2],buf1[16*2];textbackground(3);clrscr();window(1,1,80,1);textbackground(WHITE);textcolor(BLUE);clrscr();window(1,1,80,2);for(i=0, l=0; i <5;i++){x=wherex();y=wherey();textcolor(BLACK);cprintf( " %s ",menu[i]);l=strlen(menu[i]);gotoxy(x,y); x.y等的头文件*//*功能键的扫描码的定义*//* i为循环次数的序数,key为从键盘输入的功能键,x,y 为光标的坐标,l为菜单栏中菜单的字符长度*//*w是存放输入的内容(记录的事情)的指针,*s是存放输入的文件名的指针,*d是存放输入要定时的文件的文件名的指针*/ /*菜单栏中各个菜单的定义*//*菜单栏中菜单开头要标颜色的字母的定义*//* file 子菜单中项目的定义*//*edit子菜单的定义*/ /*缓冲区的定义*//*整个大窗口的背景颜色设置*//*创建菜单栏窗口*/ /*设置菜单栏窗口背景颜色为白色,字体颜色为蓝色*//*利用循环输出menu菜单栏,有多少个菜单循环多少次。
课程设计报告模板c语言

课程设计报告模板c语言一、课程目标知识目标:1. 理解C语言的基本语法结构,掌握变量定义、数据类型、运算符等基础知识;2. 学会使用控制结构,如顺序结构、分支结构和循环结构;3. 掌握函数定义、声明和调用的方法,理解局部变量和全局变量的概念;4. 了解数组、字符串和指针的使用,并能运用它们解决实际问题。
技能目标:1. 能够运用C语言编写简单的程序,解决问题;2. 培养良好的编程习惯,如规范命名、合理注释、代码缩进等;3. 学会使用编译器进行程序编译、调试和运行;4. 能够阅读和分析简单的C程序代码,提高编程能力。
情感态度价值观目标:1. 培养学生对编程的兴趣,激发学习热情;2. 培养学生的逻辑思维能力,提高问题解决能力;3. 培养学生的团队协作意识,学会与他人分享编程经验;4. 培养学生严谨、细心的学习态度,养成良好的编程习惯。
课程性质:本课程为初中年级的信息技术课程,旨在让学生掌握C语言编程的基本知识和技能。
学生特点:初中学生具有较强的逻辑思维能力和学习兴趣,但对编程知识了解较少。
教学要求:结合学生特点,注重理论与实践相结合,通过实例分析、编程实践等方式,使学生能够掌握C语言的基本知识,提高编程能力。
在教学过程中,关注学生的情感态度,激发学习兴趣,培养良好的编程习惯。
将课程目标分解为具体的学习成果,以便于后续教学设计和评估。
二、教学内容1. C语言基础知识- 变量定义、数据类型和运算符- 输入输出函数的使用- 顺序结构程序设计2. 控制结构- 分支结构(if、if-else、switch)- 循环结构(for、while、do-while)3. 函数- 函数定义、声明和调用- 局部变量和全局变量- 递归函数4. 数组、字符串与指针- 数组的使用和操作- 字符串的基本操作- 指针的概念和用法5. 编程实践- 编写简单程序,解决问题- 分析实例代码,提高编程能力- 调试程序,找出并修复错误教学内容安排与进度:第一周:C语言基础知识,顺序结构程序设计第二周:控制结构(分支、循环)第三周:函数的定义和调用,递归函数第四周:数组、字符串与指针第五周:编程实践与总结教材章节关联:教学内容与教材相应章节紧密关联,确保学生能够在学习过程中系统地掌握C 语言知识。
c语言课程设计设计报告

c语言课程设计设计报告c语言课程设计设计报告「篇一」c语言课程设计实验报告第一章基础掌握1.1 实验目的掌握C程序设计编程环境Visual C++,掌握运行一个C程序的基本步骤,包括编辑、编译、链接和运行。
(]1.2 实验要求在报告中记录建立、保存C程序实习过程。
1.3 实验基本内容编写程序,在屏幕上显示一个短句“Hello World”(1)程序:1)编译如下程序:#includeVoid main{printf (“Hello World! ”);}2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
(2)运行结果:输出结果:Hello World!总结:掌握C语言程序设计的基本框架,能够编写简单的程序。
第二章数据类型2.1 实验目的(1)掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。
()(2)通过编程进一步理解和掌握运算符的确切含义和功能。
2.2 实验要求(1)在报告中记录建立、保存C程序实习过程。
(2)完成典型题目,分析遇到的困难和实验中的收获。
2.3 实验基本内容输入程序,观察输出结果 1>./*test2.1c*/1)编译如下程序: #includevoid main{char ch; int k;ch='a',k='b';printf("%d,%x,%c",ch,ch,ch,ch,k); printf("k=%%d ",k) }2)链接。
执行Build-命令。
3)运行。
执行Build Execute 命令。
显示结果。
4)关闭程序工作区。
2>./*test2.2c*/1)编译如下程序: #includevoid main{float a1,a2; double b1,b2; a1=1234.12; a2=0.000001; b1=1234.12; b2=0.000001;printf("%f,%l f ",a1+a2,b1+b2);}2)链接。
c语言实验报告参考源代码

实验5三种基本结构的综合应用4.一个素数(设为p)依次从最高位去掉一位,二位,三位,……,若得到的各数仍都是素数(注:除1和它本身外,不能被其它整数整除的正整数称为素数,1不是素数,2是素数),且数p的各位数字均不为零,则称该数p为逆向超级素数。
例如,617,17,7都是素数,因此617是逆向超级素数,尽管503,03,3都是素数,但它不是逆向超级素数,因为它包含有零。
试求[100,999]之内的所有逆向超级素数的个数。
#include "stdio.h"main(){int i,j,k,m,p,q,n=0;for(i=100;i<=999;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i) /*三位数是素数时*/{k=i%100; /*去掉百位数字*/if(k>=10) /*十位数字不是0时*/{for(m=2;m<k;m++)if(k%m==0)break;if(m>=k) /*两位数是素数时*/{p=i%10; /*p为个位数字*/for(q=2;q<p;q++)if(p%q==0)break;if(q>=p)n++;}}}}printf("%d\n",n);}Key:575.求[2,400]中相差为10的相邻素数对的对数。
#include "stdio.h"main(){int i,j,k,m,p,q,n=0;for(i=2;i<=400;i++){for(j=2;j<i;j++)if(i%j==0)break;if(j>=i) /*i是素数时*/{for(k=i+1;k<i+10;k++){for(m=2;m<k;m++)if(k%m==0)break;/*k不是素数时终止if语句的内层循环*/if(m>=k)break;} /*k是素数时终止if语句的外层循环*/if(k>=i+10) /*[i+1,i+9]不是素数时*/{for(q=2;q<k;q++)if(k%q==0)break;if(q>=k) /*i+10是素数时*/n++;}}}printf("%d\n",n);}Key:56.求[1,21]范围内的梅森尼数#include "math.h"main(){long n,k=2,m,p,q;for(n=2;n<=21;n++){ k=k*2; p=k-1;m=sqrt(p);for(q=2;q<=m;q++)if(p%q==0) break;if(q>m) printf("%5ld",n);}}Key: 2 3 5 7 13 17 197.求1000以内的亲密数对main(){int a,b,n,m,q,p;for(a=1;a<1000;a++){n=0;for(q=1;q<=a/2;q++)if(a%q==0) n+=q;for(b=a;b<=1000;b++){ m=0;for(p=1;p<=b/2;p++)if(b%p==0) m+=p;if(a==m&&b==n) printf("%5d%5d",a,b);}}}/*Key:6 6 28 28 220 284 496 496*/实验6 数组及其应用3.由N个有序整数组成的数列已放在一维数组中,下列给定程序中函数fun的功能是:利用折半查找法查找整数m在数组中的位置。
c语言课程设计+报告+源代码

西安郵電大學C语言课程设计报告题目: 职工工资管理系统院系名称: 计算机学院专业名称: 软件工程班级:学生姓名:学号(8位):指导教师:设计起止时间: 2013年06月03日~2013年06月12日一.设计目的1.通过本课程设计, 强化上机动手能力, 使学生在理论和实践的基础上进一步巩固《c语言程序设计》课程学习的内容, 掌握工程软件设计的基本方法.2.学会将知识应用于实际的方法, 提高分析和解决问题的能力, 增加综合能力.3.为后续各门计算机课程的学习打下坚实基础; 为毕业设计和以后工作打下必要基础。
二.设计内容本设计主要包括了用户登录和主菜单,其中用户登录包括了一下几个功能1.新用户的注.2.用户登.3。
用户密码的修改。
而主菜单包括: 1.职工信息的录.2.职工信息的修.3.选择性排.4.统计人数和工.5. 输出现有的信.6.自定义查询信息。
三. 概要设计1. 功能模块图;1.2. 各个模块详细的功能描述。
2.修改密码的时候, 需要输入原密码, 并且输入两次新的密码必须相同才能完成密码的修改。
3.用户登录: 需要输入用户名和密码, 如果用户名不存在或密码错误会给出相应的提醒, 当输入正确的时候会进入主菜单。
4.新用户注册:需要输入注册的用户和密码, 如果用户明已被注册过会给出相应的提醒。
5.职工信息的输入:是从无开始输入职工的信息, 同样也会给出输入内容的提醒, 当输入最后一次职工的信息为零时结束输入, 同是会将输入的信息写入到文件里。
6.修改职工信息其中包括a.添加职工信息和输入职工信息相同在添加完会提醒是否继续添加。
b.修改员工信息: 此时会出现选择性修改职工的哪项信息,先进行选择再进行修改。
C.删除员工信息: 需要输入所要删除员工的姓名或id进行删除!如果删除不成功或者删除者不存在会给出相应的提醒。
7.统计信息: 会自动的统计现有员工的总人数和现有员工的总工资。
8.输出现有职工的信息: 会显示现在记录的职工的各项信息。
c语言课程设计及源代码

c语言课程设计及源代码一、教学目标本课程旨在让学生掌握C语言的基本语法、数据结构、算法和编程思想,培养学生具备基本的程序设计能力。
通过本课程的学习,学生将能够:1.理解C语言的基本语法和编程规则;2.熟练使用C语言进行简单的程序设计;3.掌握常用的数据结构和算法;4.培养良好的编程习惯和问题解决能力。
二、教学内容教学内容将按照教材的章节进行,主要包括:1.C语言的基本语法和编程规则;2.数据类型的定义和运算;3.控制语句和函数的使用;4.常用的数据结构和算法;5.指针和内存管理;6.文件操作和编程实践。
三、教学方法为了激发学生的学习兴趣和主动性,将采用多种教学方法:1.讲授法:通过讲解和演示,让学生掌握C语言的基本语法和编程规则;2.讨论法:通过小组讨论和实践,让学生深入理解和运用数据结构和算法;3.案例分析法:通过分析实际案例,让学生学会解决实际编程问题;4.实验法:通过上机实验,让学生动手实践,巩固所学知识。
四、教学资源为了支持教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用权威、实用的C语言教材;2.参考书:提供相关的参考书籍,供学生自主学习;3.多媒体资料:制作PPT和教学视频,辅助讲解和演示;4.实验设备:提供计算机实验室,让学生进行上机实验。
通过以上教学设计,相信学生能够顺利完成本课程的学习,掌握C语言编程的基本技能。
五、教学评估为了全面、客观、公正地评估学生的学习成果,将采用多种评估方式:1.平时表现:通过课堂参与、提问和讨论,评估学生的学习态度和理解程度;2.作业:布置适量的作业,评估学生的编程能力和实践能力;3.考试:进行期中和期末考试,评估学生对课程知识的掌握程度;4.项目实践:课程项目,让学生综合运用所学知识解决问题,评估学生的综合能力。
六、教学安排教学安排将根据课程内容和学生的实际情况进行设计:1.教学进度:按照教材的章节顺序,合理安排每一节课的教学内容;2.教学时间:根据学生的作息时间,选择合适的时间段进行授课;3.教学地点:选择适宜的教室或实验室,保证教学环境的舒适和设施的齐全;4.教学活动:结合学生的兴趣爱好,安排一些实践活动,提高学生的学习积极性。
c语言课程设计源代码

学校运动会管理系统问题描述:(1) 初始化输入:N-参赛院系总数,M-男子竞赛项目数,W-女子竞赛项目数;(2) 各项目名次取法有如下几种:取前5名:第1名得分 7,第2名得分 5,第3名得分3,第4名得分2,第5名得分 1;(3) 由程序提醒用户填写比赛结果,输入各项目获奖运动员的信息。
(4) 所有信息记录完毕后,用户可以查询各个院系或个人的比赛成绩,生成团体总分报表,查看参赛院系信息、获奖运动员、比赛项目信息等。
程序代码:#include<stdio.h>#include<string.h>#define N 3#define M 3#define W 3char* n_number[3]={"1","院系2","院系3"};char* m_number[3]={"1","男项2","男项3"};char* w_number[3]={"女项1","女项2","女项3"};int size=2;struct student{char num[10];char name[20];char xiangmu[20];int score;char ximing[20];}stu[100],temp;void input() //输入原始数据//{int temp = 0;printf("\t************输入界面************\n");printf("请输入:\n运动员号码,姓名,项目名,成绩,系名:\n");for(int i=0;i<size;i++){scanf("%s%s%s%d%s",&stu[i].num,&stu[i].name,&stu[i].xia ngmu,&stu[i].score,&stu[i].ximing);// if(strcmp(stu[i].ximing,n_number[0])==0)// printf(stu[i].ximing);//printf("%s\n",n_number[0]);for(int h=0;h<N;h++)if(strcmp(stu[i].ximing,n_number[h])==0)for(int s=0;s<M;s++){if(strcmp(stu[i].xiangmu,m_number[s])==0)temp = 1;else{for(int k=0;k<M;k++)if(strcmp(stu[i].xiangmu,w_number[k])==0)temp = 1;}}if(temp==0){i=i-1;printf("%s\n","输入信息有误,请重新输入!");}elseprintf("%s\n","本条信息录入完毕!");}printf("%s\n","所有信息录入完毕!");printf("输出:\n运动员号码,姓名,项目名,成绩,系名:\n");for(i=0;i<size;i++)printf("%s\t%s\t%s\t%d\t%s\n",stu[i].num,stu[i].name,st u[i].xiangmu,stu[i].score,stu[i].ximing);}void find() //查找函数//{int temp =0;int scorez = 0;printf("\t************查找界面************\n");printf("\t************1.查询院系比赛成绩************\n");printf("\t************2.查询个人比赛成绩************\n");char fs[20];while(1){int tt=0;printf("请输入编号:");scanf("%d",&tt);switch(tt){case 1:{temp =0;scorez = 0;printf("输入要查询的院系名称:");scanf("%s",&fs);printf("输出:\n系名,运动员号码,姓名,项目名,成绩:\n");for(int j=0;j<size;j++){if(strcmp(stu[j].ximing,fs)==0){temp =1;printf("%s\t%s\t%s\t%s\t%d\n",stu[j].ximing,stu[j].num, stu[j].name,stu[j].xiangmu,stu[j].score);scorez = scorez +stu[j].score;}}if(temp==0)printf("没有找到相应的院系:\n");elseprintf("学院总成绩为:%d\n",scorez);break;}default:temp =0;printf("输入你要查找运动员的号码:");scanf("%s",&fs);printf("输出:\n运动员号码,姓名,项目名,成绩,系名:\n");for(int i=0;i<size;i++){if(strcmp(stu[i].num,fs)==0){temp =1;printf("%s\t%s\t%s\t%d\t%s\n",stu[i].num,stu[i].name,&s tu[i].xiangmu,stu[i].score,stu[i].ximing);}}if(temp==0){printf("你要找的运动员未找到:\n");printf("该运动员缺赛或不存在!\n");}}}}void main(){input() ;find() ;}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西安郵電學院C语言课程设计报告书系部名称通信工程系学生姓名王子源专业名称通信工程专业班级通工0901班学号03091001指导教师衡霞2010年06月07日至时间2010年06月18日实验题目学生宿舍管理系统一、实验目的通过进行计算机实践,更加系统地理解和掌握C语言的基本概念、语言特点和编程技巧。
利用系统提供的标准函数和自定义函数进行程序设计,培养利用C语言设计综合程序的能力。
二、实验内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);大程序的功能分解方法(即函数的使用)等。
进一步掌握各种函数的应用。
三、需求分析本学生信息管理系统包含输入记录,显示记录,按房间号排序并显示,按学号排序并显示,插入一条记录按学号排序并显示,按姓名查找,删除一条记录,查找并显示一个记录,查找并修改一个记录,从文件中读入数据,循环写入数据等功能.需求分析:输入记录(Input)显示记录(Display)按房间号排序并显示(Sort_by_roomnum)按学号排序并显示(Sort_by_num)插入一条记录按学号排序并显示(Insert_a_record)按姓名查找,删除一条记录(Delete_a_record)查找并显示一个记录(Query_a_record)查找并修改一个记录(Change_a_record)从文件中读入数据(AddfromText)循环写入数据(WritetoText)四.概要设计1.系统分析功能模块图:总目录以及下属的各个模块,这样可以使得程序的书写脉络清晰流畅。
程序结构图2、模块功能说明(1)输入记录模块(Input):用于输入学生的各项信息(2)显示记录模块(Display):按照输入的顺序显示出每个学生的各项信息(3)按房间号排序并显示模块(Sort_by_roomnum):按照房间号顺序显示每个学生信息(4)按学号排序并显示模块(Sort_by_num):按照学号顺序显示每个学生信息(5)插入一条记录按学号排序并显示模块(Insert_a_record):插入一条记录并按学号显示出所有记录。
(6)按姓名查找,删除一条记录模块(Delete_a_record):查找一个姓名,并删除该模块(7)查找并显示一个记录模块(Query_a_record):查找一条记录并显示该记录(8)查找并修改一个记录模块(Change_a_record):按姓名查找并修改某个其中一个记录模块(9)从文件中读入数据模块(AddfromText):用fscanf语句从文件读取信息(10)循环写入数据模块(WritetoText):用fprintf语句向已知(未知)文件读取信息,并返回读取信息五.详细设计及运行结果主程序流程图函数调用关系按房间号排序并显示按学号排序并显示插入一条记录并按学号排序按姓名查找删除一条记录查找并显示一个记录查找并修改一个记录从文件中读入数据循环写入数据源代码以及运行结果:程序设计编码见附录详细运行结果1)登陆界面输入密码:错误了,成功输入界面2)进入主菜单3)输入记录后显示记录4)按房间号排序5)学号排序6)插入记录并按学号排序7)删除记录8)查找并显示9)查找并修改记录修改成功文件及内容保存成功!文件读取成功!六、调试情况,设计技巧及体会测试数据原始数据:房间号床位号学号姓名班级性别146 045 03091002 haha 0908 man103 045 03091005 huha 0901 man235 004 03091033 dfgh 0902 woman102 045 03091055 woyu 0901 man165 008 03091065 tata 0904 man105 004 03091068 tagi 0902 woman113 008 03091088 jijk 0904 man458 008 03091089 aabb 0904 man404 004 03098656 shaz 0985 woman按房间号排序后数据:房间号床位号学号姓名班级性别102 045 03091055 woyu 0901 man103 045 03091005 huha 0901 man105 004 03091068 tagi 0902 woman113 008 03091088 jijk 0904 man146 045 03091002 haha 0908 man165 008 03091065 tata 0904 man235 004 03091033 dfgh 0902 woman404 004 03098656 shaz 0985 woman458 008 03091089 aabb 0904 man按学号排序后数据:房间号床位号学号姓名班级性别146 045 03091002 haha 0908 man103 045 03091005 huha 0901 man235 004 03091033 dfgh 0902 woman102 045 03091055 woyu 0901 man165 008 03091065 tata 0904 man105 004 03091068 tagi 0902 woman113 008 03091088 jijk 0904 man458 008 03091089 aabb 0904 man404 004 03098656 shaz 0985 woman个人总结通过这次的C语言程序设计,从总共两个星期的时间,其中选题花了我将近3天的时间,最终还是决定选择学生宿舍管理系统,紧接着就确定了功能模块,总共确立了十个功能模块,相对比较繁琐,但是由于时间还是比较紧的,所以没有能进一步修改。
这次程序设计过程中,我觉得最难的就是每个模块的逻辑分析过程,尤其是函数的返回值问题,例如,在数据添加后,用以下函数int Input(Student room[],int n) /*输入若干条记录*/{int i=0;char sign; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{system("cls");printf("\t\t房间号:"); /*交互输入*/scanf("\t\t%s",&room[n+i].roomnum);printf("\t\t床位号:");scanf("\t\t%s",&room[n+i].bednum);printf("\t\t学号:");scanf("\t\t%s",&room[n+i].num);printf("\t\t班级:");scanf("\t\t%s",&room[n+i].classnum);printf("\t\t姓名:");scanf("\t\t%s",&room[n+i].name);printf("\t\t性别:");scanf("\t\t%s",&room[n+i].sex);printf("\t\t是否继续输入?(Y/N)");scanf("\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}其中返回值是的是i还是i++我花费了很长时间才分析出来,最后还是在纸笔的计算下,完成了这个模块。
其次,在程序模块简化过程中,我也意识到了要熟练掌握C语言各项基本只是才能简化,例如,在排序模块中,一开始我用的是以下代码{strcpy(t,room[j+1].roomnum);strcpy(room[j+1].roomnum,room[j].roomnum);strcpy(room[j].roomnum,t);strcpy(t,room[j+1].bednum);strcpy(room[j+1].bednum,room[j].bednum);strcpy(room[j].bednum,t);strcpy(t,room[j+1].num);strcpy(room[j+1].num,room[j].num);strcpy(room[j].num,t);strcpy(t,room[j+1].name);strcpy(room[j+1].name,room[j].name);strcpy(room[j].name,t);strcpy(room[j+1].classnum,room[j].classnum);strcpy(room[j].classnum,t);strcpy(room[j+1].sex,room[j].sex);strcpy(room[j].sex,t);}然后再老师的提醒下,我才发现,可以定义另一个结构体Student t;然后用T= room[j];room[j]= room[j+1];room[j+1]=t简单三行就解决了上面的麻烦,这更让我领会到了C语言的魅力..另外,还学习到了system(“pause”);语句就是在屏幕上按任意键继续的意思,相当与{printf(“按任意键继续”);getch();}所以,我还有许多要改进的地方。
当然,我还更加体会到了团队的力量,当我有问题的时候要勇于和同学探讨问题,自己也要能帮助不明白的同学,在这样的情况下,大家才能更加熟练地学习自己还不懂得知识。
所以,这更是一个团队互相帮助的成果。
以后,要想把计算机方面的知识学好,一定要更加努力!!结束语这次C语言程序实习让我渐渐体会到了编程的乐趣,但是也意识到了自己的不足,一个人的成功是靠努力换来的,只有付出了,才会有收获!参考文献:《C语言程序设计》(第二版)王曙燕科学出版社最后,感谢机房各位老师对我的监督辅导!七、源程序清单(略)#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>#include<conio.h>typedef struct /*定义结构体数组*/{char roomnum[4]; /*房间号*/char bednum[4]; /*床位号*/char classnum[10]; /*班级*/char num[10]; /*学号*/char name[20]; /*姓名*/char sex[10]; /*性别*/}Student;Student room1[1000]; /*结构体数组变量*/int menu_select() /*菜单函数*/{int c;do{system("cls"); /*运行前清屏*/printf("\t\t★★★★★★学生宿舍管理系统★★★★★★\n"); /*菜单选择*/printf("\t\t§1. 输入记录§\n");printf("\t\t§2. 显示记录§\n");printf("\t\t§3. 按房间号排序并显示§\n");printf("\t\t§4. 按学号排序并显示§\n");printf("\t\t§5. 插入一条记录按学号排序并显示§\n");printf("\t\t§6. 按姓名查找,删除一条记录§\n");printf("\t\t§7 查找并显示一个记录§\n");printf("\t\t§8 查找并修改一个记录§\n");printf("\t\t§9. 从文件中读入数据§\n");printf("\t\t§10. 循环写入数据§\n");printf("\t\t§0. 结束程序§\n");printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");printf("\t\t请选择您要运行的选项按(0-10):");scanf("%d",&c); /*读入选择*/}while(c<0||c>10);return(c); /*返回选择*/}int Input(Student room[],int n) /*输入若干条记录*/{int i=0;char sign; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{system("cls");printf("\t\t房间号:"); /*交互输入*/scanf("\t\t%s",&room[n+i].roomnum);printf("\t\t床位号:");scanf("\t\t%s",&room[n+i].bednum);printf("\t\t学号:");scanf("\t\t%s",&room[n+i].num);printf("\t\t班级:");scanf("\t\t%s",&room[n+i].classnum);printf("\t\t姓名:");scanf("\t\t%s",&room[n+i].name);printf("\t\t性别:");scanf("\t\t%s",&room[n+i].sex);printf("\t\t是否继续输入?(Y/N)");scanf("\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}void Display(Student room[],int n) /*显示所有记录*/{int i;printf("\t\t------------------------------------------------------------\n"); /*格式头*/printf("\t\t房间号床位号学号姓名班级性别\n");printf("\t\t------------------------------------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{printf("\t\t%-10s%-10s%-10s%-10s%-10s%-20s\n",room[i-1].roomnum,room[i-1].bednum,room[i-1].num,room[i-1].name,room[i-1].classnum,room[i-1].sex);}printf("\t\t");system("pause");}void Sort_by_num(Student room[],int n) /*按学号排序*/{int i,j;Student t;for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-i-1;j++)if(strcmp(room[j].num,room[j+1].num)>0){t=room[j+1];room[j+1]=room[j];room[j]=t;}}void Sort_by_roomnum(Student room[],int n) /*按房间号排序*/{int i,j;Student t;for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(room[j].roomnum,room[j+1].roomnum)>0){t=room[j+1];room[j+1]=room[j];room[j]=t;}}int Insert_a_record(Student room[],int n) /*插入一条记录*/{printf("\t\t学生房间号:"); /*交互式输入*/scanf("\t\t%s",&room[n].roomnum);printf("\t\t学生床位号:");scanf("\t\t%s",&room[n].bednum);printf("\t\t学生学号:");scanf("\t\t%s",&room[n].num);printf("\t\t学生姓名:");scanf("\t\t%s",&room[n].name);printf("\t\t学生班级:");scanf("\t\t%s",&room[n].classnum);printf("\t\t学生性别:");scanf("\t\t%s",&room[n].sex);n++;printf("\n");system("pause");Sort_by_num(room,n); /*调用排序函数*/printf("\t\t插入记录成功!\n"); /*返回成功信息*/return(n);}int Delete_a_record(Student room[],int n) /*按姓名查找,删除一条记录*/{char s[20];int i=0,j;printf("\t\t输入他(她)的姓名:"); /*交互式问寻*/scanf("%s",s);while(strcmp(room[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t对不起没找到该学生!\n"); /*返回失败信息*/return(n);}for(j=i;j<n-1;j++) /*删除操作*/{room[j]=room[j+1];}printf("\t\t删除记录成功!\n"); /*返回成功信息*/return(n-1);}void Query_a_record(Student room[],int n) /*查找并显示一个记录*/{char s[20];int i=0;printf("\t\t输入他(她)的姓名:"); /*输入*/scanf("\t\t%s",&s);while(strcmp(room[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){printf("\t\t对不起没找到该学生!\n"); /*输入失败信息*/return;}printf("\t\t他(她)的房间号:%s\n",room[i].roomnum); /*输出该学生信息*/printf("\t\t他(她)的床位号:%s\n",room[i].bednum);printf("\t\t他(她)的学号:%s\n",room[i].num);printf("\t\t他(她)的班级:%s\n",room[i].classnum);printf("\t\t他(她)的性别:%s\n",room[i].sex);}void Change_a_record(Student room[],int n) /*查找并修改一个信息*/{ char s[20],m[4];int i=0;int c;printf("\t\t输入他的姓名:");scanf("\t\t%s",&s);while(strcmp(room[i].name,s)!=0&&i<n) i++;if(i==n){printf("\t\t对不起没找到该学生!\n");system("pause");return;}//dosystem("cls");printf("\t\t★★★★★★修改项目内容信息★★★★★★\n"); /*菜单选择*/printf("\t\t§1. 房间号§\n");printf("\t\t§2. 床位号§\n");printf("\t\t§3. 学号§\n");printf("\t\t§4. 姓名§\n");printf("\t\t§5. 班级§\n");printf("\t\t§6. 性别§\n");printf("\t\t★★★★★★★★★★★★★★★★★★★★\n");printf("\t\t请选择您要修改的选项按(0-6):");scanf("%d",&c); /*读入选择*/switch(c){case 1: printf("\t\t请输入你要修改后的房间号:");scanf("%s",&m);/*录入选择*/strcpy(room[i].roomnum,m);/*覆盖信息*/printf("恭喜你,修改成功!\n");system("pause");break;case 2: printf("\t\t请输入你要修改后的床位号:");scanf("%s",&m);strcpy(room[i].bednum,m);printf("恭喜你,修改成功!\n");system("pause");break;case 3: printf("\t\t请输入你要修改后的学号:");scanf("%s",&m);strcpy(room[i].num,m);printf("恭喜你,修改成功!\n");system("pause");break;case 4: printf("\t\t请输入你要修改后的姓名:");scanf("%s",&m);strcpy(room[i].name,m);printf("恭喜你,修改成功!\n");system("pause");break;case 5: printf("\t\t请输入你要修改后的班级:");scanf("%s",&m);strcpy(room[i].classnum,m);printf("恭喜你,修改成功!\n");system("pause");break;case 6: printf("\t\t请输入你要修改后的性别:");scanf("%s",&m);strcpy(room[i].sex,m);printf("恭喜你,修改成功!\n");system("pause");break;case 0: printf("\t\t安全退出修改系统!");system("pause");break;}}int AddfromText(Student room[],int n) /*从文件中读入数据*/ {int i=0;FILE *fp; /*定义文件指针*/char filename[20]; /*定义文件名*/printf("\t\t输入文件名:");scanf("\t\t%s",&filename); /*输入文件名*/if((fp=fopen(filename,"rt"))==NULL) /*打开文件*/{printf("\t\t无法打开该文件\n"); /*打开失败信息*/printf("\t\t");system("pause");return(n);}while(fscanf(fp,"%s%s%s%s%s%s",room[n+i].roomnum,room[n+i].bednum,r oom[n+i].num,room[n+i].name,room[n+i].classnum,room[n+i].sex)!=EOF)/*循环读入数据*/{i++;}fclose(fp); /*关闭文件*/printf("\t\t读入成功!\n");printf("\t\t");system("pause");return(n+i);}void WritetoText(Student room[],int n) /*将所有记录写入文件*/{int i=0;FILE *fp; /*定义文件指针*/char filename[100]; /*定义文件名*/ printf("\t\t输入文件名:"); /*输入文件名*/scanf("\t\t%s",&filename);if((fp=fopen(filename,"w"))==NULL) /*打开文件*/{printf("\t\t无法打开该文件\n");system("pause");return;}while(i<n){fprintf(fp,"%-10s%-10s%-10s%-10s%-10s%-10s\n",room[i].roomnum,room[i]. bednum,room[i].num,room[i].name, room[i].classnum,room[i].sex);i++;}fclose(fp); /*关闭文件*/printf("写入成功!\n"); /*返回成功信息*/}void main() /*主函数*/{int n=0,i,j;int c[3];for(i=0;i<3;i++){printf(" \n\n\n\t\t★★★★★★★★★★★★★★\n");printf(" \t\t============================\n\n");printf(" \t\t欢迎您进入学生宿舍管理系统!\n\n");printf(" \t\t请输入管理员密码(三位):");for(j=0;j<3;j++){c[j]=getch();printf("*");}getch();if (c[0]=='1'&&c[1]=='2'&&c[2]=='3'){printf("\n\t\t恭喜你登陆成功!");printf("\n");system("pause");break;}else{if(2-i==0){printf("对不起,错误达到三次,程序自动退出!");printf("\n");exit(1);}elseprintf("\n");printf("\n\t\t对不起,账号密码输入错误,请重新输入!(你还有%d 次机会)\n",2-i);system("pause");system("cls");}}for(;;){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t输入记录\n"); /*输入若干条记录*/n=Input(room1,n);break;case 2:printf("\t\t显示记录\n"); /*显示所有记录*/Display(room1,n);break;case 3:printf("\t\t按房间号排序并显示\n");Sort_by_roomnum(room1,n); /*按房间号排序*/printf("\t\t排序成功!\n");Display(room1,n);printf("\t\t");break;case 4:printf("\t\t按学号排序并显示\n");Sort_by_num(room1,n); /*按学号排序*/printf("\t\t\t排序成功!\n");Display(room1,n);printf("\t\t");break;case 5:printf("\t\t插入一条记录按学号排序并显示\n");n=Insert_a_record(room1,n); /*插入一条记录*/system("cls");Display(room1,n);printf("\t\t");break;case 6:printf("\t\t按姓名查找,删除一条记录\n");n=Delete_a_record(room1,n); /*按姓名查找,删除一条记录*/printf("\t\t");system("pause");break;case 7:printf("\t\t查找并显示一个记录\n");Query_a_record(room1,n); /*查找并显示一个记录*/printf("\t\t");system("pause");break;case 8:printf("\t\t查找并修改一个记录\n");Change_a_record(room1,n);printf("\t\t"); /*查找并修改一个记录*/break;case 9:printf("\t\t从文件中读入数据\n");n=AddfromText(room1,n); /*从文件中读入数据*/printf("\t\t");break;case 10:printf("\t\t循环写入数据\n");WritetoText(room1,n); /*循环写入数据*/printf("\t\t");system("pause");break;case 0:printf("\t\t谢谢使用,祝您好运,再见!\n"); /*结束程序*/printf("\t\t");exit(0);}}}。