《学生成绩管理系统》编程

合集下载

C语言课程设计--学生成绩管理系统

C语言课程设计--学生成绩管理系统

*题目七:学生成绩管理系统设计学生成绩信息包括:学期,学号,班别,姓名,四门课程成绩(语文、数学、英语和计算机)等。

主要功能:(1)能按学期、按班级完成对学生成绩的录入、修改(2)能按班级统计学生的成绩,求学生的总分及平均分(3)能查询学生成绩,不及格科目及学生名单(4)能按班级输出学生的成绩单要求:使用二进制文件方式存储数据,系统以菜单方式工作源代码:#include<stdio.h>#include<ctype.h>#include<stdlib.h>#include<string.h>struct Student{int cls;char nam[10];char num[10];int chinese;int english;int computer;int math;}stud1[100],stud2[100];{char a;while(a>'7'||a<'0'){system("cls");printf(" 欢迎使用学生成绩管理系统\n");printf(" 制作人:章建\n");printf("********************** 学生成绩管理系统************************\n");printf(" 1.输入学生成绩\n");printf(" 2.输出学生成绩\n");printf(" 3.查找并显示学生成绩\n");printf(" 4.按姓名查找,修改学生资料\n");printf(" 5.显示所有学生名单\n");printf(" 6.查找并删除学生信息\n");printf(" 7.从文件读取数据\n");printf(" 0.储存学生资料并退出系统\n");printf("********************************************************************* *\n");printf("请选择(0-7)\n");a=getchar();}return(a-'0');}/******************************************************************************int Input(Student stud[],int n) //输入数据(第一学期)。

学生成绩管理系统

学生成绩管理系统

学生成绩管理系统程序简介:随着我国计算机应用的进一步普及和深入,人们已经达成了一个共识;计算机知识是当代人类文化的重要组成部分,计算机应用是当代人才不可缺少的素质。

因此,许多单位把计算机知识和应用能力作为考核,录用工作人员的重要条件。

为了适应这种大的社会潮流,成为今后社会发展的中主力量,我们必须学好计算机。

根据C 语言程序设计考试方案,我们做了名为《学生成绩管理系统》的编程。

