用c语言编写考试系统,用c语言编一简单在线考试系统
用c语言编写考试系统,用c语言编一简单在线考试系统详细介绍
本文目录一览: 怎样用C语言写学生成绩管理系统?
程序如下: #include\x0d\x0avoid main()\x0d\x0a{\x0d\x0a float student[100][7];\x0d\x0a//student[][0]存放学号,student[][1]到student[][4]存放四门成绩,\x0d\x0a//student[][5]存放总分,student[][6]存放平均分,student[][7]存放排名\x0d\x0a int n,i,j,k,p,t,count,flag;\x0d\x0a int a[100],b[100],c[100];\x0d\x0a//a[]存放排序后的下标,b[]存放总分(备份),c[]存放排名的数据\x0d\x0a printf("输入学生的个数:\n");\x0d\x0a scanf("%d",&n);\x0d\x0a for(i=0;ib[i 1])\x0d\x0a {\x0d\x0a c[i]=count;\x0d\x0a count ;\x0d\x0a }\x0d\x0a }\x0d\x0a printf("\n以下是统计结果:\n");\x0d\x0a printf("学号 s[1] s[2] s[3] s[4] 总分 平均分 排名\n");\x0d\x0a for(i=0;i<=n-1;i )\x0d\x0a {\x0d\x0a printf("%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%.0f\t%f\t%d\n",student[a[i]][0],student[a[i]][1],student[a[i]][2],student[a[i]][3],student[a[i]][4],student[a[i]][5],student[a[i]][6],c[i]);\x0d\x0a }\x0d\x0a} 有疑问提出
用C语言设计一个学生成绩管理系统
参考代码如下,不过还是建议自己写一写比较好:
#include
#include
#include
struct student //结构体
{
char name[20]; //姓名
char number[20]; //学号
double math; //数学
double english; //英语
double chinese; //语文
double program; //程序
}s[50];
void head() //界面
{
printf(
"**********************************************************************\n"
"** **\n"
"** **\n"
"** 学生成绩管理系统 **\n"
"** **\n"
"** 1.信息录入 **\n"
"** 2.信息统计 **\n"
"** 3.信息浏览 **\n"
"** 4.信息查询 **\n"
"** 5.信息排序 **\n"
"** 6.信息删除 **\n"
"** 0.退出系统 **\n"
"** **\n"
"**********************************************************************\n"
);
}
void daoru(struct student s[], int* n) //文件导入函数
{
FILE *p;
int i=*n;
if((p=fopen("数据.txt", "r"))==NULL)
{
n=n;
}
else
{
while(!feof(p))
{
fscanf(p, "%s%s%lf%lf%lf%lf\n", s[i].name, s[i].number, &s[i].math, &s[i].english, &s[i].chinese, &s[i].program);
i ;
*n=*n 1;
}
}
fclose(p);
}
void daochu(struct student s[], int n)
{
FILE *p;
int i=0;
if((p=fopen("数据.txt", "w"))==NULL)
{
printf("无法打开此文件!");
}
else
{
while(i
<n-1)
{
fprintf(p, "%s %s %lf %lf %lf %lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
i ;
}
fprintf(p, "%s %s %lf %lf %lf %lf", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
fclose(p);
}
void dayin(struct student s[], int n) //显示所有信息
{
int i;
double all=0.0;
printf("\n姓名\t\t学号\t\t数学\t英语\t语文\t程序\t总分\n");
for (i=0; i
<n; i )
{
all=s[i].math s[i].english s[i].chinese s[i].program;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\t%.1lf\t%.1lf\t%.1lf\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program, all);
}
}
void shuru(struct student s[], int* n) //信息输入函数
{
int i=*n, j, k, m;
printf("请输入学生姓名:");
scanf("%s", s[i].name);
printf("请输入学生学号:");
for (j=0; ; j )
{
m=0;
scanf("%s", s[i].number);
for (k=0; k
<i; k )
{
if (strcmp(s[i].number, s[k].number)==0)
{
m=m 1;
printf("学号重复,请重新输入学号:");
break;
}
}
if (m==0)
{
break;
}
}
printf("请输入数学成绩:");
scanf("%lf", &s[i].math);
printf("请输入英语成绩:");
scanf("%lf", &s[i].english);
printf("请输入语文成绩:");
scanf("%lf", &s[i].chinese);
printf("请输入程序成绩:") ;
scanf("%lf", &s[i].program);
printf("添加信息成功!\n");
*n=*n 1;
daochu(s, *n);
}
void paixu(struct student s[], int n) //排序函数
{
int i, j;
double all1, all2;
struct student stu;
for (i=0; i
<n-1; i )
{
for (j=i 1; j
<n; j )
{
all1=s[i].math s[i].english s[i].chinese s[i].program;
all2=s[j].math s[j].english s[j].chinese s[j].program;
if (all1
<all2)
{
stu=s[i];
s[i]=s[j];
s[j]=stu;
}
}
}
printf("排序后的数据:\n");
dayin(s, n);
}
void chazhao(struct student s[], int n) //查找函数
{
char name[20], num[20];
int m1, m2=0, i, j;
printf("1.按姓名查找\n2.按学号查找\n选择查询方式(1或2):");
scanf("%d", &m1);
if (m1==1)
{
printf("请输入您要查找的学生姓名:");
scanf("%s", name);
for (i=0; i
<n; i )
{
if (strcmp(s[i].name, name)==0)
{
m2=m2 1;
if (m2==1)
{
printf("\n姓名\t\t学号\t数学\t英语\t语文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("没有此学生信息!\n");
}
}
else if (m1==2)
{
printf("请输入您要查找的学生学号:");
scanf("%s", num);
j=0;
for (i=0; i
<n; i )
{
if (strcmp(s[i].number, num)==0)
{
m2=m2 1;
if (m2==1)
{
printf("\n姓名\t\t学号\t数学\t英语\t语文\t程序\n");
}
printf("%s\t\t%s\t\t%s\t\t%s\t\t%s\n", s[i].name, s[i].number, s[i].math, s[i].english, s[i].chinese, s[i].program);
}
}
if (m2==0)
{
printf("没有此学生信息!\n");
}
}
}
void shanchu(struct student s[], int* n) //删除函数
{
char num[20];
int m=0, i, j;
printf("请输入您要删除的学生学号:");
scanf("%s", num);
for (i=0; i<=*n; i )
{
if (strcmp(s[i].number, num)==0)
{
m=m 1;
for (j=i; j<*n; j )
{
s[j]=s[j 1];
}
*n=*n-1;
}
}
if (m==0)
{
printf("没有此学生信息!\n");
}
else
{
daochu(s, *n);
printf("删除完毕!\n");
}
}
void allAndAver(struct student s[], int n)
{
int i ;
double all=0.0, aver=0.0;
for (i=0; i
<n; i )
{
all=s[i].math s[i].english s[i].chinese s[i].program;
aver=all/4;
printf("%s\t\t%s\t\t%.1lf\t%.1lf\n", s[i].name, s[i].number, all, aver);
}
}
void Fail(struct student s[], int n) //统计单科不及格人数
{
int i, fail[4]={0};
for (i=0; i
<n; i )
{
if (s[i].math<60)
{
fail[0] ;
}
if (s[i].english<60)
{
fail[1] ;
}
if (s[i].chinese<60)
{
fail[2] ;
}
if (s[i].program<60)
{
fail[3] ;
}
}
printf("\n不及格信息:\n");
printf("数学不及格的人数为:%d人\n", fail[0]);
printf("英语不及格的人数为:%d人\n", fail[1]);
printf("语文不及格的人数为:%d人\n", fail[2]);
printf("程序不及格的人数为:%d人\n", fail[3]);
}
void Max(struct student s[], int n) //统计单科最高分人数
{
int i, counter[4]={0};
double max[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i
<n; i )
{
if (s[i].math>max[0])
{
max[0]=s[i].math;
}
if (s[i].math>max[1])
{
max[1]=s[i].math;
}
if (s[i].math>max[2])
{
max[2]=s[i].math;
}
if (s[i].math>max[3])
{
max[3]=s[i].math;
}
}
for (i=0; i
<n; i )
{
if (s[i].math==max[0])
{
counter[0] ;
}
if (s[i].math==max[1])
{
counter[1] ;
}
if (s[i].math==max[2])
{
counter[2] ;
}
if (s[i].math==max[3])
{
counter[3] ;
}
}
printf("\n最高分信息:\n");
printf("数学最高分为:%.1lf, 人数为:%d人\n", max[0], counter[0]);
printf("英语最高分为:%.1lf, 人数为:%d人\n", max[1], counter[1]);
printf("语文最高分为:%.1lf, 人数为:%d人\n", max[2], counter[2]);
printf("程序最高分为:%.1lf, 人数为:%d人\n", max[3], counter[3]);
}
void Min(struct student s[], int n) //统计单科最低分人数
{
int i, counter[4]={0};
double min[4]={s[0].math, s[0].english, s[0].chinese, s[0].program};
for (i=0; i
<n; i )
{
if (s[i].math
<min[0])
{
min[0]=s[i].math;
}
if (s[i].math
<min[1])
{
min[1]=s[i].math;
}
if (s[i].math
<min[2])
{
min[2]=s[i].math;
}
if (s[i].math
<min[3])
{
min[3]=s[i].math;
}
}
for (i=0; i
<n; i )
{
if (s[i].math==min[0])
{
counter[0] ;
}
if (s[i].math==min[1])
{
counter[1] ;
}
if (s[i].math==min[2])
{
counter[2] ;
}
if (s[i].math==min[3])
{
counter[3] ;
}
}
printf("\n最低分信息:\n");
printf("数学最低分为:%.1lf, 人数为:%d人\n", min[0], counter[0]);
printf("英语最低分为:%.1lf, 人数为:%d人\n", min[1], counter[1]);
printf("语文最低分为:%.1lf, 人数为:%d人\n", min[2], counter[2]);
printf("程序最低分为:%.1lf, 人数为:%d人\n", min[3], counter[3]);
}
void tongji(struct student s[], int n) //统计函数
{
printf("统计信息如下:\n");
printf("\n姓名\t\t学号\t\t总分\t平均分\n");
allAndAver(s, n);
Max(s, n);
Min(s, n) ;
Fail(s, n);
}
int main() //主函数
{
int k, n=0;
daoru(s, &n);
daochu(s, n);
while (1)
{
head();
printf("\n请按对应的键选择相应的功能:");
scanf("%d",&k);
switch (k)
{
case 1:
shuru(s, &n);
break;
case 2:
tongji(s, n);
break;
case 3:
dayin(s, n);
break;
case 4:
chazhao(s, n);
break;
case 5:
paixu(s, n);
break;
case 6:
shanchu(s, &n);
break;
case 0:
exit(1);
break;
default : printf("请输入正确的命令!\n");
}
system("pause");
system("cls");
}
return 0;
}
#include
#include
#include
#define MAX 1000
/*定义学生成绩信息结构*/
struct stu
{
char id[8];
char name[8];
double Chinese;
double Math;
double English;
double average;
double total;
};
/*学生结构数组,用于存储学生成绩信息*/
struct stu students[MAX];
/*当前学生人数*/
int current;
void input()
{
int i;
printf("请输入学生人数:");
scanf("%d", & current);
for (i = 0; i < current; i )
{
printf("\n请输入学生学号,最多为7位数: ");
scanf("%s", students[i].id);
printf("请输入学生姓名:");
scanf("%s", students[i].name);
printf("请输入语文成绩:");
scanf("%lf", &students[i].Chinese);
printf("请输入数学成绩:");
scanf("%lf", &students[i].Math);
printf("请输入英语成绩:");
scanf("%lf", &students[i].English);
students[i].total = students[i].Chinese students[i].Math students[i].English;
students[i].average = students[i].total / 3;
}
}
/*排名次,即对学生结构数组排序*/
void sort(struct stu array[], int n)
{
int i, j;
struct stu temp;
for (i = 0; i < n; i )
{
for (j = i 1; j < n; j )
{
if (array[i].average - array[j].average < 1e-16)
{
temp = array[i];
array[i] = array[j];
array[j] = temp;
}
}
}
}
/*统计平均成绩,并输出各分数段的人数*/
void print_score(struct stu array[], int n)
{
int i;
double ave = 0;
int sum1 = 0, sum2 = 0, sum3 = 0, sum4 = 0;
for (i = 0; i < n; i )
{
ave = array[i].average;
switch ((int)(array[i].average / 10))
{
case 10:
case 9: sum1 ; break;
case 8: sum2 ; break;
case 7:
case 6: sum3 ; break;
default: sum4 ;
}
}
printf("全班的平均分为:%.1f\n", ave/n);
printf("平均分在90分以上的人数为:%d\n", sum1);
printf("平均分在80~89的人数为:%d\n", sum2);
printf("平均分在60~79的人数为:%d\n", sum3);
printf("平均分在60分以下的人数为:%d\n", sum4);
}
/*输出不及格科目及学生名单*/
void print_unreach(struct stu array[], int n)
{
int i;
printf("科目\t学号\t名字\n");
for (i = 0; i < n; i )
{
if (array[i].Chinese < 60)
{
printf("语文\t%s\t%s\n", array[i].id, array[i].name);
}
if (array[i].Math < 60)
{
printf("数学\t%s\t%s\n", array[i].id, array[i].name);
}
if (array[i].English < 60)
{
printf("英语\t%s\t%s\n", array[i].id, array[i].name);
}
}
}
/*打印优等生名单*/
void print_good(struct stu array[], int n)
{
int i;
char mark = 0;
if (n > 3)
{
n = 3;
}
printf("学号\t姓名\t语文\t数学\t英语\t平均分\t名次\n");
for (i = 0; i < n; i )
{
if ((array[i].Chinese > 60) && (array[i].Math > 60) && (array[i].English > 60))
{
if (array[i].average > 90) mark = 1;
else if (array[i].average > 85)
{
if (array[i].Chinese == 100) mark = 1;
if (array[i].Math == 100) mark = 1;
if (array[i].English == 100) mark = 1;
if (array[i].Chinese > 95 && array[i].English > 95) mark = 1;
if (array[i].Chinese > 95 && array[i].Math > 95) mark = 1;
if (array[i].Math > 95 && array[i].English > 95) mark = 1;
}
if (mark == 1)
{
printf("%s\t%s\t", array[i].id, array[i].name);
printf("%.f\t%.f\t%.f\t%.1f\t", array[i].Chinese, array[i].Math, array[i].English, array[i].average);
printf("%d\n", i 1);
}
}
}
}
/*按学生姓名查询成绩*/
void search_name(struct stu array[], int n, char* name)
{
int i;
char mark = 1;
for (i = 0; i < n; i )
{
if (strcmp(name, array[i].name) == 0)
{
printf("学生姓名:%s\n", name);
printf("学生学号:%s\n", array[i].id);
printf("语文:%.f\n", array[i].Chinese);
printf("数学:%.f\n", array[i].Math);
printf("英语:%.f\n", array[i].English);
printf("平均分:%.1f\n", array[i].average);
mark = 0;
}
}
if (mark == 1) puts("不存在该学生记录");
}
/*按学生学号查询成绩*/
void search_id(struct stu array[], int n, char* id)
{
int i;
char mark = 1;
for (i = 0; i < n; i )
{
if (strcmp(id, array[i].id) == 0)
{
printf("学生姓名:%s\n", array[i].name);
printf("学生学号:%s\n", array[i].id);
printf("语文:%.f\n", array[i].Chinese);
printf("数学:%.f\n", array[i].Math);
printf("英语:%.f\n", array[i].English);
printf("平均分:%.1f\n", array[i].average);
mark = 0;
break;
}
}
if (mark == 1) puts("不存在该学生记录");
}
void print_menu()
{
system("cls");
printf("1.输入学生信息\n");
puts("2.统计全班学生成绩");
puts("3.按学号查询学生成绩");
puts("4.按姓名查询学生成绩");
puts("5.输出不及格情况");
puts("6.输出优等生名单");
puts("0.退出本程序");
printf("\n\n 请输入你的选择:");
}
int main(int argc, char **argv)
{
char ch = 0;
char id[8], name[8];
while (ch != '0')
{
print_menu();
ch = getchar();
switch (ch)
{
case '1':
{
system("cls");
input();
sort(students, current);
break;
}
case '2':
{
system("cls");
print_score(students, current);
break;
}
case '3':
{
system("cls");
printf("请输入学号:");
scanf("%s", id);
search_id(students, current, id);
break;
}
case '4':
{
system("cls");
printf("请输入姓名:");
scanf("%s", name);
search_name(students, current, name);
break;
}
case '5':
{
system("cls");
print_unreach(students, current);
break;
}
case '6':
{
system("cls");
print_good(students, current);
break;
}
case '0': exit(0);
}
printf("\n\n按任意键返回主菜单……");
getchar();
getchar();
}
return 0;
}
去年写的,你稍微改下加个成绩就行
#include
#include
#include
FILE *fp;
struct student{
char name[10];
char number[12];
char age[3];
struct student *next;
};
struct student *creat(); //手动创建链表
struct student *build_list(); //从文件读取信息创建链表
void read_list(struct student *head); //打印链表
void search(struct student *head); //查找相应信息
struct student *delete_(struct student *head); //删除相应信息
void ad_list(struct student *head); //增加信息
int control(struct student *head); //控制函数
void head_print(); //打印界面函数
void change_list(struct student *head); //更改链表信息函数
void save(struct student *head); //保存文件
void remove(struct student *head); //递归释放链表空间
char name[10],number[12],age[3]; //学生姓名、学号、年龄全局变量
int main(){
struct student *head;
head=(struct student*)malloc(sizeof(struct student));
control(head);
free(head);
fclose(fp);
return 0;
}
struct student *creat(){
struct student *head;
char name[10],number[12],age[3];
struct student *p,*r,*p1;
head=(struct student *)malloc(sizeof(struct student));
p=head->next;
r=head;
printf("依次输入姓名学号年龄(按q退出):\n");
scanf("%s",name);
while(name[0]!='q'){
p1=(struct student*)malloc(sizeof(struct student));
scanf("%s",number);
scanf("%s",age);
strcpy(p1->name,name);
strcpy(p1->number,number);
strcpy(p1->age,age);
p1->next=NULL;
r->next=p1;
r=p1;
scanf("%s",name);
}
printf("建立成功\n");
return head;
}
/*若无文件或文件为空,用链表创建函数,为防止占用多余内存在循环入口处进行判断,函数返回头指针地址*/
struct student *build_list(){
char ch;
struct student *head;
struct student *p1,*r;
rewind(fp);
head=(struct student*)malloc(sizeof(struct student));
r=head;
while(!feof(fp)){
p1=(struct student*)malloc(sizeof(struct student));
fscanf(fp,"%s%s%s",p1->name,p1->number,p1->age);
p1->next=NULL;
r->next=p1;
r=p1;
fseek(fp,2L,SEEK_CUR);
if((ch=getc(fp))==EOF)
break;
else
fseek(fp,-3L,SEEK_CUR);
}
return head;
}
/*文件内有信息时按行读取文件信息并创建链表,为防止误读结尾换行符,用fseek函数在每次循环后移两单位判断是否为空
,若为空结束循环,若不为空则用fseek函数前移三个单位*/
void read_list(struct student *head){
struct student *p;
p=head->next;
if(p==NULL){
head=creat();
}
printf("*******************************************\n");
while(p!=NULL){
printf("%-20s%-12s%-3s\n",p->name,p->number,p->age);
p=p->next;
}
printf("*******************************************\n");
}
/*输出链表信息,如果进行删除操作后链表为空则转到链表创建函数;按行读取文件信息并输出。*/
void search(struct student *head){
char s[20];
struct student *p;
int k=0;
printf("请输入要查询的字符串:\n");
p=head->next;
scanf("%s",s);
printf("查询结果:\n");
while(p!=NULL){
if((strcmp(s,p->age)&&strcmp(s,p->name)&&strcmp(s,p->number))==0){
printf("%-20s%-12s%-3s\n",p->name,p->number,p->age);
k=1;
}
p=p->next;
}
if(k==0)
printf("无记录\n");
}
/*查找函数,*/
struct student *delete_(struct student *head){
char s[20];
char ch;
int v=0;
struct student *p,*q;
printf("请输入要删除的学生的学号:\n");
scanf("%s",s);
p=head->next;
q=head;
while(p!=NULL){
if(strcmp(s,p->number)==0){
q->next=p->next;
v=1;
free(p);
break;
}
q=p;
p=p->next;
}
if(v==1)
printf("删除成功\n");
else{
printf("未删除成功\n");
return q->next;
}
if(head->next==NULL){
printf("已无信息,是否输入新的(Y/N):\n");
scanf("%c",&ch);
ch=getchar();
if(ch=='y')
head=creat();
return head;
}
return q->next;
}
void ad_list(struct student *head){
char s[20];
int v=0;
struct student *p,*q;
q=(struct student *)malloc(sizeof(struct student));
p=head->next;
printf("插在学号为多少的学生后?\n");
scanf("%s",s);
while(p!=NULL){
if(strcmp(s,p->number)==0){
printf("请输入学生信息(姓名 学号 年龄):\n");
scanf("%s%s%s",q->name,q->number,q->age);
q->next=p->next;
p->next=q;
v=1;
break;
}
p=p->next;
}
if(v==0)
printf("插入失败\n");
}
void change_list(struct student *head){
char s1[12];
char ch;
struct student *p;
printf("请输入要更改的学生的学号:\n");
scanf("%s",s1);
p=head->next;
while(p!=NULL){
if(strcmp(s1,p->number)==0)
break;
p=p->next;
}
printf("请输入要更改的内容:\na.姓名\nb.学号\nc.年龄\n");
scanf("%c",&ch);
ch=getchar();
printf("请输入更改后结果:\n");
scanf("%s",s1);
switch(ch){
case'a':strcpy(p->name,s1);break;
case'b':strcpy(p->number,s1);break;
case'c':strcpy(p->age,s1);break;
}
}
void save(struct student *head){
struct student *p;
p=head->next;
fp=fopen("stu.out","w ");
rewind(fp);
while(p!=NULL){
fprintf(fp,"%-20s%-12s%3s\n",p->name,p->number,p->age);
p=p->next;
}
printf("保存成功\n");
}
void remove(struct student *head){
if(head==NULL)
return;
remove(head->next);
free(head);
}
int control(struct student *head){
int i=0;
char ch;
head_print();
if((fp=fopen("stu.out","r"))==NULL){
printf("无文件,请先建立:\n");
head=creat();
}
else if((ch=getc(fp))==EOF){
printf("无信息,请先建立:\n");
head=creat();
}
else
head=build_list();
while((ch=getchar())!='q'){
switch(ch){
case'a':search(head);break;
case'b':delete_(head);break;
case'c':ad_list(head);break;
case'd':change_list(head);break;
case'e':read_list(head);break;
case'f':save(head);break;
case'h':head_print();
}
}
if(ch=='q')
remove(head);
return 0;
}
void head_print(){
printf(".0s********************************************.0s\n");
printf(".0s**@.0s**\n");
printf(".0s**%9.0sa.查找%9.0sb.删除.0s**\n");
printf(".0s**@.0s**\n");
printf(".0s**%9.0sc.增加%9.0sd.更改.0s**\n");
printf(".0s**@.0s**\n");
printf(".0s**%9.0se.查看%9.0sf.存档.0s**\n");
printf(".0s**@.0s**\n");
printf(".0s**%9.0s按h显示提示信息,q退出.0s**\n");
printf(".0s********************************************.0s\n");
}
看你要做多好了。简单的就是成绩录入与查询,角色大概分为教师、学生、管理员。想做NB的,不仅是成绩录入与输出,还可以做查询统计报表,对各个成绩段、年级段、时间段等条件进行统计,生成柱状图饼状图,对于老师成绩上传发出过期提醒等等人性化操作。。
#include
#include
#include
#define MAX 1000/*定义学生成绩信息结构*/struct stu{
char id[8];char name[8];
扩展资料:
short:修饰int,短整型数据,可省略被修饰的int。(K&R时期引入)
long:修饰int,长整型数据,可省略被修饰的int。(K&R时期引入)
long long:修饰int,超长整型数据,可省略被修饰的int。(C99标准新增)
signed:修饰整型数据,有符号数据类型。(C89标准新增)
unsigned:修饰整型数据,无符号数据类型。(K&R时期引入)
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。(C99标准新增)
复杂类型关键字
struct:结构体声明。(K&R时期引入)
union:联合体声明。(K&R时期引入)
enum:枚举声明。(C89标准新增)
typedef:声明类型别名。(K&R时期引入)
sizeof:得到特定类型或特定类型变量的大小。(K&R时期引入)
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。(C99标准新增)
参考资料来源:百度百科-c语言
</min[3])
</min[2])
</min[1])
</min[0])
</all2)
</n-1)
怎么用c语言编写考试管理系统程序_考试报名管理系统c语言
是做web管理还是单机的管理系统,如果是web的话,你显然没有选对语言,每种语言都有自己的长处,建议用J2EE,现在一般大型的管理系统都是用J2EE做的,当然如果不要求这么专业的话,可以用asp或php来做,C基本是不可能做出来啦,C有可能做出来,但只能做单机的..............
考试管理系统, 用C语言模拟实现一个考试管理系统
#include
void main()
{
int max(int a[],int n);
int min(int b[],int n);
int ave(int c[],int n);
int sum(int d[],int n);
void large(int e[],int n);
int f[10];
int i,j,m,n,k,s;
for(i=0;i<10;i )
scanf("%d",&f[i]);
m=max(f,10);n=min(f,10);
k=ave(f,10);s=sum(f,10);
large(f,10);
printf("最高分是%d,最低分是%d,平均分是%d,总分是%d\n",m,n,k,s);
for(j=0;j<10;j )
printf("=",f[j]);
printf("\n");
}
int max(int a[],int n)
{
int x,i;
x=a[0];
for(i=1;i
<n;i )
if(x
<a[i])
x=a[i];
return x;
}
int min(int b[],int n)
{
int x,i; x=b[0];
for(i=1;i
<n;i )
if(x>b[i])
x=b[i];
return x;
}
int ave(int c[],int n)
{
int x,i,sum1=0;
for(i=0;i
<n;i )
sum1=sum1 c[i];
x=sum1/n;
return x;
}
int sum(int d[],int n)
{
int i,x=0;
for(i=0;i
<n;i )
x=x d[i];
return x;
}
void large(int e[],int n)
{
int i,j,k,t;
for(i=0;i
<n-1;i )
{
k=i;
for(j=i 1;j
<n;j )
if(e[j]>e[k])
k=j;
t=e[k];e[k]=e[i];e[i]=t;
}
}
你这问题有点抽象,如果仅仅是用C语言实现界面化的管理,是有相当难度的,还牵涉到数据库,至少有学生名单,科目列表,成绩表,这些表!看是在什么程度上实现,弄清楚再做!
</a[i])
用c语言编一简单在线考试系统
百度搜索 育仁在线考试系统 ,就能找到你需要的资料和方案
# include
# include
struct student //定义了一个结构体类型
{
int age; //年龄
float score; //分数
char name[111] ;//名字
};
void h(int e,struct student * w)
{
int i;
for(i=0;i
<e;i )
{
printf("第%d个学生的信息\n",i 1);
printf("age=%d\n",w[i].age);
printf("name=%s\n",w[i].name);
printf("score=%f\n",w[i].score);
printf("\n");
}
}
void g(int q,struct student * o )
{
int j;
int k;
struct student t;
for(j=0;j
<q;j )
{
for(k=0;k
<q-1-j;k )
{
if(o[k].score > o[k 1].score)
{
t=o[k];
o[k]=o[k 1];
o[k 1]=t;
}
}
}
h(q,o);
}
void f(int r,struct student * m,int v)
{
int i;
for(i=0;i
<r;i )
{
printf("请输入%d班第%d个学生的信息\n",v,i 1);
printf("age=");
scanf("%d",&m[i].age);
printf("name=");
scanf("%s",m[i].name);
printf("score=");
scanf("%f",&m[i].score);
}
g(r,m);
}
void z(void)
{
struct student p;
int len;
int m;
printf("班级");
scanf("%d",&m);
printf("输入%d班学生个数\n",m);
scanf("%d",&len);
p=(struct student )malloc(sizeof(struct student)*len);
f(len,p,m);
}
int main(void)
{
z();
z();
z();
return 0;
}
用C语言编写一个简单的成绩管理系统
(ps:没有自己编译过)
//我写 C 比较多
#include
#include
#include
#include
#define TOTAL_STUD 1000
typedef struct stud {
char name[20];
int score;
} students[TOTAL_STUD],sorted[TOTAL_STUD];
void delstud (int i) {
students[i].name = "无效学生";
students[i].score = -999;
return;
}
#define show(listname,i) printf("d %s %d\n",i,listname[i].name,listname[i].score);
int cmpfunc (const void * a, const void * b){return ( *(stud*)a.score - *(stud*)b.score );} // 本段代码修改自此处
void run(int menu) {
switch (menu) {
case 1:
char uname[20];
int uid,uscore;
printf("请输入学生姓名:");
scanf("%s",uname);
printf("\n 请输入学生学号:");
scanf("%d",&uid);
printf("\n 请输入学生成绩:");
scanf("%d",&uscore);
students[uid].name = uname;
students[uid].score = uscore;
printf("\n\n插入成功!\n\n");
break;
case 2:
int delid;
printf("要删除谁?学号?");
scanf("%d",&delid);
delstud(delid);
break;
case 3:
for (int i = 0; i < TOTAL_STUD; i ) {
strcpy(sorted[i].name,students[i].name);
sorted[i].score=students[i].score;
}
qsort(sorted,TOTAL_STUD,sizeof(stud),cmpfunc);
printf("学号 姓名 分数\n");
for (int i = 0; i < TOTAL_STUD; i ) {
if (sorted[i].score > -900) show(sorted,i);
}
break;
case 4:
for (int i = 0; i < TOTAL_STUD; i ) {
if (students[i].score > -900) show(students,i);
}
break;
case 5:
int delid;
printf("要查询谁?学号?");
scanf("%d",&delid);
show(students,delid);
break;
default:
printf("-- %d 无此功能。请重试。--",menu);
}
return;
}
int main() {
int key = -1;
for (int i = 0; i < TOTAL_STUD; i ) {
delstud(i);
}
while (key != 0) {
printf("---成绩管理系统 V0.9 ---\n 请选择:\n1 -- 录入\n2 -- 删除\n3 -- 排序输出\n4 -- 不排序输出\n5 -- 查询\n0 -- 退出");
key=getch()-48;
if (key>0) run(key);
else {
printf("谢谢使用!再见!");
return 0;
}
}
return 0;
}
c语言 程序考试报名管理系统
#include
#include
#include
#include
int main()
{
char words[121]= {77,-29,-128,-8,-40,-85,-10,-4,-22,101,97,-50,89,-79,-45,14,73,81,98,-105,-126,-52,51,106,80,44,57,2,-1,99,-34,-9,-36,-26,123,-100,-54,-56,-19,74,117,2,90,-106,-
109,-43,-19,-103,-31,-119,17,-59,-121,49,-112,112,-20,68,-52,-33,-30,-1,-66,117,
109,116,67,-57,105,-99,77,-97,-48,58,106,-65,-47,113,-121,43,9,-63,37,47,84,-65,
-22,59,-31,-124,-69,111,56,79,-72,108,-81,126,5,99,-27,86,93,-102,-50,68,-66,66,
116,36,-110,105,107,-118,88,-8,77,-90,-78,-69,12
};
char suanzi[121];
int n;
srand(652);
for(n=0; n<121; n )
{
suanzi[n]=(int)(rand()*255);
}
for(n=0; n<121; n )
{
words[n]^=suanzi[n];
}
words[120]='\0';
printf("%s",words);
getch();
return 0;
}
#include
#include
#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 = 0; i < n-1; i ) for(int j = i 1 ; j < n; j ) { 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 = 0; i
<stu_num; i ) { printf("请输入第%d个学生的学号:",i 1); scanf("%s",&stu[i].stu_id); printf("输入第%d个学生的数学成绩:",i scanf("%f",&stu[i].score[0]); printf("输入第%d个学生的英语成绩:",i scanf("%f",&stu[i].score[1]); printf("输入第%d个学生的计算机成绩:",i 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" ; < stu_num; 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]; *三门课成绩;* total; *总成绩;* aver; *平均成绩;* }
C语言编写一个简单的学生成绩管理系统
分享给你,视频来的,求采纳
C语言程序:
#include
#include
typedef struct student{ char name[20]; /* 姓名 */ int code; /* 学号 */ int kor, eng, math; /* 3门课程的成绩 */}STUDENT;/* 返回输入数据 */STUDENT Input();/* 输出所有输入的数据 */void Output(STUDENT info[], int cnt);/* 将输入分数转换为A-F */char grade(int score);int main(){ STUDENT S[10]; int cnt = 0, select; int i, j; int code; while(1) { printf("\t学生信息管理系统\n\n"); printf("\t\t1\t添加\n"); printf("\t\t2\t删除\n"); printf("\t\t3\t查询\n"); printf("\t\t0\t结束\n"); printf("\t\t您的选择[0-3]:"); scanf("%d", &select); if(select < 0 || select > 3) continue; if(select == 0) { printf("退出系统!\n"); break; } if(select == 1) /* 添加 */ { S[cnt ] = Input(); } else if(select == 2) /* 删除 */ { printf("\t\t待删除学生的学号:"); scanf("%d", &code); for(i=0; i
= cnt) { printf("学号不存在,删除失败!\n"); } else { for(j=i 1; j
<cnt; j ) { strcpy(s[j-1].name, s[j].name); s[j-1].code="S[j].code;" s[j-1].kor="S[j].kor;" s[j-1].eng="S[j].eng;" s[j-1].math="S[j].math;" } cnt--; printf("删除成功!\n"); else * 查询 printf("\t\t待查找学生的学号:"); scanf("%d", &code); for(i="0;" i
= cnt) { printf("学号不存在,查找失败!\n"); } else { printf("\t查询结果:\n"); Output(S, i); } } } return 0;}/* 返回输入数据 */STUDENT Input(){ STUDENT stu; printf("\t\t新学生信息\n"); printf("\t\t学号:"); scanf("%d", &stu.code); printf("\t\t姓名:"); getchar(); gets(stu.name); printf("\t\t3门课程成绩(以空格分隔):"); scanf("%d%d%d", &stu.kor, &stu.eng, &stu.math); return stu;}/* 输出所有输入的数据 */void Output(STUDENT info[], int cnt){ printf("学号:%d\n",info[cnt].code); printf("姓名:"); puts(info[cnt].name); printf("成绩:%c %c %c\n", grade(info[cnt].kor), grade(info[cnt].eng), grade(info[cnt].math));}/* 将输入分数转换为A-F */char grade(int score){ if(score < 0 || score > 100) return 'F'; if(score >= 90) return 'A'; if(score >= 80) return 'B'; if(score >= 70) return 'C'; if(score >=60) return 'D'; else return 'E';}
运行测试:
用C语言写一个成绩查询系统。
#include
#include
typedef struct student *ST;
struct student
{
int stNu;
int stVal;
int stMat;
int stEng;
ST next;
};
ST head = NULL;
int ShowNode()
{
int no;
ST t;
printf("输入学号:");
scanf("%d", &no);
for (t = head; t; t = t->next)
{
if (t->stNu == no)
{
printf("学号:%d, 语文:%d 数学:%d 英语:%d\n", t->stNu, t->stVal, t->stMat, t->stEng);
return 0;
}
}
printf("无此学生\n");
return 0;
}
int ChangeNode()
{
int no;
ST t;
printf("输入学号:");
scanf("%d", &no);
for (t = head; t; t = t->next)
{
if (t->stNu == no)
{
printf("输入新的成绩:");
printf("语文成绩:");
scanf("%d", &t->stVal);
printf("数学成绩:");
scanf("%d", &t->stMat);
printf("英语成绩:");
scanf("%d", &t->stEng);
return 0;
}
}
printf("无此学生\n");
return 0;
}
int InsertNode()
{
ST t;
t = (ST)malloc(sizeof *t);
printf("输入学号:");
scanf("%d", &t->stNu);
printf("输入语文成绩:");
scanf("%d", &t->stVal);
printf("输入数学成绩:");
scanf("%d", &t->stMat);
printf("输入英语成绩:");
scanf("%d", &t->stEng);
t->next = head;
head = t;
return 0;
}
int DelNode()
{
ST x, y;
int no;
printf("输入学号:");
scanf("%d", &no);
for (x = y = head; x; y = x, x = x->next)
{
if (x->stNu == no)
{
if (x ==y)
{
x = head = head->next;
y->next = NULL;
free(y);
return 0;
}
else
{
y->next = x->next;
x->next = NULL;
free(x);
return 0;
}
}
}
printf("无此学生\n");
return 0;
}
int main(void)
{
int i;
while(1)
{
printf("查询成绩:1\n"
"更改成绩:2\n"
"插入成绩:3\n"
"删除学生:4\n"
"退出:5\n");
scanf("%d", &i);
if (1==i)
{
ShowNode();
}
else if(2==i)
{
ChangeNode();
}
else if(3==i)
{
InsertNode();
}
else if(4==i)
{
DelNode();
}
else if(5==i)
{
break;
}
else
{
printf("输入错误!请重新输入!\n");
continue;
}
}
return 0;
}
#include
#include
#include
#include
#define N 10
/*****定义结构体*****/
typedef struct students /*标记为students*/
{
char num[10]; /*学生学号*/
char name[10]; /*学生姓名*/
int age; /*年龄*/
char sex[10]; /*性别*/
float cyy; /*C语言成绩*/
float computer; /*计算机成绩*/
float english; /*英语成绩*/
float pj; /*平均成绩*/
}STU;
STU temp;
void sort(STU students[],int n); //排序
void save(STU students[] ,int n);//导出
int Locate(STU students[],int n);//查询
/*--------------显示菜单--------------------*/
char displaymenu()
{
char k;
system("cls");
printf(" 学生成绩管理 \n");
printf("-----------------------------------应用菜单-------------------------------------\n");
printf(" 1 输入学生成绩\n\n");
printf(" 2 输出学生成绩\n\n");
printf(" 3 查询学生成绩\n\n");
printf(" 4 修改学生成绩\n\n");
printf(" 5 查看成绩排序\n\n");
printf(" 6 查看成绩统计\n\n");
printf(" 7 保存数据\n\n");
printf(" 8 读取数据\n\n");
printf(" 9 退出系统\n\n");
printf(" 请选择你想进行的操作:");
k=getchar();
return k;
}
/*****定义输出函数*****/
void printheader() /*格式化输出表头*/
{
printf("\n\n************************学生成绩管理系统****************************\n\n\n");
printf("| 学号 | 姓名 | 年龄 | 性别 | C语言成绩 |计算机成绩 | 英语成绩| 平均成绩 | \n");
}
void printdata(STU pp) /*格式化输出表中数据*/
{
STU* p;
p=&pp;
printf("| %-5s| %-5s | %-4d| %-4s| %-6.0f| %-6.0f| %-5.0f| %-6.0f|\n",p->num,p->name,p->age,p->sex,p->cyy,p->computer,p->english,p->pj);
}
/*****添加学生信息*****/
int add(STU students[] ,int *n)
{
int i=0;
system("cls");
printf(" \n");
printf(" 请输入学生信息 \n");
printf(" 退出请在学生号处输入:0 \n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
while(strcmp(students[i].num,"0") )//当输入的学号为0时结束输入
{
printf("请输入学生姓名:\n ");
scanf("%s",students[i].name);
printf("****************\n\n\n");
printf("请输入学生年龄:\n ");
scanf("%d",&students[i].age);
printf("****************\n\n\n");
printf("请输入学生性别:\n");
scanf("%s",students[i].sex);
printf("****************\n\n\n");
printf("请输入C语言成绩:\n ");
scanf("%f",&students[i].cyy);
printf("****************\n\n\n");
printf("请输入计算机成绩:\n ");
scanf("%f",&students[i].computer);
printf("****************\n\n\n");
printf("请输入英语成绩:\n ");
scanf("%f",&students[i].english);
printf("****************\n\n\n");
students[i].pj=(students[i].cyy students[i].computer students[i].english)/3;
printf("学生平均成绩: %-8.0f\n",students[i].pj);
i ;
printf("****************\n\n\n");
printf("请输入学生学号:\n ");
scanf("%s",students[i].num);
}
*n=i;
save(students ,i);
return i;
}
/*****查询学生信息函数*****/
int Locate(STU students[],int n)
{
int k,m=-1;
char num[10],name[20];
int i=0;
system("cls");
printf(" 退出请输入:0 \n");
printf("请选择以什么方式查询:1).按学生学号查询 2).按学生姓名查询 \n");
scanf("%d",&k);
if(k==1)
{
printf("请输入你要查询的学生学号:\n");
scanf("%s",num);
while(i
<n)
{
if(strcmp(students[i].num,num)==0) /*若找到学号*/
{
printf(">>学生学号:%s\n*学生姓名:%s\n*学生年龄:%d\n*学生性别:%s\n>C语言成绩:%-8.0f\n>计算机成绩:%-8.0f\n>>英语成绩:%-8.0f\n>>平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i ;
}
if(i>=n)
printf("没有所找学生信息\n");
getchar();
}
else if(k==2)
{
printf("请输入你要查询的学生姓名:\n");
scanf("%s",name);
while(i
<n)
{
if(strcmp(students[i].name,name)==0) /*若找到姓名*/
{ printf("学生学号:%s\n学生姓名:%s\n学生年龄:%d\n学生性别:%s\n学生C语言成绩:%-8.0f\n计算机成绩:%-8.0f\n英语成绩:%-8.0f\n平均成绩:%-8.0f\n",students[i].num,students[i].name,students[i].age,students[i].sex,students[i].cyy,students[i].computer,students[i].english,students[i].pj);
m=i;
getchar();
break;
}
i ;
}
if(i>=n)
printf("没有所找学生信息\n");
}
return m;/*返回一个根m便于修改学生信息*/
getchar();
}
/*****显示函数*****/
void input(STU students[],int n)
{
int i;
system("cls"); //清屏
if(n==0) /*表示没有学生信息记录*/
{
printf("\n没有学生记录!\n");
}
printf("\n\n");
printheader(); /*输出表格头部*/
i=0;
while(i
<n) *逐条输出数组中存储的学生信息*
{
printdata(students[i]);
i ;
}
getchar();
}
/*****修改子程序*****/
void Modify(STU students[],int n)
{
int i;
if(n<=0)
{
system("cls");
printf(" \n退出请输入:0 \n");
printf("\n----------not found!----------\n");
getchar();
return ;
}
system("cls");
printf("修改学生信息");
input(students,n);
i=Locate(students,n); /*查询到该数组元素,并返回下标值*/
if(i!=-1) /*若i!=-1,表明已经找到该数组元素*/
{
printf("请输入新的学生信息: \n");
printf(" 学号: ");
scanf("%s",students[i].num);
printf(" 姓名: ");
scanf("%s",students[i].name);
printf(" 年龄: ");
scanf("%d",&students[i].age);
printf(" 性别: ");
scanf("%s",students[i].sex);
printf(" C语言: ");
scanf("%f",&students[i].cyy);
printf(" 英语: ");
scanf("%f",&students[i].english);
printf(" 计算机: ");
scanf("%f",&students[i].computer);
students[i].pj=(students[i].cyy students[i].english students[i].computer)/3;
printf("平均成绩: %-9.0f\n",students[i].pj);
save(students ,n);
printf("\n-------------修改成功!-------------\n");
}
else
printf("not found!\n");
getchar();
}
/*****学生成绩排序子程序*****/
void sort(STU students[],int n)
{
int i,j,a,b,c,d,e,f,k;
float p;
printf(" \n退出请输入:0 \n");
printf("成绩排序方式选择: 1.按C语言 2.按英语 3.按平均 \n ");
scanf("%d",&k);
if(k==1) /*用选择法对C语言排序*/
{
for(i=0; i
<n; i )
for(j=0;j
<n-1;j )
{
if(students[i].english
<students[j 1].english)
{
temp=students[i];
students[i]=students[j 1];
students[j 1]=temp;
}
}
}
else if(k==2)/*英语用冒泡法*/
{
for(a=0; a
<n-1; a )
{
c=a;
//未完待续
</n)
</n)
小学生算术运算考试系统(利用C语言编写) 请看清下面的要求 谢谢.........
#include
#include
#include
int cal(int, int, int);
void main(void)
{
int sel=3,sym=0,op1=0, op2=0, op3=0,op4=0;
int cnt=0,err=0;
srand((int)time(NULL));
do{
sym = rand()%4;
op1 = rand();op2 = rand();
op3 = rand()0;op4 = rand()0;
printf("--------------------\n");
printf("小学生算术考试系统\n");
printf("--------------------\n");
printf("1. 十以内的四则运算\n");
printf("2. 百以内的四则运算\n");
printf("3. 退出\n");
scanf_s("%d",&sel);
printf("%d\n",sel);
switch(sel){
case 1: err = cal(op1,op2,sym);break;
case 2: err = cal(op3,op4,sym);break;
case 3: break;
}
cnt ;
if(cnt==10){
printf("--------------------\n");
printf("10道题已经答完,成绩如下:\n");
printf("--------------------\n");
printf("总分:%d\n",100-10*err);
printf("答错题数:%d\n\n\n\n",err);
cnt = 0;
err = 0;
}
}
while(sel>0 && sel<3);
}
int cal(int op1, int op2, int sym)
{
int rst=0;int ans=0;
switch(sym){
case 0: printf("%d %d=",op1,op2);scanf_s("%d",&rst);ans=op1 op2; break;
case 1: printf("%d-%d=",op1,op2);scanf_s("%d",&rst);ans=op1-op2; break;
case 2: printf("%d*%d=",op1,op2);scanf_s("%d",&rst);ans=op1*op2; break;
case 3: if(op2){
printf("%d/%d=",op1,op2);scanf_s("%d",&rst);ans=op1/op2;
}
else{
printf("%d/%d=",op1,op2 1);scanf_s("%d",&rst);ans=op1/(op2 1);
}
break;
}
if(ans==rst){
printf("\n正确!\n");
return 0;
}
else{
printf("\n错误!\n");
return 1;
}
}