1 学生信息管理c语言作业,学生信息管理系统-C语言结课作业掺杂了一点c++

最近C语言学完了,学了一点点c++,做了一个结课作业,用的c++的头文件和输入输出方式,其中的信息排序方式也是用c++的sort排序函数写的。// 学生信息管理系统.cpp : Defines the entry point for the console application.

//

//#include "stdafx.h"

#include//

#include//清空文件操作未写

#include//

#include

#include

#include

#include

#define NUM 100

using namespace std;

void save();

void yanshi(char *p);

void menu();

void load();

void search_No();

void maxTOTAL();

void minTOTAL();

void search();

void loading();

void deletefile();

void deletething();

void SORT();

void sortsum();

void sortmath();

void sorteng();

void top();

void sortno();

void deleteRec();

typedef struct student

{

char No[10];

char Name[20];

char Sex[3];

char ClassName[20];

int Age;

double Math;

double Physics;

double English;

double Total;

double Average;

}student;

//定义全局变量

student s[NUM];//存放学生的数组

int n=0;//数组中当前存放的学生数

void printfstudent(student s);

bool compare_totals(student a,student b){

return (a.Total

}

bool compare_totalj(student a,student b){

return (a.Total >b.Total );

}

bool compare_maths(student a,student b){

return(a.Math

}

bool compare_mathj(student a,student b){

return(a.Math >b.Math );

}

bool compare_phys(student a,student b){

return(a.Physics

}

bool compare_phyj(student a,student b){

return(a.Physics >b.Physics );

}

bool compare_engs(student a,student b){

return(a.English

}

bool compare_engj(student a,student b){

return(a.English >b.English );

}

//删除给定条件的记录

void deleteRec(){

system("cls");

cout<

char k;

cin>>k;

if(k=='y'||k=='Y'){

int pos=-1;//初始化删除位置

char key[20];

system("cls");

cout<

cin>>key;

loading();

for(int i=0;i

if(strcmp(s[i].No,key)==0){

printfstudent(s[i]);

}

pos=0;

}

char a;

cout<

cin>>a;

if(a=='y'||a=='Y'){

if(pos!=-1){//表示查找到要删除的学生

for(;pos

s[pos]=s[pos+1];

n--;//记录数减一

cout<

Sleep(2000);

deleteRec();

}

else{

cout<

Sleep(3000);

}

}

else{

cout<

deleteRec();

}

}

else{

menu();

}

}

void sortphy(){

system("cls");

cout<

int k;

cin>>k;

if(k==1){

sort(s,s+n,compare_phys);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t排名 \t英语 \t总分 \t平均分\n");

int p=1;

for(int i=0;i

cout<

p++;

}

Sleep(2000);

system("pause");

SORT();

}

else

sort(s,s+n,compare_phyj);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t排名 \t排名 \t英语 \t总分 \t平均分\n");

int p=n;

for(int i=0;i

cout<

p--;

}

Sleep(2000);

system("pause");

SORT();

}

void sortsum(){

system("cls");

cout<

int k;

cin>>k;

if(k==1){

sort(s,s+n,compare_totals);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t英语 \t总分 \t排名 \t平均分\n");

int p=1;

for(int i=0;i

cout<

p++;

}

Sleep(2000);

system("pause");

SORT();

}

else{

sort(s,s+n,compare_totalj);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t英语 \t总分 \t排名 \t平均分\n");

int p=n;

for(int i=0;i

cout<

p--;

}

Sleep(2000);

system("pause");

SORT();

}

}

void sortmath(){

system("cls");

cout<

int k;

cin>>k;

if(k==1){

sort(s,s+n,compare_maths);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t排名 \t物理 \t排名 \t英语 \t总分 \t平均分\n");

int p=1;

for(int i=0;i

cout<

p++;

}

Sleep(2000);

system("pause");

SORT();

}

else{

sort(s,s+n,compare_mathj);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t总分 \t物理 \t排名 \t英语 \t排名 \t平均分\n");

int p=n;

for(int i=0;i

cout<

p--;

}

Sleep(2000);

system("pause");

SORT();

}

}

void sorteng(){

system("cls");

cout<

int k;

cin>>k;

if(k==1){

sort(s,s+n,compare_engs);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t英语 \t排名 \t总分 \t平均分\n");

int p=1;

for(int i=0;i

cout<

p++;

}

Sleep(2000);

system("pause");

SORT();

}

else{

sort(s,s+n,compare_engj);

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t英语 \t排名 \t总分 \t平均分\n");

int p=n;

for(int i=0;i

cout<

p--;

}

Sleep(2000);

system("pause");

SORT();

}

}

void swap(student *a,student *b){

student p;

p=*a;

*a=*b;

*b=p;

}

void sortname(){

system("cls");

for(int i=1;i

for(int j=0;j

if(strcmp(s[j].Name,s[j+1].Name)>0)

swap(s[j].Name,s[j+1].Name);

}

}

top();

for(int i=0;i

cout<

}

Sleep(2000);

system("pause");

SORT();

}

void sortno(){

system("cls");

for(int i=1;i

for(int j=0;j

if(strcmp(s[j].No,s[j+1].No)>0)

swap(s[j].No,s[j+1].No);

}

}

top();

for(int i=0;i

cout<

}

Sleep(2000);

system("pause");

SORT();

}

void SORT(){

system("cls");

cout<

cout<

int i;

cin>>i;

switch(i){

case 6:

sortname();

break;

case 5:

sortno();

break;

case 1:

sortsum();

break;

case 2:

sortmath();

break;

case 3:

sorteng();

case 4:

sortphy();

break;

default:

cout<

Sleep(1000);

menu();

break;

}

}

void search(){

system("cls");

cout<

cout<

cout<

int m;

cin>>m;

switch(m){

default:

menu();

break;

case 1:

search_No();

break;

}

}

void maxTOTAL(){

system("cls");

double max=s[0].Total;

int k=0;

for(int i=1;i

if(s[i].Total>max)

max=s[i].Total;

k=i;

}

}

void minTOTAL(){

system("cls");

loading();

double min=s[0].Total;

int k=0;

for(int i=1;i

if(s[i].Total

min=s[i].Total;

}

}

//按学号查找

void search_No(){

char key[20];

system("cls");

cout<

cin>>key;

loading();

for(int i=0;i

if(strcmp(s[i].No,key)==0)

printfstudent(s[i]);

}

Sleep(2000);

cout<

system("pause");

search();

}

//按姓名查找

void search_Name(){

system("cls");

char key[20];

cout<

cin>>key;

loading();

for(int i=0;i

if(strcmp(s[i].Name,key)==0){

printfstudent(s[i]);

}

}

Sleep(2000);

cout<

system("pause");

}

void load(){

/*system("cls");

char br[15];

char *b=br;

cout<

cin>>b;*/

system("cls");

cout<

Sleep(2000);

system("cls");

FILE *fp;

if((fp=fopen("D:\\学生信息管理系统数据.dat","rb"))==NULL){

cout<

cout<

Sleep(3000);

menu();

}

int i=0;

while((fread((char*)&s[i],sizeof(student),1,fp))>0){

i++;

}

n=i;//把读出的记录数赋给n

cout<

cout<

Sleep(2200);

}

void deletething(){

system("cls");

cout<

cout<

cout<

int i;

cin>>i;

switch(i){

case 2:

deletefile();

break;

}

}

void deletefile(){//按文件名删除文件

system("cls");

char fileNAME[80];

printf("\n The file to delete:\n");

cin>>fileNAME;

system("cls");

cout<

Sleep(2000);

system("cls");

Sleep(2000);

if( remove(fileNAME) == 0 )

printf("Removed %s.\n", fileNAME);

else

perror("remove");

Sleep(2000);

system("pause");

}

void save(){

FILE *fp;

/*system("cls");

char ar[15];

char *a=ar;

cout<

cin>>a;*/

system("cls");

cout<

Sleep(2000);

system("cls");

if((fp=fopen("D:\\学生信息管理系统数据.dat","wb"))==NULL){

cout<

Sleep(3000);

menu();

}

if(fwrite((char*)s,sizeof(student),n,fp)==n){

cout<

}

else

cout<

Sleep(500);

system("pause");

}

//1.增加学生信息

void add()

{

system("cls");

cout<

cout<

char ans='Y';

cin>>ans;

if(ans=='n'||ans=='N')

menu();

while(ans=='y'||ans=='Y')

{

system("cls");

printf("学号:");

cin>>s[n].No;

printf("姓名:");

cin>>s[n].Name;

printf("性别:");

cin>>s[n].Sex;

printf("班级:");

cin>>s[n].ClassName;

printf("年龄:");

cin>>s[n].Age;

printf("数学成绩:");

cin>>s[n].Math;

printf("物理成绩:");

cin>>s[n].Physics;

printf("英语成绩:");

cin>>s[n].English;

//计算该学生的总成绩,平均成绩

s[n].Total=s[n].Math+s[n].Physics+s[n].English;

s[n].Average=s[n].Total/3;

n++;

printf("是否继续添加?(y/n):");

getchar();//按任意键停留

scanf("%c",&ans);

}

cout<

cout<

cin>>ans;

if(ans=='y'||ans=='Y'){

save();

}

else{//有问题,需要修改,若输入非Y非N则返回主菜单,会丢失之前录入的数据

cout<

menu();

}

}

void top(){

cout<

printf("学号 \t\t姓名 \t性别 \t班级 \t年龄 \t数学 \t物理 \t英语 \t总分 \t平均分\n");

}

void printfstudent(student s){

system("cls");

top();

cout<

cout<

cout<

}

//显示学生数据

void display()

{

int i;

system("cls");

top();

for(i=0;i

cout<

Sleep(500);

printf("\n请按任意键返回!");

getchar();

getchar();

}

void loading(){

system("cls");

cout<

Sleep(2000);

}

void fun(){

system("color 2a");

system("title 学生信息管理系统");

}

void ver(){

yanshi("\t \3\3\3\3\3\3\3欢迎使用学生信息管理系统\3\3\3\3\3\3\3\n\n\n\n");

cout<

cout<

cout<

cout<

Sleep(3000);

system("cls");

}

void menu(){

int select;

do{

system("cls");

printf("\t\t 欢迎使用学生信息管理系统\n");

printf("\t\t *** \3\3\3\3\3\3\3\3***\n");

printf("\t\t * │ 学生信息管理系统 │ *\n");

printf("\t\t * ╰\3\3\33\\3\3\3 *\n");

printf("\t\t * ┌───────────┐ *\n");

printf("\t\t * │1.添加信息 2.加载信息│ *\n");

printf("\t\t * │ │ *\n");

printf("\t\t * │3.查询信息 4.文件操作│ *\n");

printf("\t\t * │ │ *\n");

printf("\t\t * │5.数据排序 6.修改信息│ *\n");

printf("\t\t * │ │ *\n");

printf("\t\t * │7.显示信息 8.删除信息│ *\n");

printf("\t\t * │ │ *\n");

printf("\t\t * │9.保存信息 0.退出系统│ *\n");

printf("\t\t * └───────────┘ *\n");

printf("\t\t ************************************\n");

cout<

yanshi("\t请选择操作方式(1~8):\n");

cin>>select;

switch(select){

case 8:

deleteRec();

break;

case 5:

SORT();

break;

case 4:

deletething();

break;

case 3:

search();

break;

case 2:

load();//加载/读取磁盘数据

break;

case 9:

save();//保存所有信息

break;

case 7:

display();

break;

case 1:

add();

break;

case 0:

cout<

cout<

Sleep(2000);

exit(0);

break;

}

}while(select!=8);

}

void yanshi(char *p){

while(1){

if(*p!=0)

cout<

else

break;

Sleep(50);

}

}

int main(){

fun();

ver();

system("cls");

menu();

return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值