程序如下:*#include"stdio.h" #include"string.h"#define M 100 /*定义足够大的数组*/ struct student /*定义结构体*/组数 系别 专业班级 指导老师 第四组电子信息工程系电信09-2班兰聪花组员姓名 职务 成绩 李博 程序设计师 连小康 程序经理 缪瑾程序分析师int num; /*学号*/char sex; /*性别*/char name[20]; /*姓名*/int score[3]; /*成绩:平时,实验,考试*/float s[2]; /*成绩:总分,平均*/float total; /*综合成绩*/};struct name /*定义结构体:登录用户名*/{char name[20]; /*用户名*/int num; /*密码*/}ren[3]={{"libo",8855},{"lianxiaokang",1234},{"miaojin",4321}};menu() /*主菜单函数*/{printf("*************************************************\n");printf("** 1.getin the information of students !*\n");printf("** 2.edit the information of students !*\n");printf("** 3.line score!*\n");printf("** 4.putout the information of students!*\n");printf("** 5.find!*\n");printf("** 6.delete!*\n");printf("** 7.insert the new information of student!*\n");printf("** 8.renew *\n");printf("** 9.duplicate!*\n");printf("** 10.back the system! *\n");printf("*************************************************\n");printf("please the butterof wangting to choice:\n");}int getscore(struct student stu[]) /*成绩录入函数*/{int i; /*i为循环变量*/for(i=0;i<M;i++){ printf("学号按0返回!\n");printf("请输入第%d个学生的信息:num,name,ps,sy,ks\n",i+1);scanf("%d",&stu[i].num);if(stu[i].num<0) break;scanf("%s %c %d%d%d",stu[i].name,&stu[i].sex,&stu[i].score[0],&stu[i].score[1],&s tu[i].score[2]);stu[i].total=stu[i].score[0]*0.1+stu[i].score[1]*0.2+stu[i].score[2]*0.7;}return(i);void putscore(struct student stu[],int x) /*打印输出函数*/{int i,j;printf("Num\tName\tps\tsy\tks\tTotal\n");for(i=0;i<x;i++){ printf("%d\t%s\t%c\t%.2f\t",stu[i].num,stu[i].name,stu[i].sex,stu[i].total);for(j=0;j<3;j++)printf("%d\t",stu[i].score[j]);printf("\n");}}void editscore(struct student stu[],int len) /*统计函数*/{ float sum=0;int i,j=0,a,b;printf("please input bound!\n");scanf("%d%d",&a,&b);for(i=0;i<len;i++)if(a<=stu[i].total&&stu[i].total<=b)j++;printf("form %d to %d have %d students!\n",a,b,j);printf("Num\tName\tAverage\tsum\n");for(i=0;i<len;i++){stu[i].s[0]=0;for(j=0;j<3;j++)sum+=stu[i].score[j];stu[i].s[0]=(float)sum;stu[i].s[1]=stu[i].s[0]/3.0;}for(i=0;i<len;i++)printf("%d\t%s\t%f\t%f\n",&stu[i].num,stu[i].name,&stu[i].s[0],&stu[i].s[1]); }void lintotal(struct student stu[],int len) /*按成绩排序*/{ int i,j,k;struct student mp; /*定义结构体变量,用作中间变量*/for(i=0;i<len-1;i++) /*选用选择排序*/{ k=i;for(j=i;j<len;j++)if(stu[j].total>stu[k].total)k=j;if(k!=i){mp=stu[k];stu[k]=stu[i];stu[i]=mp;}}putscore(stu,len);}void linname(struct student stu[],int len) /*按姓名排序*/{ int i,j,k;struct student mp; /*定义结构体变量,用作中间变量*/ for(i=0;i<len-1;i++){ k=i;for(j=i;j<len;j++)if(strcmp(stu[j].name,stu[k].name)>0)k=j;if(k!=i){mp=stu[k];stu[k]=stu[i];stu[i]=mp;}}putscore(stu,len);}void namefind(struct student stu[],int len) /*按姓名查找函数*/{int i,j;char Q[20]; /*定义要查询的姓名*/printf("请输入查询姓名:\n");scanf("%s",Q);for(i=0;i<len;i++)if(strcmp(strlwr(Q),stu[i].name)==0){printf("Num\tName\tps\tsy\tks\tTotal\n");printf("%d\t%s\t%c\t%.2f\t",stu[i].num,stu[i].name,stu[i].sex,stu[i].total);for(j=0;j<3;j++)printf("%d\t",stu[i].score[j]);printf("\n");}}void numfind(struct student stu[],int len) /*按学号查找函数*/{int i,Q,j;printf("请输入查询的学号:\n");scanf("%d",&Q);for(i=0;i<len;i++)if(stu[i].num==Q){ break;printf("Num\tName\tps\tsy\tks\tTotal\n");printf("%d\t%s\t%c\t%.2f\t",stu[i].num,stu[i].name,stu[i].sex,stu[i].total);for(j=0;j<3;j++)printf("%d\t",stu[i].score[j]);printf("\n");}}int namedelete(struct student stu[],int len) /*按姓名删除函数*/{int i,j;char Q[20];printf("please put in the name of wanting detele :\n");scanf("%s",Q);for(i=0;i<len;i++)if(strcmp(strlwr(Q),stu[i].name)==0){for(j=i;j<len-1;j++)stu[j]=stu[j+1];len--;}return(len);}int numdelete(struct student stu[],int len) /*按学号删除函数*/{ int i,m,Q;printf("please put in the num of wanting detele :\n");scanf("%d",&Q);for(i=0;i<len;i++)if(stu[i].num==Q){m=i;break;}for(i=m;i<len-1;i++)stu[i]=stu[i+1];return(len-1);}int insertscore(struct student stu[],int len) /*插入函数*/{int i,j,m;struct student mp;printf("please the information:num,name,ps,sy,ks\n");scanf("%d%s%c",&mp.num,,&mp.sex);for(m=0;m<3;m++)scanf("%d",&mp.score[m]);mp.total=mp.score[0]*0.1+mp.score[1]*0.2+mp.score[2]*0.7;for(i=0;i<len;i++){if(mp.total>stu[i].total)break;}len++;for(j=len-1;j>i;j--)stu[j]=stu[j-1];stu[i]=mp;return(len);}void renew(struct student stu[],int len) /*更新函数*/{int i,Q,j; /*i,j为循环变量*/printf("please put in the num of wanting renew:\n");scanf("%d",&Q);for(i=0;i<len;i++)if(stu[i].num==Q){ printf("please put in the newinformation :num,name,,sex,ps,sy,ks\n");scanf("%s%c",stu[i].name,&stu[i].sex);for(j=0;j<3;j++)scanf("%d",stu[i].score[j]);stu[i].total=stu[i].score[0]*0.1+stu[i].score[1]*0.2+stu[i].score[2]*0.7;break;}}int duplicate(struct student stu[],int len) /*复制函数*/{int i;for(i=0;i<len;i++)stu[len+i]=stu[i];return(2*len);}void main(){struct student stu[M];int i,len=0,n,Q,w,j; /*len为人数,i为登陆的次数*/char m[20];for(i=3;i>0;i--){printf("you have %d times opputunety!\n",i); /*对登录次数进行限制*/ printf("put in the name!\n");scanf("%s",m);printf("please put in the password!\n");scanf("%d",&w);for(j=0;j<3;j++){if(strcmp(strlwr(m),ren[j].name)==0)if(w==ren[j].num){while(1){menu();scanf("%d",&n);switch(n){case 1:len=getscore(stu);break;case 2:editscore(stu,len);break;case 3:{printf("1.depent on score to line!!\n");printf("2.depent on name to line!!\n");scanf("%d",&Q);if(Q==1) lintotal(stu,len);else if(Q==2) linname(stu,len);else printf("Error!\n");case 4:putscore(stu,len);break;case 5:{printf("1.depent on name to find!!\n");}break;printf("2.depent on num to find!!\n");scanf("%d",&Q);if(Q==1) namefind(stu,len);else if(Q==2) numfind(stu,len);else printf("Error!\n");}break;case 6:{printf("1.depent on name to delete!\n");printf("2.depent on num to delete!\n");scanf("%d",&Q);if(Q==1) len=namedelete(stu,len);else if(Q==2) len=numdelete(stu,len);else printf("Error!\n");}break;case 7:len=insertscore(stu,len);break;case 8:renew(stu,len);break;case 9:len=duplicate(stu,len);break;case 10:{ i=0;j=3;return;printf("welcome to using !\n");break;}default:printf("Error ,please putin again!\n");break;}}}}}}*************************************************** 程序优点:基本完成了老师的方案要求,达到对学生人数的动态赋值,动态统计和逻辑判断,对程序中的变量和子函数进行了必要的注释和说明,使得程序更加通俗易懂,程序中的排序应用了多种排序的方法,增加了程序是灵活性。

python超详细实现完整学生成绩管理系统

python超详细实现完整学生成绩管理系统

