河北省黄骅市机场:帮忙做下C语言的大作业

来源:百度文库 编辑:高考问答 时间:2024/05/03 10:18:40
一、通讯录
要求:能显示菜单,并能进行选择及完成相应的功能。
数据结构:学号、姓名、性别、年龄、家庭住址、邮编、电话
功能:1、数据录入——按顺序录入学生成绩
2、删除记录
3、修改记录
4、查询记录——按学号等进行简单查询
5、退出
二、时钟

由于时间有限,多用户登录代码还存在问题,请见谅。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
/*函数声明*/
void readFile();
void display();
void insert();
void del();
void modify();
void search_stuNo();
void search_name();
void search_sex();
void search_age();
void search_c();
void search_sql();
void search_vb();
void search();
void sort_name();
void sore_age();
void sort_c();
void sort_sql();
void sort_vb();
void sort_total();
void sort_avg();
void sort();
void close();
int userlimit();
/*定义全局学生结构类型*/
struct student
{
char name[20];
char sex[10];
int stuNo;
int age;
float c;
float sql;
float vb;
float total;
float avg;
};
/*定义全局结构数组变量stu*/
student stu[50];
/*定义全局变量stuNumber,代表学生总人数,也就是学生记录总条数,*/
int stuNumber=0;
/*定义全局用户登录结构体类型*/
struct uu
{
char name[20];
char pass[30];
};
/*定义全局结构数组变量use*/
struct uu use[50];
/*定义全局变量count,代表用户总人数,也就是注册用户总人数, */
int count=0;

