值得纪念的一天——偶会开发软件了,特来此晒作业,有错请指正
感觉这小东西很实用就与大家一起分享1.
设计二位整数的加、减、乘算式各一题(减法算式应保证被减数大于减数)。让学生回答,由计算机给出正确与否的判断,并最后给出总得分。得分计算方法:算对加、减法各得30分,算对乘法得40分,算错得0分。然后由计算机输出询问信息,学生选择回答,以决定是否继续一次新的测验。
这个是成品
1.5.rar
(33.76 KB)
程序代码:
#include<stdio.h> #include<stdlib.h> #include <time.h> int main() { int a,b,c,d,e,f,i,k,m,n,sum=0; char x; int chars; srand( time(0) ); for(i=0;i<100;i++) { a=rand()%100; b=rand()%100; c=rand()%100; d=rand()%100; while(c<d) { c=rand()%100; d=rand()%100; } e=rand()%100; f=rand()%100; printf("%d+%d\n%d-%d\n%d*%d\n",a,b,c,d,e,f); scanf("%d",&k); scanf("%d",&m); scanf("%d",&n); if(k==a+b) { sum=sum+30; printf("第一题对!!\n"); } else printf("第一题错\n"); if(m==c-d) { sum=sum+30; printf("第二题对!!\n"); } else printf("第二题错\n"); if(n==e*f) { sum=sum+40; printf("第三题对!!\n"); } else printf("第三题错\n"); printf("%d分\n",sum); printf("按y继续?\n"); printf("_________________________________________________\n"); while ((chars=getchar()) != '\n' && chars != EOF); x=getchar(); if(x=='y') continue; else break; } system("pause"); return 0; }2.学生管理系统
已知有20个学生记录(包括学号、姓名、班级、性别、出生年月、成绩)的文件student.dat,所有学生以学号从小到大排序(该文件自行建立,注意学号不要连续以备插入操作)。
要 求: 编程序实现查询、排序、插入、删除等功能。具体要求如下:
(1)要求显示如下界面
****************************************
1--------------查询
2--------------排序
3--------------插入
4--------------删除
5--------------退出
****************************************
通过选择1-5来确定要做哪一个操作。
(2)若选1,则出现如下界面
****************************************
1.1----------按学号查询
1.2----------按姓名查询
1.3----------按成绩查询
1.4----------返回
****************************************
通过输入1-4来对应选择1.1-1.4来确定要做哪一个操作,其中:按学号查询用顺序法实现;按姓名查询用顺序法实现;按成绩查询实现查询成绩小于m分的学生;找到该生将学生记录所有信息输出到屏幕,若查无此人,输出相关信息。如果选择1.4,则返回到第(1)步的界面。
(3)若选2,则按成绩从大到小排序,姓名,学号顺序也随之调整,输出到屏幕上。
(4)若选3,输入一名新学生的记录数据,按学号顺序插入,并把结果保存到文件student.dat中。
(5)若选4,输入一名学生的学号,删除该学生的记录,并把结果保存到文件student.dat中。
(6)若选5,则退出程序。
(7)以上各个功能均编写成子函数(退出程序除外),由主函数调用实现。
成品:
2.rar
(35.96 KB)
程序代码:
#include<stdio.h> #include<stdlib.h> #include<string.h> struct Student { int num; char name[20]; int classes; char sex; int brith; int grade; struct Student *next; }; struct Student st[30],st1,st2[30],*p; int b,c,ch,d,e,i,j,k,y=0,z=0; char a[20],x; FILE *fp; int main () { int search1(int o); int search2(int o); int search3(int o); int insert(int m,int n); int rank(); int delete1(int o); if((fp=fopen("student2.dat","rb"))==NULL) { printf("不能打开文件\n"); return 0; } for(e=0;c=4;e++) { printf(" ******************************\n"); printf(" 1----------查询\n"); printf(" 2----------排序\n"); printf(" 3----------插入\n"); printf(" 4----------删除\n"); printf(" 5----------退出\n"); printf(" ******************************\n"); p=st; for(i=0;i<30;i++) { fread(&st[i],sizeof(struct Student),1,fp); z++; if(st[i].next==NULL)break; } for(i=0;i<z-1;i++) st[i].next=&st[i+1]; scanf("%d",&b); if(b!=1) break; else if(b==1) { printf(" ******************************\n"); printf(" 1.1----------按学号查\n"); printf(" 1.2----------按姓名查\n"); printf(" 1.3----------按成绩查\n"); printf(" 1.4----------返回 \n"); printf(" ******************************\n"); scanf("%d",&c); if(c==1) { search1(c); break; } else if(c==2) { search2(c); break; } else if(c==3) { search3(c); break; } else if(c!=4) { printf("输入错误\n\t\t谢谢使用\n"); return 0; } } } if(b==2) rank(b); else if(b==3) { printf("需要输入几组数据\n"); scanf("%d",&d); insert(b,d); } else if(b==4) delete1(b); else if(b==5) { printf("\t\t谢谢使用\n"); return 0; } else if(b!=1) printf("输入错误!!\n"); fclose(fp); printf("\t\t谢谢使用\n"); system("pause"); return 0; } int search1(int o) { printf("输入学号\n"); scanf("%d",&d); for(i=0;i<z;i++) { if(d>=p->num) { y++; if(y==1) printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n"); printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade); y++; } p=p->next; } if(y==0) printf("查无此学号\n"); return 0; } int search2(int o) { printf("输入姓名\n"); scanf("%s",a); for(i=0;i<z;i++) { fread(&st[i],sizeof(struct Student),1,fp); if(strcmp(st[i].name,a)==0) { y++; if(y==1) printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n"); printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade); } p=p->next; } if(y==0) printf("查无此人\n"); return 0; } int search3(int o) { printf("输入成绩\n"); scanf("%d",&d); for(i=0;i<z;i++) { fread(&st[i],sizeof(struct Student),1,fp); if(d>=st[i].grade&&st[i].grade) { y++; if(y==1) printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n"); printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade); } p=p->next; } if(y==0) printf("查无成绩\n"); return 0; } int insert(int m,int n)//可任意插入至多10组数据 { for(i=0;i<z-1+d;i++) { st[i].next=&st[i+1]; st2[i].next=&st2[i+1]; } st[z-1+d].next=NULL; st2[z-1+d].next=NULL; printf("请输入数据(以一个空格区分)\n"); printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n"); for(i=z;i<z+d;i++) { scanf("%d %s %d %c %d %d",&st[i].num,st[i].name,&st[i].classes,&st[i].sex,&st[i].brith,&st[i].grade); fwrite(&st[i],sizeof(struct Student),1,fp); } for(i=0;i<z;i++) { for(j=0;j<d;j++) if(st[i].num==st[z+j].num) { y++; printf("\t\t学号有重复\n"); return 0; } } if(y==0) { fp=fopen("student2.dat","wb+"); for(i=0;i<z+d;i++) { fwrite(&st[i],sizeof(struct Student),1,fp); p=p->next; } printf("插入成功!\n"); } return 0; } int rank() { printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n"); for(i=0;i<z;i++,p=p->next) st2[i]=*p; for(j=0;j<z;j++) for(i=0;i<z-j;i++) if(st2[i].grade<st2[i+1].grade) {st1=st2[i];st2[i]=st2[i+1];st2[i+1]=st1;} for(i=0;i<z;i++) printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",st2[i].num,st2[i].name,st2[i].classes,st2[i].sex,st2[i].brith,st2[i].grade); return 0; } int delete1(int o)//可任意删除n组数据 { printf("输入学号\n"); scanf("%d",&d); for(i=0;i<z;i++) { if(p->num==d) { y++; k=i; printf("学号\t姓名\t班级\t性别\t出生年月\t分数\n"); printf("%d\t%s\t%d\t%c\t%d\t\t%d\n",p->num,p->name,p->classes,p->sex,p->brith,p->grade); } p=p->next; } if(y!=0) { printf("确认要删除该生信息?Y/N\n"); while ((ch=getchar()) != '\n' && ch != EOF); scanf("%c",&x); if(x=='Y') { if(st[k].next!=NULL&&k!=0) { p=st; st[k-1].next=&st[k+1]; } else if(k==0) p=&st[1]; else { p=st; st[k-1].next=NULL; } fp=fopen("student2.dat","wb+"); for(i=0;;i++) { fwrite(p,sizeof(struct Student),1,fp); if(k!=0) { if(p->next==NULL) break; } else if(p->next==NULL) break; p=p->next; } printf("已删除\n"); } else if(x!='Y'||x!='N') { printf("\n输入错误\n"); return 0; } } else { printf("查无此学号\n"); return 0; } return 0; }