C语言程序设计--班级档案管理系统

C语言程序设计--班级档案管理系统,第1张

给,已经编译运行确认了:

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

#include<conio.h>

#define N 10

int M=0

struct student

{

char num[13]

char name[20]

char sex

char address[30]

intage

}

typedef struct LB

{

struct student XINXI

struct LB *next

}LB_1,*LB_2

void CAIDANG()

{

printf(" \t \t \t (欢迎使用本班级档案管理系统)\t\t\t\t\n")

printf("★*★*★*★*★*★*★*★*★*★ 欢迎进入我们的系统 ★*★*★*★*★*★*★*★*★*★\n\n")

printf("1.录入学生资料\t\t\t\t\t4.查询学生信息\n\n")

printf("2.修改学生信息\t\t\t\t\t5.删除学生信息\n\n")

printf("3.保存学生信息\t\t\t\t\t0.退出档案系统\n\n")

printf("\n")

printf("★*★*★*★*★*★*★*★*★*★ 欢迎进入本系统 ★*★*★*★*★*★*★*★*★*★\n")

}

/*文本颜色*/

void color()

{

textbackground(8)

textcolor(9)

clrscr()

}

void Wrong()

{

printf("\n对不起您的输入错误!\n")

}

void SORRY()

{

printf("\n对不起该同学现没有任何信息!\n")

}

void printe(LB_1 *p)/* 本函数用于输出英文*/