//////////////////////////////////////
void main()
{
int choice;
int user;
user=userlimit();
if (user==0)
{
printf("非法用户,请联系管理员");
getch();
exit(0);

}
readFile();
do
{
system("cls"); //清屏
printf("\n\t\t\t欢迎使用学生管理系统!\n");
printf("\n\n\t\t\t 文件菜单\n");
printf("\t\t--------------------------------------\n");
printf("\t\t\t 1.录入学员记录\n");
printf("\t\t\t 2.显示学员记录\n");
printf("\t\t\t 3.修改学员记录\n");
printf("\t\t\t 4.排序功能(降序)\n");
printf("\t\t\t 5.查找学员记录\n");
printf("\t\t\t 6.删除学员记录\n");
printf("\t\t\t 7.退出系统\n");
printf("\n请选择:");
scanf("%d",&choice);
switch(choice)
{
case 1:
insert();
break;
case 2:
display();
break;
case 3:
modify();
break;
case 4:
sort();
break;
case 5:
search();
break;
case 6:
del();
case 7:
close();
default:
printf("错误的菜单选项!\n");
}
}while(1);

}
//////////////////////////////////////
/*读取文件函数readFile的定义*/
void readFile()
{
//int i;
stuNumber=0;
FILE *fp;
/*打开文件*/
fp=fopen("student.txt","r");
if (fp == NULL)
{
//printf("\n 打开文件失败!还没有学生记录");
stuNumber=0;
return ; //函数立即返回,本例不能用exit(1)退出整个程序;
}
/*读取文件到数组中,并统计学生记录的条数*/
//feof函数判断文件指针是否在文件末尾
while(!feof(fp))
{
if(fread(&stu[stuNumber],sizeof(struct student),1,fp)==1 )
stuNumber++;
}
/*关闭文件*/
fclose(fp);
}
////////////////////////////////////////
/*显示学员全部记录函数display的定义*/
void display()
{
int i;
/*打印显示*/
printf("===================================\n");
printf("%-4s %8s %4s %4s %8s %8s %8s %8s %8s\n", "学号", "姓名", "性别", "年龄", "C分数", "SQL分数", "VB分数", "总分", "平均分" );
for(i=0;i<stuNumber;i++)
{
if (stu[i].stuNo!=0) //已经删除的学生记录本例为0,不应显示
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
}
printf("按任意键返回.........\n");
getch();
getch();
}
/////////////////////////////////////////
/*录入记录函数insert的定义*/
void insert()
{
char reply='y';
int flag,ch;
char b;
float ch1;
printf("===================================\n");
do
{
printf("\n请输入学员信息:\n");
do
{
flag=0;
printf("学号:\n");
scanf("%d",&ch);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].stuNo=ch;
if(stu[stuNumber].stuNo>0&&stu[stuNumber].stuNo<50)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
printf("姓名:\n");
scanf("%s",stu[stuNumber].name);
do
{
flag=0;
printf("性别:\n");
scanf("%s",stu[stuNumber].sex);
if((strcmp(stu[stuNumber].sex,"男")==0)||(strcmp(stu[stuNumber].sex,"女")==0))
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}while(flag==0);
do
{
flag=0;
printf("年龄:\n");
scanf("%d",&ch);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].age=ch;
if(stu[stuNumber].age>0&&stu[stuNumber].age<100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
do
{
flag=0;
printf("C语言分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].c=ch1;
if(stu[stuNumber].c>=0&&stu[stuNumber].c<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
do
{
flag=0;
printf("SQL分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].sql=ch1;
if(stu[stuNumber].sql>=0&&stu[stuNumber].sql<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
do
{
flag=0;
printf("VB分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].vb=ch1;
if(stu[stuNumber].vb>=0&&stu[stuNumber].vb<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
stu[stuNumber].total=stu[stuNumber].c+stu[stuNumber].sql+stu[stuNumber].vb;
stu[stuNumber].avg=(stu[stuNumber].total)/3;
stuNumber++;
printf("\n 继续录入吗?(y/n):");
fflush(stdin);
scanf("%c", &reply);
}while ((stuNumber<50) && (reply=='y'));
printf("按任意键返回.........\n");
getch();
getch();
}
////////////////////////////////////////
/*删除函数del的定义*/
void del()
{
int i;
char delName[10];
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
fflush(stdin);
printf("请输入要删除的学生姓名: ");
scanf("%s",&delName);
/*在数组中查找该为学生,并删除掉*/
for(i=0;i<stuNumber;i++)
{
if(strcmp(stu[i].name,delName)==0)
{
/*删除记录:本例只要求将字符串置为空白串,数字类型置0*/
printf("\n删除该位学生的记录");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n",stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
strcpy(stu[i].name,"");//不能stu[i].name=""
strcpy(stu[i].sex,"");
stu[i].stuNo =0;
stu[i].age =0;
stu[i].c =0;
stu[i].sql =0;
stu[i].vb =0;
find=1;//设置找到了的标志为1,代表找到改位学生
}
}
if (find==0)
printf("没有该位学员\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按学号查找函数search_stuNo的定义*/
void search_stuNo()
{
char b;
int i,number;
int ch,flag;
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
do
{
flag=0;
printf("请输入要查找学生的学号:\n");
scanf("%d",&ch);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
number=ch;
if(number>0&&number<50)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(stu[i].stuNo==number)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按姓名查找函数search_name的定义*/
void search_name()
{
int i;
char name[20];
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
printf("请输入要查找学生的姓名:");
scanf("%s",name);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(strcmp(stu[i].name,name)==0)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按性别查找函数search_sex的定义*/
void search_sex()
{
int i;
int flag;
char sex[5];
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
do
{
flag=0;
printf("请输入要查找学生的性别:\n");
scanf("%s",sex);
if((strcmp(sex,"男")==0)||(strcmp(sex,"女")==0))
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}while(flag==0);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(strcmp(stu[i].sex,sex)==0)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按年龄查找函数search_age的定义*/
void search_age()
{
char b;
int i,age;
int flag,ch;
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
do
{
flag=0;
printf("请输入要查找学生的年龄:\n");
scanf("%d",&ch);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
age=ch;
if(age>0&&age<100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(stu[i].age==age)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按C语言分数查找函数search_c的定义*/
void search_c()
{
int i;
float c;
int flag;
char b;
float ch1;
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
do
{
flag=0;
printf("请输入要查找学生的C语言分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
c=ch1;
if(c>=0&&c<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(stu[i].c==c)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按SQL分数查找函数search_sql的定义*/
void search_sql()
{
int i;
float sql;
int flag;
char b;
float ch1;
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
do
{
flag=0;
printf("请输入要查找学生的SQL分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
sql=ch1;
if(sql>=0&&sql<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(stu[i].sql==sql)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*按VB分数查找函数search_vb的定义*/
void search_vb()
{
int i;
float vb;
int flag;
char b;
float ch1;
int find=0;//设置是否找到的标志。默认没找到
printf("===================================\n");
do
{
flag=0;
printf("请输入要查找学生的VB分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
vb=ch1;
if(vb>=0&&vb<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(stu[i].vb==vb)
{
printf("\n查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
find=1;
}
}
if (find==0)
printf("未找到该学生!\n");
printf("按任意键返回.........\n");
getch();
getch();
}
///////////////////////////////////////
/*查找记录函数search的定义*/
void search()
{
char chose;
do
{
system("cls"); //清屏
printf("\n\n\t\t\t 查找方式如下\n");
printf("\n\n\t\t--------------------------------------\n");
printf("\t\t\t 1.按学号查找\n");
printf("\t\t\t 2.按姓名查找\n");
printf("\t\t\t 3.按性别查找\n");
printf("\t\t\t 4.按年龄查找\n");
printf("\t\t\t 5.按C语言分数查找\n");
printf("\t\t\t 6.按SQL分数查找\n");
printf("\t\t\t 7.按VB分数查找\n");
printf("\t\t\t 8.ESC返回\n");
printf("\n请选择:\n");
fflush(stdin);
chose=getch();
switch(chose)
{
case '1':
search_stuNo();
break;
case '2':
search_name();
break;
case '3':
search_sex();
break;
case '4':
search_age();
break;
case '5':
search_c();
break;
case '6':
search_sql();
break;
case '7':
search_vb();
break;
}
}while(chose!=27);

}
/////////////////////////////////
/*修改学生记录函数modify的定义*/
void modify()
{
int i,find=0;
int flag,ch;
float ch1;
char b;
char modiName[10];
printf("===================================\n");
fflush(stdin);
printf("请输入要修改的学生姓名: ");
scanf("%s",&modiName);
/*在数组中查找该位学生*/
for(i=0;i<stuNumber;i++)
{
if(strcmp(stu[i].name,modiName)==0)
{

find=1;
printf("查找情况如下:\n");
printf("%-4d %8s %4s %4d %8.2f %8.2f %8.2f %8.2f %8.2f\n", stu[i].stuNo, stu[i].name, stu[i].sex, stu[i].age, stu[i].c, stu[i].sql, stu[i].vb, stu[i].total, stu[i].avg );
do
{
flag=0;
printf("请输入修改后的学生学号:\n");
scanf("%d",&ch);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].stuNo=ch;
if(stu[stuNumber].stuNo>0&&stu[stuNumber].stuNo<50)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
do
{
flag=0;
printf("请输入修改后的学生性别:\n");
scanf("%s",stu[stuNumber].sex);
if((strcmp(stu[stuNumber].sex,"男")==0)||(strcmp(stu[stuNumber].sex,"女")==0))
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}while(flag==0);
do
{
flag=0;
printf("请输入修改后的学生年龄:\n");
scanf("%d",&ch);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].age=ch;
if(stu[stuNumber].age>0&&stu[stuNumber].age<100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
do
{
flag=0;
printf("请输入修改后的学生C语言分数:\n");
scanf("%f",&ch1);
b=getchar();
if(b!=10)
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
else
{
stu[stuNumber].c=ch1;
if(stu[stuNumber].c>=0&&stu[stuNumber].c<=100)
{
flag=1;
}
else
{
printf("非法录入请重新输入\n");
flag=0;
fflush(stdin);
}
}
}while(flag==0);
do
{
flag=0;
printf("请输入修改后的学生SQL分数:\n");

自己的作业自己做。

我这有个学生成绩统计的,功能差不多,还有保存打开文件功能,你可以拿去改改,不过最好是看懂了自己写。想要的话pm我。

楼主不要偷懒哦
你以后是不是工作了也让别人代写程序呢?

以前做个一个,不过现在没有了,主要用的是文件的操作函数。