问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

C语言设计问题!

发布网友 发布时间:2023-11-20 16:25

我来回答

1个回答

热心网友 时间:2024-10-03 22:04

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include <conio.h>
#define ESC 0x1b; //ESC的ASCII码是0x1b。
#define N 100
char choice='y';
int count=0;
int i=0;
struct student
{
int ID;
char name[20];
double score1;
double score2;
double score3;
double average;
}stud[N+1],s[N];
void printstar()
{
for(i=0;i<80;i++)
{
printf("*");
}
printf("\n");
}
void time()
{
for(i=0;i<3.3e08;i++);
}

void login()//用户登陆
{
char name[15],pwd[15],c;
printf("\n\n\t\t\t\t用户登陆\n\n");
printf("\t\t用户名:");
gets(name);
printf("\n\t\t密码:");
c = getch();
while(c != '\r')
{
if(i >= 0)
{
if (c == '\b')
{
printf("\b \b");
i = i - 1;
}
else
{
printf("*");
pwd[i] = c;
}
}
c = getch();
if(c != '\b')
i = i + 1;
}
pwd[i] = '\0';
if((strcmp(name,"little boy")==0)&&(strcmp(pwd,"123456")==0))
printf("\n\n登陆成功!\n");
else
printf("\n\n登陆失败!\n");
}

void input() //录入数据
{
FILE * fp;
if((fp=fopen("stu.dat","rb"))==NULL)
{
fp=fopen("stu.dat","w");
}
else
{
fp=fopen("stu.dat","ab");
}
system("cls");
do
{
printf("\n\t\t\t\t学生信息录入\n");
printstar();
printf("\n学号:");
scanf("%d",&stud[i].ID);
printf("\n姓名:");
scanf("%s",stud[i].name);
printf("\n三门课成绩分别为:");
scanf("%lf %lf %lf",&stud[i].score1,&stud[i].score2,&stud[i].score3);
stud[i].average=(stud[i].score1+stud[i].score2+stud[i].score3)/3;
printf("\n平均成绩为:%3.1lf\n",stud[i].average);
fwrite(&stud[i],sizeof(struct student),1,fp);
count++;
fflush(stdin);
printf("是否继续录入(y/n)?");
scanf("%c",&choice);
system("cls");
if(choice!='y'&&choice!='n')
{
printstar();
printf("\n\t您输入了非法字符,请重新输入!\n\n");
printstar();
time();
}
printf("\n");
}while(choice=='y');
fclose(fp);
}

void browse() //浏览
{
system("cls");
FILE * fp;
fp=fopen("stu.dat","rb");
printf("\n\t\t\t\t学生信息浏览\n\n");
printstar();
for(i=0;i<count;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
}
}

void byID() //按学号查询
{
int ch_ID;
FILE * fp;
fp=fopen("stu.dat","rb");
system("cls");
printf("\n\n\t\t输入学号:");
scanf("%d",&ch_ID);
if(ch_ID==stud[i].ID)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
}
fclose(fp);
}

void byname() //按姓名查询。
{
char ch_name[20];
FILE * fp;
fp=fopen("stu.dat","rb");
system("cls");
printf("输入姓名:");
scanf("%d",ch_name);
if(strcmp(ch_name,stud[i].name)==0)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
}
fclose(fp);
}

void query() //查询函数
{
int choose;
system("cls");
do
{
//system("cls");
printf("\n\t\t\t\t学生信息查询\n\n");
printstar();
printf("________________________________________________________________________________\n");
printf("\t\t\t\t1.〖按学号查询〗\n\n");
printf("\t\t\t\t2.〖按姓名查询〗\n\n");
printf("\t\t\t\t3. 〖返回〗\n");
printf("________________________________________________________________________________\n");
printf("\t\t请选择:");
scanf("%d",&choose);
switch(choose)
{
case 1:
byID();
break;
case 2:
byname();
break;
case 3:
return;
}
if(choose!=1 && choose!=2 && choose!=3)
printf("选择错误!");
}while(choose!=1 && choose!=2);
}