{

printf(" %-2s %s\t %s\t%s\t %d\t \n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age)

}

/* 该函数用于定位链表中符合要求的接点,并返回该指针*/

LB_1 *Locate(LB_2 l,char findmess[],char nameornum[])

{

LB_1 *r

if(strcmp(nameornum,"num")==0) /* 按学号查询*/

{

r=l->next

while(r!=NULL)

{

if(strcmp(r->XINXI.num,findmess)==0)

return r

r=r->next

}

}

else if(strcmp(nameornum,"name")==0) /* 按姓名查询*/

{

r=l->next

while(r!=NULL)

{

if(strcmp(r->XINXI.name,findmess)==0)

return r

r=r->next

}

} return 0

}

/*以下是增加学生信息的函数*/

void TIANJIA(LB_2 l)

{

LB_1 *p,*r,*s

char num[13]

r=ls=l->next

while(r->next!=NULL) /*些处循环一直到最后*/

r=r->next

while(1)

{

printf(" 请输入添加的学生学号(输入'0'返回上一级菜单:)")

scanf("%s",num)

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

break

while(s)

{

if(strcmp(s->XINXI.num,num)==0)

{

printf("(必看提示):学号为'%s'的学生已有信息,若要修改请你输入'2 修改'!\n",num)

printe(s)

printf("\n")

return

}

s=s->next

} p=(LB_1 *)malloc(sizeof(LB_1))

strcpy(p->XINXI.num,num)

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

scanf("%s",p->XINXI.num)

getchar()

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

scanf("%s",p->XINXI.name)

getchar()

printf(" 请你输入性别:")

scanf("%s",p->XINXI.sex)

getchar()

printf(" 请你输入地址:")

scanf("%s",p->XINXI.address)

getchar()

printf(" 请你输入年龄:")

scanf("%d",&p->XINXI.age)

getchar()

/* 下面是把指针变量转到链表的下一个结点中以便循环的时候使用*/

p->next=NULL

r->next=p

r=pM=1

}

}

/*以下是删除学生信息的函数*/

void SHANCHU(LB_2 l)

{

int sel

LB_1 *p,*r

char findmess[20]

if(!l->next)

{

printf("\n******(必看提示):对不起,现文件中没有信息:所以您不能查询!\n")

return

}

printf("\n <必看提示><以学号删除请输入1\n><以姓名删除请输入2\n>PLEASE:")

scanf("%d",&sel)

if(sel==1)

{

printf("请输入要删除的学生的学号PLEASE:")

scanf("%s",findmess)

p=Locate(l,findmess,"num")

if(p)

{ r=l

while(r->next!=p)

r=r->next

r->next=p->next

free(p)

printf("\n*******(必看提示):该学生的信息已完全删除成功!\n")

M=1

}

else

SORRY()

}

else if(sel==2)

{

printf("请输入要删除的学生的姓名PLEASE:")

scanf("%s",findmess)

p=Locate(l,findmess,"name")

if(p)

{ r=l

while(r->next!=p)

r=r->next

r->next=p->next

free(p)

printf("\n******(必看提示):该学生信息已成功删除!\n")

M=1

}

else

SORRY()

}

else

Wrong()

}

/*以下是查询学生信息*/

void CHAXIONG(LB_2 l)

{ int sel

char findmess[20]

LB_1 *p

if(!l->next)

{ printf("\n******(必看提示):对不起,现文件中没有信息:所以您不能查询!\n")

return

}

printf("\n以学号查询请输入1:\n以姓名查询请输入2:\n以性别查询请输入3:\n以性别查询请输入4:\nPLEASE:")

scanf("%d",&sel)

if(sel==1)/*输入学号查询*/

{

printf("请你输入要查找的学号:")

scanf("%s",findmess)

p=Locate(l,findmess,"num")

if(p)

{ printf("\t\t\t\t查找结果\n")

printf(" 学号:%s\n姓名:%s\n性别:%s\n地址:%s\n年龄:%d\n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age)

}

else

SORRY()

}

if(sel==2) /* 输入姓名查询*/

{

printf("请你输入要查找的姓名:")

scanf("%s",findmess)

p=Locate(l,findmess,"name")

if(p)

{ printf("\t\t\t\t查找结果\n")

printf(" 学号:%s\n姓名:%s\n性别:%s\n地址:%s\n年龄:%d\n",p->XINXI.num,p->XINXI.name,p->XINXI.sex,p->XINXI.address,p->XINXI.age)

}

else

SORRY()

}

else

Wrong()

}

/*以下是修改学生信息的函数*/

void XIUGEI(LB_2 l)

{

LB_1 *p

long int i,j

char findmess[20]

if(!l->next)

{ printf("\n(必看提示):对不起,现文件中没有信息:所以您不能查询!\n")

return

}

for(i=1i<=2i++)

{

printf("\n\n\n\n\n")

printf("请输入密码:")

scanf("%s",&j)

if(j==2007)break

else

{if(j!=2007)

return(CAIDANG())

}

}

printf("请你输入要修改的学生学号:")

scanf("%s",findmess)

p=Locate(l,findmess,"num")

if(p)

{ printf("请你输入新学号(原来是%s):",p->XINXI.num)

scanf("%s",p->XINXI.num)

printf("请你输入新姓名(原来是%s):",p->XINXI.name)

scanf("%s",p->XINXI.name)

printf("请你输入新性别(原来是%s):",p->XINXI.sex)

scanf("%s",p->XINXI.sex)

printf("请你输入新地址(原来是%s):",p->XINXI.address)

scanf("%s",p->XINXI.address)

printf("请你输入新年龄(原来是%d):",p->XINXI.age)

scanf("%s",p->XINXI.age)

getchar()

M=1

}

else

SORRY()

}

/*保存在文件中*/

void BAOCONG(LB_2 l)

{

FILE* fp

LB_1 *p

int flag=1,count=0

fp=fopen("c:\\lyg","wr")

if(fp==NULL)

{

printf("\n=====>提示:重新打开文件时发生错误!\n")

exit(1)

}

p=l->next

while(p)

{

if(fwrite(p,sizeof(LB_1),1,fp)==1)

{ p=p->next

count++

}

else

{ flag=0

break

}

}

if(flag)

{ printf("\n 提示;正在保存文件 共保存了%d条信息\n",count)M=0

}

fclose(fp)

}

/*以下是主函数*/

void main()

{

LB_2 l/* 连表*/

FILE *fp/* 文件指针*/

int sellong i,j,d

char ch

char jian

int count=0

LB_1 *p,*r

color()

clrscr()

l=(LB_1*)malloc(sizeof(LB_1))

l->next=NULL

r=l

fp=fopen("C:\\lyg","rb")

if(fp==NULL)

{

printf("\t\t\t\t\n\n")

printf("\n")

printf(" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" Welcome to come to our system!!! \n"

" You can only inquire your own messages! If you want to see about other \n"

" students' messages,you need first to send inquirment to them,asking for \n"

" agreement,then you can visit his/her messages! \n"

" Have a good time! now you can come in!!! \n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" 注意:系统启动码为 : ILOVEMYSCHOOLVERYMUCH !!!\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n"

" *_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*_*\n")

printf("欢迎使用,本系统中现没有任何记录,您要先创建文件请按以下 *** 做进行PLEASE:\n")

printf("\n提示:文件还不存在,是否创建?(y/n)请做选择--\n")

printf("\n")

scanf("%c",&jian)

if(jian=='y'||jian=='Y')

{fp=fopen("C:\\lyg","wb")

clrscr()

}

{for(i=1i<=2i++)

{

printf("\n\n\n\n\n")

printf("请输入密码:")

scanf("%ld",&j)

if(j==2007)break

else

{if(j!=2007)return

}

}

}

exit(0)clrscr()

}

while(!feof(fp))

{

p=(LB_1*)malloc(sizeof(LB_1))

if(fread(p,sizeof(LB_1),1,fp)) /* 将文件的内容放入链表中*/

{

p->next=NULL

r->next=p

r=p/*把该结点放入链表中*/

count++

}

}

fclose(fp)/* 关闭文件*/

while(1)

{

CAIDANG()

printf("请你选择 *** 作:")

scanf("%d",&sel)

clrscr()

printf("\n\n\n")

if(sel==0)

{

if(M==1)

{ getchar()

printf("\n(必看提示):链表中的信息已经改动,如果确认把改动保存在文件中请做选择(y/n)?\n")

scanf("%c",&ch)

if(ch=='y'||ch=='Y')

BAOCONG(l)

}

breakclrscr()

}

switch(sel)

{

case 1: TIANJIA(l)break

case 4: CHAXIONG(l)break

case 3: BAOCONG(l)break

case 2: XIUGEI(l)break

case 5: SHANCHU(l)break

default: getchar()break

}

} end:

getchar()

}

#include <stdio.h>

#include <stdlib.h>

#define STU_NUM 10 /*宏定义学生的数量*/

struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/

{

char stu_id[20]/*学生学号;*/

float score[3]/*三门课成绩;*/

float total/*总成绩;*/

float aver/*平均成绩;*/

}

/*排序用一个函数来实现*/

void SortScore(student *stu,int n)

{

student stud

for(int i = 0i <n-1i++)

for(int j = i+1 j <nj++)

{

if(stu[i].total <stu[j].total)

{

stud = stu[i]

stu[i] = stu[j]

stu[j] = stud

}

}

}

int main( )

{

student stu[STU_NUM]/*创建结构体数组中有10个元素,分别用来保存这10个人的相关信息。*/

/*输入这十个学生的相关信息*/

for(int i = 0i<STU_NUMi++)

{

printf("请输入第%d个学生的学号:",i+1)

scanf("%s",&stu[i].stu_id)

printf("输入第%d个学生的数学成绩:",i+1)

scanf("%f",&stu[i].score[0])

printf("输入第%d个学生的英语成绩:",i+1)

scanf("%f",&stu[i].score[1])

printf("输入第%d个学生的计算机成绩:",i+1)

scanf("%f",&stu[i].score[2])

stu[i].total = stu[i].score[0]+stu[i].score[1]+stu[i].score[2]

stu[i].aver = stu[i].total/3

}

printf("\n")

SortScore(stu,STU_NUM)/*调用排序函数*/

/*输出排序后的各学生的成绩*/

for(i = 0 i <STU_NUMi++)

{

printf("序号: %d\t",i)

printf("学号:%s\t",stu[i].stu_id)

printf("数学:%f\t",stu[i].score[0])

printf("英语:%f\t",stu[i].score[1])

printf("计算机:%f\t",stu[i].score[2])

printf("平均成绩:%f\t",stu[i].aver)

printf("总分:%f\t",stu[i].total)

printf("\n\n")

}

return 0

}

注:(源程序中主要标识符含义说明)

#define STU_NUM 10 /*宏定义学生的数量*/

struct student /*定义一个结构体用来存放学生学号、三门课成绩、总分及平均成绩*/

{

char stu_id[20]/*学生学号;*/

float score[3]/*三门课成绩;*/

float total/*总成绩;*/

float aver/*平均成绩;*/

}

一.选择题

1、若a是float型变量,b是unsigned型变量,以下输入语句(A)是合法的。

A) scanf("%6.2f%d",&a,&b) B) scanf("%f%n",&a,&b)

