高校学籍管理系统C++程序设计
c语言学籍管理系统源代码
c语言学籍管理系统源代码学籍管理系统的背景及意义随着社会的不断发展和教育的普及,学籍管理工作日益被重视。
传统的手工管理学籍的方式效率低下,存在着各种弊端,以致无法满足现代学校管理的需求。
因此,开发一款高效、便捷、可靠的学籍管理系统成为普遍需求,为了提高管理效率、减少工作难度,学籍管理系统被越来越广泛地使用。
本文将介绍一款基于C语言开发的学籍管理系统的源代码。
基本功能该学籍管理系统可以实现学生信息的录入、删除、修改和查询,以及学生的成绩录入、修改和查询。
此外,该系统还具备数据存储和文件读写的功能,能够自动保存学生信息和成绩数据,保障数据的安全性和可靠性。
模块设计该系统按照功能模块划分,主要分为三个模块:学生信息管理模块、学生成绩管理模块和数据存储与文件读写模块。
学生信息管理模块该模块主要实现学生信息的录入、删除、修改和查询等基本功能。
以下为该模块的主要源代码:```struct student {char name[20]; // 姓名int id; // 学号char sex[5]; // 性别char major[20]; // 专业};struct student stu[1000]; // 学生信息结构体数组int num_of_stu = 0; // 学生总数void add_student() { // 添加学生信息printf("请输入学生姓名:");scanf("%s", stu[num_of_stu].name);printf("请输入学生学号:");scanf("%d", &stu[num_of_stu].id);printf("请输入学生性别:");scanf("%s", stu[num_of_stu].sex);printf("请输入学生专业:");scanf("%s", stu[num_of_stu].major);num_of_stu++;printf("添加成功!\n");}void delete_student() { // 删除学生信息int delete_id;printf("请输入要删除的学生学号:");scanf("%d", &delete_id);int index = search_student_by_id(delete_id); if (index == -1) {printf("该学号不存在!\n");return;}for (int i = index; i < num_of_stu - 1; i++) { stu[i] = stu[i + 1];}num_of_stu--;printf("删除成功!\n");}void modify_student() { // 修改学生信息int modify_id;printf("请输入要修改的学生学号:");scanf("%d", &modify_id);int index = search_student_by_id(modify_id); if (index == -1) {printf("该学号不存在!\n");return;}printf("请输入学生姓名:");scanf("%s", stu[index].name);printf("请输入学生学号:");scanf("%d", &stu[index].id);printf("请输入学生性别:");scanf("%s", stu[index].sex);printf("请输入学生专业:");scanf("%s", stu[index].major);printf("修改成功!\n");}int search_student_by_id(int id) { // 根据学号查询学生信息for (int i = 0; i < num_of_stu; i++) {if (stu[i].id == id) {return i;}}return -1;}void query_student() { // 查询学生信息int query_id;printf("请输入要查询的学生学号:");scanf("%d", &query_id);int index = search_student_by_id(query_id);if (index == -1) {printf("该学号不存在!\n");return;}printf("姓名\t学号\t性别\t专业\n");printf("%s\t%d\t%s\t%s\n", stu[index].name,stu[index].id, stu[index].sex, stu[index].major);}```学生成绩管理模块该模块主要实现学生成绩信息的录入、修改和查询等功能。
c语言管理系统设计源代码
c语言管理系统设计源代码以下是一个简单的C语言管理系统示例,用于管理学生信息。
该系统可以添加、删除、修改和查找学生信息。
c复制代码#include<stdio.h>#include<stdlib.h>#include<string.h>struct student {char name[50];int roll;float marks;};struct student students[100];int count = 0;void add_student() {struct student new_student;printf("Enter name: ");scanf("%s", new_);printf("Enter roll number: ");scanf("%d", &new_student.roll);printf("Enter marks: ");scanf("%f", &new_student.marks);students[count] = new_student;count++;}void delete_student() {int index;printf("Enter index of student to delete: ");scanf("%d", &index);for (int i = index; i < count - 1; i++) {students[i] = students[i + 1];}count--;}void modify_student() {int index;struct student new_student;printf("Enter index of student to modify: "); scanf("%d", &index);printf("Enter new name: ");scanf("%s", new_);printf("Enter new roll number: ");scanf("%d", &new_student.roll);printf("Enter new marks: ");scanf("%f", &new_student.marks);students[index] = new_student;}void find_student() {char name[50];printf("Enter name of student to find: "); scanf("%s", name);for (int i = 0; i < count; i++) {if (strcmp(students[i].name, name) == 0) { printf("Roll number: %d\n", students[i].roll); printf("Marks: %.2f\n", students[i].marks); return;}}printf("Student not found.\n");}int main() {int choice;do {printf("\nMenu:\n");printf("1. Add student\n");printf("2. Delete student\n");printf("3. Modify student\n");printf("4. Find student\n");printf("5. Exit\n");printf("Enter choice: ");scanf("%d", &choice);switch (choice) {case1: add_student(); break;case2: delete_student(); break;case3: modify_student(); break;case4: find_student(); break;case5: exit(0); break; // exit the program here, otherwise the loop will keep running indefinitely, as it is in the do-while loop above. We are not returning, but rather exiting the program completely, so we do not need to return anything. The return value of main is always 0, and this is how the program exits. If you want to return a value other than 0, you can do so like this: return 1; or return -1; or return any other integer value you want to represent an error condition. The operating system will interpret this as the program's exit status. In this case, it will be seen as successful, as it is returning 0. The return value of main is not used for anything in this program, but it can be used in other programs to determine whether the program exited successfully or with an error. For example, if you were writing a shell script that executed this program and needed to know if it was successful or not, you could check the return value of the program and act accordingly. This is a common practice in programming, and it is important to understand how it works so that you can use it effectively in your own programs.。
学籍系统实验报告
西安交通大学实验报告课程程序设计基础实验名称课内实验第页共 6 页系别__ 计算机科学与技术实验日期 2011年 12 月11 日专业班级____ 计算机13 实验报告日期 2011年12月11 日姓名__吕鑫_ 学号报告退发 ( 订正、重做 )同组人___________________ _ _ 教师审批签字实验题目:使用C编程实现一个学籍管理系统1.程序设计与分析功能:实现学生信息的输入,删除,查询,排序,输出。
由于使用链表,可以进行动态定义,因此扩大学生信息的可存储性。
结构体的使用使数据容易操作。
指针的定义则是数据处理更方便。
算法:使用switch语句加循环的方式构成主函数,简单明了。
主函数见下:int main(){ int choice;struct student *input();struct student *HEAD=NULL;struct student *he(struct student *head);struct student *delet(struct student *head);void select(struct student *head);struct student *order(struct student *head);void output(struct student *head);choice=0;while(choice!=6){printf("1.input\n2.delete\n3.select\n4.order\n5.output\n6.quit\nplease input your option\n");scanf("%d",&choice);switch(choice){case 1:HEAD=input();he(HEAD);continue;case 2:delet(HEAD);;continue;case 3:select(HEAD);continue;case 4:order(HEAD);continue;case 5:output(HEAD);continue;case 6:break;}}return 0;}2.程序设计中存在的问题和解决思路主要困难:链表的不熟悉使编程颇为困难,主程序的反复循环不易处理。
C语言学籍管理系统(内含源代码)
学籍管理系统一、系统简介设计一个基于结构体数组的学生学籍管理系统,能实现对学生学籍信息进行录入,修改,删除,查询和输出等基本操作二、需求分析学籍管理系统应该实现以下功能:1、能录入学生的基本信息,包括学号,姓名,专业,年级,性别和出生日期信息,保存到结构体数组中。
2、能根据输入的学号查询学生,进行信息的修改。
3、能根据输入的学号从结构体数组中删除学生的记录。
4、实现查询功能,能根据输入的学号或年级在屏幕上显示相应的学生信息。
5、能在屏幕上以列表的方式输出所有学生的信息。
三、概要设计1、系统功能根据项目的开发要求,本系统划分成六个主要功能模块:录入学生信息模块、修改学生信息模块、删除学生信息模块、查询学生信息模块、输出模块和推出模块。
系统功能机构图如下:2、重要数据的数据结构设计学生学籍的记录项用结构体Stu message表示,包括6个属性,stuno,name、spec、grade、sex、birthday 分另U代表学生的学号、专业、年级、性另U和出生日期,其中birthday 类型为自定义的结构体类型Date.Struct stumessage {Char stuno[11]: // 学号Char name[9]: // 姓名Char spec[2]: // 专业Char grade: // 年级Char sex : // 性别Stuct date birthday: // 出生日期};日期类型date包括三个属性,分别代表年、月、日Struct date{int year : // 年Int month: //Int day: // H};3、函数设计学籍管理系统程序采用了结构化程序设计的思想,由1个.h 头文件和3个C源文件组成。
程序中除了主函数外,共设计了以下14个函数,分别包含在3个.c源文件中。
以下是这些函数原型及功能设计。
(1) void sysinfo(void)函数功能:在屏幕上输入系统及信息并等待用户响应。
c语言程序设计学生学籍管理系统实验数据存储及数据流向
c语言程序设计学生学籍管理系统实验数据存储及数据流向C语言程序设计学生学籍管理系统实验数据存储及数据流向在学生学籍管理系统中,数据存储和数据流向是非常重要的。
系统需要存储学生的个人信息、课程成绩和学籍变动等数据,并根据这些数据做出相应的处理。
这篇文章将带你了解学生学籍管理系统中的数据存储和数据流向。
数据存储学生学籍管理系统中需要存储的数据包括学生的个人信息、课程成绩和学籍变动等数据。
这些数据可以存储在不同的位置,如磁盘、数据库等。
磁盘存储:磁盘存储是最常见的数据存储方式,数据以文件的形式存放在硬盘上。
学生学籍管理系统中的数据可以存储在一个或多个文件中,每个文件存储一个类型的数据。
例如,学生的个人信息可以存储在一个“学生信息.txt”文件中,课程成绩可以存储在一个“课程成绩.txt”文件中。
数据库存储:数据库是一种结构化的数据存储方式,可以有效地管理大量数据。
学生学籍管理系统中,可以使用关系型数据库存储学生信息、教师信息、课程信息、成绩信息等数据,方便管理和检索。
通过SQL语句可以对数据库中的数据进行增删改查等操作,实现数据的高效管理。
数据流向学生学籍管理系统中的数据流向主要包括数据采集、数据处理、数据展示等过程。
这些流程需要将数据从一个位置传输到另一个位置,以实现正确的处理和展示。
数据采集:数据采集是指将学生或其他相关信息采集到系统中的过程。
例如,学生信息可以通过录入学生信息表单实现,成绩信息可以通过录入成绩表单实现等。
数据采集需要保证数据的准确性和完整性,以保证数据的正确性。
数据处理:数据处理是指对采集到的数据进行各种处理操作的过程。
例如,对学生信息进行排序、筛选、查询等操作,对成绩信息进行计算平均分、制作成绩报表等操作。
数据处理需要对数据进行严格的逻辑检验,以保证数据的正确性。
数据展示:数据展示是指将处理后的数据以易于理解的形式展示给用户的过程。
例如,把学生信息、成绩信息等数据以列表或表格形式展示给用户,使用户能够清晰了解学生的学籍状况。
学生管理系统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. 查询学生信息查询学生信息可以按照姓名或电话号码进行查询。
C语言的教务管理系统(2000行代码)
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语言课程设计学生学籍管理系统
c语言课程设计学生学籍管理系统一、教学目标本课程旨在让学生掌握C语言的基本语法,培养学生编写结构化程序的能力,使学生能够运用C语言实现简单的学生学籍管理系统。
通过本课程的学习,学生将能够:1.知识目标:–理解C语言的基本数据类型、运算符和表达式;–掌握函数的定义和调用,理解局部变量和全局变量的概念;–熟悉控制结构,如if语句、for循环和while循环;–了解数组、字符串和指针的基本使用方法。
2.技能目标:–能够使用C语言编写简单的程序,解决实际问题;–掌握基本的调试技巧,能够找出并修复程序中的错误;–具备阅读和理解他人代码的能力。
3.情感态度价值观目标:–培养学生对计算机科学的兴趣和热情,提高学生的自主学习能力;–培养学生团队协作的精神,增强学生的沟通能力;–培养学生解决问题的能力,提高学生的创新意识。
二、教学内容本课程的教学内容主要包括以下几个部分:1.C语言基本语法:数据类型、运算符、表达式、函数、局部变量和全局变量等;2.控制结构:if语句、for循环、while循环等;3.数据结构:数组、字符串、指针等;4.学生学籍管理系统的实现:学生信息的添加、删除、修改和查询等功能。
三、教学方法本课程采用讲授法、案例分析法和实验法等多种教学方法相结合的方式进行教学:1.讲授法:通过讲解C语言的基本语法和概念,使学生掌握相关知识;2.案例分析法:通过分析实际案例,使学生理解并掌握C语言在学生学籍管理系统中的应用;3.实验法:让学生动手编写代码,实现学生学籍管理系统的功能,提高学生的实际操作能力。
四、教学资源本课程的教学资源包括:1.教材:《C语言程序设计》;2.参考书:《C语言 Primer》;3.多媒体资料:教学PPT、视频教程等;4.实验设备:计算机、网络等。
以上教学资源将有助于实现本课程的教学目标,提高学生的学习效果。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
学生管理系统c语言毕业设计
学生管理系统c语言毕业设计学生管理系统是一个用于管理学生信息和学校日常运营的软件系统。
它能够帮助学校管理学生的个人信息、课程安排、成绩记录以及其他相关事务。
以下是关于学生管理系统的一些常见问题和解释:1. 学生管理系统是什么学生管理系统是一种软件系统,用于帮助学校管理学生信息和学校事务。
它可以存储学生的个人信息,包括姓名、年龄、性别、联系方式等。
同时,学生管理系统还提供了一系列功能,例如课程安排、成绩记录、考勤管理等。
2. 学生管理系统有哪些功能学生管理系统通常包含以下主要功能:-学生信息管理:可以记录学生的个人信息,包括姓名、年龄、性别、住址等。
-课程安排:可以安排学生的课程表,包括课程名称、教师信息、上课时间和地点等。
-成绩记录:可以记录学生的考试成绩和平时成绩,以便后续查询和统计。
-考勤管理:可以记录学生的出勤情况,包括迟到、早退、请假等。
-统计分析:可以根据学生的成绩和出勤情况进行统计分析,提供相关报表和图表。
3. 学生管理系统的优势是什么学生管理系统有以下几个优势:-提高工作效率:学生管理系统可以自动化学生信息的录入和管理,减少了手工操作的时间和错误。
-方便数据查询:学生管理系统可以快速查询和检索学生的个人信息、课程安排和成绩记录,提供了方便快捷的数据访问方式。
-信息安全性:学生管理系统可以设置权限和保护机制,保证学生信息的安全性和隐私保护。
4. 如何设计一个学生管理系统设计一个学生管理系统需要考虑以下几个方面:-数据库设计:需要设计一个合适的数据库结构来存储学生信息、课程安排和成绩记录等。
-用户界面设计:需要设计用户友好的界面,方便用户进行操作和查询。
-功能实现:根据需求,实现学生信息管理、课程安排、成绩记录等功能模块。
-数据安全性和权限控制:保证学生信息的安全性和隐私保护,设置合适的权限和保护机制。
希望以上解答对您的学生管理系统项目有所帮助。
如果您需要更具体的信息或具体的代码实现,还请进一步提供相关要求。
学籍管理系统(课程答辩)
printf("please input spec\n");
scanf("%s",Stu[0].spec);
printf("please input greade\n");
scanf("%d",&Stu[0].greade);
printf("please input sex\n");
scanf("%s",Stu[0].sex);
函数功能:在屏幕上以列表的方式输出学生所有信息。调用printhead()输出表头,在调用listone()函数注意输出个条记录。
(8)void quit(void);
函数功能:退出菜单系统,并调用exit(0)系统函数结束程序运行。
(9)voidsteargrade(stuct stumessage stu[]);
printf("\t\t\t删除学生信息,请选择3\n");
printf("\t\t\t查询学生信息,请选择4\n");
printf("\t\t\t输出学生信息,请选择5\n");
printf("\t\t\t退出系统,请选择6\n");
printf("\n\t\t\t\t\t\t\t\t\t\t\t\t\n");
函数功能:在屏幕上输入系统及版权信息并等待用户响应。
(2)Void menuofmain(struct stumessage stu[]);
函数功能:在屏幕上显示主菜单,接收用户选择并响应用户相应操作。
(3)Void append(struct stumessage stu[]);
C语言程序设计报告——学生学籍管理(程序)
#include"conio.h"
#include"stdlib.h"
#include"string.h"
#define N 1000 //N为可输入的学生总人数,可根据需要更改
#define M 2 //M为宏定义的(在创建密码函数中)可建立的登陆用户个数,可更改
printf("该学生籍贯:%s\n",stu[i].add);
a=0; //找到该生,a=0;
break; //出for循环
}
}
if(a==1) //若没有找到该生,a=1,输出提示语句
printf("\n\n该学号不存在!请重新输入学号:\n");
printf("\n请录入院系:");
scanf("%s",stu[i].depar);
printf("\n请录入专业:");
scanf("%s",stu[i].zhuanye);
printf("\n请录入班级:");
scanf("%s",stu[i].classes);
if((strcmp(name1,co[i].name)==0)) //如果输入的用户名与已存在用户名相同,再比较密码是否相同,否则进行下一个用户名的比较
{
if((strcmp(code1,co[i].code)==0)) //比较此用户名下的密码是否一致
return 1; //验证成功后回到主函数
printf("\n请录入民族:");
C语言课设之学生学籍管理系统
C语言课设之学生学籍管理系统学生学籍管理系统是一个用于管理学生学籍信息的软件系统。
它主要用于管理学生的基本信息、课程信息、成绩信息以及其他相关信息。
学生学籍管理系统是对学生学籍信息进行综合管理和统计分析的重要工具。
它能够为学院、学校、教师、学生和家长提供便利,实现信息共享,促进教学管理工作的科学化和信息化。
一、需求分析学生学籍管理系统的需求分析主要包括以下几个方面:1.系统功能需求(1)学生基本信息管理:包括学生的基本资料、考籍信息、入学时间、家庭信息等。
(2)课程信息管理:包括课程名称、授课教师、上课时间和地点等。
(3)成绩管理:包括期中成绩、期末成绩和平时成绩等。
(4)教师管理:包括教师的基本资料、授课信息、联系方式等。
(5)系统管理:包括用户权限管理、数据备份、数据恢复等。
(1)系统应该稳定可靠,能够正常运行,并保证数据的准确性和完整性。
(2)系统应该具备良好的响应速度,确保用户的使用顺畅。
(3)系统应该具备较高的安全性,能够保护用户的隐私信息。
3.用户需求(1)方便快捷地查询学生的学籍信息,并能够修改、添加、删除学生信息。
(2)能够快速查询课程信息和成绩信息。
(3)提供数据报表和统计分析功能,以便教师、学生和家长进行综合分析和评估。
二、系统设计1.学生信息管理模块该模块用于管理学生的基本信息、课程信息、成绩信息以及其他相关信息。
包括学生的姓名、学号、性别、年龄、所选课程、考试成绩等信息。
该模块用于管理课程信息,包括课程名称、授课教师、上课时间和地点等信息。
该模块还可以通过查询功能,快速查询某一课程的授课教师及上课时间等信息。
3.成绩管理模块该模块用于管理学生的成绩信息。
包括期中成绩、期末成绩和平时成绩等信息。
通过该模块,教师可以快速查询学生的成绩信息,同时还可以将成绩信息导出成绩报表。
该模块用于管理系统的用户权限、数据备份和恢复等管理工作。
管理员可以通过该模块对用户进行管理,对数据进行备份和恢复工作,确保系统安全可靠。
C课程设计学生学籍管理系统
课程名称:C++面向对象程序设计课程设计题目:大学生学籍管理系统目录:一、系统设计目标、意义二、系统设计思路三、系统功能介绍四、输入输出的设计(1)界面的设计(2)数据输出设计(3)系统运行结果五、详细设计(1)系统功能结构图(2)U ML六、附录七、系统设计、开发过程中遇到的问题八、心得体会学生学籍管理系统一、系统设计目标、意义一系统实现的目标1、课程设计的任务:制作一个小型的学生学籍管理系统,要求制作一个菜单,实现数据的录入,数据的显示,数据查找,数据的删除,数据的保存,数据的统计,数据的修改,系统的退出;系统的设计要求用到C++面向对象的程序设计,要求用到类来实现,同时每一个功能用到一个函数;2、1基本功能:学生基本信息编号,姓名,性别,籍贯,民族,生日,政治面貌,省份证,数学成绩,英语成绩,计算机成绩成绩统计各科总成绩,各科平均成绩,各科的及格率2扩展功能:学生数据的添加、修改、与删除学生数据的读取与存储3、系统特点:系统要能够对相应的数据进行很好的测试,系统的统计对每一科的总成绩,平均成绩,及格律都进行了统计;系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,包括学号,姓名,民族,政治面貌,身份证号,生日,性别,数学、英语、计算机的成绩;程序中查找运用了两种查找方式即学号查找和姓名查找;二系统设计的意义通过设计此项程序,能够对学生的学籍进行统一的管理,对学生的学籍进行录入、修改、保存等功能进行处理,从而能够较快地对信息进行处理,系统数据的录入除可以手工录入外,还可以采用文件的录入;系统统计学生的基本信息较全面,程序中查找运用了两种查找方式即学号查找和姓名查找,方便查询;二、系统设计思路第一步:分析题目,建立类并派生出它的子类,画出类图;第二步:画出流程,根据流程图编写程序清单第三步:上机调试程序使用单步调试,设置断点、分块调试的方法;第四步:及时整理资料,撰写课程设计报告中有关这个题目的内容;三、系统功能介绍一程序对学生学籍的数据处理要求①能够输入并浏览学生的基本信息;②能够实现对学生信息的查询和修改;③能够对成绩进行统计;④能够对学生的信息进行保存;二系统功能:资料维护:系统维护包括对各学生信息和成绩的录入操作;资料维护:对数据表中的信息进行浏览;系统查询:可以对不同科目的总成绩、不及率、各科平均成绩相关信息;四、输入输出的设计1.界面的设计①、界面设计程序运行后会出现一个简捷的窗口,便于用户查询数据;②、功能设计通过主窗体调用其他窗体,具体实现可以参照系统分析相关内容;应用系统主控界面包括学生信息录入,查找等功能模块;学生信息录入功能完成学生信息和成绩的输入;记录查询功能可以对数据各分类的记录进行查询;2.数据输出设计主要运行界面:统计界面:查找界面:显示界面:录入界面:保存界面:修改界面:删除界面:3、系统运行的结果:仅部分五、详细设计1、系统功能结构图:2、1类:student数据成员:编号,,省份证,数学成绩,英语成绩,计算机成绩2类:school成员函数:录入函数Input:输入编号到计算机的成绩;统计函数count:统计各科的总成绩,计算平均成绩,统计各科的及格率;查询函数found:按学号或姓名查找学生的记录;修改函数mend:修改指定学号学生成绩记录;删除函数del:删除指定学号学生记录;输出函数show:输出班级所有学生成绩记录;UML图:{int getnumber{ return number;}double getscoreint i { return scorei;}float getg{ return score0+score1+score2; }void input{ int e=1;cout<<"\t\t\t按提示输入:"<<endl;cout<<"\t\t输入编号: "; cin>>number;cout<<"\t\t输入姓名: "; cin>>name;do{cout<<"\t\t输入性别: ";cin>>sex;ifstrcmpsex,"男"==0 || strcmpsex,"女"==0{ cout<<"\t\t输入籍贯: ";cin>>place; cout<<"\t\t输入民族: ";cin>>nation;cout<<"\t\t输入生日: ";cin>>birth; cout<<"\t\t输入政治面貌: ";cin>>party; cout<<"\t\t输入身份证号: ";cin>>id; cout<<"\t\t输入数学分数: ";cin>>score0;cout<<"\t\t输入英语分数: ";cin>>score1;cout<<"\t\t输入计算机分数: ";cin>>score2;e=0;}else{cout<<"\t\t\t无此类型性别重新输入"<<endl;e=1; }}whilee;return ;}void inputifstream & is{is>>number>>name>>sex>>place>>nation>>birth>>party>>id>>score0>>score1>>score2;; }void output{cout<<"学生基本信息如下:"<<endl;cout<<"编号:"<<number<<" 姓名:"<<name<<" 性别:"<<sex <<" 籍贯:"<<place <<" 民族:"<<nation<<" 生日:"<<birth<<" 政治面貌:"<<party<<endl<<"身份证号:"<<id<<" 数学:"<<score0<<" 英语:"<<score1<<" 计算机:"<<score2<<" 总分:"<<getg<<endl<<endl;}void outputofstream & os{ os<<setw6<<number <<setw15<<name<<setw20<<place<<setw6<<nation<<setw20<<birth<<setw20<<party<<setw20<<id<<setw6<<score0<<setw6<<score1<<setw6<<score2<<endl;}};//操纵符指定宽度class school{public:school{ head=new student; head->next=NULL; key=0; }~school{ delete head; }void input; void mend; void del;int findstudent p,int num,char pn="^";void found; void show; void count;void save; void begin; void clear;char mainmenu;int getkey{ return key;}void setkeyint k{ key=k; }private:student head; int key;};//录入函数void school::input{student p,p2=NULL;p=head; int n;whilep->nextp=p->next;whilen{ p2=new student; p2->input;p->next=p2; p2->next=NULL; p=p->next; school::setkey1;cout<<"\t\t\t按1继续,按0返回 : "; cin>>n;} }//子查找函数int school::findstudent p1,int num,char pn{ student p; p=head;whilep->next{p1=p;if p->next->getnumber==num||strcmp p->next->getname,pnreturn 1; p=p->next;}return 0; }//查找函数void school::found{ student p;int num=-1,n=9; char name20="^";do{ cout<<"\t\t1:按编号查找,2:按姓名查找: ";cin>>n;}whilen<1||n>2;ifn==1{ cout<<"\t\t\t输入编号: ";cin>>num;}ifn==2{ cout<<"\t\t\t输入姓名: ";cin>>name; }iffind&p,num,name{ cout<<"\t\t找不到你要查找的内容"<<endl;return;}p->next->output;}//删除函数void school::del{ student p,p2; int num;cout<<"\t\t\t输入编号: "; cin>>num;if find&p,num,"^"{ cout<<"\t\t找不到你要删除的内容"<<endl;return;}p->next->output;p2=p->next; p->next=p2->next;delete p2;school::setkey1; }void school::show //显示函数{ student p; p=head;whilep->next{ p->next->output;p=p->next;}}//修改函数void school::mend{ student p; int num=-1,n;char name20="^";do{ cout<<"\t\t1:按编号修改,2:按姓名修改: "; cin>>n;}whilen<1||n>2;ifn==1{ cout<<"\t\t\t输入编号: ";cin>>num;}ifn==2{cout<<"\t\t\t输入姓名: ";cin>>name;}if find&p,num,name{ cout<<"\t\t找不到你要修改的内容"<<endl; return;}p->next->output; p->next->input; school::setkey1;}void school::save //保存函数{ student p; p=head;ofstream os"",ios::out;if school::getkey==1{whilep->next{ p->next->outputos;p=p->next; }}cout<<"\t\t\t文件已保存 "<<endl;school::setkey0;}void school::begin//初始化函数{ student p,p2;p=head; clear;long t;ifstream is"",ios::in;ifis{ ofstream os"",ios::out;;return ;}int num=-1;while1{ num=-1; t=;is>>num;t;ifnum<0{ ;return;}p2=new student; p2->inputis;p->next=p2; p2->next=NULL; p=p->next;}}void school::clear//清空函数{student p,p2;p=head->next;while p{p2=p; p=p->next;delete p2;}}void school::count//统计函数{student p; p=head;int n=0;double g3={0,0,0}; float j3={0,0,0};whilep->next{ p=p->next;n++;forint i=0;i<3;i++{ gi=gi+ p->getscorei ;p->getscorei >= ji++ : 0 ;}}cout<<"\t\t\b\b\b\b数学总分:"<<g0<<" 平均分:"<<g0/n <<" 及格率:"<<j0/n<<endl<<"\t\t\b\b\b\b英语总分:"<<g1<<" 平均分:"<<g1/n<<" 及格率:"<<j1/n<<endl<<"\t\t\b\b\b\b计算机总分: "<<g2<<" 平均分: "<<g2/n<<" 及格率:"<<j2/n<<endl;}//主选菜单函数char school::mainmenu{char n6;cout<<"\n\n ☆☆☆☆欢迎进入学籍管理系统☆☆☆☆"<<endl<<endl <<" "<<endl<<" "<<endl<<" 1: 录入学生信息 "<<endl<<" 2: 显示学生信息 "<<endl<<" 3: 查找学生信息 "<<endl<<" 4: 删除学生信息 "<<endl<<" 5: 修改学生信息 "<<endl<<" 6: 统计学生成绩 "<<endl<<" 7: 保存学生信息 "<<endl<<" 0: 退出系统 "<<endl<<" "<<endl<<" "<<endl<<" 请选择:";cin>>n;return n0;}//主函数void main{school pp;int k=1; char n; ;whilek==1{ n=;switchn{ case '1':; break;case '2':; break;case '3':; break;case '4':; break;case '5':; break;case '6':; break;case '7':; break;case '0':if==1{ cout<<"\t\t\t是否保存 1 : 保存 0:不保存 : ";cin>>k;ifk==1;};k=0;break; }}}七、系统设计、开发过程中遇到的问题及创新点本程序基本完成了题目要求的功能;但是由于显示的限制,所罗列的学生成绩只给出了数学,英语,计算机的成绩;程序可通过改进,增加科目数;程序在显示学生信息时输入过于繁杂,不够清晰明朗,若显示成类似表格的形式就好了;解决办法将输出函数的输出格式改一下,难点是计算输出点的控制;至于创新,就是在课题的选择上,我更加偏向于选择自己感兴趣的课题,更加注意程序的实用性八、心得体会通过这次课程设计,我学会了很多的知识,我通过自学相关的书籍,浏览网站,接触了大量的编程知识,在编程过程中逐渐提升自己的自学能力,克服困难的能力;我觉得首先要对程序的设计要求有一个比较明确的认识,然后系统分析与系统设计,最后是代码设计与调试;程序实现上,设计了简单的查询界面,将各个功能集中出来按照程序编写原则,便于查询;根据C++课程所学的概念、理论和方法,按照C++程序设计的基本步骤,设计出一个适当规模的程序;进一步加深对C++语言的理解和掌握;理论联系实际,加深和巩固所学的理论知识,提高实践能力和计算机的综合运用能力;我们编写程序的过程是辛苦与快乐的,程序的编写原则很重要,只要我们在编程,就必须不断改进,才能更好提高编程能力;。
学生信息管理系统c语言代码
学生信息管理系统c语言代码以下是一个简单的学生信息管理系统的 C 语言代码示例,包含了学生信息的添加、查询、修改和删除功能。
由于代码超过了 400 字,我将提供一个简化的版本,你可以根据需要进行扩展和改进。
```c#include <stdio.h>#include <stdlib.h>#include <string.h>#define MAX_STUDENTS 100// 学生结构体struct Student {char id[10];char name[50];int age;};// 学生信息列表struct Student students[MAX_STUDENTS];// 学生数量int studentCount = 0;// 添加学生信息void addStudent() {if (studentCount >= MAX_STUDENTS) {printf("学生数量已满,无法添加更多学生。
\n");return;}printf("请输入学生 ID: ");scanf("%s", students[studentCount].id);printf("请输入学生姓名: ");scanf("%s", students[studentCount].name);printf("请输入学生年龄: ");scanf("%d", &students[studentCount].age);studentCount++;printf("学生信息添加成功。
\n");}// 查询学生信息void queryStudent() {if (studentCount == 0) {printf("没有学生信息可供查询。
C语言 学生信息管理系统(完整版)
电子科技大学成都学院程序综合设计论文论文题目学生信息管理系统学生姓名魏国学号1340840625专业机械设计制造及其自动化系(分院)电子工程系授课教师杜娥2015年12月制摘要随着经济的发展,社会的进步,计算机越来越深入到我们日常的工作学习及生活中,成为我们日常生活不可或缺的辅助工具。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已成为人们深刻认识,它已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
现在由于学校规模进一步扩大,学生人数逐渐上升,在学校的学生信息管理中,虽然已经存在许多学生信息管理系统,但由于学校之间的管理差异很信息的不同,各个学校的学生信息管理的要求不一致,这样我们需要根据具体学习的具体要求来开发学生信息管理系统以方便学生管理。
本系统主要对学生各种信息进行处理。
本系统采用C语言编写,设计从实用性出发,设计开发出一个操作简单且符合实际需要的学生信息管理系统。
本文设计出一个可以添加、修改、查询、删除、统计的学生信息管理系统;最后,通过测试分析,力求将学到的只是在学生信息管理系统的得到全面运用,并使系统在实际的操作中能按照设计的要求安全有效的正确运行。
学生信息管理系统是为了实现学校对学生信息管理的系统化、规范化和自动化,从而提高学校管理效率而设计的。
它完全取代了原来一直用人工管理的工作方式,避免了由于管理人员的工作疏忽以及管理质量问题所造成的各种错误,为及时、准确、高效的完成学生信息管理提供了强有力的工具和管理手段。
学生信息管理系统是一个中小型数据库管理系统,它界面美观、操作简单、安全性高,基本满足了学生信息管理的要求。
学生信息管理系统在运行阶段,效果好,数据准确性高,提高了工作效率,同时也实现了学生信息管理计算机化。
关键字:学生信息,管理系统,数据库,C语言编写第一章系统功能和组成模块1.1系统功能学生信息管理系统存放了每个学生的学号,姓名,性别,年龄,出生年月,家庭住址,政治面貌等信息的数据库。
学生信息管理系统C语言报告
学生信息管理系统C语言报告简介学生信息管理系统是一种可以对学生信息进行管理的软件系统。
通过该系统,可以方便地添加、修改、查询和删除学生信息,提高学生信息管理的效率和准确性。
本报告将介绍学生信息管理系统的设计和实现过程,包括系统功能、技术选型和代码结构等方面。
通过该报告的阅读,读者可以了解到该系统的开发背景和主要功能,以及查看源代码和运行效果。
系统功能学生信息管理系统的主要功能如下:1. 添加学生信息:可以输入学生的姓名、年龄、性别、学号等基本信息,并保存到系统中。
2. 修改学生信息:可以根据学生的学号或姓名,修改学生的基本信息。
3. 查询学生信息:可以根据学生的学号、姓名、年龄、性别等条件,查询学生的基本信息。
4. 删除学生信息:可以根据学生的学号或姓名,将学生的基本信息从系统中删除。
技术选型为了实现学生信息管理系统的需求,我们选择使用C语言进行开发。
C语言是一种高效、可靠的编程语言,有着丰富的开发资源和庞大的用户群体。
在开发过程中,我们采用了以下技术选型:- 编程语言:C语言C语言作为一种结构化的编程语言,具有强大的计算能力和灵活的控制语句,非常适合开发类似学生信息管理系统这样的小规模应用。
代码结构学生信息管理系统的代码结构如下:cinclude <stdio.h>struct Student {char name[50];int age;char gender[10];int student_id;};void add_student(struct Student *students, int *count) {添加学生信息的代码逻辑}void modify_student(struct Student *students, int count) {修改学生信息的代码逻辑}void query_student(struct Student *students, int count) {查询学生信息的代码逻辑}void delete_student(struct Student *students, int *count) {删除学生信息的代码逻辑}int main() {struct Student students[100];int count = 0;主程序逻辑,包括用户界面等}在代码结构中,我们定义了一个`Student`结构体,用于存储学生的基本信息。
C语言学生信息管理系统(完整版)
#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语言编程
学生信息管理系统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++课程设计学生学籍管理系统XXX: Student Academic Management SystemTable of Contents:1.System Design Goals and Significance2.System Design Approach3.System XXX4.Input and Output Design1) Interface Design2) Data Output Design3) System n Results5.XXX1) System n Structure Diagram2) UML Diagram6.Appendix7.Problems and XXX During System Design and Development8.ns and Insights1.System Design Goals and Significance1) System XXXThe task of this course project is to create a small student academic management system that includes a menu for data input。
display。
search。
n。
saving。
statistics。
n。
and system exit。
The system design requires the use of C++ object-oriented programming and XXX of classes for each n.2) Basic nality:Student basic n (ID。
name。
gender。
birthplace。
ethnicity。
birthday。
political n。
ID card。
math score。
English score。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VC++课程设计---高校学籍管理系统源程序一、课程设计题目:学籍管理系统二、目的与要求:1、目的:(1)要求学生达到熟练掌握C++语言的基本知识和技能;(2)基本掌握面向对象程序设计的基本思路和法;(3)能够利用所学的基本知识和技能,解决简单的面向对象程序设计问题。
2、基本要求:(1)要求利用面向对象的法以及C++的编程思想来完成系统的设计;(2)要求在设计的过程中,建立清晰的类层次;(3)在系统的设计中,至少要用到面向对象的一种机制。
3、创新要求:在基本要求达到后,可进行创新设计,如根据查找结果进行修改的功能。
4、写出设计说明书三、设计法和基本原理:1、功能要求要求完成以下功能:1)能够从屏幕上读取一个学生的信息并将信息存入到数据文件中。
2)能够将指定的信息从文件中删除。
3)能够按编号、姓名对学生的信息进行检索并将检索结果显示在屏幕上。
4)可以统计全部学生的总成绩,及其在班上的排名。
5)能够统计各科的平均成绩及及格率。
6)要求有错误提示功能,例如性别只能输入男女,输入错误提示重新输入。
7)如果检索不到相应的信息应提示用户。
2、问题的解决案:根据系统功能要求,可以将问题解决分为以下步骤:a) 写出需求分析(做什么)b) 分析系统中的各个实体之间的关系及其属性和行为;c) 根据问题描述,设计系统的类层次;d) 完成类层次中各个类的描述(包括属性和法);e) 完成类中各个成员函数的定义;f) 用户界面的设计g) 分析系统功能模块(系统流程图)h) 代码编写i) 功能调试;j) 完成系统总结报告以及系统使用说明书。
源程序代码如下:[code]/*course.dat-课程列表(只读)student.dat-学生信息*/#include <fstream.h>#include <iomanip.h>#include <string.h>#include <ctype.h>class COURSE //课程类{private:static int coursenum; //课程数量static char (*coursename)[20]; //课程名称public:static void LoadCourse() //从文件COURSE.DAT装入课程信息 {ifstream f("course.dat");f>>coursenum;coursename=new char[coursenum][20];for(int i=0; i<coursenum; i++)f>>coursename;f.close();}friend class STUDENT;friend class COLLEGE;};int COURSE::coursenum=0;char (*COURSE::coursename)[20]=0;class STUDENT //学生类{private:char num[20]; //学号char name[20]; //姓名char sex; //性别char cname[20]; //班级float *grade; //成绩(动态数组)float sum; //各科总分STUDENT *next;public:STUDENT(){grade=new float[COURSE::coursenum];next=0;}~STUDENT(){delete []grade;}void Input(){sum=0;cout<<"学号:"; cin>>num; //输入学生一般信息cout<<"姓名:"; cin>>name;cout<<"性别:"; cin>>sex; sex=toupper(sex);cout<<"班级:"; cin>>cname;for(int i=0; i<COURSE::coursenum; i++) //输入学生各科成绩{cout<<COURSE::coursename<<"成绩:"; cin>>grade;sum+=grade; //计算总分}}void Input(ifstream &f){f>>num;f>>name;f>>sex; sex=toupper(sex);f>>cname;for(int i=0; i<COURSE::coursenum; i++) //输出学生各科成绩,总分{f>>grade;}f>>sum;}static void OutputT(){cout<<setw(10)<<"学号"<<setw(20)<<"姓名"<<setw(5)<<"性别"<<setw(10)<<"班级";for(int i=0; i<COURSE::coursenum; i++)cout<<setw(7)<<COURSE::coursename;cout<<setw(10)<<"总分"<<endl;}void Output(){cout<<setw(10)<<num; //输出学生一般信息cout<<setw(20)<<name;cout<<setw(5)<<sex;cout<<setw(10)<<cname;for(int i=0; i<COURSE::coursenum; i++) //输出学生各科成绩,总分{cout<<setw(7)<<grade;}cout<<setw(10)<<sum<<endl;}void Output(ofstream &f){f<<setw(10)<<num; //输出学生一般信息f<<setw(20)<<name;f<<setw(5)<<sex;f<<setw(10)<<cname;for(int i=0; i<COURSE::coursenum; i++) //输出学生各科成绩,总分{f<<setw(7)<<grade;}f<<setw(10)<<sum<<endl;}friend class COLLEGE;};class COLLEGE //学校类{private:STUDENT *SL; //学生链表void Clear();int Find(char* ID,STUDENT **p1,STUDENT **p2);void COLLEGE::ValueS2ToS1(STUDENT &s1,STUDENT &s2); public:COLLEGE(){COURSEadCourse(); //装入课程信息SL=new STUDENT(); //创建学生链表表头结点}~COLLEGE(){STUDENT *p=SL; //删除学生链表各个结点while(p){SL=p->next;delete p;p=SL;}}void Set(); //课程设置(增,删,改,存)void Add(); //增加学生void Delete(); //删除学生void Modify(); //修改学生void Query(); //查询学生信息(按姓名,学号)void Print(); //输出所有学生信息void Stat(); //统计课程平均成绩,课程合格率void SumSort(); //按总分排名(高->低)void NumSort(); //按学号排序(低->高)void Save(); //学生数据存盘void Load(); //装入学生数据};//增加学生void COLLEGE::Add(){cout<<"\n** 增加学生信息**\n";STUDENT *p=new STUDENT; //创建1个新学生结点STUDENT *p2=SL; //查找学生链表表尾结点 while(p2->next)p2=p2->next;p2->next=p; //学生结点p->Input(); //输入学生信息}//查找学生结点(返回1-找到,0-未找到.结点指针由p1返回,p2为前看指针) int COLLEGE::Find(char *ID,STUDENT **p1,STUDENT **p2){*p1=SL->next;*p2=SL;while(*p1){if(strcmp((*p1)->num,ID)==0)break; //找到else{*p2=*p1; //继续查找*p1=(*p1)->next;}}return *p1?1:0;}//删除学生void COLLEGE:elete(){cout<<"\n** 删除学生**\n";char No[20];STUDENT *p1,*p2;cout<<"学号:"; cin>>No;if(!Find(No,&p1,&p2)){cout<<"指定的学生没有找到!\n";}else{p2->next=p1->next; //连接delete p1;cout<<"正确删除!\n";}}//修改学生void COLLEGE::Modify(){cout<<"\n** 修改学生**\n";char No[20];STUDENT *p1,*p2;cout<<"学号:"; cin>>No;if(!Find(No,&p1,&p2)){cout<<"指定的学生没有找到!\n";}else{p1->Output(); //输出原来的学生信息(做提示)p1->Input(); //输入此学生信息(更新)cout<<"修改完成!\n";}}/*承上*///查询学生信息//按学号或姓名查找,如果找到显示该学生,如果未找到,也给出相应提示. void COLLEGE:uery(){cout<<"\n** 查询学生**\n";STUDENT *p=SL->next;char No[20];char Name[20];char ch;do{cout<<"按学号查1,按姓名查2:"; cin>>ch; }while(ch!='1'&&ch!='2');int flag=0; //未找到0,找到1if(ch=='1') //按学号查{cout<<"学号:"; cin>>No;while(p)if(strcmp(p->num,No)==0){flag=1; break;}elsep=p->next;}else //按姓名查{cout<<"姓名:"; cin>>Name;while(p)if(strcmp(p->name,Name)==0){flag=1; break;}elsep=p->next;}if(flag==1) //如果找到,显示此同学信息{p->OutputT();p->Output();}else //否则给出未找到提出cout<<"指定的学生没有找到!\n"; }//输出所有学生信息void COLLEGE:rint(){cout<<"\n** 输出学生信息**\n"; STUDENT *p=SL->next;STUDENT::OutputT(); //输出标题 while(p) //循环输出各位学生信息 {p->Output();p=p->next;}}//学生数据存盘void COLLEGE::Save(){ofstream f("student.dat");STUDENT *p=SL->next;while(p) //遍历学生链表{p->Output(f); //写入文件p=p->next;}f.close();cout<<"\n** 保存数据完成! **\n"; }void COLLEGE::Clear(){STUDENT *p=SL->next;while(p){SL->next=p->next;delete p;p=SL->next;}}//装入学生数据void COLLEGEad(){Clear();ifstream f("student.dat");STUDENT *p=SL;STUDENT *p2=new STUDENT;p2->Input(f);while(f){p->next=p2;p=p->next;p2=new STUDENT;p2->Input(f);}delete p2;f.close();}//统计课程平均成绩,课程合格率void COLLEGE::Stat(){float *sum=new float[COURSE::coursenum]; //各科平均成绩float *pass=new float[COURSE::coursenum]; //各科合格人数,/n=>合格率int n=0; //学生人数for(int i=0; i<COURSE::coursenum; i++){STUDENT *p=SL->next; n=0;sum=pass=0;while(p) //遍历学生链表{n++; //人数sum=sum+p->grade; //某科总分if(p->grade>=60)pass++; //某科合格人数p=p->next;}}for(i=0; i<COURSE::coursenum; i++){cout<<setprecision(4)<<setiosflags(ios::showpoint);cout<<COURSE::coursename<<"平均:"<<sum/n<<",合格率:"<<pass/n*100.<<"%"<<endl;}delete []sum;delete []pass;}void COLLEGE::ValueS2ToS1(STUDENT &s1,STUDENT &s2) {strcpy(s1.num,s2.num); //学号strcpy(,); //姓名s1.sex=s2.sex; //性别strcpy(ame,ame); //班级for(int i=0; i<COURSE::coursenum; i++)s1.grade=s2.grade; //成绩指针(动态数组)s1.sum=s2.sum; //各科总分}//按总分排名(采用选择法排序),总分高->低void COLLEGE::SumSort(){STUDENT *p1,*p2;p1=SL->next;while(p1){p2=p1->next;while(p2){if(p2->sum>p1->sum){STUDENT t;ValueS2ToS1(t,*p1);ValueS2ToS1(*p1,*p2);ValueS2ToS1(*p2,t);}p2=p2->next;}p1=p1->next;}}void COLLEGE::NumSort() //按学号排序(低->高){STUDENT *p1,*p2;p1=SL->next;while(p1){p2=p1->next;while(p2){if(strcmp(p2->num,p1->num)<0) //只要修改这里,其余同SumSort {STUDENT t;ValueS2ToS1(t,*p1);ValueS2ToS1(*p1,*p2);ValueS2ToS1(*p2,t);}p2=p2->next;}p1=p1->next;}}void main(){char ch;COLLEGE c; //定义大学对象cout.setf(ios::left);//显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数 do{cout<<"\n☆☆ 高校学籍管理系统☆☆\n";cout<<"1-增加学生\n";cout<<"2-删除学生\n";cout<<"3-修改学生\n";cout<<"4-查询学生\n";cout<<"5-输出学生信息\n";cout<<"6-综合统计(课程平均成绩,课程合格率)\n";cout<<"7-总分排序\n";cout<<"8-学号排序\n";cout<<"S-数据存盘\n";cout<<"L-数据装入\n";cout<<"Q-退出\t请选择(1-8,SLQ):";cin>>ch; ch=toupper(ch);switch(ch){case '1': c.Add(); break;case '2': c.Delete();break;case '3': c.Modify();break;case '4': c.Query(); break;case '5': c.Print(); break;case '6': c.Stat(); break;case '7': c.SumSort(); break;case '8': c.NumSort(); break;case 'S': c.Save(); break;case 'L': c.Load(); break;}}while(ch!='Q');}3、2数据文件1、course.dat:3C++英语高数2、student.dat:86101 chenkaijun M M8601 77 59 96 232 86102 zhaowei F M8601 55 85 77 217 86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86105 wangzhuguo M M8601 66 70 86 22 23、3运行结果参考☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ)☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):5** 输出学生信息**学号姓名性别班级 C++ 英语高数总分86101 chenkaijun M M8601 77 59 96 232 86102 zhaowei F M8601 55 85 77 217 86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86105 wangzhuguo M M8601 66 70 86 222 ☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率)7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):7☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率)7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):5** 输出学生信息**学号姓名性别班级 C++ 英语高数总分86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86101 chenkaijun M M8601 77 59 96 232 86105 wangzhuguo M M8601 66 70 86 222 86102 zhaowei F M8601 55 85 77 217☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率)7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):qPress any key to continun//查询学生信息//按学号或姓名查找,如果找到显示该学生,如果未找到,也给出相应提示. void COLLEGE:uery(){cout<<"\n** 查询学生**\n";STUDENT *p=SL->next;char No[20];char Name[20];char ch;do{cout<<"按学号查1,按姓名查2:"; cin>>ch;}while(ch!='1'&&ch!='2');int flag=0; //未找到0,找到1if(ch=='1') //按学号查{cout<<"学号:"; cin>>No;while(p)if(strcmp(p->num,No)==0){flag=1; break;}elsep=p->next;}else //按姓名查{cout<<"姓名:"; cin>>Name;while(p)if(strcmp(p->name,Name)==0){flag=1; break;}elsep=p->next;}if(flag==1) //如果找到,显示此同学信息 {p->OutputT();p->Output();}else //否则给出未找到提出cout<<"指定的学生没有找到!\n";}//输出所有学生信息void COLLEGE:rint(){cout<<"\n** 输出学生信息**\n";STUDENT *p=SL->next;STUDENT::OutputT(); //输出标题while(p) //循环输出各位学生信息{p->Output();p=p->next;}}//学生数据存盘void COLLEGE::Save(){ofstream f("student.dat");STUDENT *p=SL->next;while(p) //遍历学生链表{p->Output(f); //写入文件p=p->next;}f.close();cout<<"\n** 保存数据完成! **\n"; }void COLLEGE::Clear(){STUDENT *p=SL->next;while(p){SL->next=p->next;delete p;p=SL->next;}}//装入学生数据void COLLEGEad(){Clear();ifstream f("student.dat");STUDENT *p=SL;STUDENT *p2=new STUDENT; p2->Input(f);while(f){p->next=p2;p=p->next;p2=new STUDENT;p2->Input(f);}delete p2;f.close();}//统计课程平均成绩,课程合格率void COLLEGE::Stat(){float *sum=new float[COURSE::coursenum]; //各科平均成绩float *pass=new float[COURSE::coursenum]; //各科合格人数,/n=>合格率int n=0; //学生人数for(int i=0; i<COURSE::coursenum; i++){STUDENT *p=SL->next; n=0;sum=pass=0;while(p) //遍历学生链表{n++; //人数sum=sum+p->grade; //某科总分if(p->grade>=60)pass++; //某科合格人数p=p->next;}}for(i=0; i<COURSE::coursenum; i++){cout<<setprecision(4)<<setiosflags(ios::showpoint);cout<<COURSE::coursename<<"平均:"<<sum/n<<",合格率:"<<pass/n*100.<<"%"<<endl;}delete []sum;delete []pass;}void COLLEGE::ValueS2ToS1(STUDENT &s1,STUDENT &s2){strcpy(s1.num,s2.num); //学号strcpy(,); //姓名s1.sex=s2.sex; //性别strcpy(ame,ame); //班级for(int i=0; i<COURSE::coursenum; i++) s1.grade=s2.grade; //成绩指针(动态数组) s1.sum=s2.sum; //各科总分}//按总分排名(采用选择法排序),总分高->低void COLLEGE::SumSort(){STUDENT *p1,*p2;p1=SL->next;while(p1){p2=p1->next;while(p2){if(p2->sum>p1->sum){STUDENT t;ValueS2ToS1(t,*p1);ValueS2ToS1(*p1,*p2);ValueS2ToS1(*p2,t);}p2=p2->next;}p1=p1->next;}}void COLLEGE::NumSort() //按学号排序(低->高) {STUDENT *p1,*p2;p1=SL->next;while(p1){p2=p1->next;while(p2){if(strcmp(p2->num,p1->num)<0) //只要修改这里,其余同SumSort {STUDENT t;ValueS2ToS1(t,*p1);ValueS2ToS1(*p1,*p2);ValueS2ToS1(*p2,t);}p2=p2->next;}p1=p1->next;}}void main(){char ch;COLLEGE c; //定义大学对象cout.setf(ios::left);//显示主菜单,接受选择,并分支调用大学类的相应功能的成员函数do{cout<<"\n☆☆ 高校学籍管理系统☆☆\n";cout<<"1-增加学生\n";cout<<"2-删除学生\n";cout<<"3-修改学生\n";cout<<"4-查询学生\n";cout<<"5-输出学生信息\n";cout<<"6-综合统计(课程平均成绩,课程合格率)\n";cout<<"7-总分排序\n";cout<<"8-学号排序\n";cout<<"S-数据存盘\n";cout<<"L-数据装入\n";cout<<"Q-退出\t请选择(1-8,SLQ):";cin>>ch; ch=toupper(ch);switch(ch){case '1': c.Add(); break;case '2': c.Delete();break;case '3': c.Modify();break;case '4': c.Query(); break;case '5': c.Print(); break;case '6': c.Stat(); break;case '7': c.SumSort(); break;case '8': c.NumSort(); break;case 'S': c.Save(); break;case 'L': c.Load(); break;}}while(ch!='Q');}3、2数据文件1、course.dat:3C++英语高数2、student.dat:86101 chenkaijun M M8601 77 59 96 232 86102 zhaowei F M8601 55 85 77 217 86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86105 wangzhuguo M M8601 66 70 86 22 23、3运行结果参考☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ)☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):5** 输出学生信息**学号姓名性别班级 C++ 英语高数总分86101 chenkaijun M M8601 77 59 96 232 86102 zhaowei F M8601 55 85 77 217 86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86105 wangzhuguo M M8601 66 70 86 222 ☆☆ 高校学籍管理系统☆☆1-增加学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率)7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):7☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生4-查询学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率)7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):5** 输出学生信息**学号姓名性别班级 C++ 英语高数总分86103 wubin M M8601 85 87 92 264 86104 shijun M M8601 58 90 85 233 86101 chenkaijun M M8601 77 59 96 232 86105 wangzhuguo M M8601 66 70 86 222 86102 zhaowei F M8601 55 85 77 217☆☆ 高校学籍管理系统☆☆1-增加学生2-删除学生3-修改学生5-输出学生信息6-综合统计(课程平均成绩,课程合格率) 7-总分排序8-学号排序S-数据存盘L-数据装入Q-退出请选择(1-8,SLQ):qPress any key to continun[/code] 页: [1]。