C语言大作业全
C语言大作业
#include <stdio.h>#include <string.h>#include <stdlib.h>#include <conio.h>#include <time.h>#define N 10int a[N],key;int flag = 0;//flag为0表示尚未输入过学员成绩,不能执行输出和统计操作void homepage(); /*主菜单*/void in(); /*依次输入学员成绩*/void out(); /*依次输出学员成绩*/void calculate(); /*计算学员的平均分、最高分和最低分*/void classification(); /*计算学员的中优秀、良好、中等、合格、不及格的人数*/void search(); /*输出指定序号的学员成绩及名次*/void change(); /*修改指定序号的学员成绩*/void order(); /*输出学员成绩的降序排列*/void graph(); /*输出学员成绩曲线图*/void end(); /*结束程序*/void welcome(); /*我的个人信息函数*/void main() /*用户操作界面*/{system("color f9");//更改背景及字体颜色f背景白色9字体蓝色包含在<stdlib.h>中printf(" \t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf(" \t┃**********************************************************┃\n");printf(" \t┃***┏━━━━━━━━━━━━━━━━━━━━━━━━┓***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 欢迎使用学生成绩管理系统****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃*** 2017.06.20 ****┃***┃\n");printf(" \t┃***┃*** ****┃***┃\n");printf(" \t┃***┃************************************************┃***┃\n");printf(" \t┃***┗━━━━输入任意字符进入系统━━━━┛***┃\n");printf(" \t┃**********************************************************┃\n");printf(" \t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");getchar();system("cls");homepage(); /*调用主菜单*/}void homepage() /*主菜单*/{int b,endflag=0; /*声明局部变量*/system("cls");while(1) /*循环输出以下信息*/{printf("\t\t\t 学生成绩管理系统\n\n");printf("\t\t1.依次输入学员成绩\n\n"); /*键入学生的信息*/printf("\t\t2.依次输出学员成绩\n\n"); /*输出学生的信息*/printf("\t\t3.计算学员的平均分、最高分和最低分\n\n"); /*查看录入的学生信息*/printf("\t\t4.计算学员的中优秀、良好、中等、合格、不及格的人数\n\n"); /*按姓名查看学生的信息*/printf("\t\t5.输出指定序号的学员成绩及名次\n\n"); /*按学号查看学生的信息*/printf("\t\t6.修改指定序号的学员成绩\n\n"); /*排序*/printf("\t\t7.输出学员成绩的降序排列\n\n"); /*删除学生信息*/printf("\t\t8.输出学员成绩曲线图\n\n"); /*保存*/printf("\t\t9.我的个人信息\n\n"); /*我的个人信息*/printf("\t\t0.退出\n\n"); /*退出*/time_t timep;time (&timep);printf("\t\t\t\t\t\t%s",ctime(&timep)); //输出系统当前时间printf("\t\t请输入你的选择:");scanf("%d",&b);switch(b){case 1: in(); /*成绩录入*/case 2: out(); /*依次输出学员成绩*/case 3: calculate(); /*计算学员的平均分、最高分和最低分*/case 4: classification(); /*计算学员的中优秀、良好、中等、合格、不及格的人数*/case 5: search(); /*输出指定序号的学员成绩及名次*/case 6: change(); /*修改指定序号的学员成绩*/case 7: order(); /*输出学员成绩的降序排列*/case 8: graph(); /*输出学员成绩曲线图*/case 9: welcome(); /*我的个人信息函数*/case 0: {end();endflag=1;break;} /*退出SWITCH语句*/default :printf("error!");}if(endflag) break; /*如果选择0就退出循环*/}}void in() /*依次输入学员成绩*/{int i;system("cls");for(i=0;i<N;i++){printf("请输入第%d学生的成绩:",i+1);scanf("%d",&a[i]);while(1){if(a[i]>100||a[i]<0){printf("输入有误,请重新输入!");scanf("%d",&a[i]);}else break;}}flag = 1;printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}void out() /*依次输出学员成绩*/{if(flag==0){printf("尚未输入学员成绩!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int i;system("cls");printf("\t\t\t学员成绩情况\n\n");printf("\t\t序号成绩\n");for(i=0;i<N;i++)printf("\t\t%3d %d\n",i+1,a[i]);printf("\n");printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}}void calculate() /*计算学员的平均分、最高分和最低分*/ {if(flag==0){printf("尚未输入学员成绩!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int i,max,min;double sum=0,aver;system("cls");for(i=0;i<N;i++)sum=sum+a[i];aver=sum/N;printf("\t\t\t 成绩统计情况\n\n");printf("\t平均成绩为%4.2f ",aver);max=min=a[0];int maxn=0,minn=0;//获得最高分最低分序号for(i=0;i<N;i++){if(a[i]>max){max=a[i];maxn=i;}if(a[i]<min){min=a[i];minn=i;}}printf("\n\t最高成绩%d号同学,得分:%d",maxn+1,max);printf("\n\t最低成绩%d号同学,得分:%d",minn+1,min);printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}}void classification() /*计算学员的中优秀、良好、中等、合格、不及格的人数*/ {if(flag==0){printf("尚未输入学员成绩!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int i,z=0,b=0,m=0,d=0,e=0;system("cls");for(i=0;i<10;i++){if(a[i]>=90) z++;else if(a[i]>=80) b++;else if(a[i]>=70) m++;else if(a[i]>=60) d++;else e++;}printf("\t\t\t成绩分类统计\n");printf("\t\t优秀共有%d人\n\t\t良好共有%d人\n\t\t中等共有%d人",z,b,m); printf("\n\t\t及格共有%d人\n\t\t不及格共有%d人\n",d,e);printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}}void search() /*输出指定序号的学员成绩及名次*/{if(flag==0){printf("尚未输入学员成绩!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int m;system("cls");printf("请输入学生序号(1-%d):",N);while(1){scanf("%d",&m);if(m<=0||m>N)printf("输入的序号有误,重新输入!");elsebreak;}printf("序号为%d的学生成绩为%d",m,a[m-1]);printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}}void change() /*修改指定序号的学员成绩*/{if(flag==0){printf("尚未输入学员成绩!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int m=0;system("cls");printf("请输入要修改的学生序号:");scanf("%d",&m);printf("\n请输入修改后的成绩:");scanf("%d",&a[m-1]);printf("修改后的成绩为:\n");out();printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}}//如果只想降序输出成绩,不应该对输入的数组排序//如果想按成绩高低排序的话,倒是没问题void order() /*输出学员成绩的降序排列*/{if(flag==0){printf("尚未输入学员成绩!!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int i,j,t;system("cls");//如果不想改变原数组的话int b[N]; //对新数组进行排序并输出for(i=0;i<N;i++){b[i]=a[i];}for(i=0;i<N;i++){for(j=0;j<N-1;j++)if(b[j+1]>b[j]){t=b[j+1];b[j+1]=b[j];b[j]=t;}}printf("学员成绩的降序排列为:");for(i=0;i<N;i++)printf("%d ",b[i]);printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();/*for(i=0;i<N;i++){for(j=0;j<N-1;j++)if(a[j+1]>a[j]){t=a[j+1];a[j+1]=a[j];a[j]=t;}}printf("学员成绩的降序排列为:");for(i=0;i<N;i++)printf("%d ",a[i]);printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();*/}}void graph() /*输出学员成绩曲线图*/{if(flag==0){printf("尚未输入学员成绩!\n\n输入任意键返回主菜单\n");getch();system("cls");homepage();}else{int i,j,k;system("cls");printf("\t\t\t\t学员成绩曲线图\n\n");printf("\t\t学生成绩\n\t\t |\n");for(i=0;i<N+1;i++){printf("\t\t%3d|\t",(10-i)*10);for(k=0;k<N;k++){j=a[k]/10;if(i!=(10-j))printf(" ");elseprintf("* ");}printf("\n");}printf("\t\t ------------------------------->\n");printf("\t\t\t 1 2 3 4 5 6 7 8 9 10\t");printf("学生序号\n");printf("\n\n输入任意字符返回菜单\n");getch();system("cls");homepage();}}void end(){system("cls");printf("\n\n\n\n");printf("\t┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");printf("\t┃************************************************************┃\n");printf("\t┃** **┃\n");printf("\t┃** **┃\n");printf("\t┃** 谢谢使用本程序**┃\n");printf("\t┃** **┃\n");printf("\t┃** **┃\n");printf("\t┃************************************************************┃\n");printf("\t┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n\n\n\n\n");}void welcome() /*我的个人信息函数*/{system("cls");printf("\n\n\t\t------------个人信息------------"); /*在屏幕上输出一下信息*/printf("\n\n\t\t姓名:");printf("\t\t\tSex:\n");printf("\t\t年龄:\n");printf("\n\n输入任意字符返回菜单\n");getch(); /*按任意键返回主函数*/system("cls");homepage();}。
c语言大作业综合
c语言大作业综合第一章C语言简介及算法一.选择题1.一个C程序可以包含的函数。
A.一个B.多个C.若干D.任意2.下面不可以使用来编译和连接一个C 程序。
A.TurboCB.VC++C.C语言编译器D.BC3.C语言的程序一行写不下时,可以。
A.用逗号换行B.用分号换行C.在任意一空格处换行D.用回车符换行4.C控制语句有种。
A.6B.9C.32D.345.复合语句是用一对界定的语句块。
A.{}B.[]C.()D.”6.一个C程序的执行总是从该程序的函数开始,在函数最后结束。
A.第一个、最后一个B.main、mainC.主函数、最后一个D.第一个、第一个7.C语言提供的合法的数据类型关键字A.FloatB.ignedC.integerD.Char8.在以下各组标识符中,合法的标识符是(1)A.B01B.table_1C.0_tD.k%(2)A.Fat_B.voidC.pblD.(3)A.某y_B.longdoubleC.某pD.CHAR(4)A.jB.IntC._某yD.w_y239.C语言的标识符里不能有A.大小写字母B.数字C..D.下划线二.填空题1.C程序是由构成的,一个C程序中至少包含因此,是C程序的基本单位。
2.C程序注释是由和所界定的文字信息组成的。
3.函数体一般包括和4.算法是解决问题的和的描述。
5.C程序的注释部分可以出现在程序的位置,它对程序的编译和运行作用,但是可以增加程序的第二章C语言数据类型、基本运算及简单程序设计一.选择题1.不合法的字符常量是A.‘\\t’B.“A”C.‘a’D.’\\某32’2.逻辑运算符两侧运算对象的数据类型。
A.只能是0或1B.只能是0或非0正数C.只能是整型或字符型数据D.可以是任何类型的数据3.下列表达式中,不满足“当某的值为偶数时值为真,为奇数时值为假”的要求。
A.某%2==0B.!某%2!=0C.(某/2某2-某)==0D.!(某%2)4.下面选项中,不是合法整型常量的是A.160B.-0某cdgC.-01D.-0某48a5.能正确表示“当某的取值在[1,10]和[200,210]范围内为真,否则为假”的表达式是。
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语言大作业报告
C语言大作业
猜数字游戏
信安三班
孙麒 2009302530088
戈丽萍 2009302530066
分工
戈丽萍:A、B、Win函数,流程图孙麒:main、Guess函数、程序调试
一、游戏说明
1、系统随机产生一组不重复的4位数字
2、游戏者输入所猜的不重复数字,并按回车提交。
3、系统将提交的数与它自动产生的数进行比较,输出结果“*A*B”形式。
其
中A代表数字正确相应位置也正确,B代表数字正确但位置不正确。
如:1A3B 表示游戏者有1个数字的位置正确且数值也正确,除此以外,游戏者还猜对了3个数字,但位置不对,即游戏者已经猜出4位数据,但有3个数据位置不对!
4、游戏者有限定的8次的猜测机会,在规定次数内完成,则游戏成功,否则,
游戏失败。
5、游戏成功后,将根据游戏者猜测所需要的次数对其进行评价:第一次猜出为perfect,第二——第四次猜出为great
二、详细流程
1、main函数
、
2、win函数(判断输赢)
3、A函数(判断数字且位置正确的个数)
A (char m[4],char n[4])
B(char m[4],char n[4],in a)
4、B函数(判断数字对但是位置不对的个数)
5、主函数Guess(char right[4])
三、总结经验
在确定了设计的内容之后,经历了很长时间的思考想出了算法。
但是在设计中反复出现错误,特别是B函数,检查很多遍之后觉得算法并无问题。
就分块进行调试。
后来偶然发现原来是整个过程中的“==”都写成了赋值“=”,导致错误,今后一定要细心才可以。
C语言大作业全
#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct student) #define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("stu.bin", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}}//将数据存入文档中void check(struct student * head,struct student * p1) {struct student *h=head;for(m=0;m<n;m++,h=h->next ){if(strcmp( h->num,p1->num)==0){printf("输入号码重复\n");printf("请重新输入学号:");scanf("%s",p1->num);getchar();check(head,p1);}}}//检验学号是否重复struct student * creat(){struct student * head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN); printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);head=NULL;while(strcmp(p1->num,"0")!=0){n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);//检查输入的学号是不是重复且是不是重复输错 printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);}p2->next=NULL;save(head);return(head);}//录入数据并将其保存至文档void print(struct student *head){struct student * p;printf("\n这%d个学生的成绩为:\n",n);printf("学号姓名年龄专业数学英语 C语言平均成绩\n");p=head;if(head==NULL)printf("The info error\n");if(head!=NULL)while(p!=NULL){p->ave=ave(p);printf("%s%8s%8d%13s%9d%10d%9d%10.2f",p->num,p->name,p->age,p->profession,p->maths,p->engl ish,p->C_program,p->ave);printf("\n");p=p->next;}}//输出链表//struct student* read(){struct student *head = NULL;struct student *p2 = head;struct student record;FILE *infile;infile = fopen("stu.bin", "rb");n=1;if(infile == NULL){printf("\nFile error.");}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile))//fread返回数据个数,结束和出错返回0;{p2->next = (struct student *)malloc(sizeof(struct student));memcpy(p2->next, &record, sizeof(record)); //复制结构体数据p2 = p2->next;n=n+1;}p2->next=NULL;fclose(infile);}return head;}//从文件中读取数据struct student * search_num(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->num)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此学号不存在\n");return(head);}//按学号查询数据//]struct student * search_name(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->name)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->name)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此姓名不存在\n");return(head);}//按姓名查询数据//struct student * change(struct student * head,char array[20]){struct student *p1;p1=head;if(head==NULL){printf("打开错误!");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)) {p1=p1->next;} //找到相应的学号if(strcmp(array,p1->num)==0){printf("请输入更改的学号:\n");printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);save(head);}else printf("所查学号不存在\n");return(head);}//修改数据//struct student * del(struct student * head,char array[20]) {struct student * p1,* p2;if(head==NULL){printf("\nlist null!\n");return head;}p1=head;while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//找到相应的学号、if((strcmp(array,p1->num)==0)){if(strcmp(array,head->num)==0)head=p1->next;elsep2->next=p1->next;}elseprintf("你查询的学号(%s)不存在!",p1->num);save(head);return(head);}void add(struct student * head){struct student *p1;printf("\n请输入添加学生的信息:\n");p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);FILE *outFile;outFile = fopen("stu.bin", "ab");if (outFile == NULL) {printf("\n打开错误.");}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"C_program")==0){while(p1!=NULL)if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n");scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n"); scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n"); printf("\t\t");printf("************4.英语成绩排序;****************\n"); printf("\t\t");printf("************5.C语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_pro gram")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}//选择功能void menu(){int i;printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************\n" );printf("是否已经录入信息?\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n");c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。
c语言大作业
①高次方数的尾数#include<stdio.h>#include <math.h>int main (){intx,n,i;intXn=1;printf("\t\t\t\t高次方数的尾数\n");printf("请按照提示进行操作\n\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");printf("一、请输入底数:\n");scanf("%d",&x);printf("二、请输入指数:\n");scanf("%d",&n);for(i=1;i<=n;i++){Xn=Xn*x;if(Xn>=1000)Xn=Xn%1000;}printf("三、结果:%d的%d次方的尾数为%d\n\n",x,n,Xn);printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");printf("感谢使用。
\n");printf("* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *\n\n");return 0;}②排序算法程序#include<stdio.h>#include<stdlib.h>#include<math.h>#include <time.h>#include<windows.h>void quick_sort(int *x, int low, int high) /*快速排序法*/{int i, j, t;if (low < high) /*要排序的元素起止下标,保证小的放在左边,大的放在右边。
大连理工大学c语言大作业
大连理工大学c语言大作业第一篇:大连理工大学c语言大作业程序设计大作业总结报告——<东北大馅饺子馆>的点餐/帐目信息管理系统选题意义;餐厅账目繁多,通过本系统可以实现餐厅管理的自主化。
更加适应这个信息化的社会。
通过对账目、订单的管理与排序。
也能使餐厅管理者更加直观地看出产品之间的优劣与受众。
使其能够更好的调动资源,达到餐厅的快速发展目的。
设计方案;1)任务分析该系统应包括两大界面—用户界面和管理界面。
用户界面包括用户点餐功能并将用户点餐信息存入账单文件中。
管理界面包括记录饺子的单价,库存等信息并将这些信息按一定规律排列供管理者参考,还要记录每天的收入与库存消耗。
2)系统组成框图系统组成如下图所示,点餐/帐目信息管理系统中任务调度模块是信息管理的指挥中心,所有的功能模块均通过该模块集中管理和调用。
数据文件是用于将改变的记录随时保存起来,I/O交互模块是指数据按键和控制按键的响应操作。
数据按键是窗口的输入输出。
系统平台I/O交互任务调度数据文件添加账目查询账目查询原料销量排序当天收入功能模块设计;本管理系统开发的过程中成功地完成很多函数的编写,而且全部通过程序调试。
下面针对与该系统相关的主要功能函数的编写思路和实现方法作总结。
1)数据描述与数据文件(1)数据描述;系统中共定义了三种结构体分别是struct list(账单信息)、struct dump(原材料信息)、struct system(管理信息)其中账单信息成员定义如下; struct list/*账单信息 */ { int num;/*编号*/ intmonth;/*月份*/ int date;/*日期*/ int table;/*桌号*/ int people;/*人数*/ int add;/*收款金额*/ };原材料信息;struct dump/*原材料信息*/ { int num;/*编号*/ char a[40];/*名称*/ int price;/*单价*/ int quantity;/*库存*/ };管理信息;struct system { struct dump data;/*点餐*/ int cash;/*收款*/ int sale;/*销量*/ int p;/*人数*/ };(2)数据文件;共定义四个数据文件;记录编号的文件count、记录原料的文件dumplings、记录账单的文件customer、数据处理文件system。
c语言大作业
gotoxy(15,30);
printf("为每一个学生公平定位\n");
gotoxy(16,30);
for(i=1;i<=20;i++) printf("%c",45);
gotoxy(23,41);//以上为主界面图案设计
fclose(fp2);
}
void save(int i,struct Student stu[N]){
if((fp2=fopen(filename,"ab"))==NULL){
printf("\n\t\t\t\t\a %c程序出现错误%c\n",16,17);
saven(),exit(0);
stu[n].average=(stu[n].score[0]+stu[n].score[1]+stu[n].score[2])/3;
gotoxy(6,24);
printf("< 学 生 成 绩 管 理 系 统 >");
gotoxy(7,24);
for(i=1;i<=31;i++) printf("%c",61);
printf("\n");
for(i=1;i<=3;i++) printf("\t\t\t\t %c%c%c%c %c%c%c%c\n",35,35,35,35,35,35,35,35,35);
fclose(fp3);
C语言大作业
#include<stdio.h>#include<string.h>#include<stdlib.h> //exit()的头文件#include<conio.h> //屏幕操作函数#define N 100 //控制学生记录的容量#define M 3 //控制课程数#define LEN 9void menu();void browse();typedef struct student //定义学生结构体{char num[11]; //把学号定义成字符数组类型,一来学号可能比较长,二来可直接用strcmp来比较,确保无雷同char name[20];int score[M];double ave;}STU;STU stu[N]; //定义一个外部学生结构体变量/*****以写的方式保存数据到文件的函数【原数据将被覆盖】*****/int save(int n) //保存函数,保存n个记录{FILE *fp;int i;if((fp=fopen("zhouhao.txt","wb"))==NULL)//以二进制写的方式打开,在此前的记录被覆盖{printf("无法打开文件!\n任意键退出程序... ...\n");getch(); //预防闪屏return 0;}for(i=0;i<n;i++)if(stu[i].ave!=0) //在后面的del()函数中通过将stu[i].ave=0来表示该记录被删除了if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)//开始写入文件printf("文件写入发生错误\n");fclose(fp);return 0; // 注意下这个地方,我只是随便赋的值,只是为了消除一个警告}/********【拷贝函数单纯的将一个文件拷贝到另一个文件中】*******/void copy(){char outfile[20],infile[10]; //保存源文件名和目标文件名FILE *sfp,*tfp; //定义指向源文件(sourcefile)和目标文件(targetfile)的指针STU *p=NULL; //定义临时指针,暂存读出的记录system("CLS"); //清屏;printf("请输入需要被复制的文件名(默认数据处理在zhouhao.txt中):\n");scanf("%s",infile); //输入源文件名if((sfp=fopen(infile,"rb"))==NULL)//以二进制方式打开源文件{printf("无法打开文件!\n任意键退出程序... ...\n");//显示不能打开文件的信息getch();return;}printf("另存为...,比如:hao.txt:\n"); //提示输入目标文件名scanf("%s",outfile); //输入目标文件名if((tfp=fopen(outfile,"wb"))==NULL)//以二进制写方式打开目标文件{printf("无法打开文件!\n\n");//显示不能打开文件的信息getch();return; //退出程序,同exit(0)}while(!feof(sfp)) //读文件直到文件尾fputc(fgetc(sfp),tfp); //从stp复制文件到tfpfclose(sfp); //关闭源文件fclose(tfp); //关闭目标文件printf("\n复制成功!!!\n"); //显示拷贝成功信息printf("\n输入任意键返回主菜单");getch();menu();}/***【加载记录或可以计算记录个数的函数】***/int load(){FILE *fp;int i;if((fp=fopen("zhouhao.txt","rb"))==NULL) //以二进制读的方式打开{printf("无法打开文件!\n任意键退出程序... ...\n"); //显示不能打开文件的信息getch(); //预防闪屏return 0;}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp); //将文件数据读入学生结构体fclose(fp);return(i-1); //返回目前总的记录个数,注意是i-1}/***【一个任务结束时的选择浏览还是返回的函数】***/void printf_back(){int w;printf("\n\t操作成功!^_^\n");printf("\t接着干什么?\n\t1).立刻浏览全部数据\t2).返回:[ ]\b\b");scanf("%d",&w);if(w==1)browse();elsemenu();}/***【显示数据结构项目函数】***/void printf_face(){printf("\n\t学号\t姓名\t\t 数学\t 英语C语言平均分\n"); //显示行头}/***【求平均分函数】因为后面在修改数据中要专门重算平均数***/void average(int i){int j,sum;for(sum=0,j=0;j<M;j++)sum+=stu[i].score[j];stu[i].ave=sum*1.0/M;}/*******【学号长度处理函数】********/void no_deal(int i){int j,l,a;l=strlen(stu[i].num);if(l<LEN){for(j=LEN-l,a=0;j<LEN;j++){stu[i].num[j]=stu[i].num[a++];}stu[i].num[i]='\0';for(a=0;a<LEN-l;a++)stu[i].num[a]='0';}if(l>LEN)stu[i].num[l]='\0';}/*******【学号输入函数】*******/int no_input(int i,int n) //i表示第i个学生信息,n表示比较到第n个学生{int j,k,w1;do{w1=0;printf("学号:\t\t 【%d位,低于%d位前面补0,长的截尾处理!】\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b\b",LEN,LEN);scanf("%s",stu[i].num);no_deal(i);for(j=0;stu[i].num[j]!='\0';j++) //学号输入函数,作了严格的规定if(stu[i].num[j]<'0' || stu[i].num[j]>'9') //判断学号是否为数字{puts("别开玩笑!只能输入0——9.好吧,再给你一次机会,别让我失望!\n");w1=1; //这个w1=1,表示学号中输入了不是数字的字符break;}if(w1!=1) //w1!=1,确保验证时学号已经是由0-9的数组成的for(k=0;k<n;k++) //比较到第n个学生if(k!=i && strcmp(stu[k].num,stu[i].num)==0)//判断学号是否有雷同{puts("已经存在啦!重来一次!\n");w1=1; //w1=1,表示学号存在雷同break;}}while(w1==1); //总之,w1=1代表学号输入又问题,要重新输入return 0;}/***【分数输入函数】***/int score_input(int i){int j;for(j=0;j<M;j++){printf("分数%d:",j+1);scanf("%d",&stu[i].score[j]);}return 0;}/***【输入一整条记录的函数】***/void input(int i){no_input(i,i); //调用输入学号的函数printf("姓名:");scanf("%s",stu[i].name); //输入姓名score_input(i); //输入分数average(i); //计算平均分}/***【显示一整条记录的函数】***/void printf_one(int i){int j;printf("%11s %-14s",stu[i].num,stu[i].name); //输出学号和姓名for(j=0;j<M;j++)printf("%9d",stu[i].score[j]); //输出分数printf(" %9.2f\n",stu[i].ave); //输出平均分}/*【显示----函数顶部】*/void topput___(){printf("\n 记录浏览");printf("\n--------------------------------------------------------------------------------\n");}/*【显示----函数底部】*/void puts___(){printf("\n\n--------------------------------------------------------------------------------\n");}/*【修改记录函数】*/int modify_data(int i,int n) //修改数据函数,修改第i个记录{int c,w1;do{puts("\n你想修改什么: =>\n\n1).学号\t2).姓名\t3).数学\t4).英语\t5).C语言\n6).重输所有分数\t7).重输所有记录\t8).取消并返回");printf("想好就输,快:[ ]\b\b");scanf("%d",&c);if(c>8 || c<1)puts("\n选择失误!严肃点,再来一次!");//判断选择是否错误,若是则重新选择getchar(); //当输入时字符时可以防止死循环,觉得这个很重要,老师也没提过}}while(c>8 || c<1);do{switch(c) //选择要修改的项目{case 1:no_input(i,n);break;case 2:printf("姓名:");scanf("%s",stu[i].name);break;//调用学号输入函数case 3:printf("数学:");scanf("%d",&stu[i].score[0]);break;case 4:printf("英语:");scanf("%d",&stu[i].score[1]);break;case 5:printf("C语言:");scanf("%d",&stu[i].score[2]);break;case 6:score_input(i);break;case 7:input(i);break;case 8:menu(); //break; 在最后,有没有无所谓}if(c>2 && c<7)average(i); //由于3,4,5,6项改变的同时也把平均分动了,必须修正一下puts("\n现在:\n");printf_face();printf_one(i); //显示修改后的数据printf("\n你确定你目前的决定?\n\n\t1).当然啦! \t2).不不不,重修改一下!\n\t3).算了还是走吧,别保存了![ ]\b\b");//是否确定scanf("%d",&w1); //选择2则表示这次修改错误要重新修改}while(w1==2);return w1; //返回控制值}/* * * * * * * * * * * * 输入模块* * * * * * * * * * * */void enter(){int i,n;system("CLS"); //引用外部清屏,clrscr()在VC++中不好用printf("输入你要记录的学生数吧:(1~%d)?\t['0'返回]:\n",N);scanf("%d",&n); //要输入的计入个数if(n==0)menu(); //输0 的时候返回else{printf("\n\t好的!开始输入...\n");for(i=0;i<n;i++)printf("\n请输入第%d个的记录.\n",i+1);input(i); //调用输入函数}if(i!=0)save(n); //调用保存函数printf_back();} //一个任务结束时让用户选择是浏览还是返回}/*******************************追加模块*************************************/ int add(){int i,n,m,k;FILE *fp;system("CLS");n=load(); //获得总记录的个数,并加载记录printf("你需要加入多少学生:(0 ~ %d)?:",N-n);scanf("%d",&m); //输入要追加记录的个数if(m==0)menu();else{k=m+n;for(i=n;i<k;i++){printf("\n请输入第%d个的记录.\n",i-n+1);input(i); //调用输入函数}if((fp=fopen("zhouhao.txt","ab"))==NULL)//以ab方式打开,追加保存{printf("文件打不开!\n"); //显示不能打开文件的信息getch();return 0;}for(i=n;i<k;i++)if(fwrite(&stu[i],sizeof(struct student),1,fp)!=1)printf("文件写入错误!\n");fclose(fp);printf_back(); //一个任务结束时让用户选择是浏览还是返回}return 0;}/***************************** 修改模块*************************/{struct student s;int i,n,k,w0=0,w1,w2=0;n=load(); //获得总记录的个数,并加载记录do{system("CLS");k=-1;/*****给用户看所有的记录以便用户确认要修改的记录*****/topput___();printf_face();for(i=0;i<n;i++)printf_one(i); //调用显示一个记录的函数puts___();/*****给用户看所有的记录以便用户确认要修改的记录*****/do{printf("\n\n输入你要修改记录的学号! 学号. :\t【'Ctrl-z' 退出】");if(scanf("%s",s.num)!=1) //输入要修改数据的学号menu();for(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.num,stu[i].num)==0){k=i; //找到要修改的记录s=stu[i]; //把stu[i](即把当次修改的学生记录)备份给s,以便用户反悔时恢复}if(k==-1)printf("\n\n不存在! 请重新输入~");}while(k==-1); //当K=-1表示没有找到printf_face(); //调用显示数据结构项目函数printf_one(k); //显示查找的记录w1=modify_data(k,n); //修改学生记录并且返回保存控制值w1,w1=1则表示用户已确认修改[w1只能是1或3(1代表确认修改,3代表不保存返回)] if(w1==1) //w1=1代表确认修改{printf("\n操作成功!\n\n决定修改别的吗?\n\n\t1).是的\t2).不!保存并返回\t[ ]\b\b");scanf("%d",&w0);w2=1; //来控制保存,使w2=1是标记已有过修改}else //此时w1=3,表示不保存返回{w0=0;if(w2==1) //w2=1表示已有过修改stu[k]=s; //反悔了,将修改前的值复原}if(w0!=1 && w2==1) //w0不等于1则表示正常返回,w2=1表示在此之前有修改过,这时就保存用户已确认修改的并返回save(n); //w2不等于1表示在此之前没有修改过,而又反悔这次修改,则不保存,保存时覆盖原先数据}while(w0==1);menu(); //返回主菜单}/*******************************删除模块*************************/void del(){struct student s;int i,k,n,c,w0=1;system("CLS");n=load(); //获得总记录的个数,并加载记录do{system("CLS");k=-1;/*给用户看全部记录以便确认要删除的记录*/topput___();printf_face(); //调用显示数据结构项目的函数for(i=0;i<n;i++)if(stu[i].ave!=0)printf_one(i); //显示所有数据puts___();/*给用户看全部记录以便确认要删除的记录*/do //输入要删除记录的学号,并寻找{printf("\n\n输入你要删除记录的学号! NO.:\t【'Ctrl-z' 退出】");if(scanf("%s",s.num)!=1)menu();for(i=0;i<n;i++)if(strcmp(s.num,stu[i].num)==0){k=i; //重赋k值表示找到寻找的数据s=stu[i];}if(k==-1) //k=-1表示没找到相同的printf("\n\n不存在! 请重新输入!");}while(k==-1);puts("\n");printf_face();printf_one(k); //显示要删除的记录printf("\n你确定?\n\t1).确定2).不,我要删除其他的3).不保存退出[ ]\b\b");//给用户一次反悔的机会scanf("%d",&c);if(c==1){stu[k].ave=0; //这是很重要的,通过stu[k].ave=0,通知保存的时候忽略掉,不进行保存printf("\n\n操作成功!\n\n要继续删数据吗?\n\t1).继续2).返回主菜单\t[ ]\b\b");scanf("%d",&w0);}if(c==3)w0=0; //w0=0不删除直接返回if(w0!=0 && c!=3) //只有当确认删除后返回才保存,不删除直接返回则不保存,且不保存在此之前删除过的记录save(n);}while(w0==1);menu();}/**************************************浏览(全部)模块*****************************************/void browse(){int i,n;n=load(); //获得总记录的个数,并加载记录system("CLS");topput___();printf_face(); //调用显示数据结构项目的函数for(i=0;i<n;i++) //循环输出所有学生的信息printf_one(i);puts___();printf("\n\t 这里一共有%d 个记录!\n",n);printf("\n\t 输入任意键返回主菜单... ...");getch();menu();}/*******************************查找模块************************************/ void search(){int i,n,k,w1=1,w2,w3,w4;struct student s;system("CLS");n=load(); //获得总记录的个数,并加载记录do{do{k=-1;printf("\n\n输入你要查找记录的主人公! 姓名:");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,stu[i].name)==0){k=i;printf_one(k); //考虑到同名的情况,可能输出不只一个,把所有的记录都查找一下}if(k==-1) //k=-1表示没找到相同的{printf("\n\n不存在! 请重新输入!");printf("\n\n要继续吗?\n\t1).继续\t 2).不,我要返回\t[ ]\b\b");scanf("%d",&w1);}}while(k==-1 && w1!=2); //k=-1表示没找到要查找的对象,w1!=2表示继续查找w4=w3=0; //初始化w4=w3=0if(k!=-1){printf("\n\n接着干什么?\n\t1).再次查找2).修改3).删除4).返回主菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 2:w3=modify_data(k,n);break;case 3:{printf("\n\n你确定了吗?\n\t1).确定2).不,还是返回吧! \t[ ]\b\b");scanf("%d",&w4);if(w4==1) //w4=1,表示确定删除stu[k].ave=0; //表示删除,当stu[k].ave=0,在save()中就不保存该数据,表示删除break;}}if(w3==1 || w4==1){save(n);printf("\n\n操作成功!");printf("\n\n接着干什么?\n\t1).再次查找2).返回[ ]\b\b");scanf("%d",&w2);}}}while(w2==1);menu();}/*******************************排序模块(按平均成绩)*********************************/void order(){int i,j,k,n;struct student s;system("CLS"); //清屏n=load(); //获得总记录的个数,并加载记录for(i=0;i<n-1;i++){k=i;for(j=i+1;j<n;j++)if(stu[j].ave>stu[k].ave) //选择法排序,按平均分降序k=j;s=stu[i];stu[i]=stu[k];stu[k]=s;}save(n);puts("\n\n");printf_back();}/**********************************主界面************************************/ void menu(){int n,w1;do{system("CLS");;puts("\n\t\t\t\t学生信息管理系统\n");puts("\t ------- 周浩\n");puts("\t ************************ 主菜单*********************\n\n");puts("\t\t\t 1.初始数据输入(会覆盖已有数据)");puts("\t\t\t 2.可选择个数的数据添加");puts("\t\t\t 3.数据部分修改");puts("\t\t\t 4.数据部分删除");puts("\t\t\t 5.数据查看与浏览");puts("\t\t\t 6.数据查找(按姓名)");puts("\t\t\t 7.数据排序(按平均分降序)");puts("\t\t\t 8.已有文件文件拷贝");puts("\t\t\t 0.退出系统");puts("\n\n\t ****************************************************\n");printf("\t输入你的选择(0~8):[ ]\b\b");scanf("%d",&n);if(n<0 || n>8){w1=1;printf("\t你的选择不再0 到8 之间,按任意键重新输入!");getch();}elsew1=0;}while(w1==1);switch(n){case 1:enter();break;case 2:add();break;case 3:modify();break;case 4:del();break;case 5:browse();break;case 6:search();break;case 7:order();break;case 8:copy();break;case 0:exit(0);break;}}/************************************主函数***************************************/void main(){menu();}。
C语言实训大作业
C语言实训大作业As a person, we must have independent thoughts and personality.
1.基于链表的“学生信息管理系统”
实验内容:编写并调试程序,实现学校各专业班级学生信息的管理。
定义学生信息的链表结点类型,包括:学号、姓名、班级、专业、3门成绩。
实验要求:
(1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用
相应的函数。
(2)定义函数CreateList:按学号由小到大,建立有序的链表。
逆序输入 n
个学生信息(调用n次input),学号大的先输入,建立带头结点的单
链表。
(3)定义函数Output:以指向某个学生结点的指针为参数,将学生信息格式
化输出。
(4)定义函数Save:将某个学生信息存入文件。
(5)定义函数Fetch:从文件中随机读取某个学生的信息。
(6)定义函数Search_num:查找指定学号的学生,返回指向该学生结点的指
针。
(7)定义函数InsertList:在函数中输入一个学生的信息,将该学生信息插
入到链表中的相应位置,并保持此链表按学号的有序性。
(8)定义函数Delete_num:从链表中删除指定学号的学生。
(9)定义函数Search_major _subject_score:查找某个专业的、某门课程
的成绩小于某个分数的学生,返回指向该学生结点的指针。
(10)定义函数Delete_ major _subject:从链表中删除某个专业的、某
门课程的成绩小于某个分数的学生。
c语言课程设计大作业
c语言课程设计大作业一、教学目标本课程的教学目标是使学生掌握C语言的基本语法、数据结构和算法,具备使用C语言进行程序设计的能力。
具体目标如下:1.知识目标:学生能够理解并掌握C语言的基本语法、数据结构和常用算法。
2.技能目标:学生能够运用C语言编写简单的程序,解决实际问题。
3.情感态度价值观目标:学生能够体验到编程的乐趣,培养对计算机科学的兴趣。
二、教学内容根据课程目标,本课程的教学内容主要包括C语言的基本语法、数据结构和算法。
具体安排如下:1.C语言的基本语法:包括变量、运算符、控制结构、函数等。
2.数据结构:包括数组、链表、栈、队列、树等。
3.算法:包括排序算法、查找算法、递归算法等。
三、教学方法为了达到课程目标,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。
具体方法如下:1.讲授法:用于讲解C语言的基本语法、数据结构和算法。
2.讨论法:用于引导学生探讨编程问题,培养解决问题的能力。
3.案例分析法:通过分析实际案例,使学生更好地理解C语言的应用。
4.实验法:让学生动手编写程序,提高编程能力。
四、教学资源为了支持教学内容和教学方法的实施,本课程将准备以下教学资源:1.教材:《C语言程序设计》。
2.参考书:提供相关的编程资料和算法教程。
3.多媒体资料:制作课件和教学视频,辅助学生学习。
4.实验设备:提供计算机实验室,让学生进行编程实践。
五、教学评估本课程的评估方式包括平时表现、作业和考试。
具体评估方式如下:1.平时表现:通过学生在课堂上的参与度、提问和讨论,评估其对C语言的理解和应用能力。
2.作业:布置编程作业,评估学生对C语言语法和算法的掌握程度。
3.考试:进行期中和期末考试,评估学生对C语言的整体掌握情况。
评估方式应客观、公正,能够全面反映学生的学习成果。
六、教学安排本课程的教学安排如下:1.教学进度:按照教材的章节顺序进行教学,确保学生掌握C语言的基本语法、数据结构和算法。
c语言大作业
#include""#include""#include""#include""intlook();/*声明查看函数*/intsave();/*声明保存函数*/intsearch_name();/*声明按姓名查看函数*/intsearch_number();/*声明按学号查看函数*/intorder();/*声明排序函数*/intdel();/*声明删除函数*/intopenl();/*声明打开函数*/ intwelcome();/*声明我的个人信息函数*/ inttype();/*声明输入函数*/intsee();/*声明打开并查看文件函数*/ structstudent/*定义学生信息的结构体类型*/{charnum[15];/*学号*/charname[20];/*姓名*/charsex[4];/*性别*/intchinese;/*语文成绩*/intenglish;/*英语成绩*/intmath;/*数学成绩*/intscience;/*科学成绩*/intphy;/*体育成绩*/floataver;/*平均成绩*/floatsum;/*总成绩*/}stu[100];intn;/*声明一个全局变量*/intmain()/*主函数即用户的操作界面*/ {system("color1E");/*设计文本颜色*/ intb,flag=0;/*声明局部变量*/while(1)/*循环输出以下信息*/{printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");printf("\n\t\t\t\t赵仓龙、刘铄制作\n");printf("\t\t\t-------------------------------\n");printf("\t\t\t1.键入学生的信息\n\n");/*键入学生的信息*/printf("\t\t\t2.查看录入的学生信息\n\n");/*查看录入的学生信息*/printf("\t\t\t3.按姓名查看学生的信息\n\n");/*按姓名查看学生的信息*/ printf("\t\t\t4.按学号查看学生的信息\n\n");/*按学号查看学生的信息*/ printf("\t\t\t5.按平均成绩排序\n\n");/*排序*/printf("\t\t\t6.删除学生信息\n\n");/*删除学生信息*/printf("\t\t\t7.保存学生信息\n\n");/*保存*/printf("\t\t\t8.打开文件\n\n");/*打开文件*/printf("\t\t\t9.我的个人信息\n\n");/*我的个人信息*/printf("\t\t\t0.退出\n\n");/*退出*/printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case1:type();break;/*调用键入学生信息函数*/case2:look();break;/*调用查看函数*/case3:search_name();break;/*调用姓名查看函数*/case4:search_number();break;/*调用学号查看函数*/case5:order();break;/*调用排序函数*/case6:del();break;/*调用删除函数*/case7:save();break;/*调用保存函数*/case8:see();break;/*调用打开文件函数*/case9:welcome();break;/*调用我的个人信息函数*/case0:flag=1;break;/*退出SWITCH语句*/default:printf("错误!");}if(flag)break;/*如果选择0就退出循环*/}}intwelcome()/*我的个人信息函数*/{system("CLS");printf("\n\n\t\t------------个人信息------------");/*在屏幕上输出一下信息*/printf("\n\n\n\n\t\t姓名:");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\n\n\t\t姓名:");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\t\t按任意键返回欢迎屏幕!");getch();/*按任意键返回主函数*/}inttype()/*定义键入学生信息函数*/ {system("CLS");inti;/*定义局部变量*/printf("\t\t输出你想输入的学生信息个数:");scanf("%d",&n);for(i=0;i<n;i++)/*输入每个学生的信息*/{printf("\n\t\t\t----------------\n" );printf("\t\t\t学号:");scanf("%s",&stu[i].num);/*输入学号*/printf("\t\t\t姓名:");scanf("%s",&stu[i].name);/*输入姓名*/printf("\t\t\t性别:");scanf("%S",&stu[i].sex);/*输入性别*/printf("\t\t\t语文:");scanf("%d",&stu[i].chinese);/*输入英语成绩*/printf("\t\t\t数学:");scanf("%d",&stu[i].math);/*输入数学成绩*/printf("\t\t\t英语:");scanf("%d",&stu[i].english);/*输入语文成绩*/printf("\t\t\t科学:");scanf("%d",&stu[i].science);printf("\t\t\t体育:");scanf("%d",&stu[i].phy);}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}intsave()/*建立保存文件函数*/{system("CLS");FILE*fp;/*定义文件型指针*/inti;if((fp=fopen("C语言大作业测试数据.txt","wb"))==NULL)/*打开输出文件*/ {printf("不能打开文件!\n");return0;/*终止程序*/}for(i=0;i<n;i++)/*向student文件中写入信息*/if(fwrite(&stu[i],sizeof(structstud ent),1,fp)!=1)printf("文件写入错误\n");fclose(fp);/*关闭文件*/printf("\n\n\n\n\t\t\t学生信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}intlook()/*定义查看函数*/{system("CLS");inti;um,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}intsearch_name()/*按姓名查看函数*/ {system("CLS");inti;charname[20];/*声明字符数组*/printf("\t\t\t请输入学生姓名:\n");scanf("%s",name);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)/*将输入的姓名与结构体中的姓名进行比较*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");}getch();}intsearch_number()/*定义按学号查看函数*/{system("CLS");inti;charnumber[15];/*声明字符数组*/printf("\t\t\t请输入学号:\n");scanf("%s",number);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].num,number)==0)/*将输入的学号与结构体中的学号进行比较*/printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");getch();}intorder()/*定义排序函数*/{system("CLS");inti,j;chara;structstudenttemp;/*声明结构体变量*/printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)/*对数据进行排序*/{for(j=i+1;j<n;j++)if(stu[i].sum<stu[j].sum){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}getch();printf("是否保存(yorn)");getchar();scanf("%c",&a);if(a=='y')/*是否保存排序后的文件*/save();elseprintf("退出");getch();}intdel()/*定义删除学生信息函数*/{inti;chara;charname[20];system("CLS");printf("\t\t\t输入学生名字:\n");scanf("%s",name);system("CLS");printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0){printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].math,stu[i].english,stu[i].science,stu[ i].phy);getch();printf("真的删除(yorn)");getchar();scanf("%c",&a);if(a=='y')/*是否删除该信息*/{for(;i<n;i++)stu[i]=stu[i+1];n=n-1;printf("你已经删除信息");}elseprintf("退出");getch();}save();}intopenl()/*定义打开文件函数*/{system("CLS");inti;FILE*fp;if((fp=fopen("C语言大作业测试数据.txt","rb"))==NULL){printf("Cannotopenfile.\n");exit(0);}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(structstudent) ,1,fp);fclose(fp);return(i-1);}intsee()/*打开并查看文件*/{system("CLS");inti;n=openl();printf("文件打开成功!\n");printf("按任意键查看!\n");printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)/*输出所有的学生信息*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");。
c语言大作业
C语言大作业实验任务:设计一个电话薄。
源程序:#include<stdio.h>#include<string.h>#include<stdlib.h>struct person{char name[8];chartel[15];charaddr[50];};char filename[20]="txl.txt";FILE *fp;void output();/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/ void search();/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/ void append();/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/ void modify();/*修改模块modify( ):在通讯录中修改某人通讯信息的子函数*/ void del();/*删除模块delete( ):在通讯录中删除某人通讯信息的子函数*/ void main( ){int m;fp=fopen(filename,"w");fprintf(fp,"%-10s%-20s%-50s\n","姓名","电话号码","住址");fclose(fp);while(1){printf("\n\t\t*********欢迎使用通讯录信息管理系统*********\n\n"); printf("请输入功能选择:(0--5):");printf("\n\t\t添加记录,请按1");printf("\n\t\t查找记录,请按2");printf("\n\t\t修改记录,请按3");printf("\n\t\t删除记录,请按4");printf("\n\t\t输出记录,请按5");printf("\n\t\t退出,请按0\n");printf("\n\t\t********************************************\n\n");scanf("%d",&m);if(m>=0&&m<=5){switch(m){case 1: append();break;case 2: search();break;case 3: modify();break;case 4: del();break;case 5: output();break;case 0: exit(0);}printf("\n\n操作完毕,请再次选择!");}elseprintf("\n\n选择错误,请再次选择!");}}/*输出模块output( ):输出通讯录中联系人通讯信息的子函数*/ void output(){struct person one;if((fp=fopen(filename,"r"))==NULL){printf("\n不能打开通讯录!");exit(0);}printf("\n\n%20s\n","通讯录");while(!feof(fp)){fscanf(fp,"%s%s%s\n",,one.tel,one.addr);printf("%-10s%-20s%-50s",,one.tel,one.addr);}fclose(fp);}/*添加模块append( ):向通讯录中添加某人通讯信息的子函数*/ void append(){struct person one;if((fp=fopen(filename,"a"))==NULL){printf("\n不能打开通讯录!");exit(0);}printf("\n请输入添加的姓名、电话号码及住址\n");scanf("%s%s%s",,one.tel,one.addr);fprintf(fp,"%-10s%-20s%-50s\n",,one.tel,one.addr); fclose(fp);}/*查找模块search( ):在通讯录中查找某人通讯信息的子函数*/ void search(){int k=0;charnamekey[8];struct person one;printf("\n请输入姓名:");scanf("%s",namekey);if((fp=fopen(filename,"rb"))==NULL){printf("\n不能打开通讯录!");exit(0);}while(!feof(fp)){fscanf(fp,"%s%s%s\n",,one.tel,one.addr);if(!strcmp(namekey,)){printf("\n\n已查到,记录为:");printf("\n%-10s%-18s%-50s",,one.tel,one.addr);k=1;}}if(!k)printf("\n\n对不起,通讯簿中没有此人的记录。
C大作业
#include<stdio.h> /*引用库函数*/#include<stdlib.h>#include<ctype.h>#include<string.h>typedef struct /*定义结构体数组*/{char num[10]; /*学号*/char name[20]; /*姓名*/int jiguan; /*籍贯*/}Student;Student stu[80]; /*结构体数组变量*/int menu_select() /*菜单函数*/{char 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 | 0. 退出|\n");printf("\t\t*****************************************\n"); printf("\t\t\t请选择操作(0-6):");c=getchar(); /*读入选择*/}while(c<'0'||c>'6');return(c-'0'); /*返回选择*/}int Input(Student stud[],int n) /*输入若干条记录*/{int i=0;char sign,x[10]; /*x[10]为清除多余的数据所用*/while(sign!='n'&&sign!='N') /*判断*/{ printf("\t\t\t学号:"); /*交互输入*/scanf("\t\t\t%s",stud[n+i].num);printf("\t\t\t学生姓名:");scanf("\t\t\t%s",stud[n+i].name);printf("\t\t\t学生籍贯:");scanf("\t\t\t%d",&stud[n+i].jiguan);gets(x); /*清除多余的输入*/printf("\t\t\t需要输入更多信息?(Y/N)");scanf("\t\t\t%c",&sign); /*输入判断*/i++;}return(n+i);}void Display(Student stud[],int n) /*显示所有记录*/{int i;printf("\t\t\t-----------------------------------\n");printf("\t\t\t学号\t\t姓名\t\t籍贯\n");printf("\t\t\t-----------------------------------\n");for(i=1;i<n+1;i++) /*循环输入*/{printf("\t\t\t%-16s%-15s%d\n",stud[i-1].num,stud[i-1].name,stud[i-1].jiguan); if(i>1&&i%10==0) /*每十个暂停*/{printf("\t\t\t-----------------------------------\n");printf("\t\t\t");system("pause");printf("\t\t\t-----------------------------------\n");}}printf("\t\t\t");system("pause");}void Sort_by_num(Student stud[],int n) /*按学号排序*/{ int i,j,*p,*q,s;char t[10];for(i=0;i<n-1;i++) /*冒泡法排序*/for(j=0;j<n-1-i;j++)if(strcmp(stud[j].num,stud[j+1].num)>0){strcpy(t,stud[j+1].num);strcpy(stud[j+1].num,stud[j].num);strcpy(stud[j].num,t);strcpy(t,stud[j+1].name);strcpy(stud[j+1].name,stud[j].name);strcpy(stud[j].name,t);p=&stud[j+1].jiguan;q=&stud[j].jiguan;s=*p;*p=*q;*q=s;}}int Insert_a_record(Student stud[],int n) /*插入一条记录*/{char x[10]; /*清除多余输入所用*/printf("\t\t\t学号:"); /*交互式输入*/scanf("\t\t\t%s",stud[n].num);printf("\t\t\t学生姓名:");scanf("\t\t\t%s",stud[n].name);printf("\t\t\t学生籍贯:");scanf("\t\t\t%d",&stud[n].jiguan);gets(x);n++;Sort_by_num(stud,n); /*调用排序函数*/printf("\t\t\t添加成绩信息!\n"); /*返回成功信息*/return(n);}int Delete_a_record(Student stud[],int n) /*按姓名查找,删除一条记录*/ { char s[20];int i=0,j;printf("\t\t\t请输入所要删除数据的姓名:"); /*交互式问寻*/scanf("%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){ printf("\t\t\t未找到数据!\n"); /*返回失败信息*/return(n);}for(j=i;j<n-1;j++) /*删除操作*/{strcpy(stud[j].num,stud[j+1].num);strcpy(stud[j].name,stud[j+1].name);stud[j].jiguan=stud[j+1].jiguan;}printf("\t\t\t删除结束!\n"); /*返回成功信息*/return(n-1);}void Query_a_record(Student stud[],int n) /*查找并显示一个记录*/{ char s[20];int i=0;printf("\t\t\t请输入您所查找的学生姓名:"); /*交互式输入*/scanf("\t\t\t%s",s);while(strcmp(stud[i].name,s)!=0&&i<n) i++; /*查找判断*/if(i==n){ printf("\t\t\t未找到!\n"); /*输入失败信息*/return;}printf("\t\t\t学号是:%s\n",stud[i].num); /*输出该学生信息*/ printf("\t\t\t籍贯是:%d\n",stud[i].jiguan);}void main() /*主函数*/{int n=0;for(;;){switch(menu_select()) /*选择判断*/{case 1:printf("\t\t\t输入学生信息\n"); /*输入若干条记录*/n=Input(stu,n);break;case 2:printf("\t\t\t显示所有学生信息\n"); /*显示所有记录*/ Display(stu,n);break;case 3:printf("\t\t\t排序\n");Sort_by_num(stu,n); /*按学号排序*/printf("\t\t\t排序结束!\n");printf("\t\t\t");system("pause");break;case 4:printf("\t\t\t增添学生信息\n");n=Insert_a_record(stu,n); /*插入一条记录*/printf("\t\t\t");system("pause");break;case 5:printf("\t\t\t删除一个学生信息\n");n=Delete_a_record(stu,n); /*按姓名查找,删除一条记录*/ printf("\t\t\t");system("pause");break;case 6:printf("\t\t\t查询\n");Query_a_record(stu,n); /*查找并显示一个记录*/printf("\t\t\t");system("pause");break;case 0:printf("\t\t\t程序结束\n"); /*结束程序*/ printf("\t\t\t");system("pause");exit(0);}}}。
C语言期末大作业
伊犁师范学院计算机科学系实验训项目报告一、小组成员及分工:姓名:张雁学号:二、指导老师:王慧玲三、说明程序编制要点,以及自己在项目制作中的难点及解决办法:编写的要点:编写N个函数分别用来求平均分;总分按降许序排列;按姓名查找学生的成绩;找出各科最高分的学生姓名,学号等。
编写主函数提供不同的选择途径。
难点:函数之间的调用,姓名的比较和交换。
解决办法:通过参数的传递;用字符串处理函数。
四、说明项目中所涉及的知识点及难点:知识点:基础知识,结构体,选择结构程序设计,循环结构程序设计,数组,字符数组,常用的字符串处理函数,函数的调用。
难点:函数的调用,循环程序设计。
五、附录源程序:注:必须有一定的注释,说明函数功能以及主要语句所起的作用#include ""#include ""#define m 5void search(); /*声明按姓名查找学生的信息*/void ave(); /*声明turn out average*/void paixu(); /* 声明score pai mingci*/void maxandmin(); /*声明maxandmin score student's number,name and every course score*/struct student /*声明define a struct*/{int num; /*student’s number */char name[10];int math,english,chinese; /*three course score*/ int no; /* student mingci*/float sum;float ave;}stu[m];main(){int i;int q=0,p;for(i=0;i<m;i++){printf("num:");scanf("%d",&stu[i].num);printf("name:");scanf("%s",stu[i].name);printf("input score:");scanf("%d,%d,%d",&stu[i].math,&stu[i].chinese,&stu[i].engli sh);printf("\n");}system("cls");while(q==0){printf("\n");printf("1 find average score\n");printf("2 find sum score paiming\n");printf("3 find student name output about student message\n");printf("4 find the max score and min score student's message\n");printf("other number exit!\n");printf("\n");printf("please input number:\n");scanf("%d",&p);switch(p) /*用开关语句SWITCH进行选择*/{case 1:ave(stu); break; /*选择1,求平均分*/case 2:paixu(stu); break; /*选择2,求总分按降序排列*/ case 3:search(stu,m); break; /*选择3,求按姓名查找学生的信息*/case 4: maxandmin(stu,m); break; /*选择4,求各科的最高分和最defult :q=1;exit(0);}}getch();}void ave(struct student stu[]) /*求学生的平均分*/{int i;printf("1 find aveage score:\n");printf("num\tname\tsum\tave\n");for(i=0;i<m;i++) /*通过循环语句求学生的总分和平均分*/{ stu[i].sum=0;stu[i].sum+=stu[i].math;stu[i].sum+=stu[i].chinese;stu[i].sum+=stu[i].english;stu[i].ave=stu[i].sum/3;printf("%d\t%s\t%.0f\t%.1f\n",stu[i].num,stu[i].name,stu[ i].sum,stu[i].ave);}}void paixu(struct student stu[]) /*sum score line*/ {int i,j,a; float t; char b[10];printf("2 find sum score paiming\n");for(i=0;i<m;i++)stu[i].no=i+1; /*gei mingci fu chuzhi*/ for(i=0;i<m-1;i++)for(j=i+1;j<m;j++)if(stu[i].sum<stu[j].sum){a=stu[i].num;stu[i].num=stu[j].num;stu[j].num=a;t=stu[i].sum;stu[i].sum=stu[j].sum;stu[j].sum=t;strcpy(b,stu[i].name);strcpy(stu[i].name,stu[j].name);strcpy(stu[j].name,b); /*运用字符串复制函数交换学生的姓名*/}printf("num\tname\tsum\tno\n");for(j=0;j<m;j++){ printf("%3d\t%s\t",stu[j].num,stu[j].name);printf("%.0f",stu[j].sum);printf("\t%d\n",stu[j].no);}}void search(struct student stu[]) /*search student's name*/{int i;char n[10];printf("3 find student name output about student message\n"); printf("input name:\n");scanf("%s",n);for(i=0;i<m;i++) /*use “for circulation” search student’s name*/if(strcmp(n,stu[i].name)==0) /*用字符串比较函数进行比较*/{printf("num\tname\tsum\tave\tmath\tchinese\tenglish\n"); printf("%d\t%s\t%.0f\t%.1f",stu[i].num,stu[i].name,stu[i].s um,stu[i].ave);printf("\t%d\t%d\t%d",stu[i].math,stu[i].chinese,stu[i].eng lish);break; /*分别输出要查找的学生的学号,姓名,总分,平均分,和各科的成绩*/}}Void maxandmin(struct student stu[]) /*输出各科学生的最高分和最低分*/{int i,a=0,b=0,c=0,d=0,e=0,f=0;int maxm,maxc,maxe,minm,minc,mine;printf("4 find the max score and min score student'smessage\n");for(i=0;i<m;i++){if(stu[a].math<stu[i].math) a=i;maxm=stu[a].math;if(stu[b].math>stu[i].math) b=i;minm=stu[b].math;if(stu[c].chinese<stu[i].chinese)c=i;maxc=stu[c].chinese;if(stu[d].chinese>stu[i].chinese)d=i;minc=stu[d].chinese;if(stu[e].english<stu[i].english)e=i;maxe=stu[e].english;if(stu[f].english>stu[i].english)f=i;mine=stu[f].english;}printf("the maxscore\n\nnum\tname\tmath\tchinese\tenglish:\n");printf("%d\t%s\t%d\n",stu[a].num,stu[a].name,maxm);printf("%d\t%s\t\t%d\n",stu[c].num,stu[c].name,maxc);printf("%d\t%s\t\t\t%d",stu[e].num,stu[e].name,maxe);printf("\n");printf("the min score\n\nnum\tname\tmath\tchinese\tenglish:\n");printf("%d\t%s\t%d\n",stu[b].num,stu[b].name,minm);printf("%d\t%s\t\t%d\n",stu[d].num,stu[d].name,minc);printf("%d\t%s\t\t\t%d",stu[f].num,stu[f].name,mine);}《一》输入学生信息(学号,姓名,各科的成绩)《二》编译成功进入主菜单:《三》选择1对学生的成绩求总分,平均分:《四》选择2对学生信息排序《五》选择3输入要查找的学生的姓名(这里找的是zj)《六》选择4求各科成绩的最高分和最低分的学生的信息:六、感想现在,我终于把大作业做好了,虽然做这次作业我花了很多时间但是我十分的高兴,因为收获很多,从开始思路的模糊混乱,到最终的清晰整齐。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C语言大作业全 Document number:PBGCG-0857-BTDO-0089-PTT1998#include ""#include ""#include ""#include ""#include ""#define LEN sizeof(struct student)#define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}};}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile));}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"C_program")==0){while(p1!=NULL){if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);}else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n");scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n");printf("\t\t");printf("************4.英语成绩排序;****************\n");printf("\t\t");printf("************语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_ program")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************ \n");printf("是否已经录入信息\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n"); c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。