C) scanf("%f%3o",&a,&b) D) scanf("%f%f",&a,&b)

2、设以下变量均为int类型,则值不等于7的表达式是( C)。

A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)

C) (x=6,x+1,y=6,x+y) D) (x=6,x+1,y=x,y+1)

3、设变量a是整型,b是实型,c是双精度型,则表达式10+'a'+b*c值的数据类型为( C)。

A) int B)float C)double D)不确定

4、设有说明:char wint xfloat ydouble z则表达式 w*x+z-y 值的数据类型为(D )。

A)float B) char C) int D) double

5、若给定条件表达式(x)? (a++):(a--), 则表达式x (没明白题的意思)。

A) 和(x==0)等价 B) 和(x==1)等价

C) 和(x!=0)等价 D) 和(x!=1)等价

6、C语言中while和do-while循环的主要区别是(A )

A) do-while的循环体至少无条件执行一次

B) while的循环控制条件比do-while的循控制条件严格

C) do-while允许从外部转到循环体内

D) do-while的循环体不能是复合句

7、若有说明:int a[10],则对a数组元素的正确引用是( D)

A) a[10] B)a[3.5] C)a(5) D)a[10-10]

8、设以下变量均为int类型,则值不等于7的表达式是(和上边题目重了 )。

A) (x=y=6,x+y,x+1) B) (x=y=6,x+y,y+1)

C) (x=6,x+1,y=6,x+y) D) (x=6,x+1,y=x,y+1)

9、设i和x 都是int类型,则以下for循环(A )。

for(i=0,x=0i<=9&&x!=876i++) scanf("%d",&x)

A) 最多执行者10次 B) 最多执行者9次

C) 是无限循环 D) 循环体一次也不执行

二、填空题(每小题2分,共10分)

1、以下程序的输出结果为 2,3,2,2。

main()

{int i,j,m,n

i=1j=2m=++in=j++

printf("%d,%d,%d,%d",i,j,m,n)

}

2、设 a 和 n 为整型变量,a=10,n=5,则表达式 a*=3+6 的值为90(你的题目有点问题,怎么没有n) 。

3、设x=1,y=2,z=3,则表达式 z||x>y&&11的值为1。

4、执行语句int a=3a+=a-=a*a后,a的值是-12 。

5、若 int i,j,k则计算表达式 x=(i=4,j=16,k=31)后,x的值为 31。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11079863.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-13
下一篇 2023-05-13

发表评论

登录后才能评论

评论列表(0条)

保存