学生成绩管理C语言版
【标题】学生成绩管理的设计与实现
【开发语言】C语言
【概要设计】使用结构体存储学生的学号、姓名和成绩信息,实现对学生成绩类的基本操作:增加、删除、查询、排序
【测试数据】按提示输入5组正确的正确的数据和5组有问题的数据,查看程序能否运行正确
【测试结果】基本功能运行正确,异常输入无法处理(关于性能对比测试,查看C++版:http://www.cnblogs.com/forerve/p/3908716.html)
【详细设计】
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<time.h> /*学生结构体*/ struct student{ ]; ]; ]; double sum ; }; /*链表节点*/ typedef struct node{ struct student st; struct node *Next; }Node; int Add(Node *Head);/*增加学生*/ void Print(Node *Head);/*打印学生信息*/ int Find(Node *Head);/*查询学生*/ int Del(Node *Head);/*删除学生*/ void sort_sum(Node *Head);/*按总成绩排序*/ void sort_no(Node *Head);/*按学号排序*/ void main_remid();/*主要提示信息*/ void score_remind();/*成绩提示信息*/ int main() { Node* Head = (struct node *)malloc(sizeof (Node)); Head->Next = NULL; char op = ' '; main_remid(); while(op != 'q') { scanf("%c", &op); switch(op) { ': sort_no(Head); break; ': Add(Head); break; ': Find(Head); break; ': Del(Head); break; ': sort_sum(Head); break; ': main_remid(); break; default: printf("输入指令未知,请重新输入\n"); break; } printf("请继续选择您想要的操作:\n"); fflush(stdin); } ; } /*增加学生*/ int Add(Node *Head) { Node* p = (struct node*)malloc(sizeof (Node)); p->st.sum = 0.0; printf("请输入学生的学号\n"); scanf("%s", p->st.no); printf("请输入学生的姓名\n"); scanf("%s", p->st.name); printf("请输入学生的英语成绩\n"); scanf(]); p->st.sum += p->st.couse[]; printf("请输入学生的数学成绩\n"); scanf(]); p->st.sum += p->st.couse[]; printf("请输入学生的语文成绩\n"); scanf(]); p->st.sum += p->st.couse[]; printf("请输入学生的C语言成绩\n"); scanf(]); fflush(stdin); p->st.sum += p->st.couse[]; if(Head->Next == NULL) { p->Next = NULL; Head ->Next = p; } else { p->Next = Head ->Next; Head->Next = p; } ; } /*按总成绩排序*/ void sort_sum(Node *Head) { Node *p = Head; Node *temp = (struct node*)malloc(sizeof (Node)); Node *first = (struct node*)malloc(sizeof (Node)); memcpy(first, p->Next ,sizeof (Node)); temp->Next = first; first->Next = NULL; p = p->Next; while(p->Next != NULL) { Node *t = temp; while(t->Next!=NULL && p->Next->st.sum < t->Next->st.sum) t = t->Next; Node *q = (struct node*)malloc(sizeof (Node)); memcpy(q, p->Next, sizeof(Node)); q->Next = t->Next; t->Next = q; p = p->Next; } Print(temp); p = temp; Node *q = temp->Next; while(q->Next != NULL) { free(p); p = q; q = q->Next; } free(p); free(q); } /*按学号排序*/ void sort_no(Node *Head) { Node *p = Head; Node *temp = (struct node*)malloc(sizeof (Node)); Node *first = (struct node*)malloc(sizeof (Node)); memcpy(first, p->Next ,sizeof (Node)); temp->Next = first; first->Next = NULL; p = p->Next; while(p->Next != NULL) { Node *t = temp; while(t->Next!=NULL && atoi(p->Next->st.no)>atoi(t->Next->st.no)) t = t->Next; Node *q = (struct node*)malloc(sizeof (Node)); memcpy(q, p->Next, sizeof(Node)); q->Next = t->Next; t->Next = q; p = p->Next; } Print(temp); p = temp; Node *q = temp->Next; while(q->Next != NULL) { free(p); p = q; q = q->Next; } free(p); free(q); } /*void sort_sum1(Node *Head) { Node *temp; Node *p = Head; temp->Next2 = p->Next; p = p->Next; p->Next2 = NULL; while(p->Next != NULL) { Node *t = temp; while(t->Next2!=NULL && p->Next->st.sum<t->Next2->st.sum) t = t->Next2; p->Next->Next2 = t->Next2; t->Next2 = p->Next; p = p->Next; } Print(temp); }*/ /*打印学生信息*/ void Print(Node *Head) { Node* p = Head; score_remind(); while(p->Next != NULL) { printf("\t%s", p->Next->st.no); printf("\t%s", p->Next->st.name); printf(]); printf(]); printf(]); printf(]); printf("\t%.1lf\n", p->Next->st.sum); p = p->Next; } p = NULL; } /*查询学生*/ int Find(Node *Head) { Node* p = Head; printf("请输入要查找学生的学号:\n"); ]; scanf("%s", no); while(p->Next != NULL) { if(!strcmp(no, p->Next->st.no)) { score_remind(); printf("\t%s", p->Next->st.no); printf("\t%s", p->Next->st.name); printf(]); printf(]); printf(]); printf(]); printf("\t%.1lf\n", p->Next->st.sum); p = NULL; ; } p = p->Next; } printf("查找失败,不存在次学号\n"); p = NULL; ; } /*删除学生*/ int Del(Node *Head) { Node* p = Head; printf("请输入要删除学生的学号:\n"); ]; scanf("%s", no); while(p->Next != NULL) { if(!strcmp(no, p->Next->st.no)) { Node *q = p->Next; p->Next = p->Next->Next; printf("%s %s删除成功\n",q->st.no, q->st.name); free(q); q = NULL; ; } p = p->Next; } printf("不存在此学号\n"); } /*主要提示信息*/ void main_remid() { printf("\t\t\t学生成绩类\n"); printf("\t\t1.查询所有学生的成绩信息\n"); printf("\t\t2.增加学生\n"); printf("\t\t3.查找学生\n"); printf("\t\t4.删除学生\n"); printf("\t\t5.查看总分排名\n"); printf("\t\t6.查看此提示\n"); printf("\t\tq.退出系统\n\n"); } /*成绩提示信息*/ void score_remind() { printf("\t\t\t 学生成绩信息\n"); printf("\t学号\t姓名\t数学\t英语\t语文\tC语言\t总成绩\n"); }
学生成绩管理C语言版的更多相关文章
- 学生成绩管理C++版
[标题]学生成绩管理的设计与实现 [开发语言]C++ [主要技术]STL [概要设计]类名:student 类成员:No.Name.Math.Eng.Chn.Cpro.Sum 成员函数:getname ...
- C语言文件实现学生成绩管理
C语言实现学生成绩管理 项目简介 用C语言的链表及文件操作实现学生成绩的管理,实现主要的添加.修改.删除.查询的主要功能,并在程序关闭时将数据存储在二进制的文件中并加密.下一次打开程序,先解密二进制文 ...
- JAVA课程设计 学生成绩管理
学生成绩管理 可实现功能: 添加学生功能:姓名.学号.性别.出生年月日.(学号自动生成且唯一) 添加学生成绩功能:每个人都有数学.Java与体育四门课,可分课程输入成绩. 根据学生学号查找学生成绩功能 ...
- C语言学生成绩管理系统(简易版)
#include<stdio.h> #include<stdlib.h> #include<string.h> int readstudents(struct st ...
- 开学考试学生成绩管理Java
首先student类 package xuexi; public class Student { private String stunumber; private String name; priv ...
- 学生成绩管理系统-JAVA语言测试
首先右键新建一个工程project 选择Java Project,单击next下一步 project命名为“学生成绩管理系统”,点击finish继续 右键src文件夹新建Package包,取名为te ...
- JAVA基础代码分享--学生成绩管理
问题描述: 从键盘读入学生成绩,找出最高分,并输出学生成绩等级. 成绩>=最高分-10 等级为’A’ 成绩>=最高分-20 等级为’B’ 成绩>=最高分-30 等级为’C’ ...
- JAVA课程设计个人博客 学生成绩管理 201521123001 张陈东芳
1. 团队课程设计博客链接 http://www.cnblogs.com/kawajiang/p/7062407.html 2.个人负责模块或任务说明 我主要负责实现学生信息的添加功能.学生成绩的录入 ...
- 简易学生成绩管理管理系统(java描述)
没正式学过java,但是系统学过C++后,初略的看了下java的基本语法,于是我就尝试着用java来写个简单的学生管理系统,功能不齐全,以后有空再补充吧. 写的时候定义了不同的包名字,如jeaven1 ...
随机推荐
- 【2017-03-31】JS-DOM操作:操作属性、彩虹导航栏、定时器、操作内容、创建元素并添加、操作相关元素
一.操作属性 1.什么是属性: <div class="div" id="div1" style="" ></div> ...
- 01.PHP5.x编译详解
##PHP5.5编译安装 ``` wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-6.repo yum i ...
- [认证授权] 2.OAuth2(续) & JSON Web Token
0. RFC6749还有哪些可以完善的? 0.1. 撤销Token 在上篇[认证授权] 1.OAuth2授权中介绍到了OAuth2可以帮我们解决第三方Client访问受保护资源的问题,但是只提供了如何 ...
- robotium问答
robotium问答 robotium集成instrumentation robotium如何定位控件? search类获取当前所有的view,然后根据类型或者文本去筛选,找到view后获取坐标, ...
- 设计模式(二)—工厂方法模式
凡是出现了大量的实例需要创建,而且具有共同的接口时,可以通过工厂方法模式进行创建. 一个接口: Sender public interface Sender{ public void sen ...
- Sphinx安装流程及配合PHP使用经验
1.什么是Sphinx Sphinx是俄罗斯人Andrew Aksyonoff开发的高性能全文搜索软件包,在GPL与商业协议双许可协议下发行. 全文检索式指以文档的全部文本信息作为检索对象的一种信息检 ...
- 什么是RESTful?
RESTful一种软件架构风格,设计风格而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. REST ...
- javascript核心概念之——数组
在javascript中数组就是一个可以存放任何类型的集合.存储在数组中的值用逗号分隔 var arr = ["hello",7,null,undifined,obj,undifi ...
- 利用jackson-databind,复杂对象对象和json数据互转
如果简单对象,那么转换的方式比较多,这里指的复杂对象,是指对象里面存在cycle引用,比如: /** * @author ding * */@Entity@Table(name = "ser ...
- java多线程基本概述(二十)——中断
线程中断我们已经直到可以使用 interrupt() 方法,但是你必须要持有 Thread 对象,但是新的并发库中似乎在避免直接对 Thread 对象的直接操作,尽量使用 Executor 来执行所有 ...