当前位置:首页 > 代码 > 正文

数据记录系统源代码(统计系统源码)

admin 发布:2022-12-19 19:20 129


今天给各位分享数据记录系统源代码的知识,其中也会对统计系统源码进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!

本文目录一览:

80分奖励给一个C语言源代码“档案管理系统的设计”

#include stdio.h

#include stdlib.h

#include string.h

#include conio.h

/*********************** 字定义函数声明 ********************************/

void Add(); //增加记录

void Delete(); //删除记录

void Search(); //查找记录

void Alter(); //修改记录

void Views(); //查看所有记录

void delete_all(); //清除所有记录

int check(char strID[]); //查找文件记录中已经存在的学生ID

/********************* 定义学生信息结构体 **********/

struct student

{

//学生信息(学号,姓名,性别,籍贯,电话,住址,民族);

char ID[10];

char name[10];

char sex[4];

char nativePlace[10];

char phone[13];

char nation[6];

};

struct student stu;

FILE *fp;//定义文件指针

/********************* main() 主函数 *************************************/

void main()

{

int flag;

while(flag!=7)

{

printf("\n\t\t 【 请选择您所要的操作 】 \n");

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

printf("\t\t‖ 1、增加记录 4、修改记录 ‖\n");

printf("\t\t‖ 2、删除记录 5、清除所有记录 ‖\n");

printf("\t\t‖ 3、查询记录 6、所有记录列表 ‖\n");

printf("\t\t‖ 〖 按任意键退出 〗 ‖\n");

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

scanf("%d",flag);

switch(flag)

{

case 1:

Add(); //增加记录

getch();

system("cls");

break;

case 2:

Delete(); //删除记录

getch();

system("cls");

break;

case 3:

Search(); //查找记录

getch();

system("cls");

break;

case 4:

Alter(); //修改记录

getch();

system("cls");

break;

case 5:

delete_all(); //清空所有记录

getch();

system("cls");

break;

case 6:

Views(); //查看所有记录

getch();

system("cls");

break;

default:

exit(0);

}

}

}

/***************** 插入新记录 *******************************/

void Add()

{

if((fp=fopen("StudentMessage","ab+"))==NULL)

{

printf("学生信息文件打开失败!");

exit(1);

}

else

{

int check_add(char stuID[]);

long flength,offset;

int k=0,t; //t用来接收check()函数的传值

char str[53];

fseek(fp,0,SEEK_END);

flength=ftell(fp)/sizeof(stu); //统计文件中有多少条记录

printf("\t请输入要插入的学生的信息:\n");

input_message:

printf("\t学号:");

scanf("%s",stu.ID);

t=check_add(stu.ID);

if(t==1)

{

printf("\t》 该学号已经存在,不允许重复插入!请重新输入一个学号。《\n");

goto input_message; //跳转到“input_message”标记处继续执行

}

printf("\t姓名:");

scanf("%s",stu.name);

printf("\t性别:");

scanf("%s",stu.sex);

printf("\t籍贯:");

scanf("%s",stu.nation);

printf("\t电话:");

scanf("%s",stu.phone);

printf("\t名族:");

scanf("%s",stu.nativePlace);

rewind(fp);

//检测文件中是否有空字符串,如果有则在此处插入新记录,如果没有则插入到文件尾

while(!feof(fp))

{

fread(str,sizeof(stu),1,fp);

//检测到空字符串,则将fp所指向的文件关闭,以读写方式重新打开

if(strcmp(str,"")==0)

{

fclose(fp);

fp=fopen("StudentMessage","rb+");

break;

}

k++;

}

offset=sizeof(stu)*k;

fseek(fp,offset,SEEK_SET);

fwrite(stu,sizeof(stu),1,fp);

fclose(fp);

printf("插入数据成功!\n");

}

}

/****************** 检测将要插入的学号是否已存在文件记录中 **************************/

int check(char stuID[10])