void update() //修改学生信息
{
FILE * fp;
fp=fopen("stu.dat","rb+");
system("cls");
printf("\n\t\t\t\t学生信息修改\n\n");
printstar();
printf("\t\n输入要修改信息的学生学号:");
scanf("%d",&stud[i].ID);
fread(&stud[i],sizeof(struct student),1,fp);
printf("\n修改前的数据:\n");
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);

fclose(fp);
}

void del() //信息删除函数
{
FILE * fp;
int del_ID;
char choose='Y';
fp=fopen("stu.dat","rb");
system("cls");
printf("\n\t\t\t\t学生信息删除\n\n");
if(count==0)
{
printstar();
printf("\n\n\t\t\t您的学生数据库中无任何记录!\n\n\n");
printstar();
return;
}
do
{
printf("\t\n输入要删除信息的学生学号:");
scanf("%d",&del_ID);
if(del_ID==stud[i].ID)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
printf("\n\n您确定要删除%d号学员的信息吗(Y/N):");
scanf("%c",&choose);
if(choose=='Y')
{
for(i=0;i<count-1;i++)
{
stud[i]=stud[i+1];
count--;
}
printf("\n删除后的全体学员信息:\n");
for(i=0;i<count;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
printf("\n\n\t\t\t按ESC返回\n\n");
}
}
else
return;
}
else
printf("\n\n对不起,不存在%d号学员的信息.");
}while(choice=='y');
fclose(fp);
}

void sort_ID() //按学号排序
{
FILE * fp;
int j=0,temp=0;
fp=fopen("stu.dat","rb");
for(i=0;i<count;i++)
{
for(j=0;j<count-i-1;j++)
{
if(stud[j].ID>stud[j+1].ID)
{
temp=stud[j].ID;
stud[j].ID=stud[j+1].ID;
stud[j+1].ID=temp;
}
}
}
system("cls");
printf("\n\t\t\t\t按学号排序后的列表\n\n");
for(i=0;i<count;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
}
fclose(fp);
}

void sort_ave() //按平均分排序
{
FILE * fp;
int j=0;
double temp=0;
fp=fopen("stu.dat","rb");
for(i=0;i<count;i++)
{
for(j=0;j<count-i-1;j++)
{
if(stud[j].average>stud[j+1].average)
{
temp=stud[j].average;
stud[j].average=stud[j+1].average;
stud[j+1].average=temp;
}
}
}
system("cls");
printf("\n\t\t\t\t按平均分排序后的列表\n\n");
for(i=0;i<count;i++)
{
fread(&stud[i],sizeof(struct student),1,fp);
printf("\t学号 姓名 成绩1 成绩2 成绩3 平均成绩\n");
printf("\t%d %s %4.1lf %4.1lf %4.1lf %4.1lf\n",stud[i].ID,stud[i].name,stud[i].score1,stud[i].score2,stud[i].score3,stud[i].average);
}
fclose(fp);
}

void sort() //排序函数
{
int choose;
system("cls");
do
{
system("cls");
printf("\n\n\n\t\t\t\t学生信息排序\n\n");
printstar();
printf("\t\t\t\t1.〖按平均分排序〗\n\n");
printf("\t\t\t\t2. 〖按学号排序〗\n\n");
printf("\t\t\t\t3. 〖返回〗\n\n");
printstar();
printf("\t\t\t请选择:");
scanf("%d",&choose);
switch(choose)
{
case 1:
sort_ave();
break;
case 2:
sort_ID();
break;
case 3:
return;
}
}while(choose!=1&&choose!=2&&choose!=3);
}

void logout() //退出程序
{
system("cls");
printf("\n\n\n\t\t\t 您将退出学生信息管理系统!\n\n");
printstar();
printf("\n\n\t\t感谢您使用本管理系统,如有任何问题请与开发者联系\n\n");
printf("\t\t开发者:高志林\t\tE-mail:gao0@163.com\n\n\n\n\n");
printstar();
}

