C++程序设计大作业(含源代码)
C语言程序设计50例(经典收藏)
C语言程序设计50例(经典收藏)各位读友大家好,此文档由网络收集而来,欢迎您下载,谢谢C语言程序设计50例(经典收藏)【程序1】题目:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。
组成所有的排列后再去掉不满足条件的排列。
2.程序源代码:复制代码代码如下:#include ““#include ““main(){int i,j,k;printf(“\n”);for(i=1;i2) /*如果是闰年且月份大于2,总天数应该加一天*/sum++;printf(“It is the %dth day.”,sum);getch();}============================== ============================== ==【程序5】题目:输入三个整数x,y,z,请把这三个数由小到大输出。
1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换,然后再用x与z进行比较,如果x>z 则将x与z的值进行交换,这样能使x 最小。
2.程序源代码:复制代码代码如下:#include ““#include ““main(){int x,y,z,t;scanf(“%d%d%d”,&x,&y,&z);if (x>y){t=x;x=y;y=t;} /*交换x,y的值*/if(x>z){t=z;z=x;x=t;} /*交换x,z的值*/if(y>z){t=y;y=z;z=t;} /*交换z,y的值*/printf(“small to big: %d %d %d\n”,x,y,z);getch();}============================================================ ==【程序6】题目:用*号输出字母C的图案。
c程序设计大作业(范例)
课程设计说明书《C 程序设计大作业》 ——学生成绩管理系统班 级: 电信2009级集成班 学 生: 陈颖宏 学 号: ************ 序 号: 提交日期: 2010 年 3 月 27 日成绩评定:分 任课教师签名: 年月 日前言本课程设计题目是“学生成绩管理系统设计”,其内容是设计一个使用二进制文件方式存储数据,并且以菜单方式工作的管理系统。
设计目的是设计一个能够方便、直观地管理学生相关信息的系统。
该系统可以实现以下功能:○1能按学期、按班级完成对学生成绩的录入、修改;○2能按班级统计显示的成绩,计算学生的总分及平均分;○3能查询学生的成绩,不及格科目及学生名单;○4能按班级输出学生的成绩单。
正文1.需求分析:本程序主要用于输入、查询、统计、导入以及导出学生的成绩。
主要的输入方式是利用键盘输入,且输入的字符最好是英文及数字,输入中文时有时会出现错误。
程序的有效窗口大小一般为半个屏幕,以至于有些功能的版面出现显示方面的错误。
经测试,程序基本可以正常工作:当在主菜单输入“1”时,可以正常初始化,输入余下的菜单选项时也能按要求跳转到指定画面;各子菜单选项也都能正常运行;但是输入班级、姓名等字符时,有时会显示错误的字符。
2概要设计○1抽象数据类型的定义:学生结构体定义为struct stu,变量为student;学期数组定义为char term[7]; 班别数组定义为char banbie[20]; 学号数组定义为char no[15]; 姓名数组定义为char name[20]; 科目数组定义为int score[MAXSUB]; 总成绩变量定义为int sum; 平均成绩变量定义为float average。
○2抽象函数类型的定义:菜单选择程序“menu_select()”为int型; 初始化函数“initialize(student * [])”为void型;数据输入函数“input(student * [])”为void型;数据编辑函数“editmenu(student * [])”为void型; 数据查询查询函数“searchmenu(student * [])”为void型; 数据统计函数“total(student * [])”为void型; 数据导出函数“save(student * [])”为void型;数据导入函数“load(student * [])”为void型; 数据导出函数“output(student * [])”为void型;添加学生记录函数“add_record(student * [])”为void型;删除学生记录“delete_record(student * [])”为void型;修改学生记录函数“student * edit_record(student * [])”为void型;按学号查询函数“student * no_search(student * [])”为void型; 按姓名查询函数“student * name_search(student * [])”为void型。
C程大作业
学年论文(课程论文、课程设计)题目:学生信息管理系统作者:所在学院:信息科学与工程学院专业年级:指导教师:职称:2010 年 1 月 2日大作业题目:学生成绩管理系统大作业目的:(1) 进一步熟悉C的语法知识和VC++环境;(2) 熟练掌握一些常用算法,如排序、查找等;(3) 熟悉C程序的编写与调试;(4)增加学生对C语言的兴趣大作业要求:设计一学生成绩管理系统,要求实现数据的录入、插入、删除、修改、查找、查询、排序、统计、显示等功能。
(1)数据结构:学号、姓名、性别、年龄、3门课程成绩、总分、平均分。
(2)为用户提供友好的菜单选择界面,用户通过键入数字或者字母实现功能选择,进入相应的功能。
(3)功能:a)数据录入——按顺序录入学生成绩b)删除记录c)修改记录d)查询记录——按学号等进行简单查询e)计算总分和平均分f)排序:可以按学号、总分、平均分显示学生信息g)学生信息能以文件的形式保存,或读取h)页面以汉字形式输出。
i)插入学生信息j)统计学生分数k)退出(4)对系统常量要求用符号常量进行规范,对于常用的功能和算法如排序要求做成自己的库函数,并使用头文件的方式实现分离编译。
(5)要求提供算法分析、程序流程图,对实验结果的处理包括程序调试结果、结论及改进方案、实习体会等内容。
三. 大作业总体设计及源代码 1、总体设计2、源代码#include <stdio.h>#include <string.h> /*定义数组*/ #define M 3struct student /*结构体*/ {int xh;//学生学号char xm[20]; /*数组*/ char xb; int nl;int cj[M];//成绩int zf,pjf; /*总分与平均分*/ };struct student s[20];/*学生数组*/ int n=0;主函数 输入 插入删除 编辑 查找 分类 显示 统计保存载入退出void calc(i){int sum=0,j;for(j=0;j<M;j++)sum=sum+s[i].cj[j];s[i].zf=sum;s[i].pjf=sum/M;}void input()/*插入*/{int locate(int xh);int xh,i,sum;printf("请输入学号:");scanf("%12d",&xh);getchar();while (xh!=0){if (locate(xh)!=-1){printf("学号已存在!!!\n\n");goto abc;}s[n].xh=xh;printf("姓名:");gets(s[n].xm);printf("性别:");scanf("%c",&s[n].xb);printf("年龄:");scanf("%d",&s[n].nl);sum=0;printf("3门成绩,成绩范围0--150:");for(i=0;i<M;i++)scanf("%d",&s[n].cj[i]);if (s[n].cj[i]<0 || s[n].cj[i]>150){printf("成绩超出范围");return;}calc(n);n++;abc: printf("\n请输入学号:");scanf("%d",&xh);getchar();}}void insert() /*插入*/{int locate(int xh);int i,j,t;int xh;printf("输入插入位置(0---%d):",n);scanf("%d",&i);if (i<0 || i>n){printf("序号超出范围!!!\n",n);return;}for(j=n-1;j>=i;j--){s[j+1].xh=s[j].xh;strcpy(s[j+1].xm,s[j].xm);s[j+1].xb=s[j].xb;s[j+1].nl=s[j].nl;s[j+1].cj[0]=s[j].cj[0];s[j+1].cj[1]=s[j].cj[1];s[j+1].cj[2]=s[j].cj[2];}printf(" 请输入学号:");scanf("%d",&s[i].xh); getchar(); printf("\n");printf("请输入姓名:");gets(s[i].xm);printf("请输入性别:");scanf("%c",&s[i].xb);printf("请输入年龄:");scanf("%d",&s[i].nl);printf("请输入3科成绩,成绩范围0---150:");for(j=0;j<M;j++){ scanf("%d",&s[i].cj[j]);if(s[i].cj[j]>150){ printf("分数超出范围,请核对后再输入!!!!!\n");return;}}calc(i);n=n+1;}//删除void del(){int xh,i,j;int locate(int xh);printf("输入学号:");scanf("%d",&xh);i=locate(xh);if (i!=-1){for(j=i+1;j<n;j++){s[j-1].xh=s[j].xh;strcpy(s[j-1].xm,s[j].xm);s[j-1].xb=s[j].xb;s[j-1].nl=s[j].nl;s[j-1].cj[0]=s[j].cj[0];s[j-1].cj[1]=s[j].cj[1];s[j-1].cj[2]=s[j].cj[2];}n=n-1;}elseprintf("无法删除 !!!\n");}int locate(int xh){int i,j;for(i=0;i<n;i++)if (s[i].xh==xh){printf("%11d",s[i].xh);printf("%20s",s[i].xm);printf("%3c",s[i].xb);printf("%5d",s[i].nl);for(j=0;j<M;j++)printf("%5d",s[i].cj[j]);printf("%5d",s[i].zf);printf("%5d",s[i].pjf);printf("\n");return i;}printf("学号不存在,请输入学生信息!!!\n");return -1;}//显示void display(){int i,j;printf(" ---------------- 学生成绩统计 ---------------\n");printf(" 学号姓名性别年龄成绩 1 成绩 2 成绩3 总分平均分\n");for(i=0;i<n;i++){printf("%5d",s[i].xh);printf("%20s",s[i].xm);printf("%3c",s[i].xb);printf("%5d",s[i].nl);for(j=0;j<M;j++)printf("%5d",s[i].cj[j]);printf("%5d",s[i].zf);printf("%5d",s[i].pjf);printf("\n");printf("-----------------------------------------------------\n") ;}}void save(){FILE *fp;int i;char fname[20];printf("输入文件名:");gets(fname);fp=fopen(fname,"wb");if (fp==NULL){printf("文件打开错误!!!\n");return;}for(i=0;i<n;i++)if(fwrite(&s[i],sizeof(struct student),1,fp)!=1){printf("文件写入错误!\n");return;}printf("文件保存成功!\n");fclose(fp);}void swap(int a,int b){int t;char xm[20];char xb;t=s[a].xh; s[a].xh=s[b].xh; s[b].xh=t;strcpy(xm,s[a].xm); strcpy(s[a].xm,s[b].xm); strcpy(s[b].xm,xm);xb=s[a].xb; s[a].xb=s[b].xb; s[b].xb=xb;t=s[a].nl; s[a].nl=s[b].nl; s[b].nl=t;t=s[a].cj[0]; s[a].cj[0]=s[b].cj[0]; s[b].cj[0]=t;t=s[a].cj[1]; s[a].cj[1]=s[b].cj[1]; s[b].cj[1]=t;t=s[a].cj[2]; s[a].cj[2]=s[b].cj[2]; s[b].cj[2]=t;t=s[a].zf; s[a].zf=s[b].zf; s[b].zf=t;t=s[a].pjf; s[a].pjf=s[b].pjf; s[b].pjf=t;}//冒泡排序法void sortbyxh(){int i,j;for(i=0;i<n-1;i++){for(j=0;j<n-1-i;j++)if(s[j].xh>s[j+1].xh)swap(j,j+1);}printf("顺序已经排好!\n");}void sortbyzf(){int i,j;for(i=0;i<n-1;i++) //进行n-1次循环,进行n-1次比较{for(j=0;j<n-i-1;j++) //在每一趟比较中进行n-i-1次比较 if(s[j].zf>s[j+1].zf) //相临的两个数比较swap(j,j+1);}printf("顺序已经排好!\n");}void sortbypjf(){int i,j;for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++)if(s[j].pjf>s[j+1].pjf)swap(j,j+1);}printf("顺序已经排好!\n");}void sort(){int i;printf("1 按学生学号排序 \n");printf("2 按学生总分排序 \n");printf("3 按平均分数排序 \n");printf("\n");printf("请输入选项:");scanf("%d",&i);switch(i){case 1: sortbyxh(); break;case 2: sortbyzf(); break;case 3: sortbypjf();break;}}//下载文件void load(){FILE *fp;int i;char fname[20];printf("输入文件名:");gets(fname);fp=fopen(fname,"rb");if (fp==NULL){printf("文件打开错误!\n");return;}//从文件中载入学生信息n=0;while (!feof(fp)){if (fread(&s[n],sizeof(struct student),1,fp)!=1) { break;}n++;}printf("文件成功载入!\n");fclose(fp);}//统计数据void stas(){int a,b,c,d,e;int i;a=b=c=d=e=0;for(i=0;i<n;i++){switch(s[i].pjf/10){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:case 8: a++; break;case 9:case 10: b++; break;case 11:c++; break;case 12:d++; break;case 13:case 14:e++; break;case 15:;}}printf("<80 %d %5.2f%%\n",a,a*100.0/n); printf("90<-->110 %d %5.2f%%\n",b,b*100.0/n);printf("110<-->120 %d %5.2f%%\n",c,c*100.0/n);printf("120<-->130 %d %5.2f%%\n",d,d*100.0/n); printf("130<-->150 %d %5.2f%%\n",e,e*100.0/n); }void edit() //编辑学生信息板块{int locate(int xh);int xh;int i;printf("请输入学号:\n");scanf("%12d",&xh);getchar();i=locate(xh);if(i==-1){printf("学号不存在!\n");return;}printf("请输入3门课的成绩:");scanf("%d%d%d",&s[i].cj[0],&s[i].cj[1],&s[i].cj[2]);calc(i);printf("修改成功!\n");}void main(){int c=1;while (c!=0){printf(" **********************\n");printf(" *学生成绩管理系统菜单*\n");printf(" **********************\n");printf(" (1) 输入 * (2) 插入 \n");printf(" (3) 删除 * (4) 编辑 \n");printf(" (5) 查找 * (6) 排序 \n");printf(" (7) 显示 * (8) 保存 \n");printf(" (9) 载入 * (10) 统计 \n");printf(" (0) 退出 * \n");printf(" ********************** \n");printf(" 输入选项: ");scanf("%d",&c); getchar();//条件选择语句switch(c){case 1: input(); break;case 2: insert();break;case 3: del(); break;case 4: edit();break;case 5:{int xh;printf("输入学号:");scanf("%12d",&xh);locate(xh); break;}case 6: sort();break;case 7: display(); break;case 8: save();break;case 9: load();break;case 10: stas();case 0: break;}}}3、调试结果4总结.(如需要,可附结论及改进方案、实习体会)新疆大学课程论文(设计)、学年论文评分表题目作者专业年级指导教师指导教师评语及评分建议指导教师:年月日院(部)或教研室意见学院或教研室主任:年月日。
C语言大作业——学生成绩管理系统v2.0
//成绩管理系统v2.0#include <stdio.h>#include <stdlib.h>#define N 30void Input (long num[],int score[],int n);void Totalave (int score[],int n);void Scoredes (long num[],int score[],int n,int (*compare)(int a,int b)); int Ascending (int a,int b);void Numas (long num[],int score[],int n);void Search (long num[],int score[],int n,int x);void statistis (long num[],int score[],int n);void List (long num[],int score[],int n);int main(){int n,score[N],c,x,i;long num[N];printf("输入学生人数");scanf("%d",&n);printf("1.Input record\n");printf("2.Caculate totel and average score of course\n");printf("3.Sort in descending order by score\n");printf("4.Sort in ascending order by number\n");printf("5.Search by number\n");printf("6.Statistic analysis\n");printf("7.List record\n");printf("0.Exit\n");printf("Please enter your choice:\n");printf("\n");for(;;){scanf("%d",&c);switch(c){case 1:Input (num,score,n);printf("Please enter your choice:\n");break;case 2:Totalave (score,n);printf("Please enter your choice:\n");break;case 3:Scoredes (num,score,n,Ascending);for(i=0;i<n;i++)printf("ID:%10ld,score:%d\n",num[i],score[i]);//以长整形打印用%ld printf("Please enter your choice:\n");break;case 4:Numas (num,score,n);printf("Please enter your choice:\n");break;case 5:printf("请输入查找学号\n");scanf("%d",&x);Search (num,score,n,x);printf("Please enter your choice:\n");break;case 6:statistis (num,score,n);printf("Please enter your choice:\n");break;case 7:List (num,score,n);Totalave (score,n);printf("Please enter your choice:\n");break;case 0:exit(0);}}return 0;}void Input (long num[],int score[],int n){int i;for(i=0;i<n;i++){printf("Input student's ID and score");scanf("%ld%d",&num[i],&score[i]);}}void Totalave (int score[],int n){int i,sum=0;double ave;for(i=0;i<n;i++)sum=sum+score[i];ave=(double)sum/n;printf("Caculate total=%d,average score of course=%f\n",sum,ave); }void Scoredes (long num[],int score[],int n,int(*compare)(int a,int b)){int i,j,k,t,h;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if ((*compare)(score[j],score[k]))k=j;}if(i!=k){t=score[k],h=num[k];score[k]=score[i],num[k]=num[i];score[i]=t,num[i]=h;}}}int Ascending (int a,int b){return a<b;}void Numas (long num[],int score[],int n){int i,j,k,t,h;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if (num[j]<num[k])k=j;}if(i!=k){t=score[k],h=num[k];score[k]=score[i],num[k]=num[i];score[i]=t,num[i]=h;}}for(i=0;i<n;i++)printf("ID:%10ld,score:%d\n",num[i],score[i]);//以长整形打印用%ld }void Search (long num[],int score[],int n,int x){int high=n-1,low=0,mid,c=0,pos,find=0,i,j,k,t,h;for(i=0;i<n;i++){k=i;for(j=i+1;j<n;j++){if (num[j]<num[k])k=j;}if(i!=k){t=score[k],h=num[k];score[k]=score[i],num[k]=num[i];score[i]=t,num[i]=h;}}while(find==0&&low<=high){mid=(high+low)/2;if(x>num[mid])low=mid+1;else if(x<num[mid])high=mid-1;else{pos=mid;find=1;}}if(find==0)printf("not find\n");else{for(i=0;i<n;i++){if(score[i]>score[pos])c++;}printf("ID:%10ld,order:%d,score:%d\n",num[pos],c+1,score[pos]);}}void statistis (long num[],int score[],int n){int a=0,b=0,c=0,d=0,e=0,i;double A,B,C,D,E;for(i=0;i<n;i++){if(score[i]>=90)a++;else if(score[i]>=80)b++;else if(score[i]>=70)c++;else if(score[i]>=60)d++;elsee++;}A=(double)a/n*100;B=(double)b/n*100;C=(double)c/n*100;D=(double)d/n*100;E=(double)e/n*100;printf("优秀人数%d,百分比:%f%%\n",a,A);printf("良好人数%d,百分比:%f%%\n",b,B);printf("中等人数%d,百分比:%f%%\n",c,C);printf("及格人数%d,百分比:%f%%\n",d,D);printf("不及格人数%d,百分比:%f%%\n",e,E); }void List (long num[],int score[],int n){int i;for(i=0;i<n;i++){printf("ID:%10ld,score:%d\n",num[i],score[i]);}}。
C语言程序设计大作业
学年学期:20xx - 20xx 学年 1 学期课程名称:C语言程序设计综合训练课程学分:2分考核形式:大作业任课教师:xx题目:学生成绩统计程序学院:xx学院__________________________________ 专业班级:xx_______________________________________ 学号:_______ 学生姓名:提交日期:目录目录 (2)引言 (3)1. 学生成绩管理系统 (4)1.1系统简介 (4)1.2相关代码及知识点介绍 (4)2. 添加学生成绩功能 (5)3. 查找学生成绩功能 (6)4. 排序学生成绩功能 (7)5. 展示学生成绩功能 (9)6. 删除学生成绩功能 (10)7. 附页代码 (11)引言C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。
其简洁紧凑,灵活方便,数据结构丰富。
在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。
同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。
本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。
在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。
与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。
1. 学生成绩管理系统1.1系统简介该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。
查找学生成绩主要通过学号查询。
对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。
第四项功能是对学生成绩以表格的形式进行展示。
删除学生成绩是按照学号对表格中的数据进行删除。
大学C语言程序设计大作业题目
1数据处理系统一、软件开发目的该软件主要是使用C语言设计开发数据处理程序,实现对数据的排序、查找、插入、计算、输出等功能。
二、数据结构定义一个11*10的二维数组。
三、软件功能说明1.生成100个随机数:调用库函数rand()或random()产生100个随机数,并存储在二维数组中的前十行。
2.选择法排序:用选择法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
3.冒泡法排序:用冒泡法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
4.插入法排序:用插入法将数据由小到大排序输出,保存在数组中,按行优先的原则存放(将小数先存满第一行,然后第二行….)。
5.查找数据:输入待查找数据, 在二维数组中逐个查找,若找到输出数据所在位置的行列号,若无该数值则输出“无此数”。
6.转换二进制:将数组中数据转换为二进制并转存到另一数组中输出。
7.转换为素数之和:对于原数组中的数进行判断:若为偶数,则表示成两个素数的和,并输出。
8.插入数据:输入一个数,将该数插入原数组中,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
9.删除数据输入一个数,若原数组中存在该数,则删除该数,使数组中的数仍然按从小到大排序,将数组中数据按从小到大顺序输出。
10.退出系统,结束任务。
四、软件验收标准1.有较为美观简洁大方的菜单,能保证用户方便、直观、快捷的熟悉并使用软件的各项功能。
系统菜单功能项:1生成100个随机数2选择法排序3冒泡法排序4插入法排序5查找数据6转换二进制7转换为素数之和8插入数据9删除数据10退出系统注意:要求每执行一个具体的功能之后,程序将重新显示菜单。
2.系统要有一定的可靠性、稳定性,能够实现各功能模块。
2图书借阅管理系统一、软件开发目的该软件主要是使用C语言设计开发一个简单的图书借阅管理系统,实现对图书的借书,还书的管理和数据统计。
程序设计大作业(C)
学院电子信息学院点,考虑到算法的时间复杂度,采用折半查找算法,最后将程序的运行结果写入对应的文件中。
目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (4)2.1程序结构 (4)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (4)3 程序调试及运行 (5)3.1程序运行结果 (5)3.2程序使用说明 (6)3.3程序开发总结 (6)1 摘要1.1 设计题目算法型大作业:编写查找算法的演示程序1.2 设计内容编写程序实现某班期末考试成绩及有关学生信息的查找并将查询结果写入某文件中。
其中输入可来自某文件(比如***.xls)。
注意:编写的程序必须实现以下查找功能:1.输入某同学的学号或姓名(无重名),若存在,则输出该同学的成绩;否则输出“不存在”。
2.统计不及格人数并输出不及格学生的学号和姓名。
3.统计各分数段的人数并将结果输出。
4.插入某位新同学的成绩并查询该同学的序号数,序号数的排列规则是女生在前,男生在后;按姓名汉语拼音的英文顺序(a—z)排列。
5.计算平均分并查询高于平均分和低于平均分的人数,最后输出。
6.删除某同学的信息后,查询成绩排名前5的学生学号和姓名并输出。
7.修改某同学的成绩后,查询该同学的成绩排名并输出。
(以上查询结果不仅要在屏幕上输出,而且要写入文件中保存。
)1.3 开发工具Visual C++ 6.01.4 应用平台Windows 2000/XP/Vista 32位2 详细设计2.1 程序结构2.2 主要功能/*一;借书问题:本问题是一个排列问题,使用穷举的方法求出小明对三人不同的借书方案的总数二;绘制杨辉三角:从杨辉三角形的特点出发而绘制出杨辉三角。
*/2.3 函数实现/*一:借书方案:从5个中取3个进行排列的方法的总数。
首先对五本书从1至5进行编号,然后使用穷举的方法假设三个人分别借这五本书中的一本,当三个人所借的书的编号都不相同时,就是满足题意的一种借阅方法。
C大作业学生信息管理系统附代码
学生信息管理系统(附代码)题目要求:设计一个类CStudent,类中包含一个学生的基本数据如下:编号,姓名,性别,年龄,数学成绩,计算机成绩,外语成绩。
并假设编号为整数,且从1号往后连续编码;姓名为字符串,性别为字符。
如:1 LiPing m 18 89 98 94请采用binary文件形式,并使用随机读写处理方式,对自定义CStudent类的对象数据进行存储与读写处理(即是说,总按具有连续编码的编号num为“序”来对文件中的各对象数据进行随机读写处理)。
并设计该类的成员函数,而且对输出运算符“<<”进行重载,使该运算符能够完成将一个学生的信息输出到屏幕上。
要求成员函数完成以下功能:(1)从键盘输入一个学生的有关信息,并将它们存入到数据文件中(按编号来确定写出位置)。
(2)按编号对学生信息进行检索并将检索结果显示在屏幕上。
(3)按姓名对学生信息进行检索并将检索结果显示在屏幕上。
(4)计算某编号学生的总成绩与平均成绩。
(5)列出所有总成绩超过n分的性别为s同学的有关信息(n,s由用户从键盘输入)。
Code:1. /****************************************2. *名称: student.cpp *3. *描述: 学生管理程序*4. *功能: 添加,修改,按条件查询学生信息*5. *环境: Fedora Linux 11 & GCC & x86 *6. *备注: davelv第一次Class于2010-01-10 *7. *更新: 新建了可复用的搜索模板searchframe *8. ****************************************/9.10. #include <iostream>11. #include <cstring>12. #include <vector>13. #include <fstream>14. #include <cstdlib>15.16. using namespace std;17. #define CIN_LEN 1024//缓冲区长度18. #define "data"//数据文件名19. /////////////////////////////////////20. // 结构和类//21. ///////////////////////////////////22. struct data//学生个人信息23. {24. int id;//学号25. char name[20];//名字26. char major[20];//专业27. char sex;//性别28. double ch,en,ma;//成绩29. int grade;//年级30. };31.32. class CStudent33. {34. protected:35. bool altered;//是否修改36. data info;//学生信息37. public:38. static int nowid ;//新学生自增id39. static void displayhead();//显示表头40. static void displayshorthead();//显示短表头41. CStudent();//构造42. void displayinfo();//显示全部学生信息43. void displayshortinfo();//显示学生短信息44. double getsum();//取总成绩45. double getave();//取得平均分46. double getch();//取语文成绩47. double geten();//取外语成绩48. double getma();//取数学成绩49. int set(bool isnew);//设置学生信息50. int getgrade();//取年级51. int getid();//取学号52. bool isaltered();//取是否修改53. char getsex();//取性别54. char* getname();//取姓名55. char* getmajor();//取专业56. data* getinfo();//取学生全部信息57. //定义友元函数以便重载运算符58. friend ostream& operator<<(ostream&,const CStudent&);59. friend istream& operator>>(istream&,CStudent&);60.61. };62.63. int CStudent::nowid = 1;//初始化类静态成员64.65. CStudent::CStudent()//基类构造66. {67. info.id=CStudent::nowid++;//子增id68. strcpy(,"None");//名字69. info.ch=0;//语文成绩70. info.en=0;//外语成绩71. info.ma=0;//数学成绩72. info.grade=1;//年级73. altered=false;//未被修改74. }75.76. int CStudent::getgrade()77. {78. return info.grade;79. }80.81. double CStudent::getsum()82. {83. return info.ch+info.en+info.ma;84. }85. double CStudent::getave()86. {87. return (info.ch+info.en+info.ma)/3;88. }89. double CStudent::getch()90. {91. return info.ch;92. }93.94. double CStudent::geten()95. {96. return info.en;97. }98.99. double CStudent::getma()100. {101. return info.ma;102. }103.104. int CStudent::getid()105. {106. return info.id;107. }108.109. char CStudent::getsex()110. {111. return info.sex;112. }113.114. char * CStudent::getname()115. {116. return ;117. }118. bool CStudent::isaltered()119. {120. return altered;121. }122. data *CStudent::getinfo()123. {124. return &info;125. }126. void CStudent::displayinfo()127. {128. cout<<*this<<"\t"<<getsum()<<"\t"<<getave()<<endl;//利用重载运算符输出129. }130. void CStudent::displayshortinfo()131. {132. cout << *this<<endl;133. }134. void CStudent::displayhead()135. {136. cout<<"\n\t学号\t姓名\t性别\t专业\t年级\t中文\t英文\t数学\t总分\t平均分\n"; 137. }138. void CStudent::displayshorthead()139. {140. cout<<"\n\t学号\t姓名\t性别\t专业\t年级\t中文\t英文\t数学\n";141. }142. int CStudent::set(bool isalter)143. {144. cout<<"输入学生信息:\n";145. displayshorthead();146. if (isalter)147. displayshortinfo();148. cout<<"\t"<<info.id<<"\t";149. cin.clear();150. cin>> *this;//从标准输入获取学生信息151. altered=true;//已修改152.153. if(cin.fail())154. {155. cout<<"录入失败\n";156. cin.clear();157. cin.ignore(CIN_LEN,'\n');//这两行是用来清空输入缓冲158. return -1;159. }160. else161. {162. cout<<"录入成功\n";163. return 1;164. }165. }166.167. //重载输出符168. ostream &operator<<(ostream& out,const CStudent &right)169. {170. //输出学生的全部信息171. out <<"\t"<<.id<<"\t"<<<<"\t"<<.sex<<"\t" 172. <<.major<<"\t"<<.grade<<"\t"<<.ch<<"\t" 173. <<.en<<"\t"<<.ma;174. return out;175. }176. //重载输入符177. istream& operator>>(istream& in,CStudent& right)178. {179. //输入除ID外的其他信息180. in >>>>.sex>>.major181. >>.grade>>.ch>>.en>>.ma; 182. return in;183. }184.185. /////////////////////////////////186. // 初始化函数//187. ////////////////////////////////188. int initial(vector<CStudent*> &stu)189. {190. fstream 输入文件191. CStudent *p;192.193. (, fstream::in|fstream::binary);//二进制输入打开194.195. if (!文件是否打开成功196. return -1;197. while( ()!=EOF )//是否到文件末尾198. {199. p=new CStudent();//新建一个学生对象200. ((char*) p->getinfo(),sizeof(data));//读入学生对象201. if(())//检查读入是否失败202. return -2;203. stu.push_back(p);//对象加入vector204. }205. if(!stu.empty())//如果从文件读入了对象206. CStudent::nowid = stu.back()->getid()+1;//则自增id设置为最后一个学生id+1 207. ();//关闭208. return stu.size();//返回对象个数209. }210. ////////////////////////////////211. // 信息增加函数//212. ///////////////////////////////213. void insert(vector<CStudent*> &stu)214. {215. char c='y';//输入控制字符216.217. int flag = 1;//标志位,1表示新增成功218.219. CStudent *p=new CStudent();220.221. while(c != 'n')//是否继续新增222. {223. flag = p->set(false);//设置学生信息224. if( flag == 1 )//如果设置成功225. {226. stu.push_back(p);//对象加入vector227. p = new CStudent();//新建下一个对象228. }229. cout << "是否继续添加学生(any/n)?";230. cin.clear();231. cin.ignore(CIN_LEN,'\n');232. cin.get(c);233. }234. //删除最后一个新建的对象,因为没有使用它235. delete p;236. CStudent::nowid--;237. }238.239. ///////////////////////////////240. // 查询全部信息函数//241. /////////////////////////////242. int comparebynone(const void *a, const void *b )243. {244. return 0;245. }246. ////////////////////////////////247. // 按学号比较函数//248. //////////////////////////////249. int comparebyid(const void *a, const void *b )250. {251. return *(const int *)a - ((CStudent *)(b))->getid();252. }253. ///////////////////////////////254. // 按姓名比较函数//255. //////////////////////////////256. int comparebyname(const void *a, const void *b )257. {258. return strcmp((const char *)a, (const char *)(((CStudent *)b)->getname())); 259. }260. ////////////////////////////////261. // 按年级比较函数//262. //////////////////////////////263. int comparebygrade(const void *a, const void *b)264. {265. return (*(const int *)a - ((CStudent *)b)->getgrade());266. }267. /////////////////////////////////////268. // 按总分和性别比较函数//269. ///////////////////////////////////270. int comparebymarkandsex(const void *a, const void *b)271. {272. double mark;273. char sex;274. sscanf((const char*)a,"%lf%c",&mark,&sex);275. return !(276. ( ((CStudent*)b)->getsum() >= mark )277. && ( (sex =='n') || (sex == ((CStudent*)b)->getsex()) )278. );279.280.281. }282. ///////////////////////////////283. // 搜索模板//284. /////////////////////////////285. template <typename T>286. void searchframe(const char *info, T &condition ,vector<CStudent *> &stu, int (*compare)(const void *a, const void *b) ,bool isalter)287. {288. char c='y';289. int flag;290. while(c != 'n')291. {292. cin.clear();293.294. if(info != NULL)295. {296. cout<< "输入"<<info<<":";297. //cin.ignore(CIN_LEN,'\n');298. cin>>condition;299. }300.301. if(cin.fail())302. {303. cout << "输入错误\n";304. }305. else306. {307. //遍历vector查找308. for(vector<CStudent*>::size_type ix =flag=0; ix!=stu.size(); ++ix)309. { //判断是name是否相等310. if(compare(&condition,stu[ix]) == 0)311. {312. if( isalter )313. stu[ix]->set(isalter);314. else315. {316. if(flag == 0)317. CStudent::displayhead();318. stu[ix]->displayinfo();319. }320. flag = 1;321. }322. }323. if (flag == 0)//没有查到324. {325. cout<<"没有";326. if(info == NULL)327. cout<<"符合条件";328. else329. cout<<info<<"为"<<condition;330. cout<<"的学生\n";331. }332. }333. cout << "是否继续(any/n)?";334. cin.clear();335. cin.ignore(CIN_LEN,'\n');336. cin.get(c);337. }338. }339.340. ////////////////////////////////341. // 信息检索函数//342. //////////////////////////////343. void fetch(vector<CStudent*> &stu)344. {345. int choose,id,grade;346. char name[20],markandsex[20];347.348. while (true)349. {350. cout << "\n\t1.显示全部学生信息\n"351. "\t2.按学号查学生信息\n"352. "\t3.按姓名查学生信息\n"353. "\t4.按年级查学生信息\n"354. "\t5.按成绩和性别查询\n"355. "\t6.返回上级菜单\n\n";356. lchoose:357. cout<<"输入您的选择:";358. choose=0;359. cin>>choose;360. switch(choose)361. {362. case 1 :searchframe(NULL,choose,stu,comparebynone,false); break; 363. case 2 :searchframe("学号",id,stu,comparebyid,false); break;364. case 3 :searchframe("姓名",name,stu,comparebyname,false); break;365. case 4 :searchframe("年级",grade,stu,comparebygrade,false); break;366. case 5 :searchframe("分数和性别",markandsex,stu,comparebymarkandsex,false); break;367. case 6 :return ;368. default: cout<<"输入有误\n";cin.clear();cin.ignore(CIN_LEN,'\n');goto lchoose;369. }370. }371. }372. ////////////////////////////////373. // 信息保存函数//374. //////////////////////////////375. int save(vector<CStudent*> &stu)376. {377. fstream file;378.379. (, fstream::out|fstream::binary);//二进制写打开文件380. if (!判断打开是否成功381. return -1;382. //遍历全部对象383. for(vector<CStudent*>::size_type ix =0; ix!=stu.size(); ++ix)384. { //判断当前对象是否已修改385. if(stu[ix]->isaltered())386. { //修改了则写入文件387. (ix*sizeof(data));388. ((char*) stu[ix]->getinfo(),sizeof(data));389. //写入是否成功390. if(())391. return -2;392. }393.394. }395. ();396. return 0;397. }398.399. ///////////////////////////////400. // 主函数//401. //////////////////////////////402.403. int main()404. {405. vector<CStudent *> stu ;407. system("clear");//清屏408. //读入数据文件409. if(initial(stu)<0)410. {411. cout<<"初始化失败,请检查数据文件\""<<<<"\"是否完好\n";412. return -1;413. }414.415. int choose;416. //主菜单循环417. while(true)418. {419. cout << "\n *----------学生信息管理系统----------*\n\n" 420. " 1.录入信息\n"421. " 2.修改信息\n"422. " 3.检索学生\n"423. " 4.保存数据\n"424. " 5.保存退出\n"425. " 6.不保存退出\n\n"426. " *---------modify by davelv-----------*\n";427. lchoose:428. cout<<"输入您的选择:";429. choose=0;430. cin>>choose;431. switch(choose)432. {433. case 1 :insert(stu);break;434. case 2 :searchframe("学号",choose,stu,comparebyid,true);break;435. case 3 :fetch(stu);break;436. case 4 :if(save(stu) <0 )437. {438. cout<<"保存失败,请检查数据文件\""<<<<"\"是否完好\n"; 439. };break;440. case 5 :if(save(stu) <0 )441. {442. cout<<"保存失败,请检查数据文件\""<<<<"\"是否完好\n"; 443. }return 0;444. case 6 :return 0;445. default:cout<<"输入有误\n";cin.clear();cin.ignore(CIN_LEN,'\n');goto lchoose;446. }447. }448. return 0;。
c语言设计大作业
学院航空学院目录1 摘要 (3)1.1设计题目 (3)1.2设计内容 (3)1.3开发工具 (3)1.4应用平台 (3)2 详细设计 (3)2.1程序结构 (3)2.2主要功能 (4)2.3函数实现 (4)2.4开发日志 (5)3 程序调试及运行 (6)3.1程序运行结果 (6)3.2程序使用说明 (10)3.3程序开发总结 (10)4 附件(源程序) (11)1 摘要1.1 设计题目编写七种排序算法的演示程序/快速排序;插入排序;选择排序;冒泡排序;堆排序;归并排序;基数排序。
1.2 设计内容先建立具有输入、输出和循环选择子程序功能的主函数,并在主函数中声明每个子函数,再为每一种排序算法建立一个或几个子函数。
这个程序就基本完成了。
子函数中直接定义了数组原型,通过七种算法,利用循环语句和自定义函数调用把数组a[10]按升序重新排列。
1.3 开发工具/*Visual C++ 6.0和Win32。
*/1.4 应用平台Windows XP/7 32位2 详细设计2.1 程序结构先建立具有输入、输出和循环选择子程序功能的主函数,并在主函数中声明每个子函数,接着再用一个switch分支选择对各个子函数进行引用。
再为每一种排序算法建立一个或几个子函数。
参数基本都是传递排序数组的个数和数组的头指针,没有返回值。
2.2 主要功能/*这七道程序的作用是把数组中的数从小到大排序。
他们分别使用了不同的算法,对数组a进行排列。
这七个程序能实现对一些常见的排序算法的演示,使我们对这些排序算法的原理和算法的实现过程更加熟悉,对C语言的语法结构和数据结构更加清晰。
*/2.3 函数实现1. 快速排序:就是你从数组中任取一个元素p (可随机取,现在以取第一个为例),以P作为主元,对数组进行划分,前一部分小于P,后一部分大于p,划分处理存储p ,然后分别对划分后的前一部分和后一部分使用递归调用。
最后将数组划分为小数组,通过局部的有序合并,解决问题。
C语言程序设计大作业--图书管理系统
C语言程序设计大作业设计报告一.设计方案本程序旨在用一个C语言程序实现简单的图书馆图书管理系统,程序包含平时的借书,还书,新书录入,查询功能,用简单明了的人机交互界面快速实现图书管理的目的。
二.模块说明及代码分析1.主函数:源代码:void main(){int a;printf("\n");printf("\n");printf(" ( ^_^ ) WELCOME!\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\t〉〉-------------BJTU图书管理系统--------------〈〈");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");do {printf("1.借书 2.还书 3.新书录入4.查询 0.退出");printf("\n");printf("\n");printf("\n");printf("\n");printf("请选择序号:");scanf("%d",&a);switch(a){case 1:jieshu();break;case 2:huanshu();break;case 3:xinshu();break;case 4:chaxun();break;case 0:break;default:printf("请选择正确的序号!\n");printf("\n");}}while(a!=0);printf("谢谢使用图书管理系统!\n");}主函数提供人机交互界面,让操作者选择所需的操作项目,并有退出选项。
大整数运算C语言实现C语言大作业报告+源码
大整数运算C语言实现C语言大作业报告+源码一、设计高精度无符号大整数计算(以1为存储单位)1.1 需求陈述对数值很大、精度很高的数进行高精度大整数计算是一类十分常见的问题。
但由于C语言中数据类型受数据长度和范围限制,普通数学计算很难实现此类问题,为尝试解决这个问题,专门设计一个C语言程序用于无符号大整数的计算,实现无符号大整数的一般计算和比较功能。
1.2 需求分析1.2.1 功能分析表1 程序功能分析项目功能分析以字符串形式接受数据接收反转字符串函数Invert()用Translate()将字符串翻译为整形数组分别用BigN_cmp_low()和BigN_cmp_High()对数据进行比较加法BigN_Add() //从a[1]对数组进行比较,传入两个数组及其大小以及需要从第几位开始比较减法BigN_Min() 数据运算低位减法BigN_Min_low(),在未反转的情况下计算 intBigN_cmp_High(int *, int *, int , int ); BigN乘法BigN_Mul() //从a[n]对数组进行比较,传入两个数组及其大小除法BigN_Div()反转整形数组InvertInt()从前面删减多余的零Del_zero_low() 运算辅助函数从末尾删减多余的零Del_zero_High()获取两个数的最大值Get_MAX()11.2.2 数据分析该程序可用于计算无符号大整形数据计算,最多可计算长度为200位(即10的200次方大小)的数据,但在原代码中可以随数据需求改变最大长度。
该)的情况。
由于数据类型程序中所有运算和比较均考虑到了输入前导0(例0001 限制,该程序未加入小数计算和负数计算,除法结果中只分别计算商和余数。
1.2.3 技术约束本程序已在code blocks下编译通过。
1.3 总体设计1.3.1 全局数据结构本程序中数据采取以个位数字为单位存入整形数组,在数据计算和比较中对单个数组单元进行操作。
c语言程序设计网上作业源代码参考
c语言程序设计网上作业源代码参考25、个人所得税(实验题)假设工资税金按以下方法计算: x≤1000元,不收取税金;1000< x≤2000,收取5%的税金: 2000< x ≤ 3000,收取10%的税金;3000< x ≤ 4000,收取15%的税金;4000< x≤5000,收取20%的税金;x>5000,收取25%的税金。
编写一个程序,输入工资金额,输出应收取税金额度,要求分别用if语句或switch语句来实现。
输入:有多组输入,每组输入为一个double类型的工资,当其为0时,程序结束运行,输出:每行输入应一行输出,输出应缴税金, double型。
代码:#includeint main(void){double salary,tax1,tax2;int a;while(scanf("%lf",&salary)&&salary!=0){a=(int)salary/1000;if(a==0) tax1=0;else if(a==1) tax1=(salary-1000)*0.05;else if(a==2) tax1=(salary-2000)*0.10+50;else if(a==3) tax1=(salary-3000)*0.15+150;else if(a==4) tax1=(salary-4000)*0.20+300;else tax1=(salary-5000)*0.25+500;switch(a){case 0:tax2=0;break;case 1:tax2=(salary-1000)*0.05;break;case 2:tax2=(salary-2000)*0.10+50;break;case 3:tax2=(salary-3000)*0.15+150;break;case 4:tax2=(salary-4000)*0.20+300;break;default:tax2=(salary-5000)*0.25+500;}printf("%.6lf\n",tax1);}return 0;}26、正整数逆转(实验题)编写一个程序,将用户输入的任意正整数逆转。
《C语言程序的设计》大作业
南昌大学软件学院C语言程序设计工程实训大作业班级:09软件技术(2)班学号:8001509107姓名:吴承增指导老师:危建国2010年12月10日系统说明书1.问题描述:该程序包内容包括以下的模块,均用子函数完成:(1)主菜单(2)输入若干条记录并保存文件(指学生的信息)(3)学生信息录入、修改、删除、查询、存储。
(4)学生信息的浏览及排序(冒泡排序算法)。
(5)学生成绩的录入、修改。
(6)统计及格和优秀人数(7)退出系统2.程序设计和程序流程图:解决方案:主函数流程图:各部分功能的流程图:录入学生成绩流程图:统计功能流程图如图3所示:图3 统计模块流程图冒泡排序流程图:排序学生信息流程图:删除学生成绩信息流程图:3.系统的基本功能(主要数据和函数功能描述):char xh[15]; //以字符串数组形式存储学生学号char name[25]// 以字符串数组形式存储学生姓名char sex[5]; //性别float sxcj; //数学成绩float yycj; //英语成绩float Cyycj; //C语言成绩float ave; //平均成绩float sum; //总成绩#define N 4 //宏定义学生#define MAX 60 //学生最大个数int nCOUNT=0; //记录当前学生个数struct student //定义结构体学生int ScoreNew() //录入学生成绩int average() //求平均数int xsxscj() //显示输入学生信息、将学生打印到屏幕上int xsxsxx() //显示学生信息int xhcjpx() //按学生学号排序学生信息int sxcjpx()按数学成绩排序学生信息int yycjpx()按英语成绩排序学生信息int Cyypx() //按C语言成绩排序学生信息int zcjpx()按总成绩排序学生信息int pxxsxx()//排序学生信息int axhcx() //按学号查询int axmcx() //按姓名查询int SearchStud() //查询学生成绩信息int zjxsxx() //增加学生信息int xgxsxx() //修改学生信息int scxsxx() //删除学生信息int gxxscj() //更新学生信息int tjxscj() //统计学生成绩int save() //保存到文件((fp=fopen("stu_list.txt","wb"))==NULL) //以只读方式打开文件stu_list.txt (fwrite(&str[i],sizeof(struct student),1,fp)!=1) //创建文件并以二进制形式打开int xswj() //显示文件信息int main() //主函数mainmemu4.拟采用开发平台:Visual C++,Borland C++等。
c语言大作业--学生管理系统
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 100struct student{char name[10];int num;char sex[10];float math;float yingyu;float zhengzhi;float ywen;float aver;float sum;}stu;void menu(){system("cls");printf(" * 欢迎使用学生成绩管理系统* \n");printf(" * ======================= * \n"); printf(" * 请选择相应的功能: * \n");printf(" * 1.成绩录入* \n");printf(" * 2.查询成绩* \n");printf(" * 3.修改成绩* \n");printf(" * 4.插入成绩* \n");printf(" * 5.报表输出* \n");printf(" * 6.删除操作* \n");printf(" * 0.退出系统* \n" );printf(" * ======================= * \n"); printf(" \n\n\n\n\n\n\n\n\n * * * * \n"); }//成绩录入void input(){system("cls");FILE *fp;student xs; /*定义一个结构体变量来装从文件中读出来的数据*/int c=1;if((fp=fopen("student.dat","ab"))==NULL){printf("can't open file!\n");exit(0);}printf("\n 成绩录入");printf("\n****************************************************");while(c++) /*中间加油break,可使循环中断*/{printf("\n 请输入您的姓名(姓名为end结束):");scanf("%s",);if(strcmp(,"end")==0) break;/*判断姓名是否为end,用字符串判断*/printf("\n 请输入学号:");scanf("%d",&xs.num);printf("\n 性别:");scanf("%s",&xs.sex);printf("\n 请输入数学的成绩:");scanf("%f",&xs.math);printf("\n 请输入英语的成绩:");scanf("%f",&xs.yingyu);printf("\n 请输入政治的成绩:");scanf("%f",&xs.zhengzhi);printf("\n 请输入语文的成绩:");scanf("%f",&xs.ywen);xs.aver=0;/*给平均分变量赋初值*/xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;xs.sum=0;xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;fwrite(&xs,sizeof(stu),1,fp); //将成绩信息写入文件system("cls");}fclose(fp);}void xingming(){FILE *fp;student xs;char name[10];printf("\n 输入要查学生的姓名: ");scanf("%s",name);if((fp=fopen("student.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(strcmp(,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/{printf("\n 学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex, xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);break;}}if(feof(fp))printf("\n 查找失败"); /*学生不存在*/fclose(fp);}void xuehao(){FILE *fp;student xs;int num;printf("\n 输入要查学生的学号: ");scanf("%d",&num);if((fp=fopen("student.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/{printf("\n 学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs .math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);break;}}if(feof(fp)) printf("\n 查找失败");fclose(fp);}//查询void search(){char ch1;system("cls");printf(" 请输入按何种方式查询:\n");printf("\n 1-姓名,2-学号:");ch1=getchar();/*用字符接收*/switch(ch1)/*判断*/case '1':xingming();break;case '2':xuehao();break;}printf("\n 按任意键返回主菜单");getch();/*让屏幕停留同时按任意键返回*/}//修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;void modi(){student xs;FILE *fp;char name[10];system("cls");printf("\n 输入要修改的学生的姓名: ");scanf("%s",name);if((fp=fopen("student.dat","rb+"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(strcmp(,name)==0)/*判断输入要修改的姓名是否存在*/{printf(" 修改前学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);printf("\n 请输入该生的数学成绩:");scanf("%f",&xs.math);printf("\n 英语成绩:");scanf("%f",&xs.yingyu);printf("\n 政治成绩:");scanf("%f",&xs.zhengzhi);printf("\n 语文成绩:");scanf("%f",&xs.ywen);xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4;xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen;break;}}if(!feof(fp)){printf(" \n 修改后的学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/}elseprintf("\n 学生不存在,修改失败!!");fclose(fp);printf("\n 按任意键返回主菜单");getch();}//插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。
C语言程序设计书面作业参考代码
【第二次作业】 1.编写一个程序打印九九乘法表,要求列对齐。输出格式如下 1*1=1 1*2=2 2*2=4 1*3=3 2*3=6 3*3=9 1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25 …… (参考代码) #include <stdio.h> int main() {
4.有如下分段函数,编写一个程序,输入 x,输出对应 y 的值。
⎧x
(x < 1)
y = ⎪⎨2x −1 (1 ≤ x < 10)
⎪⎩3x −11 (x ≥ 1来自)(参考代码) #include <stdio.h> int main() {
double x,y; printf("Input x: "); scanf("%lf",&x); if(x<1) y=x; else if(x<10) y=2*x-1; else y=3*x-11; printf("x=%f, y=%f\n",x,y); return 0; }
C程序设计大作业(含源代码)
{
public:
void SetPersonAddress(char *AddressFromMain);
void SetPersonSex(char *SexFromMain);
面
向
对
象
程
序
设
计
大
作
业
姓名:叶尔凯西 学院(系):计科系 班级:计科系07-1班 学号:027
设计本程序的目的:
关于一些并不太复杂的集体来说, 一般需要管理集体中的每个人的基本信息的, 本程序 专门为一些在校学生的基本信息的管理而设计的, 主要目的是通过本程序来实现简单的记录 和查找学生的基本信息;程序功能简介:
{
cout<<Address<<endl;
}
输出person类中的Address数据成员的内容;
(4) 输出性别的成员函数:
void person::ShowPersonSex()
{
cout<<Sex<<endl;
}
输出person类中的Sex数据成员的内容;
②接下来就是person基类的派生类student类的内部设计如下:
void ShowPersonSex();
void ShowPersonAddress();
private:
char Address[25];
char Sex[2];
};
可以看到, 在上面分别声明了四个成员函数和两个数据成员。 四个成员函数的 作用是对私有数据成员进行访问(包括输入和输出) 。所以当建立了一个person类之后就可以通过它的对象来访问该类的数据成员。
大作业源代码word版
Data.h//此类储存了许多用户输入的参数,放入物质类以供查阅#ifndef DATA#define DATAusing namespace std;#include"Matrix.h"class Data{public:Data(); //同样是无参构造函数Data(double dt,int t,double dx,double f,double A); //同样是有参构造double getdt(); //获得各种奇葩数据dtint gett(); //tdouble getdx(); //dxdouble getf(); //fdouble getA(); //Aprivate:double P_dt; //叠代时间精度int P_t; //叠代次数double P_dx; //空间精度double P_f; //波源频率double P_A; //波源振幅};//很esay的一个类,不说了Data::Data(){P_dt=0.1;P_t=100;P_dx=0.5;P_f=100;P_A=1;}Data::Data(double dt,int t,double dx,double f,double A){P_dt=dt;P_t=t;P_dx=dx;P_f=f;P_A=A;}double Data::getdt(){return P_dt;}int Data::gett(){return P_t;}double Data::getdx(){return P_dx;}double Data::getf(){return P_f;}double Data::getA(){return P_A;}//声明坐标类class Coordinate{public:Coordinate(); //无参构造函数Coordinate(int x,int y,int o); //有参构造函数int getx(); //获取x坐标int gety(); //获取y坐标int getorder(); //获取顺序private:int C_x; //x坐标int C_y; //y坐标int C_order; //顺序,为了区分一些点的先后关系};Coordinate::Coordinate(int x,int y, int o){C_x=x;C_y=y;C_order=o;}Coordinate::Coordinate(){C_x=0;C_y=0;C_order=0;}int Coordinate::getx(){return C_x;}int Coordinate::gety(){return C_y;}int Coordinate::getorder(){return C_order;}#endifMatrix.h//这只是一个普通的矩阵类#ifndef MATRIX#define MATRIXusing namespace std;#include<iostream>template <class T>class Matrix{public:Matrix(int rsz=1,int csz=1); //构造函数,创建矩阵Matrix(const Matrix<T>& M ); //拷贝构造函数~Matrix(); //析构函数,删除矩阵T& operator()(int i,int j)const; //重载下标运算符Matrix<T>& operator=(const Matrix<T>& M); //重载矩阵赋值运算符Matrix<T>& operator=(const T X); //重载常数赋值运算int Rows(); //取矩阵的行数int Columns(); //取矩阵的列数void OutPut(ostream& out)const; // 将矩阵放到输出流out中输出private:int rsize,csize; //矩阵行数和列数T *element; //矩阵的存放空间};//实现构造函数template <class T>Matrix<T>::Matrix(int rsz,int csz){rsize=rsz;csize=csz;element=new T[rsize*csize];}//实现拷贝构造函数template <class T>Matrix<T>::Matrix(const Matrix<T>& M){rsize=M.rsize;csize=M.csize;element = new T[rsize*csize];for(int i=0;i<rsize*csize;i++)element[i]=M.element[i];}//实现析构函数template <class T>Matrix<T>::~Matrix(){delete []element;}//实现下标运算符,方便矩阵元素的赋值和取值template <class T>T& Matrix<T>::operator()(int i,int j)const{return element[(i-1)*csize+j-1];}//实现重载赋值运算符template <class T>Matrix<T>& Matrix<T>::operator=(const Matrix<T>& M){if (this!=&M) //如果不是自己给自己赋值{delete []element;rsize=M.rsize;csize=M.csize;element=new T[rsize*csize];for (int i=0;i<rsize*csize;i++)element[i]=M.element[i];}return *this;}//实现重载运算=常数template<class T>Matrix<T>& Matrix<T>::operator=(const T X){for(int i=0;i<rsize*csize;i++){element[i]=X;}return *this;}//实现取矩阵行数template <class T>int Matrix<T>::Rows(){return rsize;}//实现取矩阵列数template <class T>int Matrix<T>::Columns(){return csize;}//实现一维数组的输出template<class T>void Matrix<T>:: OutPut(ostream& out) const{for(int i=0;i<rsize;i++){for(int j=0;j<csize;j++)out<<element[i*csize+j]<<' ';out<<endl;}}//重载插入运算符<<template<class T>ostream& operator<<(ostream& out,const Matrix<T>& x){x.OutPut(out);return out;}#endifMatter.h//此文件储存了一个重要的类,物质类,储存所有已知信息#ifndef MATTER#define MATTER#include"data.h"#include<iostream>#include<cmath>class Matter{public:Matter(); //缺省构造函数Matter(int n,int m); //有参构造函数Matter(Matter&); //拷贝构造函数void operation(int t); //叠代操作,传入一叠代次数tMatrix<double> getM_potential(); //获取势能矩阵Matrix<double> getM_k(); //获取波速矩阵Matrix<double> getM_source(); //获得波源矩阵Data getM_P(); //获取用户输入基本参数void changeM_P(Data P); //改变用户输入基本参数void changeM_k(Matrix<double>&k); //改变波速矩阵void changeM_source(Matrix<double>&reflex); //改变波源矩阵int getM_n(); //获得总长度int getM_m(); //获得总宽度private:Matrix<double> M_potential; //势能矩阵Matrix<double> M_k; //波速矩阵Matrix<double> M_source; //波源矩阵int M_n; //有限元矩阵长度int M_m; //有限元矩阵宽度Data M_P; //用户输入基本参数};//无参构造Matter::Matter(){M_potential=Matrix<double>();M_k=Matrix<double>();M_source=Matrix<double>();int M_n=1;int M_m=1;M_potential=0;M_source=0;M_k=1200;M_source(M_n/2,M_m/2)=1;}//有参构造Matter::Matter(int n,int m){M_potential=Matrix<double>(n,m);M_k=Matrix<double>(n,m);M_source=Matrix<double>(n,m);M_n=n;M_m=m;M_potential=0;M_source=0;M_k=1200;M_source(M_n/2,M_m/2)=1;}//拷贝构造Matter::Matter(Matter &m){M_potential=m.getM_potential();M_k=m.getM_k();M_P=m.getM_P();M_n=m.getM_n();M_m=m.getM_m();M_source=m.getM_source();}//叠代函数void Matter::operation(int t){//波源计算,根据传过来的参数一叠代次数,确定波源(受迫点)的势能情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
面向对象程序设计大作业姓名:叶尔凯西学院(系):计科系班级:计科系07-1班学号:设计本程序的目的:关于一些并不太复杂的集体来说,一般需要管理集体中的每个人的基本信息的,本程序专门为一些在校学生的基本信息的管理而设计的,主要目的是通过本程序来实现简单的记录和查找学生的基本信息;程序功能简介:本程序是通过面向对象的最重要的特点“类”来设计出来的,其功能是实现简单的学生基本信息管理。
包括一些要求用户从键盘输入(记录)学生的基本信息、输出学生的基本信息和用学生的学号来查找学生信息表中的某个学生的基本信息等功能;程序功能的详细介绍:本人设计程序时考虑到的很所内容,其中输入输出学生的基本信息是最基本的功能。
下面来给大家介绍程序的核心类的构建:①在程序中共建立了两种类,分别是person类和student类。
person作为student类的基类,其内部是如下设计的:class person{public:void SetPersonAddress(char *AddressFromMain);void ShowPersonSex();void ShowPersonAddress();private:char Address[25];char Sex[2];};可以看到,在上面分别声明了四个成员函数和两个数据成员。
四个成员函数的作用是对私有数据成员进行访问(包括输入和输出)。
所以当建立了一个person类之后就可以通过它的对象来访问该类的数据成员。
下面分别说明每一个成员函数的具体定义:(1)设置(输入)人地址的成员函数:void person::SetPersonAddress(char *AddressFromMain){strcpy(Address,AddressFromMain);}通过strcpy把字符指针的内容送入person类中的数据成员Address。
(2)设置(输入)人性别的成员函数:void person::SetPersonSex(char *SexFromMain){strcpy(Sex,SexFromMain);}通过strcpy把字符指针SexFromMain的内容作为地址的存储单元中的内容送入person类中Sex数据成员。
(3)输出地址成员函数:void person::ShowPersonAddress(){cout<<Address<<endl;}输出person类中的Address数据成员的内容;(4)输出性别的成员函数:void person::ShowPersonSex(){cout<<Sex<<endl;}输出person类中的Sex数据成员的内容;②接下来就是person基类的派生类student类的内部设计如下:class student: public person{public:void SetStudentInformation(char*NameFromMain,char *StudentAddressFromMain,char *StudentSexFromMain,char *StudentNumberFromMain, int *score);void ShowStudentInformation();friend void FindStudentNumber(student *data);friend void FindStudentName(student *data);private:intMathResult,EnglishResult,CResult,CompilationLanguageResult,DigitalLogicResult,MarksismResu lt;char StudentNumber[25];char Name[25];float Average;int total;};当设计student派生类的时候,最主要的特点就是利用了“类”的一个特点继承。
(public),下面来给大家介绍student类的内部构造:①成员函数共有设置(输入)学生信息、输出学生信息等两个。
还有一个非成员函数的一个函数,它为该student类的友元函数,其功能是实现查找。
除此之外还有从基类person类继承下来的一些成员函数;②数据成员分别为整形变量的学生成绩(包括数学成绩、英语成绩、C++成绩、汇编语言成绩、数字逻辑成绩、马克思哲学成绩等),字符数组的学生学号和学生姓名以及整型变量的学生的总分和单精度变量的平均分;下面介绍student派生类中的各个成员函数的定义部分:设置(输入)学生信息的成员函数:Void student::SetStudentInformation(char*NameFromMain,char*StudentAddressFromMain,char* StudentSexFromMain,char *StudentNumberFromMain, int *score){strcpy(Name,NameFromMain);SetPersonAddress(StudentAddressFromMain);SetPersonSex(StudentSexFromMain);strcpy(StudentNumber ,StudentNumberFromMain);for(int i=0; i<6; i++){switch(i){case 0:MathResult=score[0];case 1:EnglishResult=score[1];case 2:CResult=score[2];case 3:CompilationLanguageResult=score[3];case 4:DigitalLogicResult=score[4];case 5:MarksismResult=score[5];}}total=MathResult+EnglishResult+CResult+CompilationLanguageResult+DigitalLogicResult+Ma rksismResult;Average=total/6.0;}可以看到在设计student类的输入成员函数时其内部同时调用了从基类继承下来的一些成员函数,这就是继承的特点。
下面将会详细地介绍该成员函数的功能:首先是student类的两个字符数组变量学生姓名和学生学号的赋值通过strcpy来直接实现,也就是可通过该类的成员函数来给数据成员赋值。
还有两个数据成员是不能够被继承下来的基类的两个字符数组学生性别和家庭地址,它们是通过student派生类的成员函数中调用从基类person中继承下来的成员函数,从而改变对不能被继承下来的基类的数据成员赋值。
接着就是对student类中自己的数据成员学生成绩的赋值,它们是通过一个简单的switch case语句来实现的。
输出学生信息的成员函数:void student::ShowStudentInformation(){cout<<endl;cout<<"学生的基本信息如下: "<<endl<<endl;cout<<"学生的姓名: "<<Name<<endl<<endl;;cout<<"学生的学号为: "<<StudentNumber<<endl<<endl;cout<<"学生的家庭地址为: ";ShowPersonAddress();cout<<endl;cout<<"学生的性别为: ";ShowPersonSex();cout<<endl;cout<<"学生的考试课程成绩如下: "<<endl<<endl;cout<<"学生的离散数学课程成绩为: "<<MathResult<<"分"<<endl<<endl;cout<<"学生的英语课程成绩为: "<<EnglishResult<<"分"<<endl<<endl;cout<<"学生的C++课程成绩为: "<<CResult<<"分"<<endl<<endl;cout<<"学生的汇编语言课程成绩为: "<<CompilationLanguageResult<<"分"<<endl<<endl;cout<<"学生的数字逻辑课程成绩为: "<<DigitalLogicResult<<"分"<<endl<<endl;cout<<"学生的马克思主义哲学课程成绩为: "<<MarksismResult<<"分"<<endl<<endl;cout<<"学生的总分为:"<<total<<"分"<<endl<<endl;cout<<"学生的平均分为:"<<Average<<"分"<<endl<<endl;}输出学生信息的成员函数的定义中不难发现输出时不仅会输出student派生类自己的数据成员的值还会同时输出不能被继承下来的基类person中的数据成员的值。
这显然只能通过继承下来的成员函数来实现(如ShowPersonAddress()和ShowPersonSex())。
下面来介绍三个非成员函数,其中两个为student类的友元函数。
它就是实现查找功能的(分别用学生学号和学生姓名来进行查找),另一个是一个单独的普通函数。
其功能是当程序运行时保持一个用户界面的功能。