{

int id=0,k=1;

FILE *fpp;

struct student checkID;

if((fpp=fopen("StudentMessage","rb"))==NULL) //以只读方式打开一个二进制文件StudentMessage

{

printf("文件打开失败!\n");

exit(1);//打开失败,返回系统

}

while(!feof(fpp))

{

fread(checkID,sizeof(stu),1,fpp);

//检测用户输入的学号是否已经存在,若存在则终止程序的执行

if(strcmp(checkID.ID,stuID)==0)

{

break;

}

id++;

}

fclose(fpp);

return id*k;

}

/******************** 检测输入的学号是否能插入 *****************************************/

int check_add(char stuID[10])

{

int id;

FILE *fpp;

struct student checkID;

if((fpp=fopen("StudentMessage","rb"))==NULL) //以只读方式打开一个二进制文件StudentMessage

{

printf("文件打开失败!\n");

exit(1);//打开失败,返回系统

}

while(!feof(fpp))

{

fread(checkID,sizeof(stu),1,fpp);

//检测用户输入的学号是否已经存在,若存在则终止程序的执行

if(strcmp(checkID.ID,stuID)==0)

{

id=1;

break;

}

else

{

id=0;

}

}

fclose(fpp);

return id;

}

/******************* 根据用户输入的学号删除记录 ************/

void Delete()

{

printf("删除相应记录!\n");

if((fp=fopen("StudentMessage","rb+"))==NULL) //以可读可写方式打开一个二进制文件

{

printf("文件打开失败!\n");

return;

}

else

{

char message[10]; //接收用户需要删除的学号

int i;

long flength;

fseek(fp,0,SEEK_END); //把文件指针移到文件尾

flength=ftell(fp)/sizeof(struct student); //计算文件中有多少条记录

printf("\t请输入您要删除的学号:");

scanf("%s",message);

i=check(message);

long offset=sizeof(stu)*i; //记录要删除的学号的位置

if(flength==0)

{

printf("文件记录为空!\n");

return;

}

else if(iflength)

{

printf("没有该学生信息!\n");

return;

}

else

{

//将要删除的字符串全部置为空

strcpy(stu.ID,"");

strcpy(stu.name,"");

strcpy(stu.sex,"");

strcpy(stu.nation,"");

strcpy(stu.phone,"");

strcpy(stu.nativePlace,"");

fseek(fp,offset,SEEK_SET); //移动指针到要删除的学号的位置

fwrite(stu,sizeof(stu),1,fp); //将置空的信息重新写回到文件中

printf("\t\t数据删除成功!\n");

}

fclose(fp);

}

}

/****************** 查找数据 ***************************************/

void Search()

{

if((fp=fopen("StudentMessage","rb"))==NULL) //以只读方式打开StudentMessage文件

{

printf("\t文件打开失败!\n");

return;

}

else

{

char message[10]; //接收用户需要查找的信息

int i;

long flength,offset;

fseek(fp,0,SEEK_END); //将文件指针移文件尾

flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录

printf("\t请输入您要查找的学号:");

scanf("%s",message);

i=check(message);

offset=sizeof(struct student)*i;

if(flength==0)

{

printf("\t文件记录为空!\n");

return;

}

else if(iflength)

{

printf("\t\t查找失败,没有找到相应信息!\n");

return;

}

else

{

//输出查找到的内容

rewind(fp);

fseek(fp,offset,SEEK_SET);

fread(stu,sizeof(struct student),1,fp);

printf("学号:%s ",stu.ID);

printf("姓名:%s ",stu.name);

printf("性别:%s ",stu.sex);

printf("籍贯:%s ",stu.nation);

printf("电话:%s ",stu.phone);

printf("民族:%s\n",stu.nativePlace);

}

fclose(fp);

}

}

/****************** 修改记录 ********************************/

void Alter()

