C语言课程设计-学生考勤管理系统
- 格式:pdf
- 大小:4.45 MB
- 文档页数:31
c语言课程设计考勤系统一、课程目标知识目标:1. 理解C语言的基本语法,掌握数据类型、运算符、控制结构等基础知识;2. 学会使用数组、函数和指针等C语言特性进行编程;3. 了解文件操作的基本方法,实现数据存储与读取;4. 掌握面向过程编程思想,能够运用所学知识设计简单的考勤系统。
技能目标:1. 能够运用所学C语言知识,编写出结构清晰、逻辑性强的程序代码;2. 熟练使用编程工具(如Visual Studio、Code::Blocks等)进行代码编写、调试与运行;3. 学会分析问题,将实际问题转化为程序设计的解决方案;4. 提高团队协作能力,通过分组讨论、分工合作完成考勤系统的设计与实现。
情感态度价值观目标:1. 培养学生对待编程的兴趣和热情,激发学生主动探索、创新的精神;2. 培养学生的逻辑思维能力,提高分析问题和解决问题的能力;3. 增强学生的自信心,使其在完成考勤系统设计的过程中获得成就感;4. 培养学生的团队协作精神,学会与他人共同解决问题,提高沟通能力。
课程性质:本课程为C语言编程实践课,结合实际应用场景,培养学生的编程能力和实际操作能力。
学生特点:学生具备一定的C语言基础,对编程有一定兴趣,但实践经验不足。
教学要求:教师应注重理论与实践相结合,引导学生积极思考,鼓励学生动手实践,关注个体差异,因材施教。
通过课程学习,使学生在掌握C语言基础知识的同时,具备实际编程能力。
二、教学内容1. C语言基础知识回顾:数据类型、变量、常量、运算符、表达式、输入输出函数等;教材章节:第一章至第三章。
2. 控制结构:顺序结构、选择结构、循环结构;教材章节:第四章。
3. 函数与数组:函数的定义与调用、数组的定义与使用;教材章节:第五章、第六章。
4. 指针:指针的概念、指针与数组、指针与函数;教材章节:第七章。
5. 文件操作:文件打开与关闭、文件的读写操作;教材章节:第八章。
6. 考勤系统设计与实现:需求分析、功能设计、模块划分、编码实现;教材章节:综合应用。
C语言课程设计:学生考勤系统1.引言本文档旨在设计一个基于C语言的学生考勤系统。
该系统可以帮助学校、学院或其他教育机构进行学生的考勤管理。
通过该系统,教师或管理员可以方便地记录学生的出勤情况,并生成相关报表进行统计分析。
2.系统概述学生考勤系统是一个基于C语言开发的控制台应用程序,主要包括学生信息管理、考勤记录管理和报表生成等模块。
通过该系统,用户可以实现对学生信息的增、删、改、查操作,并能记录学生的考勤情况,最后生成考勤报表。
3.系统功能3.1 学生信息管理学生信息管理模块主要用于对学生的基本信息进行管理,包括学生姓名、学号、性别、出生日期、班级等。
该模块提供以下功能:•添加学生信息:输入学生的基本信息,将学生添加到系统中。
•修改学生信息:根据学生的学号或姓名,修改学生的基本信息。
•删除学生信息:根据学生的学号或姓名,从系统中删除学生的信息。
•查询学生信息:根据学号、姓名或班级等条件,查询学生的基本信息。
3.2 考勤记录管理考勤记录管理模块用于记录学生的考勤情况,包括学生的出勤、迟到、旷课等。
该模块提供以下功能:•学生签到:根据学生的学号或姓名,进行学生的签到操作。
•学生迟到:根据学生的学号或姓名,记录学生迟到的时间和原因。
•学生旷课:根据学生的学号或姓名,记录学生旷课的时间和原因。
•考勤查询:根据学生的学号、姓名或日期,查询学生的考勤情况。
3.3 报表生成报表生成模块用于根据学生的考勤记录生成考勤报表,对学生的出勤情况进行统计分析。
该模块提供以下功能:•出勤统计报表:根据学期、学科等条件,生成学生的出勤统计报表。
•迟到统计报表:根据学期、班级等条件,生成学生的迟到统计报表。
•旷课统计报表:根据学期、班级等条件,生成学生的旷课统计报表。
4.技术实现本项目使用C语言进行开发,主要利用C语言的数据结构和文件操作等特性实现对学生信息的管理和考勤记录的存储。
具体技术实现包括以下几个方面:•结构体:使用C语言的结构体来定义学生的基本信息,方便进行管理和存取操作。
学生管理系统c语言简单版学生管理系统c语言简单版介绍:学生管理系统是一种用于管理学生信息的软件,它可以方便地对学生的基本信息、课程成绩等进行录入、查询、修改和删除等操作。
本文将介绍如何使用C语言编写一个简单的学生管理系统。
功能:1. 添加学生信息2. 查询学生信息3. 修改学生信息4. 删除学生信息5. 显示所有学生信息实现方法:1. 添加学生信息添加学生信息需要输入以下内容:姓名、性别、年龄、班级和电话号码。
我们可以定义一个结构体来存储这些信息,代码如下:```struct Student {char name[20];char sex[10];int age;char class[20];char phone[20];};```然后定义一个数组来存储多个学生的信息:```struct Student students[100];int count = 0; // 学生数量```接下来,我们可以编写一个函数来添加新的学生信息:```void addStudent() {struct Student student;printf("请输入姓名:");scanf("%s", );printf("请输入性别:");scanf("%s", student.sex);printf("请输入年龄:");scanf("%d", &student.age);printf("请输入班级:");scanf("%s", student.class);printf("请输入电话号码:");scanf("%s", student.phone);students[count++] = student; // 将新的学生信息存储到数组中 printf("添加成功!\n");}```2. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
#include ”iostream”#include 〈conio 。
h〉#include ”string.h"#include 〈fstream> using namespace std;#define Size 1000class Record{public:Record () ;void Entersystem () ;void GetPwd();void SetDate ();void SetPwd ();void ReadDate();void SaveData () ;void PutRecord ();void FindRecord ();void ShowRecord ();void Order();void ModifyDate();void DelRecord (); private:int int int int int renshu;chidao;zaotui;kuangke;qingjia;//构造函数//进入系统函数//获取密码//输入设置学生信息//修改登录密码//读取文本信息函数//向文本保存信息函数//输入考勤函数//查找学生信息函数//输出所有学生信息//按学号排序//修改学生信息//删除学生信息//学生人数//迟到次数//早退次数//旷课次数//请假次数long ID;char Name [20]; char password[20] ; void ShowDate(int i) ; //学生学号//学生姓名//登录密码};///////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////类的实现///////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////构造函数Record::Record (){ renshu=0;chidao=0;zaotui=0;qingjia=0;kuangke=0;ID=0;Name[20] =0;password [20] =0;}Record CRecord[Size];char pwd []= {'1’ ,'2' ,'3' ,’4’ ,'5’ ,’6’};///////////////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////输出函数void Record::ShowDate(int i){ cout〈<"\t"<<CRecord [i]。
#include ”stdio.h”#include ”string.h”#include "stdlib.h"#include "conio.h"#include ”string.h”#include "fcntl。
h"typedef struct student{int num;char grade[10];char classroom[10];char name[10];float score_math;float score_chinese;float score_english;float average;float sum;}STU;typedef struct Node{STU data;struct Node *next;}*linklist;void menu();char *loginpassword(char password[],int n);//登录验证密码函数声明//linklist createstulist(linklist head);//创建学生链表即学生信息录入函数声明// void printstulist(linklist head);//学生信息输出函数声明//void searchstu_namelist(linklist head);//学生信息查询函数声明(按姓名)// void searchstu_numlist(linklist head);//学生信息查询函数声明(按学号) linklist modifystulist(linklist head);//学生信息修改函数声明//linklist delatestulist(linklist head);//学生信息删除函数声明//void savestulist(linklist head);//学生信息保存到文件函数声明// linklist loadstulist();//从文件中读取学生信息函数声明// void sortstulist(linklist head); //成绩排名函数(按年级)声明//void sort(STU stu[],int flag); //学生分班函数声明//void sortstuclass(linklist head); //成绩排名函数(按班级)声明////*************************************//void main(){char admin[]=”zhangqiong";char password[]=”123456";char person[20];char password1[10];int i;printf(”********************************************************************************\n”);printf("\t\t **********欢迎来到学生成绩管理系统**********\n\n");printf(”********************************************************************************\n\n”);printf(”\t\t\t\t用户登录\n\n\n\n");for(i=0;i<3;i++){printf("用户名:”);gets(person);fflush(stdin);printf(”\n\n\n”);loginpassword(password1,10);printf("\n\n\n”);if(strcmp(admin,person)==0&&strcmp(password,password1)==0){printf(”\t\t\t\t成功登录,亲!\n”);printf("\n\n”);printf(”按任意键继续!”);getch();menu();break;}elseprintf("\t用户名或者密码输入错误\n”);}if(i==3)printf("\t对不起,您今天输入次数太多,已被强制退出!\n”);}//**********************************************************////**********************************************************//char *loginpassword(char password[],int n)//登录密码函数,隐藏密码可见//{int i=0;int m=0;char ch;printf("用户密码:”);while((ch=getch())!='\r’&&m〈n){password[i++]=ch;printf(”*");}password[i]='\0';return password;}//***************************************************// void menu()//主界面函数//{system("cls");linklist L;L=(linklist)malloc(sizeof(Node));L—>next=NULL;int ch;do{printf(”\t -——-----—-******——--——--—---******—————-————-******-—-—-—-—-—\n\n");printf("\t\t\t**********学生成绩管理系统***********\n\n”);printf("\t ——----——--******-—-——------—******—---———--—-******—---———-——\n\n\n\n\n");printf("\t1。
C语言教务管理系统一、程序结构图二、程序运行截图1. 个人信息简介2.修改颜色3.注册界面4. 信息保存至文件5.登录界面6.管理员录入信息7. 学生信息录入8.学生成绩录入9.学生课程表录入10.学生信息查询界面11学生信息查询12.学生成绩查询13.学生课表查询三、代码(一个cpp)#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> #include <conio.h>#include"windows.h"#define student_num 1000 /*定义1000个学生*/#define teacher_num 5 /*定义5个老师(管理员)*/int is_my_student(struct student *p,int *size); /*声明返回第i+1个学生的函数*/ int is_my_teacher(struct teacher *p,int *size); /*声明返回第i+1个老师的函数*/ int length_student_name(char *p); /*声明验证用户名函数*/int length_student_password(char *p); /*声明验证密码长度函数*/int length_teacher_name(char *p); /*声明验证用户名函数*/int length_teacher_password(char *p); /*声明验证密码长度函数*/int show_menu_login(); /*声明登录菜单函数*/int show_menu_register(); /*声明注册菜单函数*/int show_teacher_select(); /*声明教师录入菜单函数*/int show_student_select(); /*声明学生查询菜单函数*/int student_register(struct student *ptr_student,int *size); /*声明学生注册函数*/ int teacher_register(struct teacher *ptr_teacher,int *size); /*声明老师注册函数*/ int vaild_student_name(char *p); /*声明验证用户名函数*/int vaild_student_password(char *p); /*声明验证密码函数*/int vaild_teacher_name(char *p); /*声明验证用户名函数*/int vaild_teacher_password(char *p); /*声明验证密码函数*/int vaild_two_password(char *p1,char *p2); /*声明验证两次密码是否相同函数*/ int yes_no_return(); /*声明选择是否返回上一层函数*/void load(); /*声明加载函数*/void register_(int *count1,int *count2); /*声明注册函数*/void display_student(struct student stu); /*声明显示学生信息函数*/void display_teacher(struct teacher tea); /*声明显示老师信息函数*/void student_file1(); /*将保存的学生的账号密码存入文件中*/ void student_file2(); /*将保存的学生的个人信息存入文件中*/ void student_file3(); /*将保存的学生的成绩存入文件中*/void teacher_file(); /*将保存的老师的账号密码存入文件中*/ void input_information(int count); /*声明输入学生信息函数*/void input_score_menu(int count); /*声明输入学生成绩函数*/void color(); /*声明选择窗体颜色函数*/void print_stu_information(int count_stu); /*声明输出账号为num的学生的信息函数*/void print_stu_score(int count_stu); /*声明输出账号为num的学生的成绩函数*/void show_menu(); /*声明初始化界面函数*/void input(); /*声明输入函数*/void menu1(); /*声明教师录入课程表主菜单函数*/void menu2(); /*声明学生查询课程表主菜单函数*/void rank(); /*声明显示时间顺序函数*/void querymenu3(); /*声明查询函数*/void looktime(); /*声明按照时间查询函数*/void looklessonname(); /*声明按照课程名查询函数*/void add(); /*声明保存函数*/void amend(); /*声明修改课程函数*/void amend1(); /*声明修改课程子函数*/void amendnews(int i); /*声明修改整个课程信息函数*/void amendtime(int i); /*声明修改课程时间函数*/void amendlessonname(int i); /*声明修改课程课程名函数*/void amendclassroom(int i); /*声明修改课程教室函数*/void deleted(); /*声明删除函数*/void add_score(int count); /*声明添加学生成绩函数*/void xiugai_score(int count); /*声明修改学生成绩函数*/void shanchu_score(int count); /*声明删除学生成绩函数*/void chaxun_score(int count); /*声明按要求查询学生成绩函数*/void paixu_score(int count); /*声明学生成绩排序函数*/void tongji_score(int count); /*声明学生成绩统计函数*/float chinese(int count); /*声明计算语文成绩最大值函数*/int chr(int count); /*声明计算语文成绩及格人数的函数*/ float english(int count); /*声明计算英语成绩最大值函数*/int ehr(int count); /*声明计算英语成绩及格人数的函数*/ float math(int count); /*声明计算数学成绩最大值函数*/int mhr(int count); /*声明计算数学成绩及格人数的函数*/ float computer(int count); /*声明计算计算机成绩最大值函数*/int thr(int count); /*声明计算计算机成绩及格人数的函数*/float PE(int count); /*声明计算体育成绩最大值函数*/int phr(int count); /*声明计算体育成绩及格人数的函数*/ float sum_score(int count); /*声明计算总分成绩最大值函数*/ void load_student(int a); /*声明启动学生函数*/void load_teacher(int a); /*声明启动老师函数*/struct student /*学生结构体*/{/*个人信息*/int student_id; /*账号*/char student_name[20]; /*姓名*/char password[16]; /*密码*/int age; /*年龄*/char qq[12]; /*QQ号*/char tel[12]; /*电话*/int grade; /*年级*//*各科成绩*/float chinese; /*语文分数*/float english; /*英语分数*/float math; /*数学分数*/float computer; /*计算机分数*/float PE; /*体育分数*/float sum; /*总分*//*课程表*/char time[10]; /*时间*/char lessonname[20]; /*课程名*/char teacher[20]; /*授课老师*/char classroom[10]; /*教室*/char hours[10]; /*第几节课*/int weeks; /*周时*/};struct teacher /*老师结构体*/ {int teacher_id; /*账号*/char teacher_name[20]; /*姓名*/char password[16]; /*密码*/};struct student our_student[student_num]; struct teacher our_teacher[teacher_num];void main() /*主函数*/{system("color f0"); /*初始化背景颜色*/show_menu(); /*制作人信息简介*/load();}void load() /*启动函数*/{int flag=1; /*控制循环结束的变量*/int a=0,b=0; /*记录已注册的学生的人数a为学生个数b为老师个数*/int *count1=&a,*count2=&b; /*指向学生人数和老师人数的指针*/int correct_student,correct_teacher;color();register_(count1,count2); /*注册学生和老师的帐号*/student_file1();teacher_file();while(flag){switch(show_menu_login()) /*显示登录菜单*/{case 1: /*选择1,进入学生登录*/if(correct_student=is_my_student(our_student,count1)){printf("\n ◆学生登录成功!\n");display_student(our_student[correct_student-1]);printf("\n");printf(" ");system("pause");load_student(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,进入老师登录,即管理员登录*/ if(correct_teacher=is_my_teacher(our_teacher,count2)){printf("\n ◆管理员登录成功!\n");display_teacher(our_teacher[correct_teacher-1]);printf("\n");printf(" ");system("pause");load_teacher(a);}elseprintf("\n登录失败!\n");printf("\n");printf(" 提示:按Y退出登录界面,按N返回登录界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,退出登录*/system("cls");flag=0;break;default:printf("请正确输入1-3:");system("cls");}}}void load_student(int a) /*启动学生函数*/{int flag=1;system("cls");while(flag){switch(show_student_select()){case 1: /*选择1,学生信息查询*/system("cls");print_stu_information(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩查询*/system("cls");print_stu_score(a);printf("\n");printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表查询*/menu2();printf(" 提示:按Y退出学生查询界面,按N返回学生查询界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出查询界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}void load_teacher(int a) /*启动老师函数*/{int flag=1;system("cls");while(flag){switch(show_teacher_select()){case 1: /*选择1,学生信息录入*/input_information(a);system("cls");student_file2();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 2: /*选择2,学生成绩录入*/input_score_menu(a);system("cls");student_file3();printf("\n 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 3: /*选择3,学生课表录入*/menu1();printf(" 提示:按Y退出教师录入界面,按N返回教师录入界面!!!\n");flag=yes_no_return();system("cls");break;case 4: /*选择4,退出管理界面*/system("cls");flag=0;break;default:printf("请正确输入1-4:");system("cls");}}}int length_student_name(char *p) /*验证用户名是否合法*/ {int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_student_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_student_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_student_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int vaild_two_password(char *p1,char *p2) /*验证两次密码是否相同*/{if(strcmp(p1,p2)==0)return 1;elsereturn 0;}int student_register(struct student *ptr_student,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==student_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册学生姓名:");fflush(stdin);gets(ptr_student[*size].student_name);if(!(length_student_name(ptr_student[*size].student_name)&&vaild_student_name(ptr_student[*size].student_name))){printf(" ◆您输入的姓名无效,学生姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_student[*size].password,password);if(!(length_student_password(ptr_student[*size].password)&&vaild_student_pa ssword(ptr_student[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号!!!",ptr_student[*size].student_id=20150000+*size);return 1;}int is_my_student(struct student *p,int *size) /*如果登录成功则返回第i+1个学生的信息,否则返回0*/{int i;int zhanghao;char mima[18];system("cls");printf("\n\n");printf(" ★请输入您的账号:");scanf("%d",&zhanghao);fflush(stdin);printf("\n");printf(" ★请输入您的密码:");gets(mima);for(i=0;i<*size;i++){if((zhanghao==p[i].student_id)&&(strcmp(mima,p[i].password)==0)) return i+1;}return 0;}void display_student(struct student stu) /*显示学生信息*/{printf("\n ★您的账号是:%d\n",stu.student_id);}int length_teacher_name(char *p) /*验证用户名是否合法*/{int l;l=strlen(p);if(l>20||l<1)return 0;elsereturn 1;}int vaild_teacher_name(char *p) /*判断用户名是否有效*/{int i=0;int len=strlen(p);if((*p>='a'&&*p<='z')||(*p>='A'&&*p<='Z')) /*判断首字母是不是字母*/ {for(i=0;i<len;i++){if(!(p[i]='_'||(p[i]>='a'&&p[i]<='z')||(p[i]>='A'&&p[i]<='Z')||(p[i]>='0'&&p[i]<=' 9'))) /*判断后面的字符是否有效*/return 0;}return 1;}elsereturn 0;}int length_teacher_password(char *p) /*密码长度有效性验证*/{int len;len=strlen(p);if(len<6||len>16)return 0;elsereturn 1;}int vaild_teacher_password(char *p) /*密码的有效性验证*/{int i=0;for(;*p!='\0';p++){if(!((*p>='a'&&*p<='z')||(*p>'A'&&*p<'Z')||(*p>='0'&&*p<='9'))) return 0;}return 1;}int teacher_register(struct teacher *ptr_teacher,int *size) /*完成注册功能*/{char password[16];char repassword[16];if(*size==teacher_num){puts(" ◆注册人数已满!");printf("\n");return 0;}system("cls");printf("\n\n");printf(" ★请输入注册教师姓名:");fflush(stdin);gets(ptr_teacher[*size].teacher_name);if(!(length_teacher_name(ptr_teacher[*size].teacher_name)&&vaild_teacher_na me(ptr_teacher[*size].teacher_name))){printf(" ◆您输入的姓名无效,教师姓名在1-20之间,首字符为字母,后面必须为字母、数字或下划线!!!");printf("\n");return 0;}printf("\n");printf(" ★请输入注册密码:");fflush(stdin);gets(password);printf("\n");printf(" ★请再次输入注册密码:");fflush(stdin);gets(repassword);printf("\n");if(!vaild_two_password(password,repassword)){printf("\n №:两次输入的密码不一致!!!");printf("\n");return 0;}elsestrcpy(ptr_teacher[*size].password,password);if(!(length_teacher_password(ptr_teacher[*size].password)&&vaild_teacher_password(ptr_teacher[*size].password))){printf(" ◆您输入的密码无效,密码应在6-16位之间,密码只能包含字母和数字!!!");printf("\n");return 0;}printf(" ★您的编号为:%d,这将是您的登录账号。
学生考勤系统c语言课程设计一、课程目标知识目标:1. 理解C语言在开发学生考勤系统中的应用,掌握基本的数据类型、变量、运算符和表达式;2. 学会使用C语言控制结构,如顺序、分支和循环结构,实现对考勤数据的逻辑处理;3. 掌握C语言数组、函数和文件操作,实现考勤数据的存储、读取和统计。
技能目标:1. 能够运用C语言编写程序,设计并实现一个简单的学生考勤系统;2. 培养学生分析问题、解决问题的能力,使其能够根据需求进行程序设计和调试;3. 学会使用C语言相关开发工具,如编译器和调试器,提高实际操作能力。
情感态度价值观目标:1. 培养学生对C语言编程的兴趣和热情,激发其主动学习和探究的精神;2. 增强学生的团队合作意识,使其在课程设计和实践过程中相互协作、共同进步;3. 通过课程学习,让学生认识到编程在现实生活中的应用价值,提高其创新意识和实践能力。
课程性质:本课程为实践性较强的课程设计,旨在让学生将所学的C语言知识运用到实际项目中,提高编程能力和解决实际问题的能力。
学生特点:学生已经掌握了C语言的基本语法和编程技巧,具有一定的编程基础,但实际项目经验不足。
教学要求:结合学生特点,注重实践操作,引导学生主动思考,培养其编程能力和团队协作能力。
在教学过程中,关注学生个体差异,因材施教,确保每位学生能够达到课程目标。
通过课程设计,使学生在实践中巩固所学知识,提高综合运用能力。
二、教学内容1. C语言基本知识回顾:数据类型、变量、常量、运算符和表达式;2. 控制结构:顺序结构、分支结构(if-else、switch-case)、循环结构(for、while、do-while);3. 函数:函数的定义、声明、调用,以及递归函数;4. 数组:一维数组、二维数组,数组的使用和操作;5. 文件操作:文件打开、关闭、读写,以及文件定位;6. 学生考勤系统功能模块设计:用户登录、学生信息管理、考勤记录、考勤统计等;7. 项目实践:根据需求分析,引导学生运用所学的C语言知识进行学生考勤系统的设计和实现;8. 编程规范和调试技巧:培养学生良好的编程习惯,提高代码质量。
学生考勤系统的c语言课程设计.课程设计说明学校,系:软件学院的专业化:软件工程学生的名字:卢清雪没有。
以下内容:1514011242设置项目标题:学生考勤系统的起止日期是从XXXX :年2月29日到XXXX 3月11日。
它指的是导师:财富第一章的设计目的。
本课程设计是本学期程序设计基础课程的实际应用,也是对所学知识的测试。
通过本课程设计可以达到的目的如下:1.巩固和深化对C课程基本内容和理论知识的理解和掌握。
2.掌握C语言编译和程序调试的基本技能。
3.用C语言进行基本的程序设计,逐步了解文件的一些相关操作,掌握函数的使用技巧,包括函数类型的选择和参数的传递方式。
4.掌握数组、指针、引用、文件等的编译方法。
提高用C语言解决实际问题的能力。
5.通过学生考勤系统的设计,源代码的编写,以及各种语法和函数在C语言中的使用,对较为复杂的结构、链接和文件的操作更加熟悉。
6.通过课程设计,将本学期学到的知识与实际应用相结合,培养自己的动手能力,加强各学科之间的联系,从而提高团队意识,加强团队之间的协调与合作,满足2.1学生考勤信息记录系统第二章总体设计的要求。
通过该系统,可以实现学生考勤信息的创建、录入、修改、查询和保存等操作的管理。
实验出勤信息包括学生姓名、学生编号、科目类型和每个科目的出勤信息。
主要功能:1)、可以完成考勤输入和修改2)、创建班级信息3)、设备查询4)、根据设计要求将考勤信息保存到文件2.2流程图中,绘制如下流程图:启动菜单24。
修改6。
5号出口。
查询23。
创建2。
查询11。
输入void creat(void),这是2.3中设置的主要功能。
无效保存(结构学生*,char[]);结构学生*负荷(char[));无效进入(void);/*输入函数*/void search _ 1(void);/*查询函数_ 1 */void search _ 2(void);/*查询函数_2*/void添加(void);无效修改(void);/*修改功能*/作废返回(作废);/*退出函数*/void _ 1();/* interface-1 */void _ 2();/*接口-2 */mune _ 1();mune _ 2();3.1函数和调用关系void _ 1();/*菜单功能1*/void mune_2() /*菜单功能2*/开始输入记录、查询个人、创建信息、修改信息、查询整班结束菜单_2退出系统1234 56休息休息休息休息休息休息;/*输入功能*/开始输入班级和学生人数p-num==大学体育大学英语口语C语言大学物理马克思大学英语高等数学输入学生对此班级的兴趣Y/N②返回菜单2 n退出开始无效搜索_1(无效);/*查询个人信息*/输入此人的班级和学生编号AP-num==此人出勤信息的真或假输出返回菜单2开始无效搜索_2(无效);/*查询班级信息*/输入班级查询并输出该班级的考勤信息。
c语言课程设计学生考勤系统一、教学目标本课程旨在通过C语言编程实现一个学生考勤系统,让学生掌握C语言的基本语法、数据结构、函数、文件操作等知识,培养学生具备良好的编程习惯和问题解决能力。
具体目标如下:1.知识目标:–掌握C语言的基本语法和编程技巧。
–熟悉结构体、数组、链表等数据结构的基本使用。
–理解函数的定义、声明和调用。
–学会文件操作,包括文件的打开、读写、关闭等。
2.技能目标:–能够运用C语言实现一个简单的学生考勤系统,包括学生的增删改查、考勤记录的保存和展示等功能。
–培养学生独立分析问题、解决问题的能力。
–培养学生的编程思维和良好的编程习惯。
3.情感态度价值观目标:–激发学生对计算机编程的兴趣,提高学生主动学习的积极性。
–培养学生团队合作、自主探究的精神。
–使学生认识到C语言在实际应用中的重要性,提高学生对计算机科学的认知。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数、文件操作等。
具体安排如下:1.C语言基本语法:介绍变量、常量、运算符、表达式等基本概念,以及条件语句、循环语句等控制结构。
2.数据结构:学习结构体、数组、链表等数据结构的基本使用,为后续学生考勤系统的实现打下基础。
3.函数:讲解函数的定义、声明和调用,使学生能够熟练使用函数编写代码,提高代码的可读性和可维护性。
4.文件操作:学习文件的基本操作,包括文件的打开、读写、关闭等,以便学生能够实现对学生考勤数据的保存和加载。
5.学生考勤系统实现:通过实际项目练习,让学生掌握所学知识,实现一个具有增删改查等功能的学生考勤系统。
三、教学方法本课程采用讲授法、案例分析法、实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:用于讲解C语言的基本语法、数据结构、函数等理论知识,使学生能够系统地掌握所学内容。
2.案例分析法:通过分析实际案例,让学生了解C语言在实际应用中的重要性,提高学生的学习兴趣。
3.实验法:让学生动手实践,实现学生考勤系统,培养学生的编程能力和问题解决能力。
HUBEI UNIVERSITY OF AUTOMOTIVE TECHNOLOGYC语言程序设计课程设计报告课设题目:考勤管理系统专业:自动化班级: xxxxx姓名: xxxx成绩: xxxx目录1.课程设计目的 (3)2.需求分析 (3)2.1要求 (3)2.2任务描述 (4)2.3运行环境 (4)2.4开发工具 (4)3.总体设计 (4)3.1系统流设计 (4)3.2系统模块设计 (5)4.详细设计 (6)4.1数据结构设计 (6)4.2模块接口设计 (6)4.3 以下是几个主要模块的流程图: (7)5.运行结果 (10)5.1主菜单界面: (11)5.2信息录入界面: (12)5.3信息浏览界面: (13)5.4 信息查询界面: (15)5.5信息修改界面: (15)6.程序调试与测试 (17)6.1程序调试 (17)6.2程序测试 (19)7.问题与不足 (19)8.建议 (19)9.编程体会 (19)10.程序源代码: (20)11.参考文献 (38)12.用户使用手册 (38)1.课程设计目的1)通过课程设计,加深对结构化程序设计思想的理解,能对系统功能进行分析,并设计合理的模块化结构。
2)通过课程设计,进一步掌握C语言中重要的数据结构。
掌握并熟练运用指针、链表、结构体、文件等数据结构。
3)通过课程设计,提高程序开发能力,能运用合理的控制流编写清晰高效的程序。
4)通过课程设计,培养C语言知识运用和自学能力,真正的把课堂上获得的知识运用起来,培养自己对程序编写的兴趣,并能独立设计和实现一个小型系统。
5)通过课程设计,加强了自己的程序分析能力。
2.需求分析2.1要求1)遵循软件开发过程的基本规范;能灵活应用,初步具备运用C程序解决实际问题的能力。
2)运用结构化程序设计方法,按照课程设计题目要求,完成包括需求分析、数据结构设计、概要设计、详细设计、编写代码、调试和测试C程序等过程。
3)学会利用数组、结构体、链表进行相关信息表示。
学生管理系统c语言源代码学生管理系统c语言源代码#include stdio.h#include dos.h#include string.h#include stdlib.h#include malloc.h#define SIZE 8struct student{char name;char num;int score;float ave;struct student *next;}stu[SIZE],temp,s;void shuru(){int i,j,sum,length,flag=1,a;FILE *fp;while(flag==1){printf(“Define a rangeclass number:");scanf("%d",printf("Input the total number of the class(a):"); scanf("%d",length);if(lengtha)flag=0;}for(i=0;ilength;i++){printf("\n请输入学生的信息:");printf("\n输入姓名:");scanf("%s",stu[i].name);printf("\n输入序号.:");scanf("%s",stu[i].num);printf("\n输入成绩:\n");sum=0;for(j=0;jj++){printf("score %d:",j+1);scanf("%d",stu[i].score[j]);sum+=stu[i].score[j];}stu[i].ave=sum/3.0;}学生管理系统c语言源代码fp=fopen("stu1.txt","w");for(i=0;ilength;i++)if(fwrite(stu[i],sizeof(struct student),1,fp)!=1)printf("File write error\n");fclose(fp);fp=fopen("stu1.txt","r");printf("\name\ NO. score1 score2 score3 sum ave\n");for(i=0;ilength;i++){fread(stu[i],sizeof(struct student),1,fp);printf("%3s%5s%7d%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i ].score,stu[i].score,stu[i].score,sum=stu[i].score+stu[i].score+stu[i].score,stu[i].ave);}}void chaxun(){ FILE *fp, *fp1;char n,name;int i,j,k,t,m,flag=1;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");k=i;printf("\nPlease select the menu(1.number ):"); scanf("%d",switch(m){case 1:printf("\nchaxun number:");scanf("%s",n);for(flag=1,i=0;ii++){if(strcmp(n,stu[i].num)==0){j=i;flag=0;break;}}break;case 2:printf("\nchaxun name:");scanf("%s",name);for(flag=1,i=0;ii++){if(strcmp(name,stu[i].name)==0){j=i;flag=0;break;学生管理系统c语言源代码}}}if(!flag){printf("\nYou can find:\n");fp1=fopen("stu2.txt","w");printf(" name NO. score1 score2 score3ave\n");fwrite(stu[j],sizeof(struct student),1,fp1);printf("%-15s%11s%7d%7d%7d%10.2f",stu[j].name,stu[j].num,stu[j].score,stu[j].score,stu[j].score,stu[j].ave);}else printf("\nNot found!");fclose(fp);fclose(fp1);}xiugai(){ int a;printf("\nplease select the menu(1.CHARU 2.__ ):");scanf("%d",switch(a){case 1:Insert(); break;case 2:Delete(); break;}}Insert(){ FILE *fp;int i,j,t,n;printf("\nNO.:");scanf("%s",s.num);printf("name:");scanf("%s",);printf("score1,score2,score3:");scanf("%d,%d,%d",s.score,s.score,s.score);s.ave=(s.score+s.score+s.score)/3.0;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:\n");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)学生管理系统c语言源代码printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(t=0;stu[t].aves.avett++);printf("\nnow:\n");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fwrite(s,sizeof(struct student),1,fp);printf("\n%-15s%11s%7d%7d%7d%10.2f",,s.num,s.score,s.score, s.score,s.ave);for(i=t;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);}Delete(){ FILE *fp;int i,j,t,n,flag;char number;if((fp=fopen("stu1.txt","rb"))==NULL){printf("Can not open the file.");exit(0);}printf("\noriginal data:");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;学生管理系统c语言源代码printf("\nInput number deleted:");scanf("%s",number);for(flag=1,i=0;flagii++){if(strcmp(number,stu[i].num)==0){for(t=i;tt++){strcpy(stu[t].num,stu[t+1].num);strcpy(stu[t].name,stu[t+1].name);for(j=0;jj++)stu[t].score[j]=stu[t+1].score[j];stu[t].ave=stu[t+1].ave;}n=n-1;elseprintf("\n Not found!");printf("\nNow,the content of file:\n");fp=fopen("stu1.txt","wb");for(i=0;ii++)fwrite(stu[i],sizeof(struct student),1,fp);fclose(fp);fp=fopen("stu1.txt","r");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++)printf("%-15s%11s%7d%7d%7d%10.2f\n",stu[i].name,stu[i].num,stu[i].score, stu[i].score,stu[i].score,stu[i].ave);fclose(fp);}paixu(){FILE *fp;int i,j,n;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++) {printf("\n%-15s%11s",stu[i].name,stu[i].num);for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);n=i;for(i=0;ii++)for(j=i+1;jj++)学生管理系统c语言源代码if(stu[i].avestu[j].ave){temp=stu[i];stu[i]=stu[j];stu[j]=temp;}printf("\nnow:");fp=fopen("stu1.txt","w");for(i=0;ii++){fwrite(stu[i],sizeof(struct student),1,fp);printf("\n%-15s%11s",stu[i].name,stu[i].num);tongji(){ FILE *fp;int i,j,k,labe1,b;int a5=0;int a6=0;int a7=0;int a8=0;int a9=0; int a10=0; float t;if((fp=fopen("stu1.txt","r"))==NULL){printf("Can not open the file.");exit(0);}printf("\nfile'stu1.txt':");for(i=0;fread(stu[i],sizeof(struct student),1,fp)!=0;i++){printf("\n%-15s%11s",stu[i].name,stu[i].num); for(j=0;jj++)printf("%7d",stu[i].score[j]);printf("%10.2f",stu[i].ave);}fclose(fp);k=i;for(i=0;ii++){labe1=0;if(stu[i].ave60){labe1++;t=labe1/(float)k*100;}}printf("\nbujigelv:");printf("%f%",t);printf("\n");for(j=0;jj++){a5=0;a6=0;a7=0;a8=0;a9=0;a10=0;k=i;printf("kemu is %d:\n",j);for(i=0;ii++)学生管理系统c语言源代码{b=stu[i].score[j]/10;if(b6)a5++;elseif(b=6b7)a6++;elseif(b=7b8)a7++;elseif(b=8b9)a8++;if(b=9b10)a9++;elseif(b==10)a10++;}printf(" 不及格is %d\n",a5);printf(" 60--69 is %d\n",a6);printf(" 70--79 is %d\n",a7);printf(" 80--89 is %d\n",a8);printf(" 90--99 is %d\n",a9);printf(" 100 is %d\n",a10);}}main(){int a;printf(" ____\n"); printf(" 欢迎进入学生成绩管理系统\n");printf(" ____\n"); while(1){printf("\n选择菜单:\n");printf("\n");printf(" 1.输入 2.查询 3.排序 4.修改 5.统计 6.退出\n"); scanf("%d",switch(a){case 1: shuru();break;case 2: chaxun(); break;case 3: paixu(); break;case 4: xiugai(); break;学生管理系统c语言源代码case 5: tongji();break; case 6: exit(0); }。
#include"stdio.h"#include"stdlib.h"#include"string.h"struct stu_info1{char num[13];//学号char name[10];//姓名char sex[5];//性别char cls[20];//班级}stu1[6];struct stu_info2{char counum[6];//课程号char counam[20];//课程名称int credit;//学分}stu2[6];struct stu_info3{char num[13];//学号char counum[6];//课程号float results;//分数}stu3[12];struct stu_info4{char num[13];//学号char counum[6];//课程号float results;//分数}stu4[12];int n=11;void main(){void gengxin();void input1();void input2();void input3();void output();void xianshi();void chaxun();void printf1();void printf2();input1();input2();output();int i;loop: ;printf("*************欢迎使用分数查询系统*************\n");printf("** 请选择**\n");printf("** 1.录入2.删除无用信息(管理员功能) **\n");printf("** 3.显示4.查询(学生功能) **\n");printf("** 5.显示学生信息6.显示课程信息**\n");printf("** 7.退出**\n");printf("**********************************************\n");scanf("%d",&i);switch(i){case 1: input3();break;case 2:gengxin();break;case 3:xianshi();goto loop;case 4: chaxun();goto loop;case 5: printf1();goto loop;case 6: printf2();goto loop;case 7:break;default:printf("error");break;}}void input1()//录入结构体stu1[]{int i;FILE *fp;if((fp=fopen("A.txt","r"))==NULL){printf("can not open file\n");exit(0);}/* printf(" 学号姓名性别班级\n");*/for(i=0;i<=5;i++){fscanf(fp,"%s%s%s%s",&stu1[i].num,&stu1[i].name,&stu1[i].sex,&stu1[i].cls);/*printf("%-13s %-10s %-5s %-20s\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i] .cls);*/}fclose(fp);}void input2()//录入结构体stu2[]{int i;FILE *fp;if((fp=fopen("B.txt","r"))==NULL){printf("can not open file\n");exit(0);}for(i=0;i<=5;i++){fscanf(fp,"%s%s%d",&stu2[i].counum,&stu2[i].counam,&stu2[i].credit);}fclose(fp);}void input3()//录入成绩{FILE *fp;fp=fopen("C.txt","w");int a,i,j,k;float cetss;char number[13],cnum[6],mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){printf("请输入要录入学生成绩的个数\n");scanf("%d",&a);for(i=1;i<=a;i++){printf("请输入要录入的第%d同学的学号:",i);scanf("%s",number);printf("请输入要录入的第%d同学的课程号:",i);scanf("%s",cnum);for(j=0;j<=5;j++)//学号{if((strcmp(number,stu1[j].num)==0))break;}if(j<=5){for(k=0;k<=5;k++)//课程号{if(strcmp(cnum,stu2[k].counum)==0){printf("请输入要录入同学的成绩:");scanf("%f",&cetss);fprintf(fp,"%s %s %f\n",number,cnum,cetss);break;}}}if(j>5||k>5){printf("Error,please input again");i=i-1;}printf("录入成功\n");}}else{printf("密码错误\n");}}void output()// 录入结构体stu3[]{int i;FILE *fp=fopen("C.txt","r");for(i=0;i<n;i++){fscanf(fp,"%s%s%f",&stu3[i].num,&stu3[i].counum,&stu3[i].results);/*printf("%s%s%f\n",stu3[i].num,stu3[i].counum,stu3[i].results);*/ }fclose(fp);}void xianshi()// 显示成绩{int i,j;for(i=0;i<n;i++){for(j=0;j<6;j++){if((strcmp(stu3[i].num,stu1[j].num))==0)printf("%s\t",stu1[j].name);}for(j=0;j<6;j++){if(strcmp(stu3[i].counum,stu2[j].counum)==0)printf("%s\t",stu2[j].counam);}printf("%3.1f\n",stu3[i].results);}}void chaxun()//查询功能{char number[13],c;int i,j,k,a,b,d;while((c=getchar())!='Q'){a=0,b=0;//a记录学分b记录学科printf("请输入要查询同学的学号\n");scanf("%s",number);for(i=0;i<n;i++){if(strcmp(number,stu3[i].num)==0){printf("学号:%s\t",stu3[i].num);for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){printf("姓名:%s\n",stu1[j].name);}}break;}}d=i;for(i=0;i<n;i++)if(strcmp(number,stu3[i].num)==0){b=b+1;for(j=0;j<6;j++){if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<6;k++){if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;}break;}}if(stu3[i].results>=60){a=a+stu2[k].credit;printf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,stu2[k].credit);}elseprintf("课程号:%s\t课程名称:%s\t成绩:%3.1f\t实得学分:%d\n",stu3[i].counum,stu2[k].counam,stu3[i].results,0);}if(d<n){printf("共修%d科\t\t实得总学分:%d\n",b,a);}else{printf("学号输入错误\n");}getchar();printf("退出请按Q+回车,继续查询请按回车键");}}void gengxin()//更新信息,删除C.txt中无用信息{FILE *fp;int i,j,k;char mima[10];printf("请输入管理员密码\n");scanf("%s",mima);if(strcmp(mima,"abc111")==0){fp=fopen("C.txt","w");for(i=0;i<n;i++){for(j=0;j<6;j++)if(strcmp(stu3[i].num,stu1[j].num)==0){for(k=0;k<=5;k++)if(strcmp(stu3[i].counum,stu2[k].counum)==0)break;if(k<=5){fprintf(fp,"%s %s %f\n",stu3[i].num,stu3[i].counum,stu3[i].results);}}}printf("更新C.txt成功\n");fclose(fp);}else{printf("密码错误\n");}}void printf1()//显示学生信息{int i;printf(" 学号姓名性别班级\n");for(i=0;i<=5;i++){printf("%-13s%-10s%-5s %-20s\n\n",stu1[i].num,stu1[i].name,stu1[i].sex,stu1[i].cls);}}void printf2()//显示课程信息{int i;printf(" 课程编号课程名称学分\n");for(i=0;i<=5;i++){printf("%-6s%-20s %-4d\n\n",stu2[i].counum,stu2[i].counam,stu2[i].credit);}}。
学生成绩管理系统(C语言)C语言课程设计报告一、实践的目的和要求加深对《C语言程序设计》课程所学知识的理解,进一步巩固C语言讲法规则。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力二、实践内容在熟练掌握C语言的基本知识:数据类型(整形、实型、字符型、指针、数组、结构等);运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构);函数的使用,结构体和文件的操作等。
三、设计说明学生成绩管理系统建立一个学生成绩管理系统。
程序运行时显示一个简单的菜单。
例如:1.信息输入(INPUT)2.信息的删除与修改3.显示当前学生成绩的记录信息,若无记录,则给出提示信息4.学生或者各个班级各门课程总分、平均分、最低分、最高分等的统计5.可以按照班级、姓名、性别、分数(可以有区间)等方式进行查询6.具有良好的交互功能7.能使用图形函数进行简单的界面设计8.具有良好的纠错功能9.退出等等程序:#include <stdio.h> /*文件操作(读文件)*/#include<dos.h>#include<stdlib.h> /*其它说明*/#include<string.h> /*字符串函数*/#include<mem.h> /*内存操作函数*/#include<conio.h> /*屏幕操作函数*/#include<ctype.h> /*字符操作函数*/#include<alloc.h> /*动态地址分配函数*/#include<time.h>#define LEN sizeof(STUDENT)#define N 3typedef struct stu /*定义结构体数组用于缓存数据*/{char grade[6];char name[5];char sex[4] ;int score[N];int sum;float average;int order;struct stu *next;}STUDENT;/*以下是函数原型*/STUDENT *init(); /*初始化函数*/STUDENT *create(); /*创建链表*/STUDENT *delete(STUDENT *head); /*删除记录*/STUDENT *sort(STUDENT *head); /*按平均分排序*/void print(STUDENT *head); /* 显示所有记录*/void name(STUDENT *head); /*姓名查找*/void grade(STUDENT *head); /*班级查找*/void sex(STUDENT *head); /*性别查找*/void average(STUDENT *head); /*按平均分查找在那个分数里*/STUDENT *statistciam(STUDENT *head);/*统计记录*/void save(STUDENT *head); /*保存文件*/STUDENT *load(); /*读文件*/STUDENT *insert(STUDENT *head,STUDENT *new); /*插入记录*/int menu_select(); /*菜单函数*/int menu_search(); /*查询菜单*/void code(); /*密码验证*//*主函数界面*/main(){int i,j,n,m;STUDENT *head,new; /*链表定义头指针*/randomize();/*开启扬声器,发出声音*/while(!bioskey(1)){j=rand()*5000;sound(j);delay(10);}nosound();/*关闭声音文件*/code();/*密码输入*/clrscr(); /*清屏*/for(;;) /*无限循环*/{switch(menu_select()) /*调用主菜单函数,返回值整数作开关语句的条件*/{ /*值不同,执行的函数不同,break 不能省略*/case 0:head=init();break; /*执行初始化*/case 1:head=create();break; /*创建链表*/case 2:head=delete(head);break; /*删除记录*/case 3:print(head);break; /*显示全部记录*/case 4:loop:printf("sreach:\n 1.grade\n \n 3.sex\n 4.average\n 5.quit\n Enter you choice(0~5):");scanf("%d",&n);switch(n){case 1:grade(head);goto loop;case 2:name(head);goto loop;case 3:sex(head);goto loop;case 4:average(head);goto loop;case 5: break;}break;/*查找记录*/case 5:sort(head);break; /*排序*/case 6:save(head);break; /*保存文件*/case 7:head=load(); break; /*读文件*/case 8:head=insert(head,&new); break; /*插入记录*/case 9:head=statistciam(head); break; /*统计记录*/case 10:exit(0); /*如菜单返回值为10程序结束*/}}}/*密码输入*/void code(){int i;char number[20];const w=10;printf("\n\t\t\t--------------------------------------------------");printf("\n\t\t\tBecause this system is busywork,Code is: 123456");printf("\n\t\t\t----------------------------------------------- ");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n");printf("\n\t*********************************");printf("\n\t Please Enter The Code : ");printf("\n\t*********************************\n");scanf("%s",number);printf("\n\t\t\tExamining!");for(i=0;i<=w;i++){printf("*");}if(strcmp(number,"123456")==0){printf("\n\t\t\tCode is right!press any key enter menu......");clrscr();}else{printf("\n\t\t\tCode is wrong!Please enter again : ");clrscr();code();}}/*初始化函数*/STUDENT *init(){return NULL; /*返回空指针*/}/*菜单选择函数*/menu_select(){char *menu[]={"********************************************", " Welcome to "," The student score manage system!","*****************MENU***********************", /*定义菜单字符串数组*/" 0. Init list", /*初始化*/" 1. Input list", /*输入记录*/" 2. Delete a record from list", /*从表中删除记录*/" 3. Print list ", /*显示当前学生成绩的记录信息*/" 4. Search record ", /*查询学生记录*/" 5. Sort to make new a file ", /*排序*/" 6. Save the file", /*将单链表中记录保存到文件中*/" 7. Load the file", /*从文件中读入记录*/" 8. insert record to list ", /*插入记录到表中*/" 9. statistciam record to list ", /*统计记录到表中*/" 10. Quit", /*退出*/"********************************************"," Producer:ZengWenyan ZhaoJingxiu "," Faculty Adviser:XiaoFengrui ",}; /*退出*/char s[3]; /*以字符形式保存选择号*/int c,i; /*定义整形变量*/textbackground(MAGENTA); /*设置背景颜色为粉色*/gotoxy(1,50); /*移动光标*/printf("press any key enter menu......\n"); /*压任一键进入主菜单*/getch(); /*输入任一键*/clrscr(); /*清屏幕*/gotoxy(1,1); /*移动光标*/textcolor(YELLOW); /*设置文本显示颜色为黄色*/textbackground(BLUE); /*设置背景颜色为蓝色*/gotoxy(15,2); /*移动光标*/putch(0xc9); /*输出左上角边框┏*/for(i=1;i<44;i++)putch(0xcd); /*输出上边框水平线*/putch(0xbb); /*输出右上角边框┓*/for(i=3;i<23;i++){gotoxy(15,i);putch(0xba); /*输出左垂直线*/gotoxy(59,i);putch(0xba);} /*输出右垂直线*/gotoxy(15,22);putch(0xc8); /*输出左上角边框┗*/for(i=1;i<44;i++)putch(0xcd); /*输出下边框水平线*/putch(0xbc); /*输出右下角边框┛*/window(16,3,58,21); /* 制作显示菜单的窗口,大小根据菜单条数设计*/clrscr(); /*清屏*/for(i=0;i<18;i++) /*输出主菜单数组*/{gotoxy(1,i+1);cprintf("%s",menu[i]);}textbackground(BLACK); /*设置背景颜色为黑色*/window(1,1,80,25); /*恢复原窗口大小*/gotoxy(10,23); /*移动光标*/do{printf("\n Enter you choice(0~10):"); /*在菜单窗口外显示提示信息*/scanf("%s",s); /*输入选择项*/c=atoi(s); /*将输入的字符串转化为整形数*/}while(c<0||c>10); /*选择项不在0~10之间重输*/return c; /*返回选择项,主程序根据该数调用相应的函数*/}/*输入函数*/STUDENT *create(){int i,s;STUDENT *head=NULL,*p; /* 定义函数.此函数带回一个指向链表头的指针*/clrscr();textbackground(MAGENTA);textcolor(BLUE);for(;;){p=(STUDENT *)malloc(LEN); /*开辟一个新的单元*/if(!p) /*如果指针p为空*/{printf("\nOut of memory."); /*输出内存溢出*/return (head); /*返回头指针,下同*/}printf("Enter the grade(0:list end):");scanf("%s",p->grade);if(p->grade[0]=='0') break; /*如果班级首字符为0则结束输入*/printf("Enter the name:");scanf("%s",p->name);do{printf("Enter the sex(M or W):");scanf("%s",&p->sex[0]);if(p->sex[0]!='M'&&p->sex[0]!='W')printf("Data error,please enter again.\n");}while(p->sex[0]!='M'&&p->sex[0]!='W');printf("Please enter the %d scores\n",3); /*提示开始输入成绩*/s=0; /*计算每个学生的总分,初值为0*/for(i=0;i<N;i++) /*3门课程循环3次*/{do{printf("score%d:",i+1);scanf("%d",&p->score[i]);if(p->score[i]<0 || p->score[i]>100) /*确保成绩在0~100之间*/printf("Data error,please enter again.\n");}while(p->score[i]<0 || p->score[i]>100);s=s+p->score[i]; /*累加各门成绩*/}p->sum=s; /*将总分保存*/p->average=(float)s/3; /*先用强制类型转换将s转换成float 型,再求平均值*/p->order=0; /*未排序前此值为0*/p->next=head; /*将头结点做为新输入结点的后继结点*/head=p; /*新输入结点为新的头结点*/}return(head);}/*删除记录函数*/STUDENT *delete(STUDENT *head){int n;STUDENT *p1,*p2; /*p1为查找到要删除的结点指针,p2为其前驱指针*/char c,s[6]; /*s[6]用来存放班级,c用来输入字母*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter the deleted grade: ");scanf("%s",s);p1=p2=head; /*给p1和p2赋初值头指针*/while(strcmp(p1->grade,s) && p1 != NULL) /*当记录的班级不是要找的,或指针不为空时*/{p2=p1; /*将p1指针值赋给p2作为p1的前驱指针*/ p1=p1->next; /*将p1指针指向下一条记录*/}if(strcmp(p1->grade,s)==0) /*班级找到了*/{printf("**************************************FOUND******** ****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Ave | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4.2f | %-5d |\n", p1->grade,p1->name,p1->score[0],p1->score[1],p1->score [2],p1->sum,p1->average,p1->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");printf("Are you sure to delete the student Y/N ?"); /*提示是否要删除,输入Y删除,N则退出*/for(;;){scanf("%c",&c);if(c=='n'||c=='N') break; /*如果不删除,则跳出本循环*/if(c=='y'||c=='Y'){if(p1==head) /*若p1==head,说明被删结点是首结点*/ head=p1->next; /*把第二个结点地址赋予head*/elsep2->next=p1->next; /*否则将一下结点地址赋给前一结点地址*/n=n-1;printf("\nNum %s student have been deleted.\n",s);printf("Don't forget to save.\n");break; /*删除后就跳出循环*/}}}elseprintf("\nThere is no num %s student on the list.\n",s); /*找不到该结点*/return(head);}/* 显示全部记录函数*/void print(STUDENT *head){int i=0; /* 统计记录条数*/STUDENT *p; /*移动指针*/clrscr();textbackground(MAGENTA);textcolor(BLUE);p=head; /*初值为头指针*/printf("\n************************************STUDENT******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Rec | Grade | Name | Sc1 | Sc2 | Sc3 | Sum | Ave | Order |\n");printf("-------------------------------------------------------------------------------\n");while(p!=NULL){i++;printf("| %3d | %4s | %-4s | %3d | %3d | %3d | %3d | %4.2f| %-5d |\n",i,p->grade,p->name,p->score[0],p->score[1],p->score[2],p->su m,p->average,p->order);p=p->next;}printf("-------------------------------------------------------------------------------\n");printf("**************************************END************* *************************\n");}/*姓名查找记录函数*/void name(STUDENT *head){STUDENT *p; /* 移动指针*/char s[5]; /*存放姓名用的字符数组*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter name for searching.\n");scanf("%s",s);p=head; /*将头指针赋给p*/while(strcmp(p->name,s) && p != NULL) /*当记录的姓名不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p!=NULL) /*如果指针不为空*/{printf("\n*************************************FOUND******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4 .2f | %-5d|\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is no name %s student on the list.\n",s); /*显示没有该学生*/}/*班级查找记录函数*/void grade(STUDENT *head){STUDENT *p; /* 移动指针*/char s[6]; /*存放班级用的字符数组*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter grade for searching.\n");scanf("%s",s);p=head; /*将头指针赋给p*/while(strcmp(p->grade,s) && p != NULL) /*当记录班级不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p!=NULL) /*如果指针不为空*/{printf("\n*************************************FOUND******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is no grade %s student on the list.\n",s); /*显示没有该学生*/}/*性别查找记录函数*/void sex(STUDENT *head){STUDENT *p; /* 移动指针*/char s[4]; /*存放性别用的字符数组*/clrscr();textbackground(MAGENTA);textcolor(BLUE);printf("Please enter sex for searching.\n");scanf("%s",s);p=head; /*将头指针赋给p*/while(strcmp(p->sex,s) && p != NULL) /*当记录的性别不是要找的,或指针不为空时*/p=p->next; /*移动指针,指向下一结点*/if(p!=NULL) /*如果指针不为空*/{printf("\n*************************************FOUND******* *****************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is no sex %s student on the list.\n",s); /*显示没有该学生*/}/* 用平均分进行分数段查找 */void average(STUDENT *head){STUDENT *p; /* 移动指针*/clrscr();textbackground(MAGENTA);textcolor(BLUE);p=head; /*将头指针赋给p*/if(p!=NULL&&p->average<60&&p->average>0) /*如果指针不为空且平均分在0-60之间*/{printf("\n**********************************notpass************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseif(p!=NULL&&p->average<70&&p->average>=60) /*如果指针不为空且平均分在60-70之间*/{printf("\n**********************************60-70************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}else if(p!=NULL&&p->average<80&&p->average>=70) /*如果指针不为空且平均分在70-80之间*/{printf("\n**********************************70-80************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseif(p!=NULL&&p->average<90&&p->average>=80) /*如果指针不为空且平均分在80-90之间*/{printf("\n**********************************80-90************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | % 4.2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}else if(p!=NULL&&p->average<100&&p->average>=90) /*如果指针不为空且平均分在90-100之间*/{printf("\n**********************************90-100************************************\n");printf("-------------------------------------------------------------------------------\n");printf("| Grade | Name | sc1 | sc2 | sc3 | Sum | Av e | Order |\n");printf("-------------------------------------------------------------------------------\n");printf("| %4s | %4s | %3d | %3d | %3d | %3d | %4 .2f | %-5d |\n",p->grade,p->name,p->score[0],p->score[1],p->score[2],p->sum,p->average,p->order);printf("-------------------------------------------------------------------------------\n");printf("***************************************END************ **************************\n");}elseprintf("\nThere is not average student on the list.\n"); /*显示没有该学生*/}/*保存数据到文件函数*/void save(STUDENT *head){FILE *fp; /*定义指向文件的指针*/STUDENT *p; /* 定义移动指针*/char outfile[10];printf("Enter outfile name,for example c:\\score\n");scanf("%s",outfile);if((fp=fopen(outfile,"wb"))==NULL) /*为输出打开一个二进制文件,为只写方式*/{printf("Cannot open the file\n");return; /*若打不开则返回菜单*/}printf("\nSaving the file......\n");p=head; /*移动指针从头指针开始*/while(p!=NULL) /*如p不为空*/{fwrite(p,LEN,1,fp); /*写入一条记录*/p=p->next; /*指针后移*/}fclose(fp); /*关闭文件*/printf("Save the file successfully!\n");}/* 从文件读数据函数*/STUDENT *load(){STUDENT *p1,*p2,*head=NULL; /*定义记录指针变量*/FILE *fp; /* 定义指向文件的指针*/char infile[10];printf("Enter infile name,for example c:\\score\n");scanf("%s",infile);if((fp=fopen(infile,"rb"))==NULL) /*打开一个二进制文件,为只读方式*/{printf("Can not open the file.\n");return(head);}printf("\nLoading the file!\n");p1=(STUDENT *)malloc(LEN); /*开辟一个新单元*/if(!p1){printf("Out of memory!\n");return(head);}head=p1; /*申请到空间,将其作为头指针*/while(!feof(fp)) /*循环读数据直到文件尾结束*/{if(fread(p1,LEN,1,fp)!=1) break; /*如果没读到数据,跳出循环*/p1->next=(STUDENT *)malloc(LEN); /*为下一个结点开辟空间*/if(!p1->next){printf("Out of memory!\n");return (head);}p2=p1; /*使p2指向刚才p1指向的结点*/p1=p1->next; /*指针后移,新读入数据链到当前表尾*/}p2->next=NULL; /*最后一个结点的后继指针为空*/fclose(fp);printf("You have success to read data from the file!\n");return (head);}/*按平均分排序函数*/STUDENT *sort(STUDENT *head){int i=0; /*保存名次*/STUDENT *p1,*p2,*t,*temp; /*定义临时指针*/temp=head->next; /*将原表的头指针所指的下一个结点作头指针*/head->next=NULL; /*第一个结点为新表的头结点*/ while(temp!=NULL) /*当原表不为空时,进行排序*/ {t=temp; /*取原表的头结点*/temp=temp->next; /*原表头结点指针后移*/p1=head; /*设定移动指针p1,从头指针开始*/p2=head; /*设定移动指针p2做为p1的前驱,初值为头指针*/while(t->average<p1->average&&p1!=NULL) /*作成绩平均分比较*/{p2=p1; /*待排序点值小,则新表指针后移*/p1=p1->next;}if(p1==p2) /*p1==p2,说明待排序点值大,应排在首位*/ {t->next=p1; /*待排序点的后继为p*/head=t; /*新头结点为待排序点*/}else /*待排序点应插入在中间某个位置p2和p1之间,如p为空则是尾部*/{t->next=p1; /*t的后继是p1*/p2->next=t; /*p2的后继是t*/}}p1=head; /*已排好序的头指针赋给p1,准备填写名次*/ while(p1!=NULL) /*当p1不为空时,进行下列操作*/{i++; /*结点序号*/p1->order=i; /*将结点序号赋值给名次*/p1=p1->next; /*指针后移*/}printf("Sorting is sucessful.\n"); /*排序成功*/return (head);}/*插入记录函数*/STUDENT *insert(STUDENT *head,STUDENT *new){STUDENT *p0,*p1,*p2;int n,sum1,i;p1=head; /*使p1指向第一个结点*/p0=new; /*p0指向要插入的结点*/printf("\nPlease enter a new record.\n"); /*提示输入记录信息*/printf("Enter the grade:");scanf("%s",new->grade);printf("Enter the name:");scanf("%s",new->name);do{printf("Enter the sex(M or W):");scanf("%s",&new->sex[0]);if(new->sex[0]!='M'&&new->sex[0]!='W')printf("Data error,please enter again.\n");}while(new->sex[0]!='M'&&new->sex[0]!='W');printf("Please enter the %d scores.\n",3);sum1=0; /*保存新记录的总分,初值为0*/for(i=0;i<3;i++){do{printf("score%d:",i+1);scanf("%d",&new->score[i]);if(new->score[i]>100||new->score[i]<0)printf("Data error,please enter again.\n");}while(new->score[i]>100||new->score[i]<0);sum1=sum1+new->score[i]; /*累加各门成绩*/}new->sum=sum1; /*将总分存入新记录中*/new->average=(float)sum1/3;new->order=0;if(head==NULL) /*原来的链表是空表*/{head=p0;p0->next=NULL;} /*使p0指向的结点作为头结点*/ else{while((p0->average<p1->average)&&(p1->next!=NULL)) {p2=p1; /*使p2指向刚才p1指向的结点*/p1=p1->next; /*p1后移一个结点*/}if(p0->average>=p1->average){if(head==p1)head=p0; /*插到原来第一个结点之前*/else p2->next=p0; /*插到p2指向的结点之后*/p0->next=p1;}else{p1->next=p0;p0->next=NULL;} /*插到最后的结点之后*/}n=n+1; /*结点数加1*/head=sort(head); /*调用排序的函数,将学生成绩重新排序*/printf("\nStudent %s have been inserted.\n",new->name);printf("Don't forget to save the new file.\n");return(head);}/*统计学生成绩函数*/STUDENT *statistciam(STUDENT *head){floatsum1=0,sum2=0,sum3=0,ave1=0,ave2=0,ave3=0,max=0,min;STUDENT *p;int x,y=0,i=0;p=head;printf("1.sum and average\n2.single of average\n3.max of sum\n4.min of sum\n");scanf("%d",&x);getchar();switch(x)/*用switch语句实现功能选择*/{case 1: if(head==NULL){printf("\n There are not anyone's information !\n");return(head);}/*链表为空*/else{printf("---------------------------------------------------------\n");printf("|Grade\t|Name\t|Sc1\t|Sc2\t|Sc3\t|Sum\t|Ave\t|\n");printf("---------------------------------------------------------\n");/*打印表格域*/while(p!=NULL){sum1=p->score[0]+p->score[1]+p->score[2]; /*计算个人总分*/ave1=sum1/3;/*计算个人平均分*/printf("|%s\t|%s\t|%.1d\t|%.1d\t|%.1d\t|%.1f\t|%.1f\t|\n",p-> grade,p->name,p->score[0],p->score[1],p->score[2],sum1,ave1);/*打印结果*/printf("---------------------------------------------------------\n");/*打印表格域*/p=p->next;}}return(head);case 2: if(head==NULL){printf("\nThere are not anyone's information !\n");return(head);}/*链表为空*/while(p!=NULL){sum1=sum1+p->score[0];sum2=sum2+p->score[1];sum3=sum3+p->score[2];/*计算总分*/y=y+1;ave1=sum1/y;ave2=sum2/y;ave3=sum3/y;/*计算平均分*/p=p->next;/*使p指向下一个结点*/}printf("score1 average is%.1f\n",ave1);printf("score2 average is%.1f\n",ave2);printf("score3 average is%.1f\n",ave3);/*打印结果*/return(head);case 3:if(head==NULL){printf("\nThere are not anyone's information !\n");return(head);}/*链表为空*/max=p->score[0]+p->score[1]+p->score[2];while(i<N){i=i+1;sum1=p->score[0]+p->score[1]+p->score[2]; /*计算个人总分*/if(max<sum1)max=sum1;p=p->next;}printf("max of sum:%.1f",max);printf("\n");return(head);case 4: if(head==NULL){printf("\nThere are not anyone's information !\n");return(head);}/*链表为空*/while(p!=NULL){min=p->score[0]+p->score[1]+p->score[2];while(p!=NULL){sum2=p->score[0]+p->score[1]+p->score[2];if(min>sum2)min=sum2;p=p->next;}}printf("min of sum:%.1f",min);printf("\n");return(head);default :printf("Data error,please enter again!\n"); }return(head);}。
2012-2013学年第二学期学号1208010217《高级语言程序设计》课程设计报告题目:学生考勤管理系统专业:计算机科学与技术班级:12(2)班姓名:李天栋指导教师:孙淮宁成绩:计算机与信息工程系2013年6月30日目录1设计内容及要求 (3)1.1设计内容 (3)1.2设计任务及具体要求 (3)2概要设计 (4)2.1该系统的功能简介 (4)2.2 总体程序框图 (4)2.3各个模块之间的主要关系 (5)3设计过程或程序代码 (5)3.1各个模块的程序流程图及运行界面 (5)3.2对关键代码加以分析说明 (10)4程序调试分析 (14)5小结 (17)致谢 (17)参考文献 (17)附:源程序 (18)1 设计内容及要求1.1设计内容学生考勤信息记录了学生的缺课情况,它包括:缺课日期、第几节课(连续用begin-end 的形式表示)、课程名称(课程名称中不会出现空格)、学生姓名、缺课类型(迟到、早退、请假及旷课)。
1.2设计任务及具体要求任务:(1)给出软件结构,说明各模块的功能。
(2)设计相关的类,并说明该类的作用。
特别要用图形说明类之间的继承关系。
(3)编写代码具体要求:(1)定义相关的数据,比如:学生学号学生姓名课程名称上课时间到课时间出勤状态 [旷课/病假/事假/迟到/早退](2)能够进行以下操作:A.能够对数据进行增、删、改、查操作。
B.能够按学号顺序列出某一课程的出勤状况2 概要设计2.1系统的功能简介考勤管理系统,有以下功能:(1).录入学生的缺课记录:从键盘输入数据(提示:为避免重复从键盘输入数据,测试时可将数据存储在文件中,利用输入重定向功能读入),输入格式为:缺课日期第几节课课程名称学生姓名缺课类型每行一条纪录。
例如:2013-04-29 2-4 中国近现代文学史李云龙迟到2013-04-28 2-4 大学生社交礼仪马志鹏旷课(2).修改某个学生的缺课记录:可以对缺课纪录的任意部分进行修改,然后显示一下修改后的纪录。
#define PRINT0 printf("name:%s\nsex:%s\nage:%d\nID_card:%d\naddress:%s\n",st[i].name,st[i].sex,st[i].age,st[i] .ID_card,st[i].addr)#define PRINT1 printf("prefession:%s\nstudent_number:%d\n*****score*****\nwuli:%d\n",st[i].prefession,st[i] .student_number,st[i].score.wuli)#define PRINT2 printf("gaoshu:%d\nyingyu:%d\ntiyu:%d\naverage: %d\n",st[i].score.gaoshu,st[i].score.yingyu,st[i ].score.tiyu,st[i].score.aver)#define print1 printf("________________________________")#define N 2#include "string.h"#include "stdio.h"int sum=0;struct score{int wuli;int gaoshu;int yingyu;int tiyu;int aver;};struct message{ char name[10];int age;char sex[5];int ID_card;char addr[30];char prefession[30];int student_number;struct score score;}st[100];/*************write message*************/write_message(){ int flag;char chioce;do{system("cls");flag=2; sum++;printf("_______________________________");printf("please input student's message:\n");printf("\n");print1;printf("%dth student message:",sum);print1;printf("\nname:");scanf("%s",st[sum].name);printf("\nsex:");scanf("%s",st[sum].sex);printf("\nage:");scanf("%d",&st[sum].age);printf("\nID_card:");scanf("%d",&st[sum].ID_card);printf("\naddress:");scanf("%s",st[sum].addr);printf("\nprefession:");scanf("%s",st[sum].prefession);printf("\nschool number:");scanf("%d",&st[sum].student_number);printf("\n*****score******\n");printf("wuli:");scanf("%d",&st[sum].score.wuli);printf("\ngaoshu:");scanf("%d",&st[sum].score.gaoshu);printf("\nyingyu:");scanf("%d",&st[sum].score.yingyu);printf("\ntiyu:");scanf("%d",&st[sum].score.tiyu);printf("\naverage:");scanf("%d",&st[sum].score.aver);do{printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");getchar();scanf("%c",&chioce);printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}else if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);save_message();}/*************save message****************/save_message(){ FILE *fp;int i;if((fp=fopen("student.txt","wb"))==NULL){printf("read error \n");printf("press any key back to menu\n");getch();exit(1);}for(i=0;i<sum;i++)if(fwrite(&st[i],sizeof(struct message),1,fp)!=1){printf("write error\n");fclose(fp);}fclose(fp);printf("\n********___OK!___**********\n___press any key back___");sum=i;bioskey(0);}/***************add message*****************/add_message(){int i,j,flag; char chioce;i=0;j=sum-1;flag=0;do{ system("cls");i++; j++;print1;printf("add %dth student's meaasge\n",i);print1;printf("\nname:");scanf("%s",st[j].name);printf("\nsex:");scanf("%s",st[j].sex);printf("\nage:");scanf("%d",&st[j].age);printf("\nID_card:");scanf("%d",&st[j].ID_card);printf("\naddress:");scanf("%s",st[j].addr);printf("\nprefession:");scanf("%s",st[j].prefession);printf("\nstudent_number:");scanf("%d",&st[j].student_number);printf("\n*****score******\n");printf("wuli:");scanf("%d",&st[j].score.wuli);printf("\ngaoshu:");scanf("%d",&st[j].score.gaoshu);printf("\nyingyu:");scanf("%d",&st[j].score.yingyu);printf("\ntiyu:");scanf("%d",&st[j].score.tiyu);printf("\naverage:");scanf("%d",&st[j].score.aver);printf("\n\nweather add %dth student's message: \n",i+1);do{printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");getchar();scanf("%c",&chioce);printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}else if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;}while(1);}while(flag==1);sum=j+1;save_message();}/**********inqiure message******/inqiure_message(){int chioce;do{system("cls");printf("**********choose 0-3**********\n\n\n");printf(" 1:name inquire\n\n\n");printf(" 2:IDcard inqiure\n\n\n");printf(" 3:student_number\n \n\n");printf(" 0:back menu\n\n\n");scanf("%d",&chioce);switch(chioce){case 1: name_inqiure();break;case 2: ID_card_inqiure();break;case 3: grade_inqiure();break;case 0:break;}}while(chioce!=0);}/**********name inqiure*********/name_inqiure(){char NAME[30];int i; int flag,k;char chioce;do{ system("cls");k=0;printf("please input the message you inqiure");printf("\nname:");scanf("%s",NAME);getchar();printf("\n");for(i=0;i<sum;i++){if(strcmp(st[i].name,NAME)==0){PRINT0;PRINT1;PRINT2;k=1;}}if(k==0) printf("without message you inqiure\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);printf("press any key return to menu");bioskey(0);}/**********IDcard inqiure*********/ID_card_inqiure(){int card;int i; int flag,k;char chioce;do{ clrscr(); k=0;printf("please input the message you inqiure");printf("\nIDcard:");scanf("%d",&card);getchar();printf("\n");for(i=0;i<sum;i++){if(st[i].ID_card==card){PRINT0;PRINT1;PRINT2;k=1;}}if(k==0) printf("without message you inqiure\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);printf("press any key return to menu");bioskey(0);}/*********grade inqiure***********/grade_inqiure(){int GRADE;int i; int flag,k;char chioce;do{ system("cls");k=0;printf("please input the message you inqiure");printf("\nstudent_number:");scanf("%d",&GRADE);getchar();printf("\n");for(i=0;i<sum;i++){if(st[i].student_number==GRADE){PRINT0;PRINT1;PRINT2;k=1;}}if(k==0) printf("without message you inqiure\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);printf("press any key return to menu");bioskey(0);}/*********change message**********/change_message(){char pre[30],chioce;int i,gra,flag,num,s;s=0;do{system("cls");printf("please input message you want to change\n ");printf("student_number:");scanf("%d",&gra); getchar();for(i=0;i<sum;i++){if(st[i].student_number==gra){PRINT0;PRINT1;PRINT2;printf("\n********input message you want to change********\n");printf("0:name***1:sex***2:age***3:ID_card***4:address***\n5:prefession***6:wuli***7:stud ent_number***8\n:gaoshu***9:yingyu***10:tiyu***11:average***________\n");printf("choose 0-11\n");scanf("%d",&num); getchar();switch(num){case 0: printf("input the name changed\n");scanf("%s",st[i].name); getchar(); break;case 1: printf("input the sex changed\n");scanf("%s",st[i].sex); getchar(); break;case 2: printf("input the age changed\n");scanf("%d",&st[i].age); getchar(); break;case 3: printf("input the ID_card changed\n");scanf("%d",&st[i].ID_card); getchar(); break;case 4: printf("input the address changed\n");scanf("%s",st[i].addr); getchar(); break;case 5: printf("input the prefession changed\n");scanf("%s",st[i].prefession); getchar(); break;case 6: printf("input the wuli_score changed\n");scanf("%d",&st[i].score.wuli); getchar(); break;case7: printf("input the student_number changed\n");scanf("%d",&st[i].student_number); getchar(); break;case 8: printf("input the gaoshu_score changed\n");scanf("%d",&st[i].score.gaoshu); getchar(); break;case 9: printf("input the yingyu_score changed\n");scanf("%d",&st[i].score.yingyu); getchar(); break;case 10: printf("input the tiyu_score changed\n");scanf("%d",&st[i].score.tiyu); getchar(); break;case 11: printf("input the average_score changed\n");scanf("%d",&st[i].score.aver); getchar(); break;default: printf("input error\n"); break;}printf("\n*********the changed message*********\n\n");PRINT0;PRINT1;PRINT2;s=1;}}if(s!=1) printf("without message you want to change\n");do{ printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce); getchar();printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);save_message();}/*********delete message**********/delete_message(){ int GRADE;int i,j,flag1,flag;char chioce1,chioce2;flag1=3;flag=3;do{ system("cls");printf("please input student's student_number you want to delete\n");printf("student_number:");scanf("%d",&GRADE); getchar();for(i=0;i<sum;i++)if(st[i].student_number==GRADE){do{PRINT0;PRINT1;PRINT2;printf("\n******************************\n_________________ _________________\n");printf("press y/Y deleted:\npress n/N cancel:\n");scanf("%c",&chioce1);getchar();system("cls");if(chioce1=='y'||chioce1=='Y') flag1=1;else if(chioce1=='n'||chioce1=='N') return;else {printf("***input error***\n___press any ker return___\n"); bioskey(0);}}while(flag1!=1);for(j=i;j<sum;j++){ st[j]=st[j+1];flag=2;printf("message was deleted\n");sum-=1; }}if(flag!=2) printf("without message you want to delete\n");do{printf("press y/Y continue:\npress n/N stop:\n");scanf("%c",&chioce2);printf("****************************\n");if(chioce2=='y'||chioce2=='Y') {flag=1; break;}else if(chioce2=='n'||chioce2=='N') {flag=0; break;}else {system("cls");printf("input error\n");}print1;printf("\n");}while(1);}while(flag==1);save_message();}/************insert message*************/insert_message(){ int chioce,flag,i; flag=2;do{system("cls");printf("please input the number of people you insert\n");scanf("%d",&chioce);if(chioce>=sum){printf("xin xi pai zai zui hou ");chioce=sum;}for(i=sum;i>chioce;i--) st[i]=st[i-1];printf("\nplease input message you insert");printf("\nname:");scanf("%s",st[i].name);printf("\nsex:");scanf("%s",st[i].sex);printf("\nage:");scanf("%d",&st[i].age);printf("\nID_card:");scanf("%d",&st[i].ID_card);printf("\naddress:");scanf("%s",st[i].addr);printf("\nprefession:");scanf("%s",st[i].prefession);printf("\ngrade:");scanf("%d",&st[i].student_number);printf("\n*****score******\n");printf("wuli:");scanf("%d",&st[i].score.wuli);printf("\ngaoshu:");scanf("%d",&st[i].score.gaoshu);printf("\nyingyu:");scanf("%d",&st[i].score.yingyu);printf("\ntiyu:");scanf("%d",&st[i].score.tiyu);printf("\naverage:");scanf("%d",&st[i].score.aver);sum+=1;do{printf("****************************\n");printf("press y/Y continue:\npress n/N stop:\n");getchar();scanf("%c",&chioce);printf("****************************\n");if(chioce=='y'||chioce=='Y') {flag=1; break;}else if(chioce=='n'||chioce=='N') {flag=0; break;}else printf("input error\n");print1;printf("\n");}while(1);}while(flag==1);save_message();}/*********school_number_order***********/grade_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].student_number>st[j].student_number){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("grade order from min to max\n");for(i=0;i<sum;i++){ print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);bioskey(0);}/***********wuli score order***************/wuli_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.wuli>st[j].score.wuli){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("wuli score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********gaoshu score order***************/gaoshu_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.gaoshu>st[j].score.gaoshu){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("gaoshu score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********yingyu score order***************/yingyu_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.yingyu>st[j].score.yingyu){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("yingyu score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********tiyu score order***************/tiyu_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.tiyu>st[j].score.tiyu){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("yitu order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/***********average score order***************/average_order(){int i,j;system("cls");if(sum==0) {printf("**********no message**********\n____press any key return____");getch();return;}for(i=0;i<sum;i++)for(j=i+1;j<sum;j++)if(st[i].score.wuli>st[j].score.wuli){ st[sum+1]=st[i];st[i]=st[j];st[j]=st[sum+1];}printf("average score order from min to max\n");for(i=0;i<sum;i++){print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;getch();system("cls");}print1;printf("\ntotle num :%d\npress any key return to menu\n",sum);print1;bioskey(0);}/********order message****************/order_message(){int chioce;do{system("cls");printf("**********choose 0-6**********\n\n");printf(" 1:grade order\n\n");printf(" 2:wuli score order\n\n");printf(" 3:gaoshu score order\n \n");printf(" 4:ying yu score order\n\n");printf(" 5:tiyu score order\n\n");printf(" 6:average score order\n\n");printf(" 0:back menu\n\n");scanf("%d",&chioce);switch(chioce){case 1: grade_order();break;case 2: wuli_order();break;case 3: gaoshu_order();break;case 4: yingyu_order();break;case 5: tiyu_order();break;case 6: average_order();break;case 0:break;}}while(chioce!=0);}/**********answer secretory***********/mima_message(){int flag;char answer[10];char secret[10]="abcd";flag=2;do{system("cls");printf("\n______________________mi ma wei 'abcd'________________\n\n");printf("______________________qing shu ru mi ma:");scanf("%s",answer);getchar();if(strcmp(secret,answer)==0){flag=1;printf("\n\n =====throngh=====\n\n\n");printf("____________________press any key into next:\n");bioskey(0);}else{flag=0;printf("______________________input error:\n");printf("______________________press any key to return:\n");bioskey(0);}}while(flag!=1);}/*********read message****************/read_message(){int i;system("cls");if(sum<=0){ printf("without message\n");getch();return;}for(i=0;i<sum;i++){system("cls");print1;printf("\n%dth student's mssage\n",i+1);print1;printf("\n");PRINT0;PRINT1;PRINT2;printf("\n********press any key -show the next one********\n ");getch();}printf("________________totle num :%d________________\n",sum); printf("_____________press any key return______________\n"); bioskey(0);}/*************************************/main(){int chioce,flag;mima_message();do{system("cls");chioce=9;printf("**********************************************\n");printf("****welcome to system of managing students****\n");printf("**********************************************\n\n");printf("-------------------choose 0-8-----------------\n\n");printf(" 1:write message\n\n");printf(" 2:add message\n\n");printf(" 3:inqiure name\n\n");printf(" 4:change message\n\n");printf(" 5:insert message\n\n");printf(" 6:order message\n\n");printf(" 7:delete message\n\n");printf(" 8:read messaeg\n\n");printf(" 0:***exit***\n\n");scanf("%d",&chioce);getchar();switch(chioce){case 1: write_message();break;case 2: add_message();break;case 3: inqiure_message();break;case 4: change_message();break;case 5: insert_message();break;case 6: order_message();break;case 7: delete_message();break;case 8: read_message();break;case 0: printf("___sure press y/Y:___\n\n___no sure press n/N:___");scanf("%c",&chioce);getchar();if(chioce=='y'||chioce=='Y') flag=0;else flag=1;break;default : printf("\n ___input error___\n\n");printf("***press any key to go on***\n");getch();break;}}while(flag!=0);save_message();system("cls");printf("\n\n___message was saved___\n\n\n*****file name is student.txt*****\n");bioskey(0);}。
内蒙古科技大学本科生课程设计说明书题目:C语言课程设计——学生成绩管理系统学生姓名:郭**学号:**********专业:计算机科学与技术班级:计科-2指导教师:***日期:2015年 12月25日内蒙古科技大学课程设计说明书内蒙古科技大学课程设计任务书I内蒙古科技大学课程设计说明书目录内蒙古科技大学课程设计任务书 (I)第一章需求分析 (3)1.1引言 (3)1.2任务概述 (3)1.3数据描述 (3)1.4功能需求 (3)1.5性能需求 (3)1.6运行需求 (4)1.7任务计划 (4)第二章概要设计 (4)2.1总体设计 (4)2.2数据类型设计(或数据结构设计) (5)2.3接口设计 //函数声明 (5)2.4运行界面设计 (6)第三章详细设计 (7)3.1输入模块设计 (7)3.2输出模块设计 (7)3.3 查找模块设计 (8)3.4排序模块设计 (8)3.5保存及读取模块设计 (9)第四章测试分析 (10)4.1测试程序执行情况 (10)第五章课程设计总结 (14)附录:程序代码 (15)参考文献 (32)致谢 (32)II内蒙古科技大学课程设计说明书第一章需求分析1.1引言因学校中学生信息庞大,复杂,为了方便教师们管理学生信息,特编写了一个学生成绩管理系统。
1.2任务概述1.目标本学生成绩管理系统主要是为学校里的老师提供一个管理学生信息的平台。
根据系统界面的提示信息对学生信息进行添加、浏览、修改、保存等操作。
2.运行环境Windows系统3.用户特点懂得一些基本的电脑操作即可。
4.条件限制计算机一台1.3数据描述系统的数据类型有:整型int,实型float,字符型char,结构体struct;自己定义的数据类型有:STU;1.4功能需求❖从键盘输入包括学号、姓名、各门课程成绩(不少于5门),并将其保存在磁盘文件里❖打开文件后,计算每个人的总分和平均分,排序并保存❖具有单项查询或多项查询的功能(即按照给定的关键字,如姓名找出满足条件的纪录)❖具有插入、删除和修改功能具有输出文件数据信息的功能1.5性能需求无3内蒙古科技大学课程设计说明书1.6运行需求1.硬件环境普通的计算机2.软件环境支持的操作系统包括windows98/xp及及以上版本1.7任务计划本系统共分为一个主页面模块(主函数部分),五个功能模块(功能函数)分别为增加学生成绩信息、查看学生成绩信息、修改学生成绩信息、对学生信息进行排序、退出。
学生信息管理系统C语言编程【问题描述】学生信息的管理是每个学校必须具有的管理功能,主要是对学生的基本情况及学习成绩等方面的管理。
该系统模拟一个简单的学生管理系统,要求对文件中所存储的学生数据进行各种常规操作,如:排序、查找、计算、显示等功能。
通过此课题,熟练掌握文件、数组、结构体的各种操作,在程序设计中体现一定的算法思想,实现一个简单的学生信息管理系统。
【基本要求】(1)学生信息包括:学生基本信息文件(student.txt)(注:该文件不需要编程录入数据,可用文本编辑工具直接生成)的内容如下:(2)学生成绩基本信息文件(score.dat)及其内容如下:((注:该文件内容需要编程录入数据,具体做法见下面的要求)学号课程编号课程名称学分平时成绩实验成绩卷面成绩综合成绩实得学分(3)需要实现的功能1)数据录入和计算功能:对score.dat进行数据录入,只录入每个学生的学号、课程编号、课程名称、学分、平时成绩、实验成绩、卷面成绩共7个数据,综合成绩、实得学分由程序根据条件自动运算。
综合成绩的计算:如果本课程的实验成绩为-1,则表示无实验,综合成绩=平时成绩*30%+卷面成绩*70%;如果实验成绩不为-1,表示本课程有实验,综合成绩=平时成绩*15%+实验成绩*15%+卷面成绩*70% 。
实得学分的计算:采用等级学分制,综合成绩在90-100之间,应得学分=学分*100%;综合成绩在80-90之间,应得学分=学分*80%;综合成绩在70-80之间 ,应得学分=学分*75%;综合成绩在60-70之间,应得学分=学分*60%;综合成绩在60以下 ,应得学分=学分*0%。
2)查询功能:分为学生基本情况查询和成绩查询两种(1)学生基本情况查询:①、输入一个学号或姓名(可实现选择),查出此生的基本信息并显示输出,格式如下:②、输入一个宿舍号码,可查询出本室所有的学生的基本信息并显示输出。
(格式如上所示)(2)成绩查询:①、输入一个学号时,查询出此生的所有课程情况,格式如下:学号:xx 姓名:xxxxx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx课程编号:xxx 课程名称:xxxxx 综合成绩:xxxx 实得学分: xx ……………………共修:xx科,实得总学分为: xxx(3)删除功能:提供待删除学生的学号,则在student.txt和score.dat中删除所有与该学生有关的信息。
c语言课程设计考勤管理系统一、教学目标本课程的教学目标是使学生掌握C语言编程的基本知识,能够运用C语言设计一个简单的考勤管理系统。
具体目标如下:1.掌握C语言的基本语法和数据结构。
2.了解函数的定义和调用。
3.学习线性表、栈和队列等数据结构的基本操作。
4.能够使用C语言编写简单的程序。
5.学会使用C语言进行程序调试。
6.能够独立设计并实现一个考勤管理系统。
情感态度价值观目标:1.培养学生的编程兴趣,提高学生解决问题的能力。
2.培养学生团队合作的精神,学会与他人分享和交流。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据结构、函数的定义和调用,以及考勤管理系统的设计和实现。
具体安排如下:1.C语言的基本语法:变量、数据类型、运算符、表达式、语句等。
2.数据结构:线性表、栈、队列、链表等。
3.函数的定义和调用:函数的定义、声明、调用、返回值等。
4.考勤管理系统的设计和实现:系统需求分析、系统设计、模块划分、编码实现、系统测试等。
三、教学方法本课程采用讲授法、案例分析法和实验法相结合的教学方法。
1.讲授法:通过讲解C语言的基本语法、数据结构和函数的定义和调用,使学生掌握相关知识。
2.案例分析法:通过分析典型的考勤管理系统的案例,使学生了解并学会设计一个考勤管理系统。
3.实验法:通过上机实验,让学生动手编写代码,巩固所学知识,提高编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用《C程序设计原理与应用》作为主要教材,辅助以《C语言程序设计》等参考书。
2.多媒体资料:提供C语言编程相关的视频教程、课件等。
3.实验设备:计算机、编程软件、调试工具等。
五、教学评估本课程的评估方式包括平时表现、作业、考试等,以全面客观地评价学生的学习成果。
1.平时表现:通过课堂参与、提问、讨论等环节,评估学生的学习态度和参与程度。
2.作业:布置适量的编程作业,评估学生的编程能力和对知识的掌握程度。
硕士论文是硕士研究生所撰写的学术论文,具有一定的理论深度和更高的学术水平,更加强调作者思想观点的独创性,以及研究成果应具备更强的实用价值和更高的科学价值。
硕士论文是硕士研究生所撰写的学术论文。
优秀的硕士论文能够反映出作者对所学习专业的理论知识掌握的程度和水平,能够帮助作者构建起良好的完整的知识体系,还能够反映作者独立的科研能力和学术理论的应用水平,对研究的课题的思考和独立见解。
较之学士论文,硕士论文应当具有一定的理论深度和更高的学术水平,更加强调作者思想观点的独创性,以及研究成果应具备更强的实用价值和更高的科学价值。
因而撰写硕士论文将对作者提出更高的要求——数据资料翔实充分、论证分析详尽缜密、推理演算思路清晰、论文结构规范清晰、专业词汇运用准确。
电路与系统学科研究电路与系统的理论、分析、测试、设计和物理实现。
它是信息与通信工程和电子科学与技术这两个学科之间的桥梁,又是信号与信息处理、通信、控制、计算机乃至电力、电子等诸方面研究和开发的理论与技术基础。
因为电路与系统学科的有力支持,才使得利用现代电子科学技术和最新元器件实现复杂、高性能的各种信息和通信网络与系统成为现实。
信息与通讯产业的高速发展以及微电子器件集成规模的迅速增大,使得电子电路与系统走向数字化、集成化、多维化。
电路与系统学科理论逐步由经典向现代过渡,同时和信息与通讯工程、计算机科学与技术、生物电子学等学科交叠,相互
渗透,形成一系列的边缘、交叉学科,如新的微处理器设计、各种软、硬件数字信号处理系统设计、人工神经网络及其硬件实现等。
广告提案广告提案广告提案的准备工作创意、表现提案广告实施计划提案策略提案广告策划大师广告策划的含义、特点及作用广告策划的内容和程序广告策划的基本原则广告调查与分析广告市场调查的内容广告市场调查的步骤广告市场调查问卷的构成设计市场细分与产品定位市场细分产品定位广告战略策划广告预算策划广告创意广告文案创意第一节平面广告创意广播广告创意电视广告创意网络广告创意广告媒体与渠道策划广告推进程序策划广告实施策略广告效果评估广告策划文案写作广告策划书的编制技巧
可行性研究报告行业分析报告可行性研究可行性报告项目可行性报告行业调查报告可行性报告格式调查报告报告格式辞职报告述职报告实习报告社会实践报告报告范文申请报告
材料加工硕士论文,主要介绍液态金属的成型工艺、金属焊接成型和材料表面处理工程。
具体包括:液态金属的工艺性能、砂型铸造、铸造工艺设计、铸造工艺CAD/CAE、电弧的特性、焊丝的熔滴过渡、焊缝成形、埋弧焊、氩弧焊、二氧化碳气体保护焊、等离子弧焊、热喷涂、气相沉积、激光表面工程技术等。
是硕士研究生所撰写的学术论文,具有一定的理论深度和更高的学术水平,更加强调作者思想观点的独创性,以及研究成果应具备更强的实用价值和更高的科学价值。
试卷分析中学试卷高中试卷高考试卷英语四级试卷成人高考试卷考卷公务员考试小学试卷中考试卷高考试卷高考试卷数学试卷英语试卷语文试卷。