python超详细实现完整学⽣成绩管理系统⽬录学⽣成绩管理系统简介源代码students.txtmain.pyLogin.pydb.pyMenuPage.pyview.py学⽣成绩管理系统简介⼀个带有登录界⾯具有增减改查功能的学⽣成绩管理系统(⾯向对象思想,利⽤tkinter库进⾏制作,利⽤.txt⽂件进⾏存储数据)源代码仅供学习参考,最好还是⾃⼰多敲多练习(实践是检验真理的唯⼀标准) students.txt⽤于存储数据main.pyfrom tkinter import *from Login import *import tkinter as tkroot = ()root.title('欢迎进⼊学⽣成绩管理系统')LoginPage(root)root.mainloop()Login.pyfrom tkinter import *from tkinter.messagebox import *from MenuPage import *class LoginPage(object):def __init__(self, master=None):self.root = master # 定义内部变量rootself.root.geometry('%dx%d' % (300, 180)) # 设置窗⼝⼤⼩ername = StringVar()self.password = StringVar()self.createPage()def createPage(self):self.page = Frame(self.root) # 创建Frameself.page.pack()Label(self.page).grid(row=0, stick=W)Label(self.page, text='账户: ').grid(row=1, stick=W, pady=10)Entry(self.page, textvariable=ername).grid(row=1, column=1, stick=E)Label(self.page, text='密码: ').grid(row=2, stick=W, pady=10)Entry(self.page, textvariable=self.password, show='*').grid(row=2, column=1, stick=E) Button(self.page, text='登陆', command=self.loginCheck).grid(row=3, stick=W, pady=10) Button(self.page, text='退出', command=self.page.quit).grid(row=3, column=1, stick=E) def loginCheck(self):name = ername.get()password = self.password.get()if name == 'hacker707' and password == 'admin':self.page.destroy()MenuPage(self.root)else:showinfo(title='错误', message='账号或密码错误!')db.pyimport jsonclass StudentDB(object):def __init__(self):self.students = []self._load_students_data()def insert(self, student):self.students.append(student)print(self.students)def all(self):return self.studentsdef delete_by_name(self, name): # 删除数据for student in self.students:if name == student["name"]:self.students.remove(student)breakelse:return Falsereturn True# 查询def search_by_name(self, name):for student in self.students:if name == student["name"]:return student # 姓名+成绩else:return False# 修改def update(self, stu): # 修改数据name = stu["name"]for student in self.students:if name == student["name"]:student.update(stu)return Trueelse:return False# 加载⽂件def _load_students_data(self):with open("students.txt", "r", encoding="utf-8") as f:text = f.read()if text:self.students = json.loads(text)# 保存数据def save_data(self):with open("students.txt", 'w', encoding="utf-8") as f:text = json.dumps(self.students, ensure_ascii=False)f.write(text)db = StudentDB()MenuPage.pyimport tkinter as tkfrom view import *class MenuPage(object):def __init__(self, master=None):self.root = masterself.root.geometry('%dx%d' % (600, 400))self.create_page()self.input_page = InputFrame(self.root)self.query_page = QuerryFrame(self.root)self.delete_page = DeleteFrame(self.root)self.update_page = UpdateFrame(self.root)self.about_page = AboutFrame(self.root)self.input_page.pack()def create_page(self):# 创建菜单对象menubar = tk.Menu(self.root)# add_command 添加menubar.add_command(label="录⼊", command=self.input_data) # label menubar.add_command(label="查询", command=self.query_data) # label menubar.add_command(label="删除", command=self.delete_data) # label menubar.add_command(label="修改", command=self.update_data) # label menubar.add_command(label="关于", command=self.about_data) # label # 设置菜单栏self.root.config(menu=menubar)# 切换界⾯def input_data(self):self.input_page.pack()self.update_page.pack_forget()self.delete_page.pack_forget()self.about_page.pack_forget()self.query_page.pack_forget()def query_data(self):self.input_page.pack_forget()self.query_page.pack()self.update_page.pack_forget()self.delete_page.pack_forget()self.about_page.pack_forget()def update_data(self):self.input_page.pack_forget()self.update_page.pack()self.delete_page.pack_forget()self.about_page.pack_forget()self.query_page.pack_forget()def delete_data(self):self.input_page.pack_forget()self.update_page.pack_forget()self.delete_page.pack()self.about_page.pack_forget()self.query_page.pack_forget()def about_data(self):self.input_page.pack_forget()self.update_page.pack_forget()self.delete_page.pack_forget()self.about_page.pack()self.query_page.pack_forget()view.pyimport tkinter as tkfrom db import dbfrom tkinter import ttk# 录⼊类class InputFrame(tk.Frame):def __init__(self, master=None):super().__init__(master)self.root = master = tk.StringVar()self.math = tk.StringVar()self.chinese = tk.StringVar()self.english = tk.StringVar()self.status = tk.StringVar()self.create_page()def create_page(self):bel(self).grid(row=0, stick=tk.W, pady=10)bel(self, text="姓名:").grid(row=1, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self, textvariable=).grid(row=1, column=1, stick=tk.E)bel(self, text="数学:").grid(row=2, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self, textvariable=self.math).grid(row=2, column=1, stick=tk.E)bel(self, text="语⽂:").grid(row=3, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self, textvariable=self.chinese).grid(row=3, column=1, stick=tk.E)bel(self, text="英语:").grid(row=4, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self, textvariable=self.english).grid(row=4, column=1, stick=tk.E)tk.Button(self, text="录⼊", command=self.recode_student).grid(row=5, column=1, stick=tk.E, pady=10) bel(self, textvariable=self.status).grid(row=6, column=1, stick=tk.E, pady=10)# 录⼊成绩def recode_student(self):student = {"name": .get(),"math": self.math.get(),"chinese": self.chinese.get(),"english": self.english.get(),} # ⼀个学⽣的成绩db.insert(student)# get()得到值# set()设置值self.status.set("插⼊数据成功!")self._clear_data()db.save_data()# 清空⽂本数据def _clear_data(self):.set("")self.math.set("")self.chinese.set("")self.english.set("")# 查询类class QuerryFrame(tk.Frame):def __init__(self, master=None):super().__init__(master)self.root = masterself.create_page()# 创建查询界⾯def create_page(self):self.create_tree_view()self.show_data_frame()# grid()tk.Button(self, text="刷新数据", command=self.show_data_frame).pack(anchor=tk.E, pady=5) # Treeviewdef create_tree_view(self):# 表头columns = ("name", "chinese", "math", "english")self.tree_view = ttk.Treeview(self, show='headings', columns=columns)self.tree_view.column("name", width=80, anchor='center')self.tree_view.column("chinese", width=80, anchor='center')self.tree_view.column("math", width=80, anchor='center')self.tree_view.column("english", width=80, anchor='center')self.tree_view.heading("name", text='姓名')self.tree_view.heading("chinese", text='语⽂')self.tree_view.heading("math", text='数学')self.tree_view.heading("english", text='英语')self.tree_view.pack()# 显⽰数据def show_data_frame(self):# 删除原节点 map(int,值)for i in map(self.tree_view.delete, self.tree_view.get_children("")):pass# 拿到列表⾥⾯所有值、students[]students = db.all()# 同时拿到索引跟value值for index, stu in enumerate(students):self.tree_view.insert('', index, values=(stu["name"], stu["chinese"], stu["math"], stu["english"]))class DeleteFrame(tk.Frame):def __init__(self, master=None):super().__init__(master)bel(self, text='删除数据').pack()self.status = tk.StringVar()self.de_name = tk.StringVar() # 获取删除学⽣的姓名self.create_page()# 创建界⾯def create_page(self):bel(self, text="根据姓名删除信息").pack(anchor=tk.W, padx=20)e1 = tk.Entry(self, textvariable=self.de_name)e1.pack(side=tk.LEFT, padx=20, pady=5)tk.Button(self, text='删除', command=self._delete).pack(side=tk.RIGHT)bel(self, textvariable=self.status).pack()# 删除def _delete(self):name = self.de_name.get()print(name)result = db.delete_by_name(name)if result:self.status.set(f'{name}已经被删')self.de_name.set("")else:self.status.set(f'{name}不存在')class UpdateFrame(tk.Frame):def __init__(self, master=None):super().__init__(master)self.root = masterbel(self, text='修改界⾯').pack()self.change_frame = tk.Frame(self)self.change_frame.pack() = tk.StringVar()self.math = tk.StringVar()self.chinese = tk.StringVar()self.english = tk.StringVar()self.status = tk.StringVar()self.create_page()def create_page(self):bel(self.change_frame).grid(row=0, stick=tk.W, pady=10)bel(self.change_frame, text="姓名:").grid(row=1, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self.change_frame, textvariable=).grid(row=1, column=1, stick=tk.E)bel(self.change_frame, text="数学:").grid(row=2, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self.change_frame, textvariable=self.math).grid(row=2, column=1, stick=tk.E)bel(self.change_frame, text="语⽂:").grid(row=3, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self.change_frame, textvariable=self.chinese).grid(row=3, column=1, stick=tk.E)bel(self.change_frame, text="英语:").grid(row=4, stick=tk.W, pady=10)# 单⾏⽂本框 entry,textvariable绑定变量tk.Entry(self.change_frame, textvariable=self.english).grid(row=4, column=1, stick=tk.E)# 按钮tk.Button(self.change_frame, text='查询', command=self._search).grid(row=6, column=0, stick=tk.W, pady=10) tk.Button(self.change_frame, text='修改', command=self._change).grid(row=6, column=1, stick=tk.E, pady=10) bel(self.change_frame, textvariable=self.status).grid(row=7, column=1, stick=tk.E, pady=10)# 查询def _search(self):name = .get()student = db.search_by_name(name)if student:self.math.set(student["math"])self.chinese.set(student["chinese"])self.english.set(student["english"])self.status.set(f'查询到{name}同学的信息')else:self.status.set(f'没有查询到{name}同学的信息')# 更改成绩def _change(self):name = .get()math = self.math.get()chinese = self.chinese.get()english = self.english.get()stu = {"name": name,"math": math,"chinese": chinese,"english": english,}r = db.update(stu)if r:self.status.set(f"{name}同学的信息更新完毕")else:self.status.set(f"{name}同学的信息更新失败")class AboutFrame(tk.Frame):def __init__(self, master=None):super().__init__(master)self.root = masterself.create_page()def create_page(self):bel(self, text="关于本作品(⼈⽣苦短,我⽤python)").pack(anchor=tk.W)以上就是使⽤python实现学⽣成绩管理系统,如果有改进的建议,欢迎在评论区留⾔奥~这篇⽂章参加了csdn的活动,还请⼤家多多三连⽀持⼀下博主,你们的⽀持就是我创作的动⼒到此这篇关于python超详细实现完整学⽣成绩管理系统的⽂章就介绍到这了,更多相关python 学⽣成绩管理系统内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