{

printf("修改相应记录!\n");

if((fp=fopen("StudentMessage","rb+"))==NULL)

{

printf("文件打开失败!\n");

exit(1);

}

else

{

char message[10]; //存储用户要修改的学号

int i;

long flength,offset;

fseek(fp,0,SEEK_END); //移动文件指针到文件尾

flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录

printf("\t请输入您要修改的学号:");

scanf("%s",message);

i=check(message);

offset=sizeof(struct student)*i; //记录要修改的记录在文件中的位置

if(flength==0)

{

printf("文件记录为空!\n");

return;

}

else if(iflength)

{

printf("没有该学生信息!\n");

return;

}

else

{

rewind(fp);

fseek(fp,offset,SEEK_SET);

fread(stu,sizeof(struct student),1,fp);

printf("该学生原来的信息:\n");

printf("\t学号:%s ",stu.ID);

printf("姓名:%s ",stu.name);

printf("性别:%s ",stu.sex);

printf("籍贯:%s ",stu.nation);

printf("电话:%s ",stu.phone);

printf("名族:%s\n\n",stu.nativePlace);

printf("请更新该学生的信息:\n");

strcpy(stu.ID,message);

printf("\t姓名:");

scanf("%s",stu.name);

printf("\t性别:");

scanf("%s",stu.sex);

printf("\t籍贯:");

scanf("%s",stu.nation);

printf("\t电话:");

scanf("%s",stu.phone);

printf("\t名族:");

scanf("%s",stu.nativePlace);

fseek(fp,offset,SEEK_SET); //将文件指针指向要修改的地方

fwrite(stu,sizeof(stu),1,fp); //将修改后的内容重新写回到原来的地方

printf("\t数据更新成功!\n");

}

fclose(fp);

}

}

/************** 查看所有记录 ************************************/

void Views()

{

long flength;

if((fp=fopen("StudentMessage","rb"))==NULL)

{

printf("文件打开失败!\n");

exit(1);

}

fseek(fp,0,SEEK_END); //移动文件指针到文件尾

flength=ftell(fp)/sizeof(struct student); //得到文件中有多少条记录

if(flength==0)

{

printf("文件中没有记录!");

return;

}

rewind(fp); //将文件指针移动到文件头

printf("\t\t\t所有记录列表\n\n");

while(!feof(fp))

{

fread(stu,sizeof(stu),1,fp);

if(strcmp(stu.ID,"")!=0) //检测文件中的空字符串,如果不是空字符串则输出

{

printf("学号:%s ",stu.ID);

printf("姓名:%s ",stu.name);

printf("性别:%s ",stu.sex);

printf("籍贯:%s ",stu.nation);

printf("电话:%s ",stu.phone);

printf("民族:%s\n",stu.nativePlace);

}

}

fclose(fp);

}

/******************** 删除所有记录 ********************************/

void delete_all()

{

int ch;

printf("该操作将删除所有记录,按“0”退出,按“1”继续。\n");

scanf("%d",ch);

switch(ch)

{

case 0:

break;

case 1:

printf("将删除所有记录,继续请按“1”,退出请按“0”。\n");

scanf("%d",ch);

switch(ch)

{

case 0:

break;

case 1:

if (remove("StudentMessage") == 0) //删除StudentMessage文件

{

printf("操作成功,所有记录已经删除!");

}

else

{

perror("remove"); //如果删除不成功则输出系统出错的信息

}

break;

}

}

}

【急】求C语言学生成绩管理系统源代码,要能用的

#include time.h

#includestdio.h

#includeconio.h

#include stdlib.h

#includestring.h

#define MAX 80

void input();

void sort();

void display();

void insert();

void del();

void average();

void find();;

void read();;

void average();

void modify();

int now_no=0;

struct student

{

int no;

char name[20];

char sex[4];

float score1;

float score2;

float score3;

float sort;

float ave;

float sum;

};

void average()/*求平均数*/

{

int i;

for(i=0;inow_no;i++)

{

stu[i].sum=stu[i].score1+stu[i].score2+stu[i].score3;

stu[i].ave=stu[i].sum/3;

}

}

struct student stu[MAX],*p;

main()/*主函数*/

