C语言大作业 电子1201班 姓名: 蔡浩学号1230340110
- 格式:doc
- 大小:46.50 KB
- 文档页数:11
C语言程序设计大作业编写程序,实现单链表的插入、删除、输出、查找、统计以及销毁功能。
单链表的每个结点存储一名学生的信息,包括:学号、姓名、性别、年龄、三门课程(高数、英语、C语言)的成绩、三门功课的平均分。
结构体类型声明如下:typedef struct student{char sno[8];char name[20];char sex;int age;double score[3];double avg;struct student *next;} STUDENT, *PSTUDENT;要求:⑴一律使用STUDENT 声明学生结构体的变量,一律使用PSTUDENT 声明指向学生结构体的指针变量⑵程序运行过程中要有菜单提示,菜单如下:**************************************************************** 1.Insert a student ** 2.Delete a student ** 3.Display the link list ** 4.Display excellent students ** 5.Search a student by the name ** 6.Display the average score of three courses ** 0.Exit the program ****************************************************************“Insert a student”:插入一个学生记录,要求按平均分从高到低插入“Delete a student”:删除指定学号的学生“Display the link list”:输出单链表中所有学生的信息“Display excellent students”:输出链表中三门功课平均成绩高于85分(含85分)的学生信息“Search a student by the name”:根据输入的姓名,输出链表中相应学生的信息“Display the average score of three courses”:输出链表中所有学生的高数平均分、英语平均分以及C语言平均分“Exit the program”:销毁单链表,结束程序运行。
C语言程序设计大作业
1. 题目:学生信息管理系统
2. 程序要求:
(1)学生信息录入功能
●用户键盘输入每个学生的信息:学号、姓名、性别、数学、英语、政治、语文四门
课成绩。
●可插入一个或多个学生信息到当前编辑的班级数据中。
(2)文件保存功能
●学生信息每一班存为一个数据文件,数据文件可在程序中打开、编辑和重新保存;
●用户输入学生信息可随时保存数据文件。
(3)文件打开功能
●序只能对当前打开的数据文件进行编辑。
(4)查询功能
●浏览所有学生信息
●按学号查询学生信息
●按姓名查询学生信息
●查询一个班总成绩和平均成绩
●查询一个班某一门课总成绩和平均成绩
●查询某一门课分数段(<60,60-69,70-79,80-89,>90)学生数。
(5)报表输出功能
●按学号输出一个班学生信息:学号、姓名、性别、数学、英语、政治、语文成绩、
总成绩,到屏幕和文件。
●按总成绩输出从高到低输出学号、姓名信息。
注:以上功能以菜单形式供用户使用,有一定的容错功能。
3. 开发语言环境:Microsoft VC++6.0 或Turbo C2.0
4.数据结构:数组或链表
5. 程序源代码要求:
(1)函数名、变量名采用英文缩写;
(2)源代码的书写采用递进格式;
(3)程序行和程序段须有注释。
学年学期:20xx - 20xx 学年 1 学期课程名称:C语言程序设计综合训练课程学分:2分考核形式:大作业任课教师:xx题目:学生成绩统计程序学院:xx学院__________________________________ 专业班级:xx_______________________________________ 学号:_______ 学生姓名:提交日期:目录目录 (2)引言 (3)1. 学生成绩管理系统 (4)1.1系统简介 (4)1.2相关代码及知识点介绍 (4)2. 添加学生成绩功能 (5)3. 查找学生成绩功能 (6)4. 排序学生成绩功能 (7)5. 展示学生成绩功能 (9)6. 删除学生成绩功能 (10)7. 附页代码 (11)引言C语言是一种比较常见的计算机语言,许多大型应用软件都是用C语言编写而成的。
其简洁紧凑,灵活方便,数据结构丰富。
在一定程度上,C语言比汇编语言更实用,具有结构化语句,实现了结构化编程,使程序编写变得更容易、更快捷,可以编写出各种类型的程序。
同时,C语言是一门实践性强的学科,在学习的过程中,利用所学知识,编写一些与生活、学习相关的应用程序来提高程序编写能力,增强学习兴趣。
本次使用C语言设计一个学生成绩管理系统,可以实现学生成绩的添加,查找,排序及展示。
在作业中使用的是函数的模块化设计,将四个程序使用四个函数来实现。
与此同时,增加用户界面的交互,可供用户选择想要的功能,实现增删查排等操作。
1. 学生成绩管理系统1.1系统简介该系统主要实现学生成绩的添加,查找,排序,展示和删除五个功能,添加学生成绩主要有6个输入值组成,其中包括学号,姓名,语文,数学,英语,政治等。
查找学生成绩主要通过学号查询。
对学生成绩进行排序,可以分别通过学号,语文,数学,英语,政治,平均分,总分等进行排序。
第四项功能是对学生成绩以表格的形式进行展示。
删除学生成绩是按照学号对表格中的数据进行删除。
#include "stdafx.h"#include "stdio.h"#include "stdlib.h"#include "string.h"#include "malloc.h"#define LEN sizeof(struct student) #define NULL 0int n,m;int k=1;struct student{char num[20];char name[20];int age;char profession[50];int maths;int english;int C_program;float ave;struct student * next;};float ave(struct student * p1){float ave;ave=(float)(p1->maths+p1->english+p1->C_program)/3;return ave;}void save(struct student *head){struct student *p1 = head;FILE *outFile;outFile = fopen("stu.bin", "wb");if (outFile == NULL) {printf("\nFile error.");}else {while(p1 != NULL){fwrite(p1, sizeof(struct student), 1, outFile);p1 = p1->next;}fclose(outFile);}}//将数据存入文档中void check(struct student * head,struct student * p1) {struct student *h=head;for(m=0;m<n;m++,h=h->next ){if(strcmp( h->num,p1->num)==0){printf("输入号码重复\n");printf("请重新输入学号:");scanf("%s",p1->num);getchar();check(head,p1);}}}//检验学号是否重复struct student * creat(){struct student * head;struct student *p1,*p2;n=0;p1=p2=(struct student *)malloc(LEN); printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);head=NULL;while(strcmp(p1->num,"0")!=0){n=n+1;if(n==1)head=p1;else p2->next=p1;p2=p1;p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);//检查输入的学号是不是重复且是不是重复输错 printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);}p2->next=NULL;save(head);return(head);}//录入数据并将其保存至文档void print(struct student *head){struct student * p;printf("\n这%d个学生的成绩为:\n",n);printf("学号姓名年龄专业数学英语 C语言平均成绩\n");p=head;if(head==NULL)printf("The info error\n");if(head!=NULL)while(p!=NULL){p->ave=ave(p);printf("%s%8s%8d%13s%9d%10d%9d%10.2f",p->num,p->name,p->age,p->profession,p->maths,p->engl ish,p->C_program,p->ave);printf("\n");p=p->next;}}//输出链表//struct student* read(){struct student *head = NULL;struct student *p2 = head;struct student record;FILE *infile;infile = fopen("stu.bin", "rb");n=1;if(infile == NULL){printf("\nFile error.");}else {head = (struct student *)malloc(sizeof(struct student));fread(head, sizeof(*head), 1, infile);p2 = head;while(fread(&record, sizeof(record), 1, infile))//fread返回数据个数,结束和出错返回0;{p2->next = (struct student *)malloc(sizeof(struct student));memcpy(p2->next, &record, sizeof(record)); //复制结构体数据p2 = p2->next;n=n+1;}p2->next=NULL;fclose(infile);}return head;}//从文件中读取数据struct student * search_num(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->num)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此学号不存在\n");return(head);}//按学号查询数据//]struct student * search_name(struct student * head,char array[20]){struct student * p1;p1=head;if(head==NULL){printf("打开错误");return(head);}while((strcmp(array,p1->name)!=0)&&(p1->next!=NULL)){p1=p1->next;}//找到相应的学号if(strcmp(array,p1->name)==0){printf("学号姓名年龄专业数学英语 C语言\n");printf("%s%10s%10d%15s%11d%12d%11d",p1->num,p1->name,p1->age,p1->profession,p1->maths,p1-> english,p1->C_program);printf("\n");}else printf("此姓名不存在\n");return(head);}//按姓名查询数据//struct student * change(struct student * head,char array[20]){struct student *p1;p1=head;if(head==NULL){printf("打开错误!");return(head);}while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)) {p1=p1->next;} //找到相应的学号if(strcmp(array,p1->num)==0){printf("请输入更改的学号:\n");printf("学号:\n");scanf("%s",p1->num);getchar();printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);save(head);}else printf("所查学号不存在\n");return(head);}//修改数据//struct student * del(struct student * head,char array[20]) {struct student * p1,* p2;if(head==NULL){printf("\nlist null!\n");return head;}p1=head;while((strcmp(array,p1->num)!=0)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}//找到相应的学号、if((strcmp(array,p1->num)==0)){if(strcmp(array,head->num)==0)head=p1->next;elsep2->next=p1->next;}elseprintf("你查询的学号(%s)不存在!",p1->num);save(head);return(head);}void add(struct student * head){struct student *p1;printf("\n请输入添加学生的信息:\n");p1=(struct student *)malloc(LEN);printf("学号:\n");scanf("%s",p1->num);getchar();check(head,p1);printf("姓名:\n");gets(p1->name);printf("年龄:\n");scanf("%d",&p1->age);getchar();printf("专业:\n");gets(p1->profession);printf("数学成绩:\n");scanf("%d",&p1->maths);printf("英语成绩:\n");scanf("%d",&p1->english);printf("C语言成绩:\n");scanf("%d",&p1->C_program);FILE *outFile;outFile = fopen("stu.bin", "ab");if (outFile == NULL) {printf("\n打开错误.");}fwrite(p1, sizeof(struct student), 1, outFile);fclose(outFile);}void sta(struct student * head,char array[20],int max,int min) {struct student *p1=head;int k=0;if(strcmp(array,"maths")==0){while(p1!=NULL){if(p1->maths>=min&&p1->maths<=max)k++;p1=p1->next;}printf("数学科目在%d到%d之间的人数为:%d\n",min,max,k);}else if(strcmp(array,"english")==0){while(p1!=NULL){if(p1->english>=min&&p1->english<=max)k++;p1=p1->next;}printf("英语科目在%d到%d之间的人数为:%d\n",min,max,k); }else if(strcmp(array,"C_program")==0){while(p1!=NULL)if(p1->C_program>=min&&p1->C_program<=max)k++;p1=p1->next;}printf("C语言科目在%d到%d之间的人数为:%d\n",min,max,k); }}void exit(){printf("\t\t");printf("**********************\n");printf("\t\t");printf("*******感谢使用*******\n");printf("\t\t");printf("**********************\n");k=0;}void Chooseproject(int i){ struct student * head=NULL;if(i==1){head = read();print(head);else if(i==2){int p=1 ;printf("请选择按学号查询(1)还是按姓名查询(0):");scanf("%d",&p);while(p!=1&&p!=0){printf("输入错误!");printf("请选择学号查询(1)还是姓名查询(0)");scanf("%d",&p);}if(p==1){head = read();char num[20];printf("请输入查询的学号:\n");scanf("%s",num);head=search_num(head,num);while(strcmp(num,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n");scanf("%s",num);if(strcmp(num,"0")==0)break;head=search_num(head,num);}}else if(p==0){head = read();char name[20];printf("请输入查询的学号:\n");scanf("%s",name);head=search_name(head,name);while(strcmp(name,"0")!=0){printf("是否继续查询(是就输学号,否就输0):\n"); scanf("%s",name);if(strcmp(name,"0")==0)break;head=search_name(head,name);}}}else if(i==3){ head = read();char num[20];printf("请输入要更改的学号:\n");scanf("%s",num);getchar();head=change(head,num);print(head);while(strcmp(num,"0")!=0){printf("是否继续更改(是就输学号,否就输0):\n"); scanf("%s",num);getchar();if(strcmp(num,"0")==0)break;head=change(head,num);print(head);}}else if(i==4){head=read();add(head);}else if(i==5){char num[20];head=read();printf("请输入要删除的学号:\n");scanf("%s",num);getchar();head=del(head,num);print(head);}else if(i==6){head = read();int i;printf("\t\t");printf("************1.学号排序;********************\n");printf("\t\t");printf("************2.平均成绩排序;****************\n");printf("\t\t");printf("************3.数学成绩排序;****************\n"); printf("\t\t");printf("************4.英语成绩排序;****************\n"); printf("\t\t");printf("************5.C语言成绩排序;***************\n");printf("请输入相应的排序代号:");scanf("%d",&i);sort_down(head,i);}else if(i==7){head=read();int min,max;char subject[20];printf("\t\t");printf("************数学(maths);***************\n");printf("\t\t");printf("************英语(english);*************\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();while((strcmp(subject,"maths")!=0&&strcmp(subject,"english")!=0&&strcmp(subject,"C_pro gram")!=0)){printf("输入错误!");printf("\t\t");printf("************数学(maths);***********\n");printf("\t\t");printf("************英语(english);***********\n");printf("\t\t");printf("***********C语言(C_program);***********\n");printf("请选择要统计的项目:\n");scanf("%s",subject);getchar();}printf("请输入分数段的区间:");printf("区间上限:");scanf("%d",&max);printf("区间下限:");scanf("%d",&min);while(min>=max){printf("输入的下限大于等于上限,错误!");printf("请重新输入分数段的区间:");printf("区间上限:");scanf("%d",max);printf("区间下限:");scanf("%d",min);}sta(head,subject,max,min);}else if(i==8){printf("\t\t");printf("************************************\n");printf("\t\t");printf("**************感谢使用**************\n");printf("\t\t");printf("************************************\n");k=0;}}//选择功能void menu(){int i;printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息排序;***********\n");printf("\t\t");printf("***********7.信息统计;***********\n");printf("\t\t");printf("***********8,退出系统;***********\n");printf("请选择项目:");scanf("%d",&i);while(i<1||i>8){printf("输入错误,请重新输入:\n");printf("\t\t");printf("***********1.信息浏览;***********\n");printf("\t\t");printf("***********2.信息查询;***********\n");printf("\t\t");printf("***********3.信息修改;***********\n");printf("\t\t");printf("***********4.信息添加;***********\n");printf("\t\t");printf("***********5.信息删除;***********\n");printf("\t\t");printf("***********6.信息统计;***********\n");printf("\t\t");printf("***********7,退出系统;***********\n");printf("请重新选择项目:");scanf("%d",&i);}Chooseproject(i);}int _tmain(int argc, _TCHAR* argv[]){ struct student *head = NULL;printf("\t\t");printf("************************************************************\n");printf("\t\t");printf("*********************学生管理系***************************\n");printf("\t\t");printf("************************************************************\n" );printf("是否已经录入信息?\n");char c;printf("请输入 'y' 或 'n':");c=getchar();getchar();while(c!='n'&&c!='y'){printf("输入错误,请重新输入( 'y' 或 'n'):\n");c=getchar();getchar();}if(c=='n'){printf("请输入学生成绩:\n");head=creat();}while(k!=0){menu();}system("pause");return 0;}。
《C程序设计》课程设计
【设计目的】全面深入理解高级语言程序设计思想,掌握程序设计知识和技巧,提高综合应用能力。
【设计题目】编制并调试学生成绩管理程序。
【基本要求】
1.功能要求
1)从磁盘读入学生成绩单文件(学生的原始成绩单可通过运行程序产生)。
2)按下列要求组织成绩单:
(1)按学号排序
(2)按姓名排序(用选择法)
(3)按成绩排序(用冒泡法)
(4)按成绩分段计数(每10分为一段)
(5)优秀成绩单(优秀线由宏定义给出)
(6)不及格成绩单
3)将各类学生成绩单输出到显示器上,同时以文件形式保存到磁盘上。
2.界面要求
1)允许用户输入成绩单的路径及文件名。
2)可选择成绩单排序规则:升序、降序。
3)可选择输出内容:原始成绩单、排序后的成绩单、分段后的成绩单、优秀成绩单、不
及格成绩单。
3.数据结构要求
一个学生的信息,至少包括:
1)学号:形如:54110115,其中“54”表示所在学院,“11”表示年级,“01”表示班级,
“15”表示班内序号
2)姓名
3)性别
4)考试科目(共3科)
5)各科目考试成绩
要求用结构体数组保存学生信息。
4.程序结构要求
体现模块化程序设计思想,用函数实现各模块功能。
【选作】
1)分别将优秀成绩单和不及格成绩单以链表形式组织。
2)读入若干班级成绩单,按班级完成以上【基本要求】所述功能。
如有异议或侵权请及时联系,客服将立即删除!C++大作业报告姓名:常皓学号:03101261班级:031013销售公司员工管理设计一个虚基类Staff(员工),包含编号、姓名和年龄保护数据成员以及相关的成员函数;由Staff派生出销售员类Salesman,包含销售额保护数据成员以及相关的成员函数;再由Staff派生出经理类Manager;然后由Salesman和Manager类派生出销售经理类SalesManager。
设计一个利用文件处理方式实现对公司人员(包括销售员、经理和销售经理)进行管理,具有增加数据、更新数据、查询数据、删除数据以及重组文件的功能。
(删除数据在记录中做删除标志,重组文件指在物理上删除有删除标志的记录。
)另外要求分别统计这三类员工的人数以及所有员工的总数。
编程思想:首先定义一个虚基类Staff类,然后通过虚拟继承生成Salesman类和Manager类,最后由Salesman和Manager派生出主任销售员类SalesManager。
这四个类中定义InputFromFile(istream &in)这一输入函数,另外每个类还定义输入信息和输出信息的成员函数,之后定义StaffChart、SalesmanChart、ManagerChart和SalesManagerChart四个类来,为实现增加、更新、查询、删除以及全部显示人员的功能定义addItem、modifyItem、find、removeItem 以及display函数。
最后在主函数定义Staff_Chart、Salesman_Chart、Manager_Chart和Salesmanager_Chart四个对象,通过循环执行并用switch函数选择功能,然后调用相关的函数来实现各种功能。
实验代码:#include"iostream"#include"fstream"using namespace std;class Staff{char num[10];char name[10];int age;public:Staff * Next;void set_staff(){cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;}void InputFromFile(istream &in){in>>num>>name>>age;}void show(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;}char *get_num(){return num;}char *get_name(){return name;}int get_age(){return age;}};class Salesman:virtual public Staff{protected:char major[10];char t_title[10];public:Salesman * Next;void set_salesman()cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;cout<<"请输入专业:";cin>>major;cout<<"请输入职称:";cin>>t_title;}void InputFromFile(istream &in){in>>num>>name>>age>>major>>t_title;}void show_salesman(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"专业:"<<major<<endl;cout<<"职称:"<<t_title<<endl;}char *get_major(){return major;}char *get_t_title(){return t_title;}};class Manager:virtual public Staff{protected:char job[10];char dept[10];public:Manager * Next;void set_manager(){cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;cout<<"请输入职务:";cin>>job;cout<<"请输入部门:";cin>>dept;}如有异议或侵权请及时联系,客服将立即删除!void InputFromFile(istream &in){in>>num>>name>>age>>job>>dept;}void show_manager(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;cout<<"年龄:"<<age<<endl;cout<<"职务:"<<job<<endl;cout<<"部门:"<<dept<<endl;}char *get_job(){return job;}char *get_dept(){return dept;}};class SalesManager:public Salesman,public Manager{public:SalesManager * Next;void set_salesmanager(){cout<<"请输入编号:";cin>>num;cout<<"请输入姓名:";cin>>name;cout<<"请输入年龄:";cin>>age;cout<<"请输入专业:";cin>>major;cout<<"请输入职称:";cin>>t_title;cout<<"请输入职务:";cin>>job;cout<<"请输入部门:";cin>>dept;}void InputFromFile(istream &in){in>>num>>name>>age>>major>>t_title>>job>>dept;}void show_salesmanager(){cout<<"编号:"<<num<<endl;cout<<"姓名:"<<name<<endl;如有异议或侵权请及时联系,客服将立即删除!cout<<"年龄:"<<age<<endl;cout<<"专业:"<<major<<endl;cout<<"职称:"<<t_title<<endl;cout<<"职务:"<<job<<endl;cout<<"部门:"<<dept<<endl;}};class StaffChart{public:StaffChart();~StaffChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Staff条目void removeItem(); //删除Staff条目void display() //输出全部条目{Staff *p=Head->Next;for(p;p!=End;p=p->Next){p->show();cout<<endl;}}void addItem() //添加条目{End->set_staff();End->Next=new Staff;End=End->Next;save();}private:Staff * Head,* End;ifstream in; //文件输入ofstream out; //文件输出Staff * findItem(char * num){for(Staff * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}StaffChart::StaffChart() //构造函数{Head=new Staff;Head->Next=new Staff;End=Head->Next;in.open("StaffChart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new Staff;End=End->Next;}in.close();}StaffChart::~StaffChart() //析构函数{for(Staff * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void StaffChart::find() //查找条目{char num[10];Staff * p=NULL;cout<<"请输入要查找员工的工号:";cin>>num;if(p=findItem(num))p->Next->show();else{cout<<"没有找到!!"<<endl<<endl;}}void StaffChart::modifyItem() //修改条目char num[10];Staff * p=NULL;cout<<"请输入要修改员工的工号:";cin>>num;if(p=findItem(num)){p->Next->show();cout<<"请输入新的内容:"<<endl;p->Next->set_staff();}elsecout<<"没有找到!!"<<endl<<endl;save();}void StaffChart::removeItem() //删除条目{char num[10];Staff *p=NULL,*temp=NULL;cout<<"请输入要删除员工的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void StaffChart::save() //保存{out.open("StaffChart.txt");for(Staff * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<" "<<p->get_name()<<" "<<p->get_age()<<endl;out.close();}class SalesmanChart{public:SalesmanChart();~SalesmanChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Salesman条目void removeItem(); //删除Salesman条目void display() //输出全部条目{for(Salesman *p=Head->Next;p!=End;p=p->Next)p->show_salesman();}void addItem() //添加条目{End->set_salesman();End->Next=new Salesman;End=End->Next;save();}private:Salesman * Head,* End;ifstream in; //文件输入ofstream out; //文件输出Salesman * findItem(char * num){for(Salesman * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}};SalesmanChart::SalesmanChart() //构造函数{Head=new Salesman;Head->Next=new Salesman;End=Head->Next;in.open("SalesmanChaart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new Salesman;End=End->Next;}in.close();}SalesmanChart::~SalesmanChart() //析构函数{for(Salesman * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void SalesmanChart::find() //查找条目{char num[10];Salesman * p=NULL;cout<<"请输入要查找销售员的工号:";cin>>num;if(p=findItem(num))p->Next->show_salesman();elsecout<<"没有找到!!"<<endl<<endl;}void SalesmanChart::modifyItem() //修改条目{char num[10];Salesman * p=NULL;cout<<"请输入要修改销售员的工号:";cin>>num;if(p=findItem(num)){p->Next->show_salesman();cout<<"请输入新的内容:"<<endl;p->Next->set_salesman();}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesmanChart::removeItem() //删除条目{char num[10];Salesman *p=NULL,*temp=NULL;cout<<"请输入要删除销售员的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesmanChart::save() //保存{out.open("SalesmanChart.txt");for(Salesman * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_major()<<p->get_t_title()<<endl;out.close();}class ManagerChart{public:ManagerChart();~ManagerChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Manager条目void removeItem(); //删除Manager条目void display() //输出全部条目{Manager *p=Head->Next;for(p;p!=End;p=p->Next)p->show_manager();}void addItem() //添加条目{End->set_manager();End->Next=new Manager;End=End->Next;save();如有异议或侵权请及时联系,客服将立即删除!}private:Manager * Head,* End;ifstream in; //文件输入ofstream out; //文件输出Manager * findItem(char * num){for(Manager * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}};ManagerChart::ManagerChart() //构造函数{Head=new Manager;Head->Next=new Manager;End=Head->Next;in.open("ManagerChaart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new Manager;End=End->Next;}in.close();}ManagerChart::~ManagerChart() //析构函数{for(Manager * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void ManagerChart::find() //查找条目{如有异议或侵权请及时联系,客服将立即删除!char num[10];Manager * p=NULL;cout<<"请输入要查找经理的工号:";cin>>num;if(p=findItem(num))p->Next->show_manager();elsecout<<"没有找到!!"<<endl<<endl;}void ManagerChart::modifyItem() //修改条目{char num[10];Manager * p=NULL;cout<<"请输入要修改经理的工号:";cin>>num;if(p=findItem(num)){p->Next->show_manager();cout<<"请输入新的内容:"<<endl;p->Next->set_manager();}elsecout<<"没有找到!!"<<endl<<endl;save();}void ManagerChart::removeItem() //删除条目{char num[10];Manager *p=NULL,*temp=NULL;cout<<"请输入要删除经理的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void ManagerChart::save() //保存{out.open("ManagerChart.txt");for(Manager * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_job()<<p->get_dept()<<endl;out.close();}class SalesManagerChart{public:SalesManagerChart();~SalesManagerChart();void find(); //输出单个条目void save(); //将信息输出到文件void modifyItem(); //修改Manager条目void removeItem(); //删除Manager条目void display() //输出全部条目{SalesManager *p=Head->Next;for(;p!=End;p=p->Next)p->show_salesmanager();}void addItem() //添加条目{End->set_salesmanager();End->Next=new SalesManager;End=End->Next;save();}private:SalesManager * Head,* End;ifstream in; //文件输入ofstream out; //文件输出SalesManager * findItem(char * num){for(SalesManager * p=Head;p->Next!=End;p=p->Next)if(!strcmp(p->Next->get_num() ,num))return p;return NULL;}};SalesManagerChart::SalesManagerChart() //构造函数{Head=new SalesManager;Head->Next=new SalesManager;End=Head->Next;in.open("SalesManagerChaart.txt");while(!in.eof()){End->InputFromFile(in);if(End->get_num()[0]=='\0')break;End->Next=new SalesManager;End=End->Next;}in.close();}SalesManagerChart::~SalesManagerChart() //析构函数{for(SalesManager * temp;Head->Next!=End;){temp=Head->Next;Head->Next=Head->Next->Next;delete temp;}delete Head,End;}void SalesManagerChart::find() //查找条目{char num[10];SalesManager * p=NULL;cout<<"请输入要查找经理的工号:";cin>>num;if(p=findItem(num))p->Next->show_salesmanager();elsecout<<"没有找到!!"<<endl<<endl;}void SalesManagerChart::modifyItem() //修改条目{char num[10];SalesManager * p=NULL;cout<<"请输入要修改经理的工号:";cin>>num;if(p=findItem(num)){p->Next->show_salesmanager();cout<<"请输入新的内容:"<<endl;p->Next->set_salesmanager();}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesManagerChart::removeItem() //删除条目{char num[10];SalesManager *p=NULL,*temp=NULL;cout<<"请输入要删除经理的工号:";cin>>num;if(p=findItem(num)){temp=p->Next;p->Next=p->Next->Next;delete temp;cout<<"删除成功!!"<<endl<<endl;}elsecout<<"没有找到!!"<<endl<<endl;save();}void SalesManagerChart::save() //保存{out.open("SalesManagerChart.txt");for(Manager * p=Head->Next;p!=End;p=p->Next)out<<p->get_num()<<p->get_name()<<p->get_age()<<p->get_job()<<p->get_dept()<<endl;out.close();}int main(){int x,y;StaffChart Staff_Chart;SalesmanChart Salesman_Chart;ManagerChart Manager_Chart;SalesManagerChart SalesManager_Chart;bool quit=false;while(!quit){cout<<"选择功能:\n1.增加数据\t2.更新数据\t3.查询数据\t4.删除数据\t5.列出全部人员\t6.退出"<<endl;cin>>x;switch(x){case 1:cout<<"选择增加的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.addItem();break;case 2:Salesman_Chart.addItem();break;case 3:Manager_Chart.addItem();break;case 4:SalesManager_Chart.addItem();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 2:cout<<"选择更新的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.modifyItem();break;case 2:Salesman_Chart.modifyItem();break;case 3:Manager_Chart.modifyItem();break;case 4:SalesManager_Chart.modifyItem();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 3:cout<<"选择查询的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.find();break;case 2:Salesman_Chart.find();break;case 3:Manager_Chart.find();break;case 4:SalesManager_Chart.find();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);;}break;case 4:cout<<"选择删除的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.removeItem();break;case 2:Salesman_Chart.removeItem();break;case 3:Manager_Chart.removeItem();break;case 4:SalesManager_Chart.removeItem();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 5:cout<<"选择列出人员的类型:\n1.员工\t2.销售员\t3.经理\t4.销售经理"<<endl;cin>>y;switch(y){case 1:Staff_Chart.display();break;case 2:Salesman_Chart.display();break;case 3:Manager_Chart.display();break;case 4:SalesManager_Chart.display();break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}break;case 6:quit=true;break;default :cout<<"输入错误,程序终止!!"<<endl;exit(-1);}}return 0;}运行结果:运行空间有四个文件:增加两个员工:修改一个销售员信息:查询一个销售员信息:列出全部员工:删除一个员工:再次列出员工:个人总结:经过多天努力终于完成了老师布置的大作业,但是效果上自己还是不太满意,有很多地方都想让它更佳完整,更符合自己心目中的那种管理系统,课后依然会继续修改,让它达到自己心中理想的完善的程序。
CHANGZHOU INSTITUTE OF TECHNOLOGY课 程 设 计 说 明 书课程名: 《C 语言大作业》题 目: 通 讯 录 管 理 系 统二级学院: 计算机信息工程学院专 业: 软件工程 班 级: 12 软 件 卓 越 学 号: 12030427 姓 名: 许 彦 文 指导教师: 曹 中 心2013年 7 月KC021-11.课程认识目的:加深对《C程序设计》课程所学知识的理解,进一步巩固C语言的编程方法。
学会编制结构清晰、风格良好、数据结构适当的C语言程序,从而具备解决综合性实际问题的能力,加强动手能力。
任务:根据要求电话簿数据以文本文件存放在文件中,并按要求实现通讯录最基本的功能。
2.课题选择在这个信息化时代,手机已成为最通俗的交流工具,通讯录日常生活中不可缺少的,且编写此系统中要用到的函数大多数是我们学过的,在我们的能力掌握范围内,一开始我们也只想到了通讯录的基本功能,后来我们通过各方面的努力,尽量使整个系统的功能更加齐全。
3.见组长(王扣慈)4.模块详细设计我负责的是注册、添加、删除的功能。
注册:运行此功能时,有用户名限制(仅限字母)、密码限制(仅限数字或字母),注册时密码要输出两次但如果第二次输密码时输错超过两次就意味着注册失败。
(如图4-1)添加:加入你所需要的数据,数据包括姓名、电子邮箱、电话号码、分类、编号。
(如图4-2)删除:输入名字,找到欲删除的那个人的名字后,会自动删除他(她)的记录内容。
(如图4-3)图4-1 注册用户流程图图4-2 添加用户流程图图4-3删除用户流程图5.主要实现方法我编写的最重要的应该是注册,而注册中最重要的就是实现用户名、密码的权限 void zhuce( ) { FILE *fp;if((fp=fopen("mima.dat","wb"))==NULL) //建一个新的文件夹 { printf("cannot open file!\n"); exit(0);}int sign=1; int k=1;Yint j,i=1;int m=1;int len=0;char code1[N],code2[N],user[N];printf("用户名仅限于字母"); //设定用户名权限while(m!=0) //用户名如果不符合要求就继续输入,输对就跳出循环{printf("\n输入用户名\n");getchar();gets(user);len=strlen(user);for(j=0;j<len;j++){if(!((user[j]>='a'&&user[j]<='z')||(user[j]>='A'&&user[j]<='Z'))){m=1;printf("用户名格式不符,请重新输入");}else m=0;}}printf("密码权限仅限数字或字母"); //设定密码权限while(k!=0) //密码不符合要求就继续输入,输对就跳出循环{printf("输入密码\n");gets(code1);len=strlen(code1);for(j=0;j<len;j++){if(!((code1[j]>='a'&&code1[j]<='z')||(code1[j]>='A'&&code1[j]<='Z')||(code1[j]>='0'& &code1[j]<='9'))){k=1;printf("密码格式不符,请重新输入\n");}else k=0;}}while(sign!=0){printf("再输入一次密码\n");//再输入一次密码看两次是否一样gets(code2);if(!strcmp(code1,code2)){printf("注册成功\n");//两次输出密码相等,就注册成功sign=0;}else{sign=1;printf("密码出错,与第一次不符");i++;}if(i>3){printf("\n你已经超过2次输错密码,已无法输入,再见");break; //如果超过两次输错密码,系统将会阻止再次输入}}fputs(user,fp);fputs(code1,fp);//将输入的用户名,密码存放到文件夹中,以便用于登陆fclose(fp);}6.课程设计总结问题:我出现的问题主要还是出现在注册中,其他两个程序虽然也有问题,但都能通过自己和小组成员之间的交流慢慢解决,类如在添加时选择是否继续添加下去时,运行时系统会不理你的选择继续叫你加下去,然后和小组成员讨论后在选择是否添加前面加了个getchar()问题就解决了。
C语言程序大作业
大连理工大学C程序设计(大作业)总结报告学生成绩录入处理系统
学生姓名:罗________________
专业班级:__________________________
学号:
联系电话:__________________________
Email : ________________________
完成日期: 2015年5月29日
设计任务
我的程序设计是一个学生成绩录入及处理的程序,该程序包括多种功能,能够满足大多数的学生成绩管理处理。
主要能够实现的目的主要有:
第一.学生姓名学号既包括三门成绩等信息的录入,并保存到文件d://score.txt 第二.对每个学生的成绩进行求平均分及按平均分排序的数字处理。
第三.对输入错误的学生信息加以修改重新排序保存。
第四.增加学生信息,重新排序,加以保存。
第五.按每个学生的平均分进行表格化和图形化处理。
第六.实现某位同学的信息查找,包括姓名,学号,每科成绩及平均分。
以上功能全都可以实现,但是注意录入信息的要求,下面会有注释。
二、程序设计与实现
1.结构框图
下图描述预期实现题目的设计方案或功能设计的组成结构。
绘制成框图,如图所示是我设计的成绩信息管理程序设计的结构图示:
学生成绩信息管理
2.功能模块设计及其流程图
(1)数据描述与存储
该学生信息统计系统设计一个全局结构体变量,将学生的姓名,学号,各科成绩及。
#include"stdio.h"#include"conio.h"#include"string.h"#include"stdlib.h"int look(); /*声明查看函数*/int save(); /*声明保存函数*/int search_name(); /*声明按姓名查看函数*/int search_number(); /*声明按学号查看函数*/int order(); /*声明排序函数*/int del(); /*声明删除函数*/int openl(); /*声明打开函数*/int welcome(); /*声明我的个人信息函数*/int type(); /*声明输入函数*/int see(); /*声明打开并查看文件函数*/struct student /*定义学生信息的结构体类型*/{char num[15]; /*学号*/char name[20]; /*姓名*/char sex[4]; /*性别*/int chinese; /*语文成绩*/int english; /*英语成绩*/int math; /*数学成绩*/int science; /*科学成绩*/int phy; /*体育成绩*/float aver; /*平均成绩*/float sum; /*总成绩*/}stu[100];int n; /*声明一个全局变量*/int main() /*主函数即用户的操作界面*/{system("color 1E"); /*设计文本颜色*/int b,flag=0; /*声明局部变量*/while(1) /*循环输出以下信息*/{printf("\n\t\t\t欢迎来到学生成绩管理系统!\n");printf("\n\t\t\t\t 赵仓龙、刘铄制作\n");printf("\t\t\t-------------------------------\n");printf("\t\t\t1.键入学生的信息\n\n"); /*键入学生的信息*/printf("\t\t\t2.查看录入的学生信息\n\n"); /*查看录入的学生信息*/printf("\t\t\t3.按姓名查看学生的信息\n\n"); /*按姓名查看学生的信息*/ printf("\t\t\t4.按学号查看学生的信息\n\n"); /*按学号查看学生的信息*/ printf("\t\t\t5.按平均成绩排序\n\n"); /*排序*/printf("\t\t\t6.删除学生信息\n\n"); /*删除学生信息*/printf("\t\t\t7.保存学生信息\n\n"); /*保存*/printf("\t\t\t8.打开文件\n\n");/*打开文件*/printf("\t\t\t9.我的个人信息\n\n"); /*我的个人信息*/printf("\t\t\t0.退出\n\n"); /*退出*/printf("\t\t\t请输入你的选择:");scanf("%d",&b);switch(b){case 1:type();break; /*调用键入学生信息函数*/case 2:look();break; /*调用查看函数*/case 3:search_name();break; /*调用姓名查看函数*/case 4:search_number();break; /*调用学号查看函数*/case 5:order();break; /*调用排序函数*/case 6:del();break;/*调用删除函数*/case 7:save();break;/*调用保存函数*/case 8:see();break;/*调用打开文件函数*/case 9:welcome();break;/*调用我的个人信息函数*/case 0:flag=1;break;/*退出SWITCH语句*/default :printf("错误!");}if(flag) break; /*如果选择0就退出循环*/}}int welcome() /*我的个人信息函数*/ {system("CLS");printf("\n\n\t\t------------个人信息------------"); /*在屏幕上输出一下信息*/printf("\n\n\n\n\t\t姓名: ");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\n\n\t\t姓名: ");printf("\t\t\tSex:m\n");printf("\t\t年龄:20\n");printf("\n\n\t\t按任意键返回欢迎屏幕!");getch(); /*按任意键返回主函数*/}int type() /*定义键入学生信息函数*/ {system("CLS");int i; /*定义局部变量*/printf("\t\t输出你想输入的学生信息个数:");scanf("%d",&n);for(i=0;i<n;i++) /*输入每个学生的信息*/{printf("\n\t\t\t----------------\n" );printf("\t\t\t学号:");scanf("%s",&stu[i].num); /*输入学号*/printf("\t\t\t姓名:");scanf("%s",&stu[i].name); /*输入姓名*/printf("\t\t\t性别:");scanf("%S",&stu[i].sex); /*输入性别*/printf("\t\t\t语文:");scanf("%d",&stu[i].chinese); /*输入英语成绩*/printf("\t\t\t数学:");scanf("%d",&stu[i].math); /*输入数学成绩*/printf("\t\t\t英语:");scanf("%d",&stu[i].english); /*输入语文成绩*/printf("\t\t\t科学:");scanf("%d",&stu[i].science);printf("\t\t\t体育:");scanf("%d",&stu[i].phy);}printf("\n\n\t\t\t按任意键返回菜单!!");getch();save();}int save() /*建立保存文件函数*/{system("CLS");FILE *fp; /*定义文件型指针*/int i;if((fp=fopen("C语言大作业测试数据.txt","wb"))==NULL) /*打开输出文件*/{printf("不能打开文件!\n");return 0; /*终止程序*/}for(i=0;i<n;i++) /*向student文件中写入信息*/if(fwrite(&stu[i],sizeof(structstudent),1,fp)!=1)printf("文件写入错误\n");fclose(fp); /*关闭文件*/printf("\n\n\n\n\t\t\t学生信息保存成功!\n");printf("\n\n\n\n\t\t\t按任意键返回菜单!!");getch();}int look() /*定义查看函数*/{system("CLS");int i;//n=openl(); /*调用openl函数*/ printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%12s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}int search_name() /*按姓名查看函数*/ {system("CLS");int i;char name[20]; /*声明字符数组*/printf("\t\t\t请输入学生姓名:\n");scanf("%s",name);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0)/*将输入的姓名与结构体中的姓名进行比较*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");}getch();}int search_number() /*定义按学号查看函数*/{system("CLS");int i;char number[15]; /*声明字符数组printf("\t\t\t请输入学号:\n");scanf("%s",number);printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].num,number)==0) /*将输入的学号与结构体中的学号进行比较*/printf("%10s\t%s\t%2s\t%d\t%d\t%d\t%d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);printf("\n\n\n\t\t\t按任意键返回菜单");getch();}int order() /*定义排序函数*/system("CLS");int i,j;char a;struct student temp; /*声明结构体变量*/printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++) /*对数据进行排序*/{for(j=i+1;j<n;j++)if(stu[i].sum<stu[j].sum){temp=stu[i];stu[i]= stu[j];stu[j]=temp;}printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\n",stu[i].num,stu[i].name,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}getch();printf("是否保存(y or n)");getchar();scanf("%c",&a);if(a=='y') /*是否保存排序后的文件*/save();elseprintf("退出");getch();}int del() /*定义删除学生信息函数*/ {int i;char a;char name[20];system("CLS");printf("\t\t\t输入学生名字:\n");scanf("%s",name);system("CLS");printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++)if(strcmp(stu[i].name,name)==0){printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);getch();printf("真的删除?(y or n)");getchar();scanf("%c",&a);if(a=='y') /*是否删除该信息*/{for(;i<n;i++)stu[i]=stu[i+1];n=n-1;printf("你已经删除信息");}elseprintf("退出");getch();}save();}int openl() /*定义打开文件函数*/ {system("CLS");int i;FILE *fp;if((fp=fopen("C语言大作业测试数据.txt","rb"))==NULL){printf("Cannot open file.\n");exit(0);}for(i=0;!feof(fp);i++)fread(&stu[i],sizeof(struct student),1,fp);fclose(fp);return(i-1);}int see() /*打开并查看文件*/{system("CLS");int i;n=openl();printf("文件打开成功!\n");printf("按任意键查看!\n");getch();printf("\t学号\t姓名\t性别\t语文\t数学\t英语\t科学\t体育\n");for(i=0;i<n;i++) /*输出所有的学生信息*/{printf("%10s\t%s\t%2s\t%d\t%d\t%d\t %d\t%d\t%3.1f\n",stu[i].num,stu[i].na me,stu[i].sex,stu[i].chinese,stu[i].ma th,stu[i].english,stu[i].science,stu[ i].phy);}printf("\n\n\n\t\t\t按任意键返回菜单");getch();}。
《C语言程序设计》大作业任务书一、题目(1)简单计算器(2)通讯录(3)学生成绩档案管理(4)图书管理系统如要另外选用其它题目,可写申请书。
二、对象本学期“C语言程序设计”课程全体同学。
三、目的考查学生对C语言的综合编程能力的掌握,培养学生的逻辑思维能力,最终达到学生能完全独立编制、调试程序的能力。
该题主要考察学生对函数、结构体,指针,文件等的操作,以及C语言算法的掌握,所以完成此道题目要求较强的设计能力,尤其是要有一种大局观的意识。
如何调试程序也非常重要,通过这个程序可以学习到以前调试短程序没有的经验。
四、要求(1)根据学生人数一人完成一个题目,在课外完成查找资料、选题、拟大纲、研究写作等各环节;每一环节完成后,在课堂上进行讨论、教师点评,最后确定解决问题的方案。
(2)问题规模:程序代码不少于500行;使用技术:使用结构体定义数据类型、各功能通过子函数调用实现;程序结构良好,没有明显错误;按照大作业格式,在最后一周交齐作业。
五、内容(1)系统说明书内容包括:①问题描述②程序设计和程序流程图③系统的基本功能,即主要数据和函数功能描述④拟采用开发平台(Visual C++,Borland C++等)(2)大作业报告根据原有的系统设计,编码阶段的工作,整理书写实验报告,内容包括:①系统说明②实验分析与结论③收获与体会④附程序代码(3)最后提交材料:①大作业报告(电子稿)②源程序代码(*.C文件),执行文件(EXE)。
六、评分本次大作业作为期末考试总成绩,满分100分。
大作业的总评分依据:正确性、设计合理性、认真程度、实现的功能多少,提问情况等。
(1)正确性----占大作业满分的30%要求:所谓“程序正确”,指的是在各层次上正确,经得起检测,对合法的所有数据,要能够输入,且程序要都能正确执行,并获得正确的结果。
(2)设计合理性----占大作业满分的20%要求:指的是抽象数据类型的设计和实现,抽象数据类型有两个基本特性抽象性和封装性。
一、概述随着信息技术的不断发展和应用,计算机程序设计作为重要的基础课程,对学生的综合能力有着重要的培养作用。
在C语言程序设计课程中,大作业是检验学生对知识的掌握和应用能力的重要环节。
学生信息管理系统作为一种常见的大作业题目,涉及到了文件操作、结构体、指针等多个知识点,对学生的理论知识掌握和实战能力都有一定的考验。
二、需求分析学生信息管理系统是一个管理学生基本信息的软件,具有录入、查找、删除、修改等功能。
在设计学生信息管理系统的时候,首先要明确系统的功能需求,并且考虑到系统的扩展性和健壮性。
1. 学生基本信息包括学号、尊称、性别、芳龄、专业等内容,系统应具备录入学生信息的功能,并且能够将信息保存在文件中,方便下次使用。
2. 用户可以通过查找功能根据学号或尊称查询学生信息,系统需要具备高效的查找算法。
3. 可以对学生信息进行删除和修改操作,需要保证操作的准确性和安全性。
4. 系统需要具备良好的用户界面,方便用户的操作和管理。
三、系统设计在进行学生信息管理系统的设计时,需要考虑到系统的模块化和扩展性,将整个系统划分为多个模块,进行单独设计和测试。
1. 学生信息录入模块:负责接收用户输入的学生信息,并将信息写入文件中。
2. 学生信息查找模块:通过学号或尊称进行查找操作,需要设计高效的查找算法。
3. 学生信息删除模块:实现对学生信息的删除功能。
4. 学生信息修改模块:实现对学生信息的修改功能。
5. 用户界面设计:设计友好的用户界面,方便用户的操作和管理。
四、系统实现在进行系统实现时,需要根据设计的模块进行逐一实现和测试,保证系统的稳定性和功能完整性。
1. 学生信息录入模块实现:接收用户输入的学生信息,并将信息写入文件。
2. 学生信息查找模块实现:设计高效的查找算法,并实现根据学号或尊称进行查找操作。
3. 学生信息删除模块实现:实现对学生信息的删除功能,并确保操作的准确性和安全性。
4. 学生信息修改模块实现:实现对学生信息的修改功能,保证信息的一致性。
C语言大型作业任务书指导老师:杨云大型作业是C语言教学中,一个重要的实践环节。
一般来讲,大型作业应该比课程教学实验复杂一些,要求所涉及的内容应该有一定的深度和广度,并更加接近现实应用。
通过大型作业的综合训练,培养学生实际分析问题、编程和动手能力,最终目标是想通过这种形式,帮助学生系统掌握该门课程的主要内容,更好地完成教学任务。
本书简要介绍C 语言大型作业的要求,并给出部分示例设计题目及其预期目标。
各位同学应根据自身的兴趣和学习条件,选择相应的大型作业题目。
一大型作业目标使学生综合使用所学过的C语言程序设计知识,掌握结构化程序设计的基本思路和方法,利用所学的基本知识和技能,发挥自学能力和查找资料的能力,解决稍微复杂的结构化程序设计问题,加深对所学知识的理解与掌握,增强学生利用自己所学知识解决实际问题的能力,为以后的程序开发打下基础。
一、实习时间安排二:大型作业的目的和要求:1、使学生巩固和加强《C语言程序设计》课程的理论知识。
2、使学生掌握C语言的基本概念、语法、语义和数据类型的使用特点。
3、使学生掌握C语言程序设计的方法及编程技巧,能正确使用C语言编写程序。
4、进一步理解和运用结构化程设计的思想和方法;学会利用流程图或N-S图表示算法。
5、使学生掌握调试程序的基本方法及上机操作方法。
6、掌握书写程设计开发文档的能力,使学生学会撰写大型作业总结报告。
大型作业的思想和方法还可以作为学生做毕业论文时的参考资料。
7、通过查阅手册和文献资料,培养学生独立分析问题和解决问题的能力。
为学生做毕业设计打好基础。
8、初步掌握开发一个小型实用系统的基本方法:结合实际应用的要求,使大型作业既覆盖知识点,又接近工程实际需要。
通过激发学习兴趣,调动学生主动学习的积极性,并引导他们根据实际编程要求,训练自己实际分析问题的能力及编程能力,并养成良好的编程习惯。
9、培养学生的创新能力和创新思维。
学生可以根据指导书和相关文献上的参考算法,自己设计出相应的应用程序。
#include "stdafx.h"#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <string.h>#define N 100struct student{char name[10];int num;char sex[10];float math;float yingyu;float zhengzhi;float ywen;float aver;float sum;}stu;void menu(){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(" * 0.退出系统* \n" );printf(" * ======================= * \n"); printf(" \n\n\n\n\n\n\n\n\n * * * * \n"); }//成绩录入void input(){system("cls");FILE *fp;student xs; /*定义一个结构体变量来装从文件中读出来的数据*/int c=1;if((fp=fopen("student.dat","ab"))==NULL){printf("can't open file!\n");exit(0);}printf("\n 成绩录入");printf("\n****************************************************");while(c++) /*中间加油break,可使循环中断*/{printf("\n 请输入您的姓名(姓名为end结束):");scanf("%s",);if(strcmp(,"end")==0) break;/*判断姓名是否为end,用字符串判断*/printf("\n 请输入学号:");scanf("%d",&xs.num);printf("\n 性别:");scanf("%s",&xs.sex);printf("\n 请输入数学的成绩:");scanf("%f",&xs.math);printf("\n 请输入英语的成绩:");scanf("%f",&xs.yingyu);printf("\n 请输入政治的成绩:");scanf("%f",&xs.zhengzhi);printf("\n 请输入语文的成绩:");scanf("%f",&xs.ywen);xs.aver=0;/*给平均分变量赋初值*/xs.aver=(xs.math+xs.yingyu+xs.zhengzhi+xs.ywen)/4;xs.sum=0;xs.sum=xs.math+xs.yingyu+xs.zhengzhi+xs.ywen;fwrite(&xs,sizeof(stu),1,fp); //将成绩信息写入文件system("cls");}fclose(fp);}void xingming(){FILE *fp;student xs;char name[10];printf("\n 输入要查学生的姓名: ");scanf("%s",name);if((fp=fopen("student.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(strcmp(,name)==0)/*按姓名查询时判断输入的姓名是否存在,会循环从数据中找取*/{printf("\n 学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex, xs.math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);break;}}if(feof(fp))printf("\n 查找失败"); /*学生不存在*/fclose(fp);}void xuehao(){FILE *fp;student xs;int num;printf("\n 输入要查学生的学号: ");scanf("%d",&num);if((fp=fopen("student.dat","rb"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(xs.num==num)/*按学号查询时判断输入的学号是否存在,会循环从数据中找取*/{printf("\n 学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d%6s %6.2f %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs .math,xs.yingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);break;}}if(feof(fp)) printf("\n 查找失败");fclose(fp);}//查询void search(){char ch1;system("cls");printf(" 请输入按何种方式查询:\n");printf("\n 1-姓名,2-学号:");ch1=getchar();/*用字符接收*/switch(ch1)/*判断*/case '1':xingming();break;case '2':xuehao();break;}printf("\n 按任意键返回主菜单");getch();/*让屏幕停留同时按任意键返回*/}//修改:输入学生的姓名,查找该学生,若找到则修改该生的成绩信息,并显示修改前后的结果;void modi(){student xs;FILE *fp;char name[10];system("cls");printf("\n 输入要修改的学生的姓名: ");scanf("%s",name);if((fp=fopen("student.dat","rb+"))==NULL){printf("can't open file!\n");exit(0);}while(!feof(fp)){fread(&xs,sizeof(stu),1,fp);if(strcmp(,name)==0)/*判断输入要修改的姓名是否存在*/{printf(" 修改前学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);printf("\n 请输入该生的数学成绩:");scanf("%f",&xs.math);printf("\n 英语成绩:");scanf("%f",&xs.yingyu);printf("\n 政治成绩:");scanf("%f",&xs.zhengzhi);printf("\n 语文成绩:");scanf("%f",&xs.ywen);xs.aver=(xs.math +xs.yingyu +xs.zhengzhi +xs.ywen)/4;xs.sum=xs.math +xs.yingyu +xs.zhengzhi +xs.ywen;break;}}if(!feof(fp)){printf(" \n 修改后的学生的信息如下:\n");printf("\n %10s %6s %6s %6s %6s %6s %6s %6s %6s\n","姓名","学号","性别","数学","英语","政治","语文","平均成绩","总成绩");printf("\n %10s %6d %6s %6.2f %6.2f %6.2f %6.2f %6.2f\n",,xs.num,xs.sex,xs.math,xs.y ingyu,xs.zhengzhi,xs.ywen,xs.aver,xs.sum);fseek(fp,sizeof(stu),1);/*负号表示后退,1表示文件当前位置*/fwrite(&xs,sizeof(stu),1,fp);/*再写入,同时把要修改的那个覆盖掉*/}elseprintf("\n 学生不存在,修改失败!!");fclose(fp);printf("\n 按任意键返回主菜单");getch();}//插入:输入学生的平时的各项成绩,插入到指定位置;当指定的位置超出范围时,将其插入到全班的最后,并显示插入成功后的结果。
c语言大作业学生管理系统随着信息化的快速发展,计算机技术已经深入到各个领域。
在教育领域中,学生管理系统是学校管理学生信息的重要工具。
本次大作业将以“c语言大作业学生管理系统”为题,介绍如何使用c语言开发一个简单的学生管理系统。
一、需求分析学生管理系统需要实现以下功能:1、添加学生信息2、查询学生信息3、修改学生信息4、删除学生信息5、显示所有学生信息二、设计1、定义数据结构为了存储学生信息,我们可以定义一个结构体,包含学生的姓名、学号、性别、年龄等信息。
cinclude <stdio.h>include <stdlib.h>include <string.h>typedef struct {char name;char id;char gender;int age;Student;2、定义函数为了实现学生管理系统的各个功能,我们可以定义以下函数:1、add_student():添加学生信息2、query_student():查询学生信息3、modify_student():修改学生信息4、delete_student():删除学生信息5、display_students():显示所有学生信息三、实现下面是一个简单的实现示例:cinclude <stdio.h>include <stdlib.h>include <string.h>typedef struct {char name;char id;char gender;int age;Student;void add_student(Student *students, int *num_students) { Student student;printf("Enter name: ");scanf("%s", );printf("Enter ID: ");scanf("%s", student.id);printf("Enter gender: ");scanf("%s", student.gender);printf("Enter age: ");scanf("%d", &student.age);students[*num_students] = student;(*num_students)++;printf("Student added successfully.C语言学生信息管理系统实验报告C语言学生信息管理系统实验报告一、实验目的本实验旨在通过使用C语言编写学生信息管理系统,提升我们的编程技能和系统设计能力。
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★C语言第二次大作业班级:机电***学号:*******姓名:*******★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★一、题目1、基于VC6编写一个简易菜单驱动(简易的闪烁菜单)的程序,实现求解三角形面积、一元二次方程根、判断素数、退出四个功能。
要求界面友好,光标控制(光标所在行对应文字闪烁显示),按回车键进入相应的功能,其中求解三角形面积功能中有一个子菜单以实现三种不同解法并可以返回主菜单。
至少定义5个函数,可适当加入一些趣味函数提高趣味性。
2、基于KEIL编写一个控制单片机实验系统V2数码管动态显示本人学号的程序。
应用设想:某些店面门口可以动态显示订餐、订货电话,为消费者提供便利。
当然,点阵显示效果更好,不仅可以显示数字还可以显示字母、文字。
二、题目分析及算法1、该题要求实现光标控制的闪烁菜单,并且有一个子菜单。
该题主要是对模块化程序设计进行训练。
菜单实现四种不同的功能可使用switch-case函数实现(本程序的选择分支结构均可使用该函数),为使界面友好可定义一个光标定位函数使得光标先到相应行和列再执行程序语句。
闪烁菜单可在静态菜单的基础上根据定义好的静态菜单返回的不同的函数值,巧妙结合延时函数间歇性输出菜单选项,实现闪烁。
编程时应注意数据类型(全局变量、局部变量、静态变量(关键字Static))的使用。
此外还有return、break,continue、exit()、while语句、if 语句、kbhit()、getch()等函数的使用。
求解三角形面积算法:要求实现三种不同解法(已知三边(首先要判断输入的三边长能否构成三角形)、已知两边及其夹角,已知底和对应的高)。
解法一要注意函数sin()的用法!判断素数算法: 素数(质数)指在大于1的自然数中,除了1和此整数自身外,无法被其他自然数整除的数(也可定义为只有1和本身两个因数的数)。
大连海事大学本科课程实验、实践教学大纲
1.基于链表的“学生信息管理系统”
实验内容:编写并调试程序,实现学校各专业班级学生信息的管理。
定义学生信息的链表结点类型,包括:学号、姓名、班级、专业、3门成绩。
实验要求:
(1)main函数:以菜单形式将各项功能提供给用户,根据用户的选择,调用相应的函数。
(2)定义函数CreateList:按学号由小到大,建立有序的链表。
逆序输入n 个学生信息(调用n
次input),学号大的先输入,建立带头结点的单链表。
(3)定义函数Output:以指向某个学生结点的指针为参数,将学生信息格式化输出。
(4)定义函数Save:将某个学生信息存入文件。
(5)定义函数Fetch:从文件中随机读取某个学生的信息。
(6)定义函数Search_num:查找指定学号的学生,返回指向该学生结点的指针。
(7)定义函数InsertList:在函数中输入一个学生的信息,将该学生信息插入到链表中的相应位
置,并保持此链表按学号的有序性。
(8)定义函数Delete_num:从链表中删除指定学号的学生。
(9)定义函数Search_major _subject_score:查找某个专业的、某门课程的成绩小于某个分数的
学生,返回指向该学生结点的指针。
(10)定义函数Delete_ major _subject:从链表中删除某个专业的、某门课程的成绩小于某个分数
的学生。
C语言期末大作业(学生成绩管理系统)#include#includefind(charnum[][20],charname[][10],intmark[][10],intn,intm){i nti,j;chara[20];printf(\请输入需要查询的学号:\get(a);for(i=0;iprintf(\姓名:%\\n\for(j=0;jcount(intmark[][10],intn){inta[15]={0,0,0,0,0,0,0,0,0,0,0,0, 0,0,0},i,j,g;printf(\请输入需统计的课程:\canf(\g-=1;for(i=0;i140&&mark[i][g]<=150)+2某(mark[i][g]>130&&mark[i][g]<=140)+3某(mark[i][g]>120&&mark[i][g]<=130)+4某(mark[i][g]>110&&mark[i][g]<=120)+5某(mark[i][g]>100&&mark[i][g]<=110)+6某(mark[i][g]>90&&mark[i][g]<=100)+7某(mark[i][g]>80&&mark[i][g]<=90)+8某(mark[i][g]>70&&mark[i][g]<=80)+9某(mark[i][g]>60&&mark[i][g]<=70)+10某(mark[i][g]>50&&mark[i][g]<=60)+11某(mark[i][g]>40&&mark[i][g]<=50)+12某(mark[i][g]>30&&mark[i][g]<=40)+13某(mark[i][g]>20&&mark[i][g]<=30)+14某(mark[i][g]>10&&mark[i][g]<=20)+15某(mark[i][g]>0&&mark[i][g]<=10);witch(j){cae1:a[0]++;break;cae2:a [1]++;break;cae3:a[2]++;break;cae4:a[3]++;break;cae5:a[4]++;brea k;cae6:a[5]++;break;cae7:a[6]++;break;cae8:a[7]++;break;cae9:a[8 ]++;break;cae10:a[9]++;break;cae11:a[10]++;break;cae12:a[11]++;b reak;cae13:a[12]++;break;cae14:a[13]++;break;cae15:a[14]++;break ;}}人人if(a[0]==0&&a[1]==0&&a[2]==0&&a[3]==0&&a[4]==0)//没有100~150分的printf(\人\\n80~90:%d人\\n70~80:%d人\\n60~70:%d人\\n50~60:%d\\n40~50:%d人\\n30~40:%d人\\n20~30:%d人\\n10~20:%d 人\\n0~10:%d\\n\eleprintf(\人\\n130~140:%d人\\n120~130:%d人\\n110~120:%d\\n100~110:%d人\\n90~100:%d人\\n80~90:%d人\\n70~80:%d人\\n60~70:%d人\\n50~60:%d人人\\n40~50:%d人\\n30~40:%d人\\n20~30:%d人\\n10~20:%d人\\n0~10:%d\\n\}rank(charnum[][20],charname[][10],intmark[][10],intn,intm){i ntum[100],某[100],i,j,t,ma某;ma某=100某m;for(t=0;t=ma某)i++;eleif(um[i+j]>=ma某)j++;ele{if(um[i]>=um[i+j])j++;elei+=j,j=1;}}[t]=&um[i];printf (\第%d名是学号:%,姓名:%,总分:%d\\n\for(j=1;(i+j)人总}}main(){intn,m,i,j,k,mark[100][10];charnum[100][20],name[100] [10];}printf(\请输入学生个数:\canf(\printf(\请输入课程个数:\canf(\fluhall();for(i=0;iprintf(\请输入第%d个学生的姓名:\get(name[i]);for(j=0;jprintf(\请输入第%d个学生的第%d科成绩:\canf(\}fluhall();}while(1){}printf(\排序功能:请按1\\n统计功能:请按2\\n查询功能:请按3\\n退出:请按4\\n\canf(\ytem(\fluhall();witch(k){cae1:rank(num,name,mark,n,m) ;break;cae2:count(mark,n);break;cae3:find(num,name,mark,n,m);bre ak;cae4:return;}。
郑州大学课程报告课程名称:C语言程序设计专业班级:(15)班学生姓名:谢*学号:***任课教师:赵**学期: 2012-2013-2课程报告任务书题目通讯录管理系统主要内容开发一个通讯录管理系统,基本信息包括:编号、姓名、性别、出生年月、固定电话、手机号、电子邮件等基本信息(也可以根据自己情况进行扩充)。
使之能提供以下基本功能:(1)通讯录等信息录入功能(注:数据等要求用文件保存)--输入?(2)通讯录信息的浏览功能--输出(3)查询功能(至少一种查询方式)、排序功能(至少一种排序方式):? ①按电话号码进行查询②按姓名查询等③按照年龄排序④按姓名排序等(4)通讯录条目的删除与修改等扩展功能:可以按照自己的程度进行扩展。
比如(1)简单的权限处理(2)报表打印功能(3)模糊查询,如姓张的人员等;或者给定电子邮件的部分进行查询等(4)给定指定年龄范围之内的查询等等。
总之,可以根据自己需求进行分析功能,成绩评定按照难度进行区分。
任务要求一、提交材料应包括:(1)系统源代码(2)课程报告二、整个设计过程具体要求(1)需求分析要求学生对案例系统进行分析,设计出需要完成的功能,完善各个模块的调用关系;(2)设计过程要求学生进一步明确各模块调用关系,进一步完善模块函数细节(函数名、参数、返回值等)(3)实现过程要求学生养成良好的编码习惯、完成各个模块并进行测试,最终完成系统整体测试;(4)总结阶段按照要求完成系统设计和实现报告,并进行总结、答辩。
成绩评定报告撰写情况(30分)系统完成情况(30分)答辩情况(40分)总分内容20分规范程度5分程序测试5分基本功能20分扩展功能10分自述情况10分答辩情况30分成绩评定教师:一. 需求分析1,具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。
2,数据包括:人名、工作单位、电话号码和E-MAIL地址。
3,可对记录中的姓名和电话号码进行修改。
4,可增加和删除记录。
C语言程序设计报告题目:学生成绩管理系统设计者:蔡浩专业班级:电子1201学号:102013年6月1日湖南工学院电信学院 1目录一.封面 (1)二.概述 (3)三.作业任务书 (4)四.本组课题及本人任务 (5)五.程序功能简介 (6)六.主体内容 (7)2一、概述1.设计背景学生成绩管理系统是一个教育单位不可缺少的部分,它的内容对于学校的决策者和管理者来说都至关重要,所以学生成绩管理系统应该能够为用户提供充足的信息和快捷的查询手段,但是几年前,各个学校的学生成绩管理基本上都是靠手工进行,随着各个学校的规模增大,有关学生成绩管理工作所涉及的数据量越来越大,有的学校不得不靠增加人力、物力来进行学生成绩管理。
这种管理方式存在着许多缺点,如:效率低、保密性差,另外所用其时间长,产生大量的文件和数据,这对于查找、更新和维护都带来了不少的困难。
如今学校的学生越来越多,成绩管理的工作量越来越大,手工管理成绩的弊端也越来越明显。
随着科学技术的不断提高,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
作为计算机应用的一部分,使用计算机对学生档案信息进行管理,具有手工管理所无法比拟的优点。
例如:检索迅速、查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。
这些优点能够极大地提高学生档案管理的效率。
所以我想借本次课程设计之际,设计一个简易的学生成绩管理系统。
2. 设计目的1、掌握运用数据库原理进行系统分析和设计的方法;2、掌握关系数据库的设计方法;3、加强C语言的编程能力3. 设计内容1.设计一个简易学生成绩管理的数据库系统,包括数据库的建立的需求分析,数据的输入输出。
2.设计用户的操作界面,主要实现数据的查询,录入,显示,修改,删除,统计基本功能。
3 三.作业任务书根据开发要求,学生成绩管理系统主要应用于教育系统,完成对日常的教学、教务、教师以及学生的计算机化的管理。
开发学生成绩管理系统可使学院教职员工减轻工作压力,比较系统地对教务、教学上的各项服务和信息进行管理,同时,可以减少劳动力的使用,加快查询速度、加强管理,以及国家各部门关于信息化的步伐,使各项管理更加规范化。
目前,学校工作繁杂、资料重多。
目前,管理信息系统已进入高校,但还未普及,而对于学生成绩管理来说,目前还没有一套完整的、统一的系统。
因此,开发一套适和大众的、兼容性好的系统是很有必要的。
四.本组课题及本人任务“学生成绩管理系统”包括九个模块:输入学生资料,输出学生资料,学生姓名按顺序排列,添加学生资料,按姓名查找,删除该学生资料,查找并显示学生资料,按姓名查找,修改该学生资料,从文件中读入数据,储存学生资料并退出系统。
这九个模块既相互联系又相互独立。
4 五.程序功能简介学生成绩管理系统主要提供成绩查询,方便管理的网上的信息查阅平台,学生可以通过该系统查阅与自己相关信息,查看留言、提交留言。
教师可以通过成绩管理系统查阅学生成绩信息,教师信息,查看教师留言、学生留言、提交留言、留言的管理等相关操作。
系统管理员可以实现以上的所有功能,还有对学生的添加、删除、修改、教师的添加、删除、修改,数据库的备份、数据库的还原等相关操作。
六.主体内容1.程序源代码#include <stdio.h>#include <stdlib.h>#include <conio.h>#include <windows.h>#define STUSIZE 10void stuCover();//程序封面void mainmenu();void editmenu();//编辑子菜单void dispmenu();//查看子菜单void compmenu();//计算子菜单void sortmenu();//排序子菜单 5 void Open();//打开文件函数声明void Save();//保存文件函数声明void Add();//增加学生记录函数声明void Del();//删除学生记录函数声明void Modify();//修改学生记录函数声明void DispOne();//查看一个记录函数声明void DispAll();//显示全部记录函数声明void AsceSort(float array[],int n);//按升序排列函数声明void DropSort();//按降序排列函数声明void NotElig();//查找不及格记录函数声明void CompSum();//计算总成绩和平均成绩函数声明void SearchMax();//查找最高成绩函数声明void SearchMin();//查找最低成绩函数声明void Explain();//程序说明函数声明void Quit(int);//退出函数声明void gotoxy(int x,int y);//光标定位函数声明void main(){int choose,editnum,dispnum,compnum,sortnum;//定义5个输入变量float stuscore[STUSIZE]={65.5,80,97.5,55,85,77.5,89,95,68.5,88};system("cls");stuCover();getch();while(1)//外循环{mainmenu();//调用主菜单函数printf("\t\t请输入序号:");scanf("%d",&choose);switch(choose)//主菜单的switch{case 1:Open();break;case 2:Save();break;case 3:do//内循环1{editmenu();//调用编辑子菜单函数printf("\t\t请输入序号:");scanf("%d",&editnum);switch(editnum)//编辑子菜单switchcase 1:Add();break;case 2:Del();break; 6case 3:Modify();break;case 0:Quit(0);break;}//编辑子菜单switch结束}while(editnum!=0);//内循环1结束break;case 4:do//内循环2{dispmenu();//调用查看子菜单函数printf("\t\t请输入序号:");scanf("%d",&dispnum);switch(dispnum)//显示子菜单switch{case 1:DispOne();break;case 2:DispAll();break;case 3:do//内循环3{sortmenu();//调用排序子菜单函数printf("\t\t请输入序号:");scanf("%d",&sortnum);switch(sortnum)//排序子菜单switch{case 1:AsceSort(stuscore,STUSIZE);break;case 2:DropSort();break;case 0:Quit(0);break;}//排序子菜单switch结束}while(sortnum!=0);//内循环3结束break;case 4:NotElig();break;case '0':Quit(0);break;}//显示子菜单switch结束}while(dispnum!=0);//内循环2结束break;case 5:do//内循环4{compmenu();//调用计算子菜单函数printf("\t\t请输入序号:");scanf("%d",&compnum);switch(compnum)//计算子菜单switchcase 1:CompSum();break;case 2:SearchMax();break; 7case 3:SearchMin();break;case 0:Quit(0);break;}//计算子菜单switch结束}while(compnum!=0);//内循环4结束break;case 6:Explain();break;//程序说明case 0:Quit(1);break;}//主菜单的switch结束}//外循环结束}void Open()//打开文件函数{printf("打开文件!\n"); getch();}void Save()//保存文件函数{printf("保存文件!\n");getch();}void Add()//增加学生记录函数{printf("增加记录!\n");getch();}void Del()//删除学生记录函数{printf("删除记录!\n");getch();}void Modify()//修改学生记录函数{printf("修改记录!\n");getch();}void DispOne()//查看一个记录函数{printf("查看选定记录!\n");getch();}void DispAll()//显示全部记录函数{printf("显示全部记录!\n");getch();}void AsceSort(float array[],int n)//按升序排列函数{int i,j;float t; 8 system("cls");for(i=0;i<n-1;i++){for(j=0;j<n-i-1;j++){if(array[j]>array[j+1]){t=array[j];array[j]=array[j+1];array[j+1]=t;}}}gotoxy(40,5);printf("学生成绩排序结果");gotoxy(10,7);for(i=0;i<n;i++)printf("%5.1f",array[i]);getch();}void DropSort()//按降序排列函数{printf("按降序排序!\n");getch();}void NotElig()//显示不及格记录函数{printf("显示不及格记录!\n");getch();}void CompSum()//计算总成绩和平均成绩函数{printf("计算总成绩和平均成绩!\n");getch();}void SearchMax()//查找最高成绩函数{printf("计算最高分!\n");getch();}void SearchMin()//查找最低成绩函数{printf("计算最低分!\n");getch();}void gotoxy(int x,int y) //光标定位函数{ 9 COORD c;c.X = x - 1;c.Y = y - 1;SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);}void Quit(int flag)//退出{char yn;if(flag==1){system("cls");printf("返回上级菜单");getch();}elseif(flag==0){system("cls");printf("你真的要退出吗?(y/n)");getchar();//吃掉键盘上的回车scanf("%c",&yn);if((char)yn=='y'||(char)yn=='Y'){system("cls");printf("\n\n\n\t\t\t谢谢使用!\n");exit(0);}}else{system("cls");printf("输入错!");}}void Explain()//程序说明{system("cls");gotoxy(10,3);//光标定位函数printf(" 这是一个教学程序。