C语言程序设计学生成绩管理系统实验报告

C语言程序设计学生成绩管理系统实验报告

移通学院C语言程序设计报告书设计名称:学生成绩管理系统专业:指导老师:班级:姓名:学号:座号:时间一、实验目的1.在编辑应用程序过程中,逐步加深对C语言编程的理解;2.加强实践的能力,动手能力,同时进一步对所学的知识进行巩固;3.培养初步编程的能力,为以后的学习奠定基础;二、实验内容运用所学的C语言知识编辑一个应用程序:学习成绩管理系统三.系统软件环境:本程序主要运行在: Visual C++ 6.0Turbo C/C++ 3.0四.课程设计题目:学生成绩管理系统程序说明:有N个学生,每个学生的数据包含学号不重复、姓名、三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以下功能:1主菜单2各菜单项功能①成绩录入:输入学生的学号、姓名及三门课的成绩;②成绩查询:按学号查询学生记录;③成绩统计:计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序后输出;④退出系统:退出整个系统即主菜单;五.数据结构设计描述:↓int num; /定义学号,变量为整型/char name; /定义姓名,变量为字符型/int score; /定义课程的成绩,变量为整型/float average; /定义平均分,变量为浮点型/七.系统各函数的功能,、相互调用关系1.函数实现功能说明:1menu函数是定义一个菜单函数,其功能在于输出菜单界面供使用者选择;2input函数是定义用于输入学生信息;3select 函数是定义用于查询学生信息;包括学号、姓名及各科成绩;4statistics 函数计算学生的平均分;根据学生的平均分高低,对学生的数据进行排序输出;2.相互调用关系:Main函数调用menu函数;Menu 函数可以调用input 函数、select函数和statistics 函数八.心得体会C语言是一种较为基础和普遍的编程语言,应用相当广泛,这次课程设计的要求与C语言的广泛应用相比较还有很大的差距;我们对于C语言的理解和使用还处在一个初级的阶段,我们要想掌握它,要学习的还很多,同时要懂得创新,许多的编程方法都是人们一步一步总结出来的,我想我们也要努力拓展自己的思维,努力去寻求新的方法,以创造出更为完善的应用程序; 九.程序:include <stdio.h>include <stdlib.h>include <conio.h>define N 3 /学生人数/define M 3 /课程门数/struct student{int num; /学号/char name20; /姓名/int score3; /三门课成绩/float average;}stuN; /学生数/void input; /查询/void select; /统计/void menu;void input{int i,j;printf"\t\t①成绩录入\n\n";fori=0;i<N;i++{printf"请输入学号:";scanf"%d",&stui.num;printf"请输入姓名:";scanf"%s",&;forj=0;j<M;j++{printf"第%d门成绩的分数:",j+1;scanf"%d",&stui.scorej;}printf"\n\n";}printf"\n\n";printf"输入完毕按任意键返回主菜单";}/2.查询/void selectint no{int i;printf"学生%d号: \n",no; printf"学号: %d\n",stuno-1.num; printf"姓名: %s\n",;for i=0;i<M;i++{printf"第%d门课程的成绩为: ",i+1; printf"%d\n",stuno-1.scorei;}printf"\n按任意键返回主菜单";getch;}/3.统计/void statistics{float temp=0;int i=0;/学生成绩平均分/temp=0;printf"\t\t③成绩统计\n\n";forj=0;j<N;j++{fori=0;i<M;i++{temp=temp+stuj.scorei;}stuj.average=temp/N;printf"\n学生%s的成绩平均成绩为:",;printf"%0.2f分",stuj.average;temp=0;}/排序/for j=0;j<N;j++fori=0;i<N-j-1;i++ifstui.average<stui+1.average{ temp=stui.average;stui.average=stui+1.average;stui+1.average=temp;}printf"\n\n学生平均成绩前三名:";fori=0;i<3;i++{printf"\n第%d名:%0.2f分",i+1,stui.average;}printf"\n\n按任意键返回主菜单";getch;}void menu{ int num=0;int n=0;printf"\n\t\t\t学生成绩管理系统\n\n";printf"\n\t\t\t①成绩录入\n\t\t\t②成绩查询\n\t\t\t③成绩统计\n\t\t\t④退出系统\n";printf"\t\t\tchoose:";scanf"%d",&num;switchnum{case 1:system"cls";input;break;case 2:system"cls";printf"\t\t②成绩查询\n\n"; printf"请输入要查询的学生号1~3:";scanf"%d",&n;selectn;break;case 3:system"cls";statistics;break;case 4:exit0;default:;}}void main{while1{system"cls"; /清屏/menu;}}。