{

int as;

start: printf("\n\t\t\t欢迎使用学生成绩管理系统\n");

/*一下为功能选择模块*/

do

{

printf("\n\t\t\t\t1.录入学员信息\n\t\t\t\t2.显示学员信息\n\t\t\t\t3.成绩排序信息\n\t\t\t\t4.添加学员信息\n\t\t\t\t5.删除学员信息\n\t\t\t\t6.修改学员信息\n\t\t\t\t7.查询学员信息\n\t\t\t\t8.退出\n");

printf("\t\t\t\t选择功能选项:");

fflush(stdin);

scanf("%d",as);

switch(as)

{

case 1:system("cls");input();break;

case 2:system("cls");display();break;

case 3:system("cls");sort();break;

case 4:system("cls");insert();break;

case 5:system("cls");del();break;

case 6:system("cls");modify();break;

case 7:system("cls");find();break;;

case 8:system("exit");exit(0);

default:system("cls");goto start;

}

}while(1);

/*至此功能选择结束*/

}

void input()/*原始数据录入模块*/

{

int i=0;

char ch;

do

{

printf("\t\t\t\t1.录入学员信息\n输入第%d个学员的信息\n",i+1);

printf("\n输入学生编号:");

scanf("%d",stu[i].no);

fflush(stdin);

printf("\n输入学员姓名:");

fflush(stdin);

gets(stu[i].name);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[i].sex);

printf("\n输入学员成绩1:");

fflush(stdin);

scanf("%f",stu[i].score1);

printf("\n输入学员成绩2:");

fflush(stdin);

scanf("%f",stu[i].score2);

printf("\n输入学员成绩3:");

fflush(stdin);

scanf("%f",stu[i].score3);

printf("\n\n");

i++;

now_no=i;

printf("是否继续输入?(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!='n'ch!='N');

system("cls");

}

void sort()/*排序数据函数*/

{

struct student temp;

int i,j;

average();

for(i=1;inow_no;i++)

{

for(j=1;j=now_no-i;j++)

{

if(stu[j-1].avestu[j].ave)

{

temp=stu[j];

stu[j]=stu[j-1];

stu[j-1]=temp;

}

}

}

}

void display()/*显示数据函数*/

{

int i;

char as;

average();

do

{

printf("\t\t\t班级学员信息列表\n");

printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");

for(i=0;inow_nostu[i].name[0];i++)printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

void insert()/*插入数据函数*/

{

char ch;

do

{

printf("\n\t\t输入新插入学员队信息\n");

printf("\n输入学生编号:");

scanf("%d",stu[now_no].no);

fflush(stdin);

printf("\n输入学员姓名:");

fflush(stdin);

gets(stu[now_no].name);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[now_no].sex);

printf("\n输入学员成绩1:");

fflush(stdin);

scanf("%f",stu[now_no].score1);

printf("\n输入学员成绩2:");

fflush(stdin);

scanf("%f",stu[now_no].score2);

printf("\n输入学员成绩3:");

fflush(stdin);

scanf("%f",stu[now_no].score3);

printf("\n\n");

now_no=now_no+1;

sort();

printf("是否继续输入?(Y/N)");

fflush(stdin);

ch=getch();

system("cls");

}

while(ch!='n'ch!='N');

}

void del()/*删除数据函数*/

{

int inum,i,j;

printf("输入要删除学员的编号:");

fflush(stdin);

scanf("%d",inum);

for(i=0;inow_no;i++)

{

if(stu[i].no==inum)

{

if(i==now_no)now_no-=1;

else

{

stu[i]=stu[now_no-1];

now_no-=1;

}

sort();

break;

}

}

system("cls");

}

void find()/*查询函数*/

{

int i;

char str[20],as;

do

{

printf("输入要查询的学生姓名:");

fflush(stdin);

gets(str);

for(i=0;inow_no;i++)

if(!strcmp(stu[i].name,str))

{

printf("\t编号\t姓名\t性别\t成绩1\t成绩2\t成绩3\t平均值\n");

printf("\t%d\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\n",stu[i].no,stu[i].name,stu[i].sex,stu[i].score1,stu[i].score2,stu[i].score3,stu[i].ave);

}

printf("\t\t按任意键返回主菜单.");

fflush(stdin);

as=getch();

}

while(!as);

system("cls");

}

void modify()/*修改数据函数*/

{

int i;

char str[20],as;

printf("输入要修改的学生姓名:");

fflush(stdin);

gets(str);

for(i=0;inow_no;i++)

if(!strcmp(stu[i].name,str))

{

system("cls");

printf("\n\t\t输入修改学员信息\n");

printf("\n输入学生编号:");

fflush(stdin);

scanf("%d",stu[i].no);

printf("\n输入学员性别:");

fflush(stdin);

gets(stu[i].sex);

printf("\n输入学员成绩1:");

fflush(stdin);

scanf("%f",stu[i].score1);

printf("\n输入学员成绩2:");

fflush(stdin);

scanf("%f",stu[i].score2);

printf("\n输入学员成绩3:");

fflush(stdin);

scanf("%f",stu[i].score3);

printf("\n\n");

sort();

break;

}

system("cls");

}

哈希表C++实现电话号码查询系统源代码

HASH_TABLE* create_hash_table()

{

HASH_TABLE* pHashTbl = (HASH_TABLE*)malloc(sizeof(HASH_TABLE));

memset(pHashTbl, 0, sizeof(HASH_TABLE));

return pHashTbl;

}

c语言学生管理系统源代码

头文件:::

#ifndef H_STUDENT_HH

#define H_STUDENT_HH

#include "stdio.h"

#include "string.h"

#include "malloc.h"

#define LEN sizeof(struct message_student) /*一个结构体数组元素的长度*/

#define numsubs 5 /*学科数目*/

typedef struct message_student /*结构体定义*/

{

char number[6];

char name[20];

char sex[4];

float subject[numsubs];

float score;

float average;

int index;

}student;

extern int numstus; /*学生数目*/

extern student *pointer; /*指向结构体数组*/

extern int lens;

int menu_select(); /*函数声明*/

int openfile(student stu[]);

int findrecord(student stud[]);

int writetotext(student stud[]);

void welcome();

void display1();

void showtable();

void sort(student stu[]);

void deleterecord(student stu[],int i);

void addrecord(student stud[]);

void display(student stud[],int n1,int n2);

void amendrecord(student stud[]);

void count(student stud[]);

void sortnum(student stud[]);

void sortnum2(student stud[]);

void sortname(student stud[]);

void sortname2(student stud[]);

void sortcount(student stud[]);

void sortcount2(student stud[]);

void statistic(student stud[]);

void display1();

#endif

#include "head.h"

int menu_select()

{

char c;

printf("\n\n");

printf(" | 1. 增加学生记录 5.统计信息 |\n");

printf(" | 2. 查询学生记录 6.打开文件 |\n");

printf(" | 3. 修改学生记录 7.保存文件 |\n");

printf(" | 4. 学生纪录排序 8.显示记录 |\n");

printf(" | 0.退出系统 |\n");

printf("\n\n");

printf("请选择(0-8):");

c=getchar();

getchar();

return (c-'0');

}

#include "head.h"

int findrecord(student stud[]) /*查找信息*/

{

char str[2];

int i,num;

if(numstus==0)

{

printf("没有可被查找的记录\n");

return -1;

}

else

{

printf("以何种方式查找?\n1.学号\t2.姓名\t3.名次\n");

gets(str);

if(str[0]=='1') /*按学号查找*/

{

printf("请输入学号:");

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].number)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='2') /*按姓名查找*/

{

printf("请输入姓名:");

gets(str);

for(i=0;i=numstus;i++)

if(strcmp(str,stud[i].name)==0)

{

display(stud,i,i);

break;

}

else continue;

}

else if(str[0]=='3') /*按名次查找*/

{

printf("请输入名次:");

scanf("%d",num);

getchar();

for(i=0;i=numstus;i++)

if(num==stud[i].index)

{

display(stud,i,i);

break;

}

else continue;

}

if(inumstus)

{

printf("没有查找所要的信息。\n");

return -1;

}

return i;

}

}