void main()
{
char choice='1';
//login();
system("cls");
do
{
system("cls");
printstar();
printf("\n\t\t\t欢迎使用学生信息管理系统!\n\n");
printstar();
printf("\n\t\t\t\t1.【信息录入】\n");
printf("\n\t\t\t\t2.【信息浏览】\n");
printf("\n\t\t\t\t3.【信息查询】\n");
printf("\n\t\t\t\t4.【信息修改】\n");
printf("\n\t\t\t\t5.【信息删除】\n");
printf("\n\t\t\t\t6.【信息排序】\n");
printf("\n\t\t\t\t7. 【退出】\n");
printf("\n\t\t\t请选择:");
scanf("%c",&choice);
switch(choice)
{
case '1':
input();
break;
case '2':
browse();
break;
case '3':
query();
break;
case '4':
update();
break;
case '5':
del();
break;
case '6':
sort();
break;
case '7':
logout();
break;
default:
printf("输入错误");
}
}while(choice!='1'&&choice!='2'&&choice!='3'&&choice!='4'&&choice!='5'&&choice!='6'&&choice!='7');

}
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
济南的冬天赏析 济南的冬天全文赏析 魅蓝Note5#魅蓝3S锁屏就重启是什么原因 ...药?小狗已经三天了不吃不喝还呕吐尿很黄不拉,精神不好去宠物医院化验... 狗狗今天吐了黄水昏昏欲睡 还抽搐给喝了妈咪爱睡了一觉好了也许但还是... ...了开始拉稀,不吃东西,昨天超级没精神,后给喂了点药,今天精神点了... 昨晚狗狗又吐又拉然后我喂了妈咪爱,今天早上没精神的,刚刚又喂了妈 小狗两个月,昨天拉稀不吃饭,我喂了妈咪爱,下午有精神了可那跑着玩。今 ... 国内有哪些生产疫苗的公司?研发、质量管理水平分别如何? 三联恒通(北京)科技发展有限公司怎么样? 什么是三联集团 净身出户可以不支付孩子抚养费吗? 怎么样才能把一个分身成两个? 靶向治疗什么意思?优点缺点281 没有公众号,先申请的小程序,然后小程序微信认证了,那我现在要...66 x的平方加1的导数为多少。求解。1 乳腺癌的靶向治疗是怎么样的? 乳腺癌靶向治疗如何确定 PS关于调色的问题,如下图,把2个或者几个颜色加在一块,就像调颜色一样调... 原始wxid怎么加好友 小孩走路玩手机时为什么被家长叫了回来? 一年内怎么改第二次 五大连池凤凰山监狱病区 深海迷航极光号进入方法 五大连池到凤凰山监狱多远 大过年的,问个问题,2100年有没有春晚?谁是导演? 电视剧大过年你们看过么?我最近看完老想哭!谁还有类似的电视剧... 四线锁边怎么拆开?就是布做坏了怎么把锁坏的拆掉? 《小星星》有几种,歌词分别是26 工作没动力,发展无希望?梳理职场焦虑硬核,一边焦虑一边成长 什么是北约和华约?485 被盗了怎么办怎么找回来? 应届毕业生,女,在一家金融服务公司做银行承兑汇票贴现,刚开始...2 工商银行信用卡品牌有什么区别?7 工商银行信用卡品牌有什么区别?7 传说之下一般结局把小花杀死了会怎样138 传说之下触发和平结局后怎么触发真结局?34 学生票可以改签吗?改签的票价还是学生价吗?6 学生火车票可以改签吗?改签的话价格会不会变?还有,改签的时间...1 已经安装360安全卫士8·1·0·2001右键没有强力删除 北约成员国包括哪几个国家?38 谁知道快拆锁边线的方法!急急急!就是可以挑一个开头,然后一拉...34 制衣多锁边线,有什么技巧容易拆掉37 2500两黄金有多少克1 垫层属于基层吗? 应届毕业生,女,在一家金融服务公司做银行承兑汇票贴现,刚开始...2 java中如何把一段字符串写入文件中50 硬盘上的电影等视频,存的时间久了越不清晰,是什么原因?4 被盗怎么找回来? 欧里庇得斯的代表作 “万贯”究竟是多少?