学生成绩在线管理系统数据库课程设计mysql+java

学生成绩在线管理系统数据库课程设计mysql+java

学生成绩在线管理系统数据库课程设计mysql+java以下是一个学生成绩在线管理系统的数据库设计示例,使用MySQL数据库和Java 编程语言:1. 学生表(students)-学生ID(student_id):主键,自增-学生姓名(student_name):varchar类型,最大长度为50-学生年龄(student_age):整数类型-学生性别(student_gender):varchar类型,最大长度为10-学生班级(student_class):varchar类型,最大长度为502. 课程表(courses)-课程ID(course_id):主键,自增-课程名称(course_name):varchar类型,最大长度为503. 成绩表(scores)-成绩ID(score_id):主键,自增-学生ID(student_id):外键,关联到学生表的学生ID-课程ID(course_id):外键,关联到课程表的课程ID-分数(score):浮点数类型通过以上表的设计,你可以实现以下功能:-添加学生信息-添加课程信息-添加学生成绩-查询学生信息-查询课程信息-查询学生的成绩-更新学生信息-更新课程信息-更新学生成绩-删除学生信息-删除课程信息-删除学生成绩在Java中,你可以使用JDBC(Java Database Connectivity)来连接MySQL数据库并执行SQL语句来实现对数据库的操作。

你需要配置数据库连接信息,并编写相应的Java代码来执行查询和更新操作。

这只是一个简单的数据库设计示例,你可以根据你的具体需求进行调整和扩展。

学生成绩管理系统c++课程设计报告

学生成绩管理系统c++课程设计报告

学生成绩管理系统c++课程设计报告一、引言学生成绩管理系统是一种在学校教学管理中广泛应用的软件系统,用于记录和管理学生的考试成绩、课程信息等。

本课程设计旨在利用C++语言设计并实现一个简单的学生成绩管理系统,以加深对C++编程语言的理解和应用。

二、系统设计1. 系统功能•添加学生信息:包括学生姓名、学号、班级等。

•删除学生信息:根据学号删除学生信息。

•查询学生成绩:输入学号查询学生的考试成绩。

•修改学生成绩:根据学号修改学生的考试成绩。

•显示所有学生信息:以表格形式展示所有学生的信息。