#include"head.h"

int openfile(student stu[])

{

int i=0,j;

FILE *fp;

char filename[20],str[2];

if(numstus!=0)

{

printf("已经有记录存在,是否保存?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(stu);

}

printf("请输入文件名:");

gets(filename);

numstus=0;

if((fp=fopen(filename,"rb+"))==NULL)

{

printf("无法打开该文件\n");

return(-1);

}

fscanf(fp,"%d",numstus);

fgetc(fp);

while(inumstus)

{

fscanf(fp,"%s",stu[i].number);

fscanf(fp,"%s",stu[i].name);

fscanf(fp,"%s",stu[i].sex);

for(j=0;jnumsubs;j++)

fscanf(fp,"%f",stu[i].subject[j]);

fscanf(fp,"%f",stu[i].score);

fscanf(fp,"%f",stu[i].average);

fscanf(fp,"%d",stu[i].index);

i++;

}

fclose(fp);

printf("文件读取成功\n");

printf("是否显示纪录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

display(stu,0,numstus-1);

return(0);

}

#include "head.h"

void sort(student stud[])

{

int i,j=0;

char str[5];

student *p;

p=stud;

if(numstus==0)

{

printf("没有可供查询的记录!");

}

while(1)

{

for(i=0;;i++)

{

printf(" 请输入查询方式:");

printf("(直接输入回车则结束查询操作)\n");

printf("1.按照学号\t");

printf("2.按照姓名\t");

printf("3.按照名次\n");

gets(str);

if(strlen(str)==0) break;

if(str[0]=='1')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortnum2(p);

else

sortnum(p);

display(stud,0,numstus-1);

}

else if(str[0]=='2')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortname2(p);

else

sortname(p);

display(stud,0,numstus-1);

}

else if(str[0]=='3')

{

printf("请输入排序次序:\n");

printf("1.升序排列\t");

printf("2.降序排列\n");

gets(str);

if(str[0]=='1')

sortcount2(p);

else

sortcount(p);

display(stud,0,numstus-1);

}

else printf("请输入1~3");

printf("是否退出排序?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') break;

}

return;

}

}

void sortnum(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].number,stud[j].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortnum2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].number,stud[j+1].number)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j+1].name,stud[j].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortname2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(strcmp(stud[j].name,stud[j+1].name)0)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j+1].indexstud[j].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

