本文目录一览:
C语言成绩管理系统
#include "stdio.h"
struct stu{
int sid, score;
char g;
};
void scorein(struct stu *p, int n){
int i, t;
for(i = 0; i < n; i++){
scanf("%d%d", &p[i].sid, &p[i].score);
p[i].g = (t = p[i].score) > 89 && t < 101 ? 'A' : t > 79 && t < 90 ? 'B' : t > 69 && t < 80 ? 'C' : t > 59 && t < 70 ? 'D' : 'E';
}
}
int sum(struct stu *p, int n){
int s = 0;
while(n--)
s += p++->score;
return s;
}
void dssort(struct stu *p, int n){
int i, j, k;
struct stu t;
printf("\nSTUID\tSCORE\tCLASS\n=====================\n");
for(i = 0; i < n; i++){
for(k = i, j = k + 1; j < n; j++)
if(p[k].score < p[j].score)
k = j;
if(k != i){
t = p[k];
p[k] = p[i];
p[i] = t;
}
printf("%d\t%d\t%c\n", p[i].sid, p[i].score, p[i].g);
}
}
void idsort(struct stu *p, int n){
int i, j, k;
struct stu t;
printf("\nSTUID\tSCORE\tCLASS\n=====================\n");
for(i = 0; i < n; i++){
for(k = i, j = k + 1; j < n; j++)
if(p[k].sid < p[j].sid)
k = j;
if(k != i){
t = p[k];
p[k] = p[i];
p[i] = t;
}
printf("%d\t%d\t%c\n", p[i].sid, p[i].score, p[i].g);
}
}
void query(struct stu *p, int n){
int id;
printf("\nPlease enter ID(int)...\n");
scanf("%d", &id);
while(id != p->sid && n--)
p++;
if(n >= 0){
printf("STUID\tSCORE\tCLASS\n=====================\n");
printf("%d\t%d\t%c\n\n", p->sid, p->score, p->g);
} else
printf("No find!\n\n");
}
void level(struct stu *p, int n){
int d[5], i;
char s[5][7] = {"优秀", "良好", "中等", "及格", "不及格"};
printf("统计信息如下:\n");
for(i = 0; i < 5; d[i++] = 0);
for(i = 0; i < n; i++, d[p++->g - 'A']++);
for(i = 0; i < 5; i++)
printf("%6s:\t%d\t%.2f%%\n", s[i], d[i], d[i] / (n + 0.0) * 100);
}
void outinfo(struct stu *p, int n){
int i;
printf("\nSTUID\tSCORE\n=============\n");
for(i = 0; i < n; i++)
printf("%d\t%d\n", p[i].sid, p[i].score);
}
int main(int argc, char *argv[]){
int n, s;
struct stu a[30];
printf("Please enter n(int 0 < n < 31)...\n");
if(scanf("%d", &n) != 1 || n < 1 || n > 30){
printf("Input error, exit...\n");
return 0;
}
scorein(a, n); // 输入
dssort(a, n); // 分数降序
idsort(a, n); // 学号升序
query(a, n); // 查询
level(a, n); // 等级和百分比
outinfo(a, n); // 输出各位学生信息
printf("总分: %d", s = sum(a, n));
printf(" 平均分: %.2f\n", s / (n + 0.0));
return 0;
}
运行样例:
用C语言编程实现一个简单的学生成绩管理系统
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <memory.h>
typedef struct student{
char num[16];
char name[20];
float score[4];
struct student *next;
} stu;
stu *head; // 链头指针
stu* create() // 创建链表,从文件读取信息
{
printf("Reading student information:\n");
stu *p = NULL; // 指针,指向个待插入的结点
stu *q = NULL; // 指针,用于在其后插入结点
head = NULL; // 一开始链表为空
FILE *r = fopen("input.dat", "r");
p = (stu*)malloc(sizeof(stu));
while(fscanf(r, "%s%s%f%f%f", p->num, p->name, &p->score[0], &p->score[1], &p->score[2]) != EOF){
p->score[3] = (p->score[0] + p->score[1] + p->score[2]) / 3.0;
fprintf(stdout, "%s\t%s\t%g\t%g\t%g\t%.2f\n", p->num, p->name, p->score[0], p->score[1], p->score[2], p->score[3]);
p->next = NULL;
if(head == NULL){ // head为空,要插入第一个
head = p;
} else{ // 否则不是头结点,应将p结点插入到q结点的后面
q->next = p;
}
q = p; // q指向当前最后一个结点
p = (stu*)malloc(sizeof(stu));
}
fclose(r);
if(head != NULL){
q->next = NULL; // 让q所指的最后一个结点的指针域为空说明这已是链尾了
}
return head; // 返回头指针
}
void sort(stu **head, int n){
FILE *w = NULL;
if(n == 0){
w = fopen("sortByMath.dat", "w");
} else if(n == 1){
w = fopen("sortByEnglish.dat", "w");
} else if(n == 2){
w = fopen("sortByComputer.dat", "w");
} else if(n == 3){
w = fopen("sortByAvg.dat", "w");
}
stu *q, *t, *p;
stu *new_head = new stu;
new_head->next = *head;
p = new_head;
t = NULL;
while(t != new_head->next){
p = new_head;
q = p->next;
while(q->next != t){
if((p->next->score[n]) < (q->next->score[n])){
p->next = q->next;
q->next = q->next->next;
p->next->next = q;
}
p = p->next;
q = p->next;
}
t = q;
}
*head = new_head->next;
p = *head;
q = p->next;
printf("学号\t姓名\t数学\t英语\t计算机\t平均成绩\n");
int grade = 1;
while(p != NULL){
fprintf(w, "%s\t%s\t%g\t%g\t%g\t%.2f\t%d\n", p->num, p->name, p->score[0], p->score[1], p->score[2], p->score[3], grade);
fprintf(stdout, "%s\t%s\t%g\t%g\t%g\t%.2f\t%d\n", p->num, p->name, p->score[0], p->score[1], p->score[2], p->score[3], grade);
if(q != NULL && q->score[3] < p->score[3]) grade += 1;
p = p->next;
if(q != NULL) q = q->next;
}
printf("\n");
fclose(w);
}
void count(stu* head){
float cnt[4][8];
int i, j;
for(i = 0; i < 4; i++){
for(j = 0; j < 8; j++){
if(j != 2) cnt[i][j] = 0;
else cnt[i][j] = 100;
}
}
stu* r = head;
while(r != NULL){
r = r->next;
}
}
int main(){
head = create();
printf("Sorting by average score:\n");
sort(head, 3);
system("pause");
return 0;
}
用C语言编写一个学生成绩管理系统
// testzhidao4.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
struct Student // 学生结构体
{
char name[20]; // 名字
char sex[10]; // 性别
char zuanye[20]; // 专业
char code[13]; // 学号
char department[20]; // 学院
char degree[20]; // 学历
};
struct node
{
struct Student data;
struct node *next;
};
//---------------------------------------------------------------------------------
void print_menu(void) // 打印总菜单
{
printf(" |--------------------------------------------------|\n");
printf(" | 总 菜 单 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--增加一个学生信息 | 5--删除一个学生信息 |\n");
printf(" | 2--显示一个学生信息 | 6--统计功能 |\n");
printf(" | 3--显示一个班级信息 | 7--结束 |\n");
printf(" | 4--修改一个学生信息 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
}
void print_menu4(void ) // 打印修改功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 修 改 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1--修改名字 | 5--修改学院 |\n");
printf(" | 2--修改性别 | 6--修改专业 |\n");
printf(" | 3--修改学号 | 7--不作修改 |\n");
printf(" | 4--修改学历 | \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 \3 |\n");
printf(" |--------------------------------------------------|\n");
printf("再次选择选项 :");
}
void print_static_function_menu(void) // 打印统计功能
{
printf(" |--------------------------------------------------|\n");
printf(" | 统 计 功 能 : |\n");
printf(" |--------------------------------------------------|\n");
printf(" | 1.男/女人数 | 3.一个专业人数 |\n");
printf(" | 2.一个班级人数 | 4.结束 |\n");
printf(" |--------------------------------------------------|\n");
printf("请选择选项:\n");
}
int compareCode(char a[], char b[]) // 比较 判断是否是同一个班级
{
for(int i = 0; i < 9; i++)
if(a[i] != b[i]) break;
if(i == 9) return 1;
else return 0;
}
//-------------------------------------------------------------------------------------
void main() // 主函数从这里开始
{
system("color 3");
printf("\n\n\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3 学 生 证 管 理 程 序 \3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3 作者: \3\3\3\3\3\3\3\n");
printf(" \3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\3\n");
int choice;
struct node *studentlist = (struct node*)malloc(sizeof(struct node)); // 学生链表头
studentlist->next = NULL;
struct node *temp = NULL;
struct node *p = (struct node*)malloc(sizeof(struct node));
char tempcode[13]; // 临时学号
char tempclass[11]; // 临时班级
char tempzuanye[20]; // 临时专业
int count = 0;
int choice6, count_male, count_female;
const int sizeStu = sizeof(struct Student);
struct Student data;
FILE *fp;
if((fp = fopen("d:\\学生证管理程序.dat", "rb")) == NULL){
fp = fopen("d:\\学生证管理程序.dat", "wb");
}
fclose(fp);
fp = fopen("d:\\学生证管理程序.dat", "rb");
while(fread(&data, sizeStu, 1, fp) == 1){
p->data = data;
p->next = NULL;
if(studentlist == NULL)
studentlist = p;
else{
temp = studentlist;
while(temp->next != NULL){ temp = temp->next; }
temp->next = p;
}
p = (struct node*)malloc(sizeof(struct node));
}
fclose(fp);
print_menu(); // 打印菜单
scanf("%d", &choice); // 读进选项
while(choice != 7) // 未遇到结束键
{
switch(choice){
//----------------------------------------------------------------
// 选项1,增加学生学生证信息
case 1: // 输入一个学生信息
p = (node*) malloc(sizeof(node));
printf("\n请输入姓名:");
scanf("%s", p->data.name);
printf("\n请输入性别(男/女):");
scanf("%s", p->data.sex);
printf("\n请输入学号(12位):");
scanf("%s", p->data.code);
printf("\n请输入学制(本科生/研究生):");
scanf("%s", p->data.degree);
printf("\n请输入学院:");
scanf("%s", p->data.department);
printf("\n请输入专业:");
scanf("%s", p->data.zuanye);
p->next = NULL;
//----------------------------------------------------------链表连接
if(studentlist == NULL) { studentlist = p; studentlist->next = NULL; }
else {
temp = studentlist;
while(temp->next != NULL) ////////////////////
{
temp = temp->next;
}
temp->next = p;
p->next = NULL;
}
break;
//---------------------------------------------------------------------
// 选项2,显示给定学生学生证信息
case 2:
printf("\n请输入学生学号(12位数):");
scanf("%s", tempcode);
temp = studentlist;
while(temp != NULL) // 寻找响应的学生
{
if(strcmp(tempcode, temp->data.code) == 0) break;
temp = temp->next;
}
if(temp == NULL) printf("\n不能找到该学生信息.\n");
else {
printf("------------------------------------------------\n");
printf("姓名: %s\n", temp->data.name);
printf("性别: %s\n", temp->data.sex);
printf("学号: %s\n", temp->data.code);
printf("学历: %s\n", temp->data.degree);
printf("学院: %s\n", temp->data.department);
printf("专业: %s\n", temp->data.zuanye);
printf("------------------------------------------------\n\n");
}
break;
//-----------------------------------------------------------------
// 选项3,显示给定班级的学生信息
case 3:
printf("\n请输入班级号 :"); // 输入班级号
scanf("%s", tempclass);
while(strlen(tempclass) < 10) // 班级号位数小于10时,重新输入
{
printf("错误的班级号,请重新输入:");
scanf("%s", tempclass);
}
count = 0; // 班级学生数
temp = studentlist;
while(temp != NULL) // 检索链表,并打印相应学生的学生证信息
{
if(compareCode(tempclass, temp->data.code)) { // 打印属于这个班级的学生
printf("-----------------------------------------------\n");
printf("姓名: %s\n", temp->data.name);
printf("性别: %s\n", temp->data.sex);
printf("学号: %s\n", temp->data.code);
printf("学历: %s\n", temp->data.degree);
printf("学院: %s\n", temp->data.department);
printf("专业: %s\n", temp->data.zuanye);
printf("-----------------------------------------------\n");
count++;
}
temp = temp->next;
}
if(count == 0) printf("该班级还未有成员.\n");
break;
//-------------------------------------------------------------------
// 选项4,修改给定学生的信息
case 4:
printf("请输入要作修改的学生证号:");
scanf("%s", tempcode);
temp = studentlist;
while(temp != NULL) // 寻找响应的学生
{
if(strcmp(tempcode, temp->data.code) == 0) break;
temp = temp->next;
}
if(temp == NULL) printf("\n找不到相应学生的信息.\n"); // 找不到相应的学生
else {
int choice2;
print_menu4();
scanf("%d", &choice2);
while(choice2 != 7)
{
switch(choice2)
{
case 1:
printf("修改名字:"); // 修改名字
scanf("%s", temp->data.name);
break;
case 2:
printf("修改性别:"); // 修改性别
scanf("%s", temp->data.sex);
break;
case 3:
printf("修改学号:"); // 修改学号
scanf("%s", temp->data.code);
break;
case 4:
printf("修改学历 :"); // 修改学历
scanf("%s", temp->data.degree);
break;
case 5:
printf("修改学院:"); // 修改学院
scanf("%s", temp->data.department);
break;
case 6:
printf("修改专业:"); // 修改专业
scanf("%s", temp->data.zuanye);
break;
default:
break;
}
printf("请选择选项:");
scanf("%d", &choice2); // 再次选择菜单选项
}
}
break;
//----------------------------------------------------------------
// 选项5,删除给定学号的学生
case 5:
printf("\n输入学号 :"); // 输入学号
scanf("%s", tempcode);
temp = studentlist;
p = temp;
while(temp != NULL) // 寻找相应的学生
{
if(strcmp(tempcode, temp->data.code) == 0) break;
p = temp;
temp = temp->next;
}
if(temp == NULL) printf("\n找不到该学生信息.\n"); // 找不到
else if(temp == studentlist) { studentlist = temp->next; free(temp); }
else {
p->next = temp->next; // 找到时删除
free(temp);
}
break;
//------------------------------------------------------------------
// 选项6,统计功能
case 6:
print_static_function_menu();
scanf("%d", &choice6); // 选择菜单选项
while(choice6 != 4)
{
switch(choice6)
{
// 选项1,统计男女个数
case 1:
temp = studentlist;
count_male = 0; // 男生数
count_female = 0; // 女生数
while(temp != NULL) // 检索链表查找
{
if(strcmp(temp->data.sex, "男") == 0) count_male++;
if(strcmp(temp->data.sex, "女") == 0) count_female++;
temp = temp->next;
}
printf("男: %d\n", count_male);
printf("女: %d\n", count_female);
break;
// 选项2,统计给定班级的人数
case 2:
printf("请输入班级号:"); // 给定班级
scanf("%s", tempclass);
temp = studentlist;
count = 0;
while(temp != NULL) // 检索链表查找
{
if(compareCode(temp->data.code, tempclass) == 1) count++;
temp = temp->next;
}
printf("%s班级总人数为: %d\n", tempclass, count);
break;
case 3:
printf("请输入专业:"); // 给定专业
scanf("%s", tempzuanye);
temp = studentlist;
count = 0;
while(temp != NULL) // 检索链表查找
{
if(strcmp(temp->data.zuanye, tempzuanye) == 0) count++;
temp = temp->next;
}
printf("%s专业总人数为: %d\n", tempzuanye, count);
break;
// 缺省项
default:
break;
}
printf("请选择选项:");
scanf("%d", &choice6);
}
break;
//-----------------------------------------------------------------
default:
free(p);
break;
}
if((fp = fopen("d:\\学生证管理程序.dat", "wb")) == NULL)
{
printf("文件无法打开!");
return;
}
p = studentlist;
while(p)
{
fwrite(&p->data, sizeStu, 1, fp);
p = p->next;
}
fclose(fp);
print_menu(); // 打印菜单 进入循环
scanf("%d", &choice);
}
}
用C语言编写一个简单的成绩管理系统
// ps: 没有自己编译过
// 我写 C++比较多
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <conio.h>
#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("%04d %s %d\n", i, listname[i].name, listname[i].score);
int cmpfunc (const void * a, const void * b)
{
return ( (*(struct stud*)a).score - (*(struct 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(struct 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 <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N 10
struct student
{
char num[5];
char name[20];
int score;
};
struct student stu[N] = { {"1", "张三", 90}, {"2", "李四", 87}, {"3", "王五", 76}, {"4", "赵六", 67}, {"5", "刘七", 56} };
int count = 5;
void insert(int i) // 输入学生具体信息的函数
{
printf("第%d个学生的姓名:", i + 1);
scanf("%s", stu[i].name);
printf("\n");
printf("第%d个学生的分数:", i + 1);
scanf("%d", &stu[i].score);
printf("\n");
count++;
sprintf(stu[i].num, "%d", count);
}
void input() // 输入数据的函数
{
system("color 3e");
void menu();
void insert(int i);
int i, j, k, l, r;
printf("您想输入几个学生的信息? (1-%d) [ ]\b\b", N - 5);
scanf("%d", &j);
r = 5 + j;
for (i = 5; i < r; i++)
{
printf("\n输入第%d个学生的信息。\n", i + 1);
insert(i);
}
do
{
printf("返回菜单请按1! [ ]\b\b");
scanf("%d", &k);
if (k == 1)
{
system("cls");
menu();
}
else
l = 0;
} while (l == 0);
}
void search() // 查询成绩的函数
{
void menu();
void printf_one(int k);
struct student s;
int i, k, w0, w1, w2;
do
{
printf("请选择查找的类别: 1.姓名 2.学号 [ ]\b\b");
scanf("%d", &w1);
if (w1 < 1 || w1 > 2)
{
printf("输入错误!请重新输入!\n");
w2 = 1;
}
else
w2 = 0;
} while (w2 == 1);
if (w1 == 1) // 按姓名查找
{
do
{
k = -1;
do
{
printf("\n请输入您想查找的学生的姓名!\nName:");
scanf("%s", s.name);
for (i = 0; i < 5; i++)
if (strcmp(s.name, stu[i].name) == 0)
{
k = i;
s = stu[i];
}
if (k == -1) // 没有找到
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", &o);
if (o == 1)
{
system("cls");
search(); // 继续查找
}
else
{
system("cls");
menu(); // 返回菜单
}
}
} while (k == -1);
system("cls");
printf_one(k); // 查找到以后输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", &w0);
} while (w0 == 1);
system("cls");
menu(); // 不在查找时返回菜单
}
else // 按学号查找
{
do
{
k = -1;
do
{
printf("\n请输入您想查找的学生的学号!\nNum:");
scanf("%s", s.num);
for (i = 0; i < 5; i++)
if (strcmp(s.num, stu[i].num) == 0) // 找到了
{
k = i;
s = stu[i];
}
if (k == -1) // 没有找到
{
int o;
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", &o);
if (o == 1)
{
system("cls");
search(); // 继续查找
}
else
{
system("cls");
menu(); // 返回菜单
}
}
} while (k == -1);
system("cls");
printf_one(k); // 找到后输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", &w0);
} while (w0 == 1);
system("cls");
menu(); // 不在查找时返回菜单
}
}
void xiugai() // 修改学生信息的函数
{
void menu();
void printf_one(int k);
void xiugai_2();
struct student s;
int i, n, k, w0 = 1, w1, w2 = 0, o;
do
{
k = -1;
do
{
printf("\n请输入您想要修改的学生的姓名!Name:");
scanf("%s", s.name);
for(i = 0; i < 5; i++)
if(strcmp(s.name, stu[i].name) == 0) // 与其中一个学生匹配
{
k = i;
s = stu[i];
}
if(k == -1) // 没有找到输入的学生
{
printf("\n\n没有这个学生的信息!\n");
printf("What do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", &o);
if(o == 1)
{
system("cls");
// xiugai(); // 继续修改
}
else
{
system("cls");
menu(); // 返回菜单
}
}
} while(k == -1);
system("cls");
printf("修改这个学生的分数:");
scanf("%d", &stu[k].score);
printf("\n");
printf_one(k); // 输出这个学生的信息
printf("\nWhat do you want to do?\n\t1.继续 2.返回菜单 [ ]\b\b");
scanf("%d", &o);
if (o != 1)
{
system("cls");
menu(); // 返回菜单
}
} while(1);
}
void printf_all() // 输出所有学生成绩的函数
{
void menu();
system("color 4e");
int i, j, k;
for (i = 0; i < N; i++)
{
printf("学号:%s 姓名:%s 分数:%d\n", stu[i].num, stu[i].name, stu[i].score);
}
do
{
printf("返回菜单请按1 [ ]\b\b");
scanf("%d", &j);
if (j == 1)
{
system("cls");
menu();
}
else
{
k = 0;
}
} while (k == 0);
}
void printf_one(int k) // 输出某一个学生的信息的函数
{
printf("学号: %s 姓名: %s 分数: %d", stu[k].num, stu[k].name, stu[k].score);
}
void Exit() // 退出系统的函数
{
exit(0);
}
void menu() // 菜单函数
{
system("color 2e");
printf("\n\t\t\t欢迎使用学生学籍管理系统!\n");
printf("\n");
int n, m;
do
{
puts("\t\t********************菜单*********************");
puts("\t\t*********************************************");
puts("\t\t**************学生学籍管理系统***************");
puts("\t\t*********************************************");
puts("\t\t*********************************************");
puts("\t\t******* 1--输入数据 ********");
puts("\t\t******* 2--查询成绩 ********");
puts("\t\t******* 3--修改成绩 ********");
puts("\t\t******* 4--输出所有学生成绩 ********");
puts("\t\t******* 5--统计及格和优秀的人数 ********");
puts("\t\t******* 6--输出所有不及格学生的成绩 **");
puts("\t\t******* 7--输出所有优秀学生姓名和成绩*");
puts("\t\t******* 8--退出系统 ********");
puts("\t\t*********************************************");
printf("请选择服务种类(1~8): [ ]\b\b");
scanf("%d", &n);
if (n < 1 || n > 8)
{
system("cls");
printf("选择错误! 请重新选择!\n");
m = 1;
}
else
{
m = 0;
}
} while (m == 1);
switch (n)
{
case 1: system("cls"); input(); break;
case 2: system("cls"); search(); break;
case 3: system("cls"); xiugai(); break;
case 4: system("cls"); printf_all(); break;
case 8: Exit(); break;
}
}
int main()
{
menu();
return 0;
}
C语言 学生成绩管理系统?
附录* 综合实例——学生成绩查询系统 这是一个用C语言编写的小软件——学生成绩查询系统,同学们可以将其作为一个综合实例,对其进行仔细的阅读和研究,体验编程处理问题的过程,加深对编程语言的理解,提高处理问题的综合能力。
1、程序的功能:
- 可以根据用户输入的输入、输出文件名,读入学生成绩,完成数据的初始化。
- 可以查询指定学生的成绩,可以是指定科目的成绩,也可以是全部科目的成绩。
- 友好退出。
2、使用说明:
- 将输入文件放到指定的目录下(即
../student/
) - 启动管理程序
student.exe
- 在程序的使用界面,首先输入输入文件名和输出文件名,完成程序的初始化。
- 输入代码“q”退出程序。
3、程序代码
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
FILE *f1, *f2;
char file1[20], file2[20], name[200][20], name1[15];
int n, m, data[200][10];
void init(){
int i, j;
char ch = ' ';
printf("%20c欢迎使用班级成绩管理系统\n\n", ch);
printf("请输入输入和输出文件名(中间用一个空格隔开):\n");
scanf("%s %s", file1, file2); // 1)该条语句的功能是什么?
f1 = fopen(file1, "r");
f2 = fopen(file2, "w");
fscanf(f1, "%d%d", &n, &m); // 2)该条语句的功能是什么?
for(i = 1; i <= n; i++){
fscanf(f1, "%s", name[i]); // 3)该条语句的功能是什么?
data[i][0] = 0; // 4)该条语句的功能是什么?没有这条语句可不可以?
for(j = 1; j <= m; j++){
fscanf(f1, "%d", &data[i][j]);
data[i][0] += data[i][j]; // 5)该条语句的功能是什么?
}
}
fprintf(f2, "name\tyuwen\tshuxue\tyingyu\twuli\thuaxue\tzongfen\n ");
for(i = 1; i <= n; i++){
fprintf(f2, "%s\t", name[i]);
for(j = 1; j <= m; j++)
fprintf(f2, "%d\t", data[i][j]);
fprintf(f2, "%d\n", data[i][0]);
}
fclose(f1); // 6)问什么可以在这关闭输入文件?
fclose(f2);
}
void search(char na[], char num){
int i = 1, j;
while((i <= n) && (strcmp(na, name[i]) != 0)) i++;
if(i <= n){
switch(num){
case '1': printf("%s的语文成绩为%d!\n", na, data[i][1]); break;
case '2': printf("%s的数学成绩为%d!\n", na, data[i][2]); break;
case '3': printf("%s的英语成绩为%d!\n", na, data[i][3]); break;
case '4': printf("%s的物理成绩为%d!\n", na, data[i][4]); break;
case '5': printf("%s的化学成绩为%d!\n", na, data[i][5]); break;
case 'a':
printf("%s的各科成绩为:\n", name[i]);
printf("语文\t数学\t英语\t物理\t化学\t总成绩\n");
for(j = 1; j <= m; j++)
printf("%d\t", data[i][j]);
printf("%d\n", data[i][0]);
break;
default: printf("没有这种查询方式,请确认后再次输入!\n");
}
}
else printf("查无此人,请确认后再次查询!\n");
printf("\n\n");
}
main(){
init(); // 数据初始化
printf("数据初始化结束!\n\n");
printf("------------------------------------------------\n\n");
char na[20];
char num;
while(1){ // 7)该条语句的功能是什么?
printf("请输入学生的姓名和要查询成绩的科目代码(中间用一个空格隔开):\n(1 语文 2 数学 3 英语 4 物理 5 化学 a 所有科目成绩 q 退出)\n");
scanf("%s", na);
if(strcmp(na, "q") == 0) break; // 9)问什么要用这条语句strcmp(na,"q")==0?
scanf("%c%c", &num, &num); // 10)为什么用了两次num?
search(na, num);
printf("------------------------------------------------\n\n");
printf("\n请输入新的查询:\n\n");
}
system("pause");
}
这是我以前的一个程序,你改改吧,应该很好改。