2. 类设计在设计学生成绩管理系统时,需要设计以下几个类:(1)学生类class Student {private:string name;int id;string className;float score;public:// 构造函数Student(string n, int i, string c, float s);// 获取学生信息void displayInfo();// 获取学生成绩float getScore();// 修改学生成绩void modifyScore(float s);};(2)学生管理类class StudentManager {private:vector<Student> students;public:// 添加学生信息void addStudent(Student s);// 删除学生信息void deleteStudent(int id);// 查询学生成绩void queryScore(int id);// 修改学生成绩void modifyScore(int id, float score);// 显示所有学生信息void displayAll();};三、系统实现1. 主函数主函数实现了与用户的基本交互,包括菜单的显示和选项的选择。

```cpp int main() { StudentManager sm; int choice; while (true) { // 显示菜单cout <<。

C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告(学生成绩管理系统)

C语言课程设计报告:学生成绩管理系统系统需求一、当前学生信息:通过结构体struct student 来保存学生的姓名,学号,性别,语文,数学,英语和计算机等等相关信息,并且通过cin函数来进行给当前学生输入初始信息。

二、学生成绩查询: 输入一个学号,在文件中查找此学生, 若找到则输出此学生的全部信息和成绩;若找不到则输出查找失败的信息。

同时也可以全部把各科的平均成绩,最高和最低分输出.三、新生插入:通过给该生的学号来和原班上的学生的学号比较大小,若大就在后,若小则靠前排,将此生的信息保存下来.四、输出全部学生信息和全部学生成绩。

五、退出系统.六、附加说明:系统将来完善的功能有:可以通过性别来模糊查询,也可以通过姓名的姓来先进行模糊查询,以便后面精确查找。

总体设计一、仔细阅读系统要求,首先将此系统化分为如下模块(即如下函数)1、输入初始的学生信息:其中包括学生的姓名、学号和性别以及学生的语文、数学、英语和计算机等相关信息;可用函数cin(stu *p1)来实现此操作。

2、查询模块:可用stu *lookdata(stu *p1)来实现。

找到就输出此学生全部信息包括学生的语文、数学、英语和计算机等的成绩。

3、插入模块:可用insert( )函数来实现。

其中通过学号的大小来比较的,并且以此来排序.4、输出学生的信息以及成绩:通过学生的姓名来查看学生的语文、数学、英语和计算机等相关成绩,同时也可以分别通过caverage()、maverage()、eaverage() 和comaverage() 来输出语文、数学、英语和计算机等成绩的平均分数、最高和最低分数。

5、退出系统:可用一个函数exit()来实现,首先将信息保存到文件中,释放动态创建的内存空间,再退出此程序。

二、系统主模块结构图:详细设计一、界面设计此系统界面采用图形和数字化菜单设计。

主界面设计如下:学生成绩管理系统请选择相应的数字执行相应的功能:1:是否输入其他数据2:查看数据3:插入数据4:查找数据5:更新数据6:保留数据7:显示或打印数据8:语文成绩状况9:数学成绩状况10:英语成绩状况11:计算机成绩状况12:?13:退出系统二、数据结构设计:程序设计中用到的结构体类型:学生信息结构体类型:typedef struct student{char name[MAX];int num[MAX];char sex[MAX];int chinese;int mathematic;int english;int computer;struct student *next;}程序代码://原始密码是123456#include"stdio.h”#include"stddef.h"#include"stddef。

c++语言学生成绩管理系统源代码

c++语言学生成绩管理系统源代码

我是电大的学生,这是struct 类型的c 语言学生成绩管理系统代码,大家交流一下#include<stdio.h>#include<string.h> #include<stdlib.h>#define MAXN 100 //#define MAXN 100 //一个班最多的人数一个班最多的人数#define MAXM 2 //#define MAXM 2 //成绩的课程门数成绩的课程门数int R;void input(); //1.void input(); //1.学生成绩新建学生成绩新建void sort(); //2.void sort(); //2.学生成绩插入学生成绩插入void load(); //3.void load(); //3.学生成绩修改学生成绩修改void print(); //4.void print(); //4.学生成绩删除学生成绩删除void total(); //5.void total(); //5.学生成绩统计学生成绩统计void search(); //6.void search(); //6.学生成绩查询学生成绩查询void save(); //7.void save(); //7.学生成绩保存学生成绩保存void end(); //8.void end(); //8.结束结束struct student{char name[20]; //char name[20]; //保存全班姓名保存全班姓名保存全班姓名char num[12]; // char num[12]; //保存全班学号保存全班学号保存全班学号char man[20]; //char man[20]; //保存全班性别保存全班性别保存全班性别float score[MAXM]; //float score[MAXM]; //保存全班所有课程成绩保存全班所有课程成绩保存全班所有课程成绩 float sum; //float sum; //保存全班每个人的总成绩保存全班每个人的总成绩保存全班每个人的总成绩float avg; // float avg; //保存每个人的平均成绩保存每个人的平均成绩保存每个人的平均成绩};struct student s[MAXN];struct http{char subject[20]; //char subject[20]; //保存全班所有课程保存全班所有课程保存全班所有课程};struct http c[MAXM];void main() //void main() //欢迎首界面欢迎首界面欢迎首界面{ int select,l;system("color fC");printf("\n");printf("\n");printf("\n");printf("\n");printf(" printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); \n"); printf(" * *\n"); printf(" * *\n"); printf(" * printf(" * 欢迎进入终极一班学生管理系统欢迎进入终极一班学生管理系统欢迎进入终极一班学生管理系统 *\n"); *\n"); printf(" * *\n"); printf(" * ︻┳═一︻┳═一︻┳═一 cf ... *\n"); cf ... *\n"); printf(" * printf(" * ┈━═☆甘总管的多塔生活∝╬══→┈━═☆甘总管的多塔生活∝╬══→┈━═☆甘总管的多塔生活∝╬══→ *\n"); *\n"); printf(" * *\n"); printf(" * printf(" * 凸凸^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸凸凸凸凸^-^^-^^-^凸凸 *\n"); printf(" printf(" ¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥¥\n"); \n"); printf(" printf(" ╭ ╭ ╭ v v v╮╮ ╔══╗╔╗╔══╗╔╗ ╔╗╔╗╔╗╔╗╔╗╔╗ ╭╭''''''╮╮\n");printf(" (@ ^o^ @)╚╗╔╝║║╔═╦╦╦═╗║╚╝╠═╦╦╗(~ : : ~~)\n");printf(" (~) : (~)╔╝╚╗║╚╣║║║║╠╣╚╗╔╣║║║║(~) v (~)\n");printf(" ╚══╝╚═╩═╩═╩═╝ ╚╝╚═╩═╝ \n");printf("\n");printf("\n");printf(" printf(" 请按任意键进入下一界面请按任意键进入下一界面请按任意键进入下一界面\n"); \n");printf("------------------------------------------------------------------\n"); system("pause");system("color f2");system("color f1");system("color f3"); system("color fE");system("color fB");system("color f5");system("color f9");system("color f6");system("color f1");system("color f3");system("color fE");system("color fB");system("color f5");system("color f9"); system("color f6");system("color f1");system("color f3");system("color f5");system("color f9");system("color f6");system("color fD");system("pause");system("color fC");system("cls"); // system("cls"); //上面是第一个界面上面是第一个界面上面是第一个界面while(1){system("cls");printf(" ****************欢迎进入终极一班学生管理系统****************\n");printf(" ******************************************************\n");printf(" * ∝╬══→ 1.学生成绩新建 囧rz 欢 *\n");printf(" * ::======>> 2. 2.学生成绩插入学生成绩插入学生成绩插入 迎迎 *\n"); printf(" * printf(" * ┈━═☆┈━═☆┈━═☆ 3. 3.学生成绩修改学生成绩修改学生成绩修改 来来 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 4. 4.学生成绩删除学生成绩删除学生成绩删除 到到 *\n"); printf(" * ∝╬══→∝╬══→ 5. 5.学生成绩统计学生成绩统计学生成绩统计 英英 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 6. 6.学生成绩查询学生成绩查询学生成绩查询 雄雄 *\n"); printf(" * printf(" * ▄︻┻═┳▄︻┻═┳▄︻┻═┳ 7. 7.学生成绩保存学生成绩保存学生成绩保存 联联 *\n"); printf(" * printf(" * ∝╬══→∝╬══→∝╬══→ 8. 8.退出退出退出//撒拉嘿撒拉嘿 盟盟 *\n"); printf(" * ( printf(" * (⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙)()()(⊙_⊙⊙_⊙⊙_⊙) *\n"); ) *\n");printf(" ******************************************************\n"); printf("\n"); printf("\n printf("\n"); printf("\n 请输入您的选择编号请输入您的选择编号请输入您的选择编号,,回车键继续:回车键继续:\n"); \n");printf("---------------------------------------------------------------------------\n"); scanf("%d",&select);do {if(select<1||select>8){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&select);}l=select;}while(l<1||l>8);switch(select) {case 1:input();break; //1. case 1:input();break; //1.学生成绩新建学生成绩新建学生成绩新建case 2:sort(); break; //2. case 2:sort(); break; //2.学生成绩插入学生成绩插入学生成绩插入case 3:load(); break; //3. case 3:load(); break; //3.学生成绩修改学生成绩修改学生成绩修改case 4:print(); break; //4. case 4:print(); break; //4.学生成绩删除学生成绩删除学生成绩删除case 5:total();break; //5. case 5:total();break; //5.学生成绩统计学生成绩统计学生成绩统计case 6:search();break; //6. case 6:search();break; //6.学生成绩查询学生成绩查询学生成绩查询case 7:save();break; //7. case 7:save();break; //7.学生成绩保存学生成绩保存学生成绩保存case 8: end();break; //8. case 8: end();break; //8.结束结束结束default:printf(" default:printf(" 请按相应数学选择系统功能:请按相应数学选择系统功能:请按相应数学选择系统功能:"); ");}}}void input() //1学生成绩输入成绩模块成绩输入成绩模块{int i,j,b;float a=0;printf(" printf(" 请输入该班同学的人数:请输入该班同学的人数:请输入该班同学的人数:\n"); \n");printf(" printf(" 班同学的人数在班同学的人数在1~%d 之间:之间:\n",MAXN); \n",MAXN);scanf("%d",&R);do{if(R<1||R>100){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&R);}b=R;} while(b<1||b>100);for(i=0;i<MAXM;i++){printf(" printf(" 请输入该班同学的第请输入该班同学的第请输入该班同学的第%d %d 门课程名称为:门课程名称为:\n",(i+1)); \n",(i+1));scanf("%s", &c[i].subject);}for(i=0;i<R;i++){printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的姓名:个同学的姓名:\n",(i+1)); \n",(i+1)); scanf("%s",&s[i].name);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的学号:个同学的学号:\n",(i+1)); \n",(i+1));scanf("%s",&s[i].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(i+1)); scanf("%s",&s[i].man);printf(" printf(" 请依次输入请依次输入请依次输入%d %d 门学科的成绩:门学科的成绩:\n",MAXM); \n",MAXM);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",c[j].subject); \n",c[j].subject);scanf("%f",&s[i].score[j]);a=a+s[i].score[j];}s[i].sum=a;s[i].avg=s[i].sum/MAXM;a=0;}}void sort() //2学生成绩插入成绩模块模块{int i,j,k,b;float a=0;printf(" printf(" 请输入要插入的学生的位置请输入要插入的学生的位置1~%d 号:号:\n",R); \n",R);printf(" printf(" 第几个学生的位置之后:第几个学生的位置之后:第几个学生的位置之后:\n"); \n");scanf("%d",&k);do{if(k<1||k>R){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&k);}b=k;}while(b<1||b>R);R=R+1;for(i=R;i>k;i--){strcpy(s[i].name,s[i-1].name);strcpy(s[i].num,s[i-1].num);strcpy(s[i].man,s[i-1].man);s[i].sum=s[i-1].sum;s[i].avg=s[i-1].avg;for(j=0;j<MAXM;j++) {s[i].score[j]=s[i-1].score[j];}}printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的姓名:个同学的姓名:\n",(k+1)); \n",(k+1));scanf("%s",&s[k].name);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的学号:个同学的学号:\n",(k+1)); \n",(k+1));scanf("%s",&s[k].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(k+1)); scanf("%s",&s[k].man);printf(" printf(" 请依次输入请依次输入请依次输入%d %d 门学科的成绩:门学科的成绩:\n",MAXM); \n",MAXM);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",&c[j].subject); \n",&c[j].subject);scanf("%f", &s[k].score[j]);a=a+s[k].score[j];}s[k].sum=a;s[k].avg=s[k].sum/MAXM;}void load() //3学生成绩修改学生成绩修改 {int load1(); int load2();int select,index,b;while(1){printf("*************************************************************\n");printf(" * 1.按学号修改按学号修改 * * \n");printf(" * 2.按姓名修改按姓名修改 * * \n"); printf(" * 0.返回返回 * * \n");printf(" * 请输入您的选择编号:请输入您的选择编号: * * \n");printf("*************************************************************\n");scanf("%d",&select);do{if(select<0||select>2){printf(" printf(" 您输入有误,请重新输入,谢谢!您输入有误,请重新输入,谢谢!!!\n"); scanf("%d",&select);}b=select;}while(b<0||b>2);switch(select){case 1:index=load1(); break;case 2:index=load2();break;case 0:return;}if(index!=-1){int i,j;float a=0,h[MAXM];i=index;printf(" printf(" 请输入请输入请输入%d %d 号的新学号:号的新学号: \n",i+1); \n",i+1);scanf("%s",&s[i].name);printf(" printf(" 请输入请输入请输入%d %d 号的新姓名:号的新姓名: \n",i+1); \n",i+1); scanf("%s",&s[i].num);printf(" printf(" 请输入第请输入第请输入第%d %d 个同学的性别(注:可以不详):\n",(i+1)); scanf("%s",&s[i].man);for(j=0;j<MAXM;j++){printf(" printf(" 请输入课程请输入课程请输入课程%s %s 的成绩为:的成绩为:\n",&c[j].subject); \n",&c[j].subject);scanf("%f",&h[j]);s[i].score[j] =h[j];a=a+s[i].score[j];}s[i].sum=a;s[i].avg=s[i].sum/MAXM;printf(" printf(" 修改成功。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

};struct student stu[N]; /* 定义结构体数组,存贮
多个学生的记录*/
三、数据结构设计描述
系统功能描述
1能够输入学生的学号、姓名、三科成绩并且计算出平均成绩。
2能够以表格的形式输出学生记录
3能够按照学生三科的平均成绩进行排序
4能够按照学生的单科成绩进行排序
5能够按照学号查询学生记录
N-S流程图: temp=head->next,head->next=NULL
当temp!=NULL时
t=temp;temp=temp->next;p1=head;p2=head; 当t->average<p1->average&&p1!=NULL时
p2=p1;p1=p1->next; p1=p2
是否 t->next=p1; t->next=p1; head=t; p2->next=t;
for(;;)
head=NULL
指针p指向新开辟的单元
指针p是否为空
是否
输入学号p->num
输出 p->num是否为0
内存 是 否
溢出
>name
停止 for(i=0;i<3;i++)
输入 输入成绩
返回
p->sum=s;
输入姓名p-
菜单
p->average=(float)s/3; p->order=0;
按提示输入数据 3、回到主菜单; 输入选项8,回车; 输入文件名:data,回车; 出现成功提示,则读入文件操作成功。
4、回到主菜单,输入1,回车 每10个暂停显示数据
5、回到主菜单,输入2,回车 出现排序成功信息。
6、回到主菜单,输入3,回车 出现排序成功信息。
7、回到主菜单,输入5,回车 按提示插入一组数据
6往表中插入学生记录
7从表中删除学生记录
8存储记录到文件中
9从文件中读取记录
10退出
数据字典
1数据流条目
数据流名称:全部记录
别名:无 简述:最新更新后所有关于学生成绩的记录 来源:数据库 去向:加工“记录筛选” 数据流量:不限 组成:学号+姓名+SC1+SC2+SC3+平均成绩 数据存储条 数据存储名称:学生成绩记录 别名:无 简述:存放学生所有可供查询的信息 组成:学号+姓名+SC1+SC2+SC3+平均成绩 组织方式:索引文件,以学学号为关键字 查询要求:要求能立即查询 2数据项条目 数据项名称:学号 别名:无 简述:所有学校学生的学号 类型:字符串 3加工条目 加工名:更改的记录 激发条件:学生成绩记录被改动 优先级:普通 输入:新记录 输出:更新数据、数据未改动 加工逻辑:根据现有学生成绩记录 if 新记录<>旧记录 then 更新数据 else 数据未改动 endif 设计测试流程 1、进入界面 2、输入选项0,回车;
1、 成绩录入 2、 成绩查询 3、 成绩统计 4、 退 出
(2)各菜单项功能
1 成绩录入:输入学生的学号、姓名及三门课的成绩;
2 成绩查询:(至少一种查询方式)。
按学号查询学生记录。
查询不及格学生的记录。
③成绩统计:
计算学生的平均分;
根据学生的平均分高低,对学生的数据进行排序后输出;
对学生单科成绩排序,输出学生姓名与该科成绩;
自定义输入控制函数
五、系统各模块(函数)的组成。功能、参数说明、相互调用关系 主函数 main() 利用无限次循环for(;;)和swithch()实现各函数的调用,系统根据输入 的数字选项来调用相应的函数。 初始化函数 STUDENT *init() 这是一个无参函数,里面只有一个语句,它的作用是使链表初始化,使 head的值为NULL。比如:没有这个函数的话,在你没有输入任何数据的 情况下,去执行显示功能的时候会显示一些乱码! 菜单选择函数 int menu_select(); 这是一个无参函数,主要实现“功能选择”的界面,在这个界面里有显 示系统的九大功能,根据每个功能前面的序号进行选择,中间还显示系 统当前的时间。等执行完每一个函数功能后,按任一键回到主界面也要 通过这个函数来实现! 输入记录函数 STUDENT *create() 这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停 止输入,函数结束后,带回一个指向链表头的指针head。 输入记录函数 STUDENT *create() 这是一个无参函数,用来执行第学生成绩记录的输入,当学生为0时停 止输入,函数结束后,带回一个指向链表头的指针head。 显示记录函数 void print(STUDENT *head) 这是一个不返回值的有参函数,形参为“链表头的指针”,负责对全部 学生成绩记录的输出,不足之处就是不能对学生成绩进行分页显示。 查找记录函数 void search(STUDENT *head) 这是一个不返回值的有参函数,形参为“链表头的指针”,实现按学号 对某个学生进行查找,并显示所查找到的记录。 删除记录函数 STUDENT *delete(STUDENT *head) 这是一个有参函数,形参为“链表头的指针”,先输入要删除的学生记 录的学号,找到后显示该学生信息,等确认后便可按“Y”进行删除。
④退出系统:退出整个系统(即主菜单)。
(3)结构体数组:
#define N 30
struct student
{int num;
/* 定义学号*/
char name[20]; /* 定义姓名*/
float score[3]; /* 定义存贮三门课成绩的数组*/
float average; /* 定义平均成绩*/
《学生成绩管理系统》 课程设计报告
专 业: 软 件 学 院 班 级: 计HR-06-7班 姓 名: 李 政 源 指导教师: 李 建 中
学 号: 0620010710
课程设计报告
一、课程设计题目 1 基本要求题目:矩阵乘法。 2 综合训练:学生成绩管理系统
二、设计要求 矩阵乘法:编写一个函数实现矩阵A(2行3列)与矩阵B 相乘(3行2 列),乘积放在C数组中。在主函数中输入相乘的两数组,并输出结 果。 学生成绩管理:(结构体数组、函数、指针、算法、流程结构及文件等 的综合应用) 程序说明:有N个学生,每个学生的数据包含学号(不重复)、姓名、 三门课的成绩及平均成绩,试设计一学生成绩管理系统,使之能提供以 下功能: (1)主菜单 学生成绩管理系统
排序函数 STUDENT *sort(STUDENT *head) 这是一个有参函数,形参为“链表头的指针”,按学生成绩的平均分高 低进行排序,还可以显示名次。 插入函数 STUDENT *insert(STUDENT *head,STUDENT *new) 这是一个有参函数,形参有两个,一个是“链表头的指针”,一个 是“待插入指针”,按照原来成绩平均分的高低进行插入,插入后会重 新进行排序,并返回。 保存数据到文件函数 void save(STUDENT *head) 这是一个不返回值的有参函数,形参为“链表头的指针”,可以把学生 记录保存在电脑上由自己任意命名的二进制文件。 从文件读数据函数 STUDENT *load() 这是一个不返回值的有参函数,形参为“链表头的指针”,根据输入的 文件地址进行读取
六、各功能模块的算法处理流程图及相关说明 1、主函数 main() 2、初始化函数 STUDENT *init() 3、菜单选择函数 int menu_select(); 4、输入记录函数 STUDENT *create() 算法:先声明一个首节点head,并将head->next设为NULL。每输入一个 数据就声明一个新节点p,把p->next设为NULL,并且链接到之前列表的 尾端。 N-S流程图如下:
p1=head;
输入入要删除的学号s 当(strcmp(p1->num,s))&& p1 !=
NULL
p2=p1 p1=p1->next
p1是要删除的结点 是否 p1所指是头结点 是 否 输出”找不
到” head=p1->next p2->next=p1-next 的 信息“ (删除头结点)
8、排序函数 STUDENT *sort(STUDENT *head)
Delete a record from list 从表中删除记录 Save the file 将单链表中记录保存到文件中 Load the file 从文件中读入记录*/ Quit 退出 STUDENT *init() 初始化链表 STUDENT *create()创建链表,完成数据录入功能 inputs(char *prompt, char *s, int count)
p1=head; 当p1!=NULL时
i++;p1->order=i;p1=p1->next; 输出“排序成功”
9、 入函数 STUDENT *insert(STUDENT *head,STUDENT *new) 算法:先将学生的成绩按平均分由高分到低分进行排序,再插入一个新 生的结点,要求按平均分的高低顺序插入。先用指针变量p0指向待插入 的结点,p1指向第一个结点。如果p0->average<p1->average,则待插 入的结点不应插在p1所指的结点之前。此时将p1后移,并使p2指向刚才 p1所指的结点。重复以上的步骤,直到p0->average>=p1->average为 止。这时将p0指向的结点插到p1所指结点之前。但是如果p1所指的已是 表尾结点,则p1就不应后移了。如果p0->average比所有结点的average 都小,则应将p0所指的结点插到链表末尾。如果插入的位置既不在第一 个结点之前,又不在表尾结点之后,则将p0的值赋给p2->,使p2->next 指向待插入的结点,然后将p1的值赋给p0->next,使得p0->next指向p1 指向的变量。如果插入位置为第一个结点之前,则将p0赋给head,将p1 赋给p0->next。如果要插到表尾之后,应将p0赋给p1->next,NULL赋给 p0->next。最后再调用排序的函数,将学生成绩重新排序. N-S流程图如下:
相关文档
最新文档