void sortcount2(student stud[])

{

int i,j;

student temp;

student *p;

p=stud;

for(i=0;inumstus;i++)

for(j=0;jnumstus-i-1;j++)

{

if(stud[j].indexstud[j+1].index)

{

temp=*(p+j);

*(p+j)=*(p+j+1);

*(p+j+1)=temp;

}

}

}

#include"head.h"

void statistic(student stud[]) /*新增功能,输出统计信息*/

{

int i,j=0,k=0;

char c1,str[2];

float average[numsubs],sum=0;

if(numstus==0)

printf("没有可被查找的记录\n");

else

{

while(1)

{

printf("下面将统计考试成绩\n");

printf("请选择你要统计哪科的成绩 1.A\t2.B\t3.C\t4.D\t5.E\n");

c1=getchar();

printf("\t一共有个%d记录\n",numstus); /*总共记录数*/

switch(c1)

{

case '1':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[0];

if(stud[k].subject[0]stud[i].subject[0]) k=i;

if(stud[j].subject[0]stud[i].subject[0]) j=i;

}

average[0]=sum/numstus;

printf("\t科目A的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[0]);

printf("\t科目A的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[0]);

printf("\t科目A的平均分是 %5.2f\n",average[0]); /*平均分*/

break;

case '2':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[1];

if(stud[k].subject[1]stud[i].subject[1]) k=i;

if(stud[j].subject[1]stud[i].subject[1]) j=i;

}

average[1]=sum/numstus;

printf("\t科目B的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[1]);

printf("\t科目B的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[1]);

printf("\t科目B的平均分是 %5.2f\n",average[1]); /*平均分*/

break;

case '3':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[2];

if(stud[k].subject[2]stud[i].subject[2]) k=i;

if(stud[j].subject[2]stud[i].subject[2]) j=i;

}

average[2]=sum/numstus;

printf("\t科目C的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[2]);

printf("\t科目C的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[2]);

printf("\t科目C的平均分是 %5.2f\n",average[2]); /*平均分*/

break;

case '4':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[3];

if(stud[k].subject[3]stud[i].subject[3]) k=i;

if(stud[j].subject[3]stud[i].subject[3]) j=i;

}

average[3]=sum/numstus;

printf("\t科目D的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[3]);

printf("\t科目D的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[3]);

printf("\t科目D的平均分是 %5.2f\n",average[3]); /*平均分*/

break;

case '5':

for(i=0;inumstus;i++) /*循环输入判断*/

{

sum+=stud[i].subject[4];

if(stud[k].subject[4]stud[i].subject[4]) k=i;

if(stud[j].subject[4]stud[i].subject[4]) j=i;

}

average[4]=sum/numstus;

printf("\t科目E的最高分:\n"); /*最高分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[j].number,stud[j].name,stud[j].subject[4]);

printf("\t科目E的最低分是:\n"); /*最低分*/

printf("\t\t学号:%s 姓名:%s 分数:%.2f\n",stud[k].number,stud[k].name,stud[k].subject[4]);

printf("\t科目E的平均分是 %5.2f\n",average[4]); /*平均分*/

break;

default:printf("输入错误!请输入1~5之间的数\n");

}

sum=0;

getchar();

printf("是否继续进行统计?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y') ;

else break;

}

}

}

#include"head.h"

int writetotext(student stud[]) /*将所有记录写入文件*/

{

int i=0,j;

FILE *fp;

char filename[20];

printf("输入文件名称:");

gets(filename);

fp=fopen(filename,"w");

fprintf(fp,"%d\n",numstus);

while(inumstus)

{

fprintf(fp,"%s %s %s ",stud[i].number,stud[i].name,stud[i].sex);

for(j=0;jnumsubs;j++)

fprintf(fp,"%f ",stud[i].subject[j]);

fprintf(fp,"%f %f %d ",stud[i].score,stud[i].average,stud[i].index);

i++;

}

fclose(fp);

printf("已成功存储!\n");

display(stud,0,numstus-1);

numstus=0;

return 0;

}

#include"head.h"

void welcome()

{

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

printf("\t\t\t\t这是一个学生成绩管理系统\n\t\t\t\t 倾情奉献 欢迎使用!\n");

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

}

void showtable()

{

printf("---------------------------------------------------------------------------------------\n");

printf("学号\t姓名\t性别\tA\tB\tC\tD\tE\t总分\t平均分\t名次\n");

printf("---------------------------------------------------------------------------------------\n");

}

void display(student stud[],int n1,int n2)

{

int i;

showtable(); /*显示表头*/

for(i=n1;i=n2;i++)

printf("%s\t%s\t%s\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%.2f\t%d\t\n",stud[i].number,stud[i].name,stud[i].sex,stud[i].subject[0],stud[i].subject[1],stud[i].subject[2],stud[i].subject[3],stud[i].subject[4],stud[i].score,stud[i].average,stud[i].index);

/*通过循环输出数据*/

}

void display1()

{

printf("\t\t本系统由计应精英一组亲情制作\n\n");

printf("\t\t制作人员列表: (按比划)\n");

printf("\t\t王庆斌\t\t\t张威\n\t\t李智\t\t\t周在峰\n\t\t杨凯\t\t\t胡杨\n");

printf("\n\n");

getchar();

}

#include"head.h"

#includestring.h

void amendrecord(student stud[])

{

char str[5]; /*供用户输入*/

int i=-1,j;

if(numstus==0) /*没有记录返回*/

printf("没有可供修改的记录!");

while(i0)

{

i=findrecord(stud);

if(i=0)

{

printf("要删除这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

deleterecord(stud,i);

count(stud);

}

else

{

printf("确定要修改这个学生的信息吗?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

{

printf("下面请重新输入学生的信息:\n");

printf("请输入学号:");

gets(stud[i].number);

printf("请输入姓名:");

gets(stud[i].name);

printf("请输入性别(男/女 1/0):");

gets(str);

if(str[0]=='0')

strcpy(stud[i].sex,"女");

else

strcpy(stud[i].sex,"男");

stud[i].score=0;

printf("请按顺序输入成绩:");

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]);

stud[i].score+=stud[i].subject[j];

}

getchar();

stud[i].average=stud[i].score/numsubs;

}

count(stud);

}

display(stud,0,numstus-1);

}

printf("是否继续进行其他修改?(y/n)\n");

gets(str);

if(str[0]=='y'||str[0]=='Y')

i=-1;

else i=1;

}

}

void deleterecord(student stu[],int i) /*删除信息*/

{

int j;

while(i=0)

{

for(j=i;jnumstus;j++)

stu[j]=stu[j+1];

numstus--;

printf("删除成功!\n");

}

}

void count(student stud[])

{

int i,j;

for(i=0;inumstus;i++)

{

stud[i].index=1;

for(j=0;jnumstus;j++)

if(stud[j].scorestud[i].score)

stud[i].index++;

}

}

#include "head.h"

void addrecord(student stud[])

{

int i=0,j,num;

char str[5];

if(numstus!=0)

{

printf("已有记录存在是否覆盖?(y/n)\n");

gets(str);

if(str[0]=='Y'||str[0]=='y')

i=0;

else i=numstus;

}

printf("请输入增加的学生信息条目数:");

scanf("%d",num);

if(i==0)

numstus=num;

else numstus+=num;

if(numstuslens)

{

lens+=50;

pointer=(student *)realloc(pointer,lens*LEN);

}

printf("请输入学生信息:\n");

for(;inumstus;i++)

{

getchar();

printf("请输入学号:");

gets(pointer[i].number);

printf("请输入姓名:");

gets(pointer[i].name);

printf("请输入性别(男/女 1/0):");

gets(pointer[i].sex);

if(pointer[i].sex[0]=='0') strcpy(pointer[i].sex,"女");

else strcpy(pointer[i].sex,"男");

printf("请输入各科成绩:(按ABCDE的顺序):");

stud[i].score=0;

for(j=0;jnumsubs;j++)

{

scanf("%f",stud[i].subject[j]); /*计算总分*/

stud[i].score+=stud[i].subject[j];

}

stud[i].average=stud[i].score/numsubs; /*计算平均分*/

}

count(stud); /*附名次*/

display(stud,0,numstus-1);

getchar();

}#include "head.h"

int numstus;

int lens;

student *pointer;

void main()

{

int i=1;

char str[2];

lens=100;

pointer=(student *)malloc(lens*LEN); /*分配内存*/

numstus=0;

welcome(); /*欢迎界面*/

while(i0)

{

i=menu_select(); /*控制菜单*/

switch(i)

{

case 1:addrecord(pointer);break; /*增加学生信息*/

case 2:findrecord(pointer);break; /*查询学生信息*/

case 3:amendrecord(pointer);break; /*修改学生信息*/

case 4:sort(pointer);break; /*学生信息排序*/

case 5:statistic(pointer);break; /*统计信息*/

case 6:openfile(pointer);break; /*打开文件*/

case 7:writetotext(pointer);break; /*保存文件*/

case 8:display(pointer,0,numstus-1);break; /*显示记录*/

case 0:

if(numstus!=0) printf("是否保存当前记录?(y/n)");

gets(str);

if(str[0]=='y'||str[0]=='Y')

writetotext(pointer);

i=-1;break; /*退出系统*/

default:printf("请输入数字0~8:\n");i=1; /*输入错误*/

}

}

printf("\t\t欢迎再次使用本系统。\n\n");

display1();

}

自己一改就能用,给我加分哈!

打字不易,如满意,望采纳。

关于数据记录系统源代码和统计系统源码的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。

版权说明:如非注明,本站文章均为 AH站长 原创,转载请注明出处和附带本文链接;

本文地址:http://ahzz.com.cn/post/20022.html


取消回复欢迎 发表评论:

分享到

温馨提示

下载成功了么?或者链接失效了?

联系我们反馈

立即下载