C课程设计超管理系统
- 格式:doc
- 大小:1.32 MB
- 文档页数:32
c 课程设计售后管理系统一、课程目标知识目标:1. 学生能理解售后管理系统在企业管理中的应用及其重要性。
2. 学生能够掌握课程相关的概念,如客户服务、投诉处理、售后咨询等。
3. 学生能够了解并描述售后管理系统的主要模块和功能。
技能目标:1. 学生能够运用所学的知识点,设计并实施一个简单的售后管理系统。
2. 学生能够通过案例分析和问题解决,提升信息处理和数据分析能力。
3. 学生能够利用信息技术工具,进行有效的沟通和团队协作。
情感态度价值观目标:1. 培养学生对于企业服务意识的认识,强调以客户为中心的服务理念。
2. 增强学生的社会责任感和职业道德,理解优质售后服务对企业和社会的意义。
3. 激发学生的创新意识,鼓励他们在系统设计过程中提出新想法,培养解决问题的积极态度。
课程性质分析:本课程为实践性与理论性相结合的课程,旨在通过售后管理系统这一主题,将信息技术与企业管理知识相结合,提高学生的实际应用能力。
学生特点分析:考虑到学生处于能够理解抽象概念并具备一定信息技术基础的年级,课程将注重培养学生的实际操作能力,同时结合理论,提升学生的综合素养。
教学要求:1. 教学内容要与实际紧密结合,注重案例分析,提升学生的实战经验。
2. 教学过程要强调学生的主体性,鼓励学生主动探索和合作交流。
3. 教学评价要关注学生的知识掌握、技能应用及情感态度价值观的形成,进行全面评估。
二、教学内容1. 售后管理基础知识:介绍售后管理的概念、作用和基本原则,结合教材相关章节,让学生理解售后服务在企业运营中的重要性。
2. 售后管理系统模块:详细讲解售后管理系统的主要模块,如客户信息管理、服务请求处理、投诉处理、售后咨询等,对应教材中系统设计的相关内容。
3. 售后服务案例分析:分析典型售后服务案例,使学生了解优秀售后服务的实践方法,提升学生的问题解决能力。
4. 售后管理系统设计:教授如何根据企业需求设计售后管理系统,包括需求分析、系统设计、功能实现等,结合教材中项目管理及系统设计的内容。
成绩管理系统c语言课程设计一、教学目标本课程旨在通过成绩管理系统的课程设计,让学生掌握C语言编程的基本语法,理解结构化程序设计的基本思想,并能够运用C语言实现简单的系统程序。
在知识目标方面,学生需要掌握C语言的基本数据类型、控制结构、函数等语法知识。
在技能目标方面,学生需要能够独立编写并调试C语言程序,具备一定的程序设计能力。
在情感态度价值观目标方面,学生应该培养对计算机科学的兴趣,增强解决实际问题的信心和勇气。
二、教学内容本课程的教学内容主要包括C语言的基本语法、数据类型、控制结构、函数等知识,通过成绩管理系统的实例,让学生了解并掌握结构化程序设计的方法。
具体的教学大纲安排如下:1.第1-2课时:C语言概述,基本数据类型和输入输出语句。
2.第3-4课时:控制结构,包括条件语句和循环语句。
3.第5-6课时:函数的定义和调用,掌握函数的参数传递和返回值。
4.第7-8课时:数组和字符串的处理,实现成绩管理系统的数据存储。
5.第9-10课时:指针的概念和应用,优化成绩管理系统的数据处理。
6.第11-12课时:结构体和文件操作,完善成绩管理系统的功能。
三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用讲授法、讨论法、案例分析法和实验法等多种教学方法。
1.讲授法:用于讲解C语言的基本语法和概念。
2.讨论法:通过分组讨论,让学生深入理解程序设计中的问题。
3.案例分析法:分析成绩管理系统的实现过程,让学生了解实际应用。
4.实验法:让学生动手编写和调试程序,提高编程能力。
四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备等。
1.教材:选用《C程序设计语言》作为主要教材,辅以《C语言编程实例教程》进行实践指导。
2.参考书:提供《C语言程序设计》等参考书,供学生深入研究。
3.多媒体资料:制作课件和教学视频,方便学生复习和自学。
4.实验设备:提供计算机实验室,让学生进行编程实践。
五、教学评估本课程的教学评估将采用多元化评价方式,全面客观地评价学生的学习成果。
一、课程设计题目:学生成绩管理二、需求分析给出n个学生的m门考试的成绩表,每个学生的信息由学号、姓名、性别以及各科成绩组成。
对学生的考试成绩进行有关统计:按总数高低次序,打印出名次表,分数相同的为同一名次;按名次打印出每个学生的学号、姓名、总分以及各科成绩,并打印统计表。
三、概要设计程序要有的功能:1。
输入记录2。
用指定格式显示全部记录3。
根据姓名查找记录4。
根据姓名删除记录5. 保存记录到文件6。
按序号显示记录7。
按姓名由小到大的顺序排序程序运行当中,通过选择对应的功能序号来实现所需功能。
对输入的数据要有事先的分析,如果用户输入的数据与实际不相符如输入成绩的数值为负,则程序应输出相应的提示:“您输入的数据有误,请核实!”。
再者就是,当再输入完相应的数据后,程序作出相应的提示,询问用户是否要保存数据。
在排列学生成绩时候,如果出现成绩相同的情况,程序自动作出处理。
最后,在程序可以正确运行的基础上,再增加一些功能,如在排列的时候,自动输出最高分与最低分。
与及格成绩作比较,输出及格人数等相关信息。
流程图:四、详细设计源程序:#include ”stdio。
h”#include "stdlib.h”#include "string。
h”int shoudsave=0;/* */struct student{char num[10];/*学号*/char name[20];char sex[4];int cgrade;int mgrade;int egrade;int totle;int ave;char neartime[10];/*最近更新时间*/};typedef struct node{struct student data;struct node *next;}Node,*Link;void menu(){printf(”*********************************主菜单*****************************************”);printf(”\t1登记学生资料\t\t\t\t\t2删除学生资料\n”);printf(”\t3查询学生资料\t\t\t\t\t4修改学生资料\n”);printf(”\t5保存学生资料\t\t\t\t\t0退出系统\n”);printf(”********************************************************************************\n");}void printstart(){printf(”-————---—-——————--——----———-—-—-————--————--—--—--—-————---—-—————--———\n”);}void Wrong(){printf(”\n=====>提示:输入错误!\n”);}void Nofind(){printf("\n=====〉提示:没有找到该学生!\n");}void printc()/*本函数用于输出中文*/printf(”学号\t 姓名性别英语成绩数学成绩C语言成绩总分平均分\n”); }void printe(Node *p)/* 本函数用于输出英文*/{printf("%—12s%s\t%s\t%d\t%d\t%d\t %d\t %d\n",p—〉data。
超市收银c语言课程设计一、教学目标本节课的教学目标是让学生掌握超市收银系统的的基本流程,通过C语言编程实现一个简单的超市收银系统。
具体来说,知识目标包括掌握C语言的基本语法、数据结构和算法;技能目标包括能够使用C语言编写程序,解决实际问题;情感态度价值观目标包括培养学生的编程兴趣,提高学生解决问题的能力。
二、教学内容本节课的教学内容主要包括C语言的基本语法、数据结构和算法。
具体安排如下:1.C语言基本语法:介绍C语言的数据类型、运算符、控制语句等基本语法知识。
2.数据结构:讲解常用的数据结构,如数组、链表、栈和队列等,以及如何在程序中使用这些数据结构。
3.算法:介绍常用的排序和查找算法,如冒泡排序、选择排序、插入排序等,并讲解如何在程序中实现这些算法。
三、教学方法为了达到本节课的教学目标,将采用以下教学方法:1.讲授法:讲解C语言的基本语法、数据结构和算法,让学生掌握相关知识。
2.案例分析法:通过分析实际案例,让学生了解如何使用C语言解决实际问题。
3.实验法:让学生动手编写程序,巩固所学知识,提高编程能力。
四、教学资源为了支持本节课的教学内容和教学方法的实施,将准备以下教学资源:1.教材:选用权威、实用的C语言教材,为学生提供学习参考。
2.参考书:提供相关的参考书籍,丰富学生的知识体系。
3.多媒体资料:制作精美的PPT,直观展示C语言编程过程。
4.实验设备:为学生提供电脑等实验设备,方便学生动手实践。
通过以上教学设计,相信能够帮助学生更好地掌握C语言编程知识,提高解决问题的能力。
五、教学评估本节课的教学评估将采用多元化的评价方式,以全面、客观、公正地评价学生的学习成果。
评估方式包括:1.平时表现:评价学生在课堂上的参与程度、提问回答、小组讨论等,以考察学生的学习态度和积极性。
2.作业:布置相应的编程作业,要求学生独立完成,以检验学生对C语言编程知识的掌握程度。
3.考试:安排一次期末考试,测试学生对C语言基本语法、数据结构和算法的掌握情况。
学生成绩管理系统c语言课程设计报告一、引言学生成绩管理系统是一个为学校或教育机构提供学生学业成绩管理的重要工具。
通过该系统,可以方便地记录和查询学生的各项成绩,帮助教师和学生了解学生的学业表现,及时作出教学和学习的调整和改进。
本文将介绍一个基于C语言的学生成绩管理系统的设计与实现。
二、需求分析1. 学生信息管理:包括学生基本信息的录入、修改和删除。
2. 成绩信息管理:包括成绩的录入、修改和删除。
3. 成绩查询与统计:可以按照学生学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份:能够将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
三、系统设计1. 学生信息管理模块:设计一个结构体来存储学生的基本信息,包括学号、姓名、性别、年龄等。
通过菜单选择,可以实现学生信息的录入、修改和删除功能。
2. 成绩信息管理模块:设计一个结构体来存储学生的成绩信息,包括科目名称和成绩。
通过菜单选择,可以实现成绩信息的录入、修改和删除功能。
3. 成绩查询与统计模块:通过学号或姓名查询学生的成绩,并能够进行成绩的统计分析,如计算平均分和排名等。
4. 数据存储与备份模块:设计文件操作函数,将学生信息和成绩信息存储在文件中,并能够进行数据的备份和恢复。
四、系统实现1. 使用C语言编写程序代码,通过结构体和数组等数据结构实现学生信息和成绩信息的存储。
2. 利用文件操作函数实现数据的读取和存储,包括学生信息和成绩信息的存储和备份。
3. 设计菜单界面,通过用户选择来实现各个功能模块的调用。
五、系统测试与优化1. 针对各个功能模块进行测试,验证系统的正确性和稳定性。
2. 根据测试结果优化程序代码,提高系统性能和用户体验。
3. 完善系统功能,考虑异常情况的处理,提高系统的容错性和健壮性。
六、总结与展望通过本次课程设计,我们成功实现了一个基于C语言的学生成绩管理系统。
该系统能够方便地记录和查询学生的成绩信息,帮助教师和学生进行教学和学习的分析和改进。
C语言课程设计报告-学校运动会管理系统研究方案一、研究背景和意义学校运动会是中小学教育体育活动中的重要组成部分,通过开展运动会可以增强学生体质,培养团队合作精神,丰富校园文化。
而学校运动会管理系统作为一种信息化管理工具,能够提高运动会的组织效率和管理水平,有助于实现运动会的顺利进行。
然而目前的学校运动会管理系统存在一些问题,如功能不完善、操作过于复杂、数据统计不准确等。
本研究旨在针对这些问题,提出一种新的学校运动会管理系统,改善运动会管理工作,提高运动会的组织效率和管理水平。
二、研究目标和内容本研究的主要目标是设计和开发一种功能完善、易操作且准确统计数据的学校运动会管理系统。
具体内容包括:1. 分析当前学校运动会管理系统存在的问题和不足,明确改进方向。
2. 设计学校运动会管理系统的整体架构和功能模块,并选择合适的开发工具和技术。
3. 利用所选开发工具和技术进行系统的开发和实现。
4. 对开发完成的学校运动会管理系统进行实地调查和测试,收集相关数据。
5. 对采集到的数据进行整理和分析,总结系统的优缺点,并提出改进建议。
三、方案实施情况1. 针对学校运动会管理系统的问题和不足进行调研和分析,形成问题清单。
2. 根据问题清单,设计学校运动会管理系统的整体架构和功能模块。
3. 选择合适的开发工具和技术,准备开发所需要的环境和资源。
4. 利用所选开发工具和技术进行系统的开发和实现,包括数据库设计、界面设计、功能实现等。
5. 对开发完成的学校运动会管理系统进行实地调查和测试,收集用户的意见和建议。
6. 对收集到的数据进行整理和分析,评估系统的优缺点,并提出改进建议。
数据采集和分析为了对学校运动会管理系统进行评估和改进,我们进行了实地调查和数据采集。
具体步骤如下:1. 设计调查问卷,包括系统使用体验、功能满意度、操作便捷性等方面。
2. 针对学校运动会参与者和管理者,分别发放问卷,要求实名填写,并保证数据的保密性。
1.课程论文题目职工信息管理系统程序设计一、题目要求职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。
试设计一职工信息管理系统,使之能提供以下功能:(1)系统以菜单的方式工作。
(2)职工信息录入功能(职工信息用文件保存)。
(3)职工浏览功能。
(4)职工信息查询功能,查询方式可按学历查询或者工号查询。
(5)职工信息的删除、修改功能(可选项)。
2.程序设计思路1、设计思路(1)根据题目要求,应该把职工工资信息用结构体形式输入,在定义一个全局变量和文件指针进行整个程序的运行,然后把职工工资信息送到文件中,所以应该提供一个结构体和文件的输入输出等操作;(2)在程序中需实现职工工资浏览、查询、统计等功能的操作,所以需要建立相应的功能模块来实现;(3)另外还需要提供键盘式选择菜单实现功能,在运行时达到所要的目的。
3.功能模块图5.算法设计1.主函数提供输入、处理和输出部分的函数调用,各功能模块采用菜单方式选择。
2浏览模块【分析】该模块的功能是浏览职工的全部信息3排序模块4查询模块【分析】该模块的功能是根据输入的职工按照工号和学历查找对应的记录,找到以后,可进行继续查找或修改信息的操作。
流程图如下:5修改模块【分析】该模块的功能是显示所有职工的信息,考虑到记录较多,建议采用分屏显示。
显示完所有记录后,输入要修改的职工的工号,根据工号查到职工的记录,并提示用户修改该记录的哪部分信息,根据用户做的选择修改相应信息。
流程图如下:6.程序代码#include<stdio.h>#define N 50struct worker{char id[50];char name[20];char sex[10];char age[10];char edu[20];char salary[10];char address[20];char tel[20];}worker[N];void save(int n) //保存函数,保存n个记录{ FILE *fp;int i;if((fp=fopen("worker.txt","wb"))==NULL) //以只写方式为输出打开一个二进制文件{ printf("\nCannot open file\n");}for(i=0;i<n;i++)if(fwrite(&worker[i],sizeof(struct worker),1,fp)!=1)printf("file write error\n");fclose(fp);}int load() //加载函数{ FILE *fp;int i;if((fp=fopen("worker.txt","rb"))==NULL){printf("\nCannot open file\n");return NULL;}for(i=0;!feof(fp);i++)fread(&worker[i],sizeof(struct worker),1,fp);fclose(fp);return(i-1);}void no_input(int i,int n) //工号输入函数,i表示第i个职工的信息,n 表示比较到第n个职工{ int j,k,w1;do{w1=0;printf("工号:");scanf("%s",worker[i].id);for(j=0;worker[i].id[j]!='\0';j++)if(worker[i].id[j]<'0'||worker[i].id[j]>'9') //判断工号是否为数字{puts("请重新输入!\n");w1=1;break;}if(w1!=1)for(k=0;k<n;k++) //比较到第N个职工if(k!=i&&strcmp(worker[k].id,worker[i].id)==0) //判断职工号是否有雷同{puts("请重新输入!\n");w1=1;break;}}while(w1==1);}void input(int i) //输入一个记录的函数{ no_input(i,i);printf("姓名:");scanf("%s",worker[i].name);printf("性别:");scanf(" %s",&worker[i].sex);printf("年龄:");scanf("%s",&worker[i].age);printf("工资:");scanf("%s",worker[i].salary);printf("学历:");scanf("%s",&worker[i].edu);printf("住址:");scanf("%s",worker[i].address);printf("电话:");scanf("%s",worker[i].tel);}void printf_one(int i) //显示一个记录的函数{printf("%10s %10s %5s %5s %8s %6s %10s %10s\n",worker[i].id,worker[i].name,worker[i].sex,worker[i].age,worker[i].salary,worker[i].edu,worker[i].address,worker[i].tel); }void printf_back() //一个任务结束后选择是好似浏览还是返回{ int k,w;printf("\n\n\tSuccessful^-^.\n\n");printf("接下来做什么?\n\n\t1).浏览全部\t2).返回: [ ]\b\b");scanf("%d",&w);if(w==1)browse();else menu();}modify_data(int i,int n) //修改函数{ int c,w1;do{puts("\nmodify by=>\n\n 1).工号 2).姓名 3).性别 4).年龄 5).工资6).学历 7).地址 8).电话 9).取消");printf("请选择?:[ ]\b\b");scanf("%d",&c);if(c>9||c<1){puts("\nChoice error!please again!");getchar();}}while(c>9||c<1);do{switch(c){case 1:no_input(i,n);break;case 2:printf("name:");scanf("%s",worker[i].name);break;case 3:printf("sex:");scanf("%s",worker[i].sex);break;case 4:printf("age:");scanf("%s",worker[i].age);break;case 5:printf("salary:");scanf("%s",worker[i].salary);break;case 6:printf("edu:");scanf("%s",worker[i].edu);break;case 7:printf("address:");scanf("%s",worker[i].address);break;case 8:printf("tel:");scanf("%s",worker[i].tel);break;case 9:menu();break;}puts("\nNow:\n");printf_face();printf_one(i);printf("\n确定?\n\n\t1).是2).否,重新修改3).不保存退出[ ]\b\b");scanf("%d",&w1);if(w1==1)save(n);}while(w1==2);return(w1);}printf_face() //显示数据结构项目{ printf("\n\t工号姓名性别年龄工资学历地址电话号码\n"); }void enter() //输入模块{ int i,n;printf("输入多少个职工信息(0-%d):",N-1);scanf("%d",&n);printf("\n 请输入职工信息\n\n");for(i=0;i<n;i++)input(i);if(i!=0)save(n);printf_back();}browse() //浏览模块{ int i,j,n;n=load();printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)){printf("\n\n按任意键显示下一页...");getch();puts("\n\n");}printf_one(i);}printf("\t这里有 %d 条记录.\n",n);printf("\n按任意键返回...");getch();menu();}modify() //修改模块{struct worker s;FILE *fp;int i,n,k,w0=1,w1,w2=0;n=load();do{k=-1;printf_face();for(i=0;i<n;i++){if((i!=0)&&(i%10==0)) //目的是分屏显示{printf("\n\n记住要修改的工号.按任意键显示下一页");getch();puts("\n\n");}printf_one(i); //调用显示一个记录的函数}do{printf("\n\n输入要修改的职工工号! 工号:");scanf("%s",s.id); //输入要修改的IDfor(i=0;i<n;i++) //查找要修改的数据if(strcmp(s.id,worker[i].id)==0){k=i; //找到要修改的记录s=worker[i]; //把worker[i]备份,以便恢复}if(k==-1)printf("\n\n未找到请重输");}while(k==-1); //当k=-1表示没有找到printf_face(); //调用显示数据结构项目的函数printf_one(k); //调用显示一个记录的函数w1=modify_data(k,n); //修改记录并返回保存控制值w1,w1=1表示用户已确认修改if(w1==1){printf("\Successful^_^.\n\n修改另一个?\n\n\t1).是 2).否,保存退出\t[ ]\b\b");scanf("%d",&w0);w2=1; //用来控制保存,使w2=1是标记已有过修改}else{w0=0;if(w2==1)worker[k]=s;}if(w0!=1&&w2==1)save(n);}while(w0==1);menu();}search() //查询模块{ int c,w1;do{puts("\nsearch by=>\n\n1).工号 2}.学历 3).取消并返回"); printf("Which you needed?:[ ]\b\b");scanf("%d",&c);if(c>3||c<1){ puts("\nchoice error!please again!");getchar();}}while(c>3||c<1);{switch(c){case 1:search1();break;case 2:search2();break;case 3:menu();break;}}}search1() //按工号查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n输入要查询的工号! id:");scanf("%s",s.id);printf_face();for(i=0;i<n;i++)if(strcmp(s.id,worker[i].id)==0){k=i;printf_one(k);break;}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search1();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}search2() //按学历查询模块{int i,n,k,w1=1,w2,w3,w4;struct worker s;n=load();do{do{k=-1;printf("\n\n请输入你要查询的学历:\n");scanf("%s",);printf_face();for(i=0;i<n;i++)if(strcmp(,worker[i].edu)==0){k=i;printf_one(k);}if(k==-1){printf("\n\nNo exit!please");printf("\n\n继续查找?\n\t1).是 2).否,返回 [ ]\b\b");scanf("%d",&w1);if(w1==2) menu();}}while(k==-1&&w1==1);w4=0;w3=0;if(k!=-1){printf("\n\n接下来干什么?\n\t1).查找另一个 2).修改 3).返回菜单[ ]\b\b");scanf("%d",&w2);switch(w2){case 1:search2();break;case 2:w3=modify_data(k,n);break;case 3:{menu();break;}}}}while(w2==1);menu();}menu(){int n,w1;do{puts("\t\t*******************菜单*******************\n\n");puts("\t\t\t\t1.录入职工信息");puts("\t\t\t\t2.浏览职工信息");puts("\t\t\t\t3.查询职工信息");puts("\t\t\t\t4.修改职工信息");puts("\t\t\t\t5.退出");puts("\t\t****************************************\n\n");printf("请选择(1~5): [ ]\b\b");scanf("%d",&n);if(n<1||n>5) //对选择的数字作判断{w1=1;getchar();}else w1=0;} while(w1==1);switch(n){case 1:enter();break; //录入 case 2:browse();break; //浏览 case 3:search();break; //查询 case 4:modify();break; //修改 case 5:exit(0); //退出}}main(){menu();}7.程序运行结果下面是各个模块的的界面截图(1)、主菜单(2)、输入模块(3)、浏览模块(3)、查找模块(4)、修改模块8.编程中遇到的困难及解决方法温故而知新,可以为师矣。
课程设计说明书设计名称: C语言课程设计题目:学生成绩管理系统学生姓名:专业:网络工程班级: 12级1班学号: 2012394108指导教师:日期:年月日课程设计任务书网络工程专业 12 年级 1 班孙璐一、设计题目学生成绩管理系统二、主要内容数据库的数据项主要数据包括:学号、姓名、年级、专业、成绩1、成绩2、成绩3、平均成绩、总成绩。
要求具有以下功能:(1)系统以菜单方式工作。
(2)显示、保存记录;添加、删除、修改任意个记录。
(3)排序功能:打开学生数据库,计算每个学生的平均成绩和总成绩,用冒泡法或选择排序法将平均成绩和总成绩排序后生成两个新文件(从大到小),存盘并显示这两个文件的全部记录。
(4)查询功能:打开总成绩排序文件,用折半查找法统计出给定分数的人数并显示。
并能按学号或姓名查找并显示某个学生的各科成绩。
(5)统计功能:对各科成绩统计分析(平均分、最高分、最低分、及格率等);统计各科各分数段人数。
三、具体要求围绕课程设计的目的和意义,基本要求如下:1、认真阅读《C语言课程设计》指导书,明确课程设计的目的、意义和要求;2、快速总结C程序设计语言的精髓,如:函数的概念、函数的设计和函数的调用;3、快速熟悉Tuber C 或C++的上机环境。
能熟练进行高级编辑操作(特别是字块操作);熟悉步进式、断点跟踪的程序调试方法,提高工作效率。
4、根据“课程设计题目”,采用结构化的程序设计思想,确定系统的总体设计方案、确"定时间进度。
如果是多人共一题,则要首先完成小组内的人员分工及安排,不允许重题现象。
5.学习并了解良好的程序设计风格。
按质、按量、并按时间完成课程设计的任务。
6.提供可运行的课程设计系统,参加上机面试答辩。
本次课程设计的重点是:学会设计并编写函数,掌握好各函数之间的调用关系;利用文件操作函数,建立数据库并完成对数据库的各种操作;掌握几种典型算法的应用(如:冒泡法、选择排序法和折半查找法)。
3.设计结果与分析在VC++ 6.0环境中输入源程序,在没有提示错误的情况下编译,可以正常运行系统,实现网吧管理.如图2所示界面图3 程序主界面①执行文件时,会看到如图3所示界面。
运行主函数的时候,首先调用函数ID *creat() ,该函数是一个菜单函数,用scanf语句来实现各功能模块的输入执行。
根据网吧管理员实际情况的选择数据,分别调用其他自定义函数。
②在输入1按回车后会系统提示输入会员姓名、身份证号码,网吧管理员要把会员的信息进行输入。
如图4所示。
图4.输入会员上机信息界面该界面是调用函数ID *creat() 的结果,在ID *creat() 函数中,首先printf姓名用scanf函数接收会员上机信息.最后#结束该函数.回到主函数.在输入2按回车后系统会显示所有上机人员的信息。
其中包括临时上机人员和会员,如图5所示。
图5 输入所有上机人员信息结果界面该界面是调用函数ID *creat()的结果,在ID *creat() 函数中,首先printf姓名用scanf 函数接收会员上机信息.最后#结束该函数.回到主函数.④再输入3按回车后,输入你要查询的会员名系统会出现该会员的相关信息例如输入a按回车结果如图6所示。
图6 显示所查找会员信息界面该界面是调用ID *search(ID *head)的结果,scanf函数输入要查询的会员名,这里用到while,if语句.当符合输入的信息条件时,系统就会执行输出会员信息,若不符合则输入另一条指令.即"未找到符合记录!"按#回到主界面⑤再输入4按回车后,显示临时上机人员需要登记的信息.即填临时上机人员的姓名,身份证号码结果如图7所示。
图7 临时人员上机操作信息界面该界面调用ID *insert(ID *head) 函数记录新增临时上机人员信息,用到if条件语句,和while语句,当临时上机人员符合要求时,会显示临时上机登陆成功的字样.若不成功则直接跳过.根据管理人员得选择数据,调用其他函数.按#回车会到主界面⑥再输入5按回车后,显示临时下机人员的信息.输入下机人员的身份证号码结果 a.若输入正确的会员身份证号码如图8所示。
getch();return;}exit(0);}fseek(fp,0,2);if (ftell(fp)>0) /*文件非空*/{rewind(fp);for (num=0;!feof(fp) && fread(&student[num],sizeof(struct record),1,fp);num++);return;}}void select() /* 主菜单*/{char choic;system("cls");printf("\n\t\t******************** 主菜单********************");printf("\n\t\t*********** 1-添加用户2-查询用户************");printf("\n\t\t*********** 3- 充值4- 消费************");printf("\n\t\t*********** 5-删除用户6-退出系统************");printf("\n\t\t************************************************");printf("\n\t\t请选择:");choic=getch();switch (choic){case '1':addnewcard();break;case '2':searchcard();break;case '3':addbalance();break;case '4':charge();break;case '5':deletecard();break;case '6':exit(0);default:select();}}void addnewcard() /*添加用户*/{printf("\n\t\t*************** 请输入学生信息***************\n");printf("\n\t\t输入学号:");scanf("%s",&student[num].cardnumber);printf("\n\t\t输入姓名:");scanf("%s",&student[num].name);printf("\n\t\t输入电话号码:");scanf("%s",&student[num].phone);printf("\n\t\t输入班级:");scanf("%s",&student[num].classn);printf("\n\t\t输入密码:");scanf("%s",&student[num].password);printf("\n\t\t输入添加金额:");scanf("%d",&student[num].balance);num++;printf("\n\t\t是否继续添加?(Y/N):");if (getch()=='y')addnewcard();return;}void searchcard() /*查询用户*/{int mark=0;int i;int a=0;printf("\n\t\t***************** 按学号查找*****************\n");char cardnumber[10];printf("\n\t\t请输入学号:");scanf("%s",cardnumber);for(i=0;i<num;i++){if (strcmp(student[i].cardnumber,cardnumber)==0){printf("\n\t\t************** 以下是您查找的学生信息**********");printf("\n\t\t学号:%s",student[i].cardnumber);printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t班级:%s",student[i].classn);printf("\n\t\t余额:%d",student[i].balance);printf("\n\t\t密码:%s",student[i].password);printf("\n\t\t************************************************");printf("\n\t\t按任意键返回主菜单:");mark++;getch();return;}}if (mark==0){printf("\n\t\t没有改学生的信息");printf("\n\t\t按任意键返回主菜单");getch();return;}}void addbalance() /*充值*/{int i;int m;int a=0;printf("\n\t\t*************** 按学号添加金额***************\n");char cardnumber[10];printf("\n\t\t请输入学号:");scanf("%s",cardnumber);for(i=0;i<num;i++){if (strcmp(student[i].cardnumber,cardnumber)==0){printf("\n\t\t************* 以下是您所选择学生信息***********");printf("\n\t\t学号:%s",student[i].cardnumber);printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t班级:%s",student[i].classn);printf("\n\t\t余额:%d",student[i].balance);printf("\n\t\t密码:%s",student[i].password);printf("\n\t\t************************************************");printf("\n\t\t是否添加金额?(y/n)");if (getch()=='y'){printf("\n\t\t请输入你要添加金额:");scanf("%d",&m);printf("\t\t确认添加%d元给%s(y/n)?",m,student[i].name);if (getch()=='y') {student[i].balance=student[i].balance+m;}printf("\n\t\t添加金额成功");}printf("\n\t\t******** 以下是您选择学生添加金额后信息********");printf("\n\t\t学号:%s",student[i].cardnumber);printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t班级:%s",student[i].classn);printf("\n\t\t余额:%d",student[i].balance);printf("\n\t\t密码:%s",student[i].password);printf("\n\t\t************************************************");printf("\n\t\t按任意键返回主菜单");getch();return;}}}void charge() /*收费*/{int i;int k;int a=0;printf("\n\t\t***************** 按学号扣费*****************\n");char cardnumber[10];printf("\n\t\t请输入学号:");scanf("%s",cardnumber);for(i=0;i<num;i++){if (strcmp(student[i].cardnumber,cardnumber)==0){printf("\n\t\t************** 以下是您选择学生信息************");printf("\n\t\t学号:%s",student[i].cardnumber);printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t班级:%s",student[i].classn);printf("\n\t\t余额:%d",student[i].balance);printf("\n\t\t密码:%s",student[i].password);printf("\n\t\t************************************************");printf("\n\t\t是否扣除金额?(y/n)");if (getch()=='y'){printf("\n\t\t请输入你要扣除金额:");scanf("%d",&k);printf("\t\t确认扣除%d元给%s?(y/n)",k,student[i].name);if (getch()=='y'){student[i].balance=student[i].balance-k;}printf("\n\t\t扣除金额成功");}printf("\n\t\t****** 以下是您所选择学生扣除金额后信息********");printf("\n\t\t学号:%s",student[i].cardnumber);printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t班级:%s",student[i].classn);printf("\n\t\t余额:%d",student[i].balance);printf("\n\t\t密码:%s",student[i].password);printf("\n\t\t************************************************");printf("\n\t\t按任意键返回主菜单");getch();return;}}}void deletecard() /*删除用户*/{int i,j;int deletemark=0;char cardnumber[10];printf("\n\t\t请输入要删除学生学号:");scanf("%s",cardnumber);if(num==0){printf("\n\t\t对不起,文件中无任何纪录");printf("\n\t\t按任意键返回主菜单");getch();return;}for (i=0;i<num;i++){if (strcmp(student[i].cardnumber,cardnumber)==NULL){printf("\n\t\t以下是您要删除的学生纪录:");printf("\n\t\t学号:%s",student[i].cardnumber);printf("\n\t\t姓名:%s",student[i].name);printf("\n\t\t电话:%s",student[i].phone);printf("\n\t\t班级:%s",student[i].classn);printf("\n\t\t余额:%d",student[i].balance);printf("\n\t\t密码:%s",student[i].password);printf("\n\t\t是否删除?(y/n)");if (getch()=='y'){printf("\n\n\t\t退还%d 元给%s.\n\n",student[i].balance,student[i].name);for (j=i;j<num-1;j++) /*纪录移动,从stud数组中删除*/student[j]=student[j+1];num--;deletemark++;printf("\n\t\t删除成功");printf("\n\t\t是否继续删除?(y/n)");if (getch()=='y')deletecard();return;}elsereturn;}3.设计结果与分析①在Microsoft Visual C++ 软件中输入源程序,在没有提示错误的情况下编译,生成相应的后缀为“jiucankaguanli.exe”的可执行文件。
一、课程设计的目的与要求1二、系统分析21.1概述22.1需求分析22.3开发及运行环境3三、系统设计33.2功能分析33.3系统设计概要53.3.1系统总体结构53.3.2系统用例图63.4系统模块设计143.5数据库设计183.6登陆以及主窗体模块213.6.1登录窗体213.6.2注销和退出223.7商品类别管理模块223.7.1添加商品类别233.7.2编辑商品类别233.7.3删除商品类别233.8商品管理模块243.8.1添加商品243.8.2编辑商品253.9员工管理253.9.1添加员工253.9.2编辑员工263.9.3删除员工263.10会员管理模块273.10.1添加员工273.10.2编辑员工283.10.3删除会员283.11积分规则模块293.12查看统计信息模块293.13日常销售模块30四、致谢词30五、参考文献31一、课程设计的目的与要求为了更好的培养当代大学生的实践与理论相结合的理念,课程设计已逐渐成为我们大学生必修的课程。
社会在不断发展,信息应用水平也不断提高,当今社会对人才的培养与需求已不断加强。
课程设计是围绕一门主要基础课或专业课,运用所学课程的知识,结合实际应用设计而进行的一次综合分析设计能力的训练。
不仅可以提高我们的动手实践能力也能提高我们团队的合作精神!通过本次银行账户管理信息系统课程设计实践,经历一个小型管理系统开发的全过程,不仅可以对本学期C#课程学习温故知新的作用也能进一步掌握管理信息系统的理论和方法。
培养和锻炼开发管理信息系统的能力。
为今后信息系统开发打下良好的基础。
二、系统分析1.1概述随着我国超市经营模式日趋扩大,小型超市在业务上需要时刻更新产品的销售信息,不断添加商品信息,并对商品信息进行统计分析。
因此,在超市管理中需要引进现代化的办公软件,实现超市庞大商品的控制盒传输,从而方便销售行业的管理和决策。
2.1需求分析目前,我国零售业信息化状况的3个层面的分布基本明朗:在高端企业,进销调存的核心结构体系基本运作正常,面临着主要问题是数据的深挖掘和加工,财务业务系统的深度集成、根据企业的并购重组保证系统和数据的统一、稳定;在中端企业,分散营运向集中管理转变,进销调存核心结构系统正在由分散单店管理、销售核算向连锁管理、进价核算过渡;在低端企业,刚刚涉足,转向连锁零售业,对于信息化认识处于表面层次,业务流程和信息系统建设需要一段时间的探索、认识和渐进过程。
而整个零售行业对信息化的认识已经逐渐趋向一致:信息化是企业可持续发展、增强核心竞争力的必要手段。
超市软件系统从企业运营及管理的实际情况出发,结合当前中国零售业业态发展趋势,顺应了零售行业对信息化的要求,为商业管理信息系统提供了系统全面的技术解决方案。
基于以上原因,超市信息管理系统目前在各个商业领域都发挥了很大的作用。
也得到了越来越多的大、中、小型商业企业的应用。
但就目前的应用状况分析,管理系统在中、高端企业得到了广泛的应用和和重视,在小型企业、零售店的应用仅局限于信息化的表面层次,没有得到高度的重视。
同时,小企业也因资金问题而限制了其向更高程度信息化的应用。
2.3开发及运行环境开发平台:Microsoft Visual studio 2008开发语言:Visual C# 2008后台数据库管理系统软件: Microsoft SQL Server运行平台:windowsXp/windows7分辨率:1024*768像素三、系统设计3.2功能分析在对超市销售系统有了深入了解之后,为了解决超市工作人员在商品管理和日场销售中所存在的不足,从超市工作人员能够更容易、更方便地使用计算机对超市的有关数据进行管理,以实现无纸化操作的方面进行分析,超市系统应实现以下功能。
3.2.1登陆模块登陆模块根据用户角色的不同在登陆成功以后被赋予不同的操作权限。
管理员拥有超市管理系统中的所有权限,普通员工拥有添加会员、查看统计信息和日常销售的权限。
3.2.2商品类别管理模块商品类别管理模块具有对商品类别进行添加、编辑以及删除等功能。
在超市管理系统中,设定商品类别共有两级,因此,在添加时需要用户设置所添加的商品类别是一级还是二级的。
3.2.3商品管理模块商品管理模块具有添加和删除商品功能。
这里商品的信息主要包括商品名称,EAN<商品条形码)、价格、所属商品类别、单价和是否允许折扣等。
其中所属商品类别是指它对应于商品类别信息中的商品类别名称。
3.2.4员工管理模块员工管理模块具有添加、编辑、删除员工等功能。
这里员工的信息主要包括员工名称、登陆密码、角色等。
其中,角色指的是员工在超市管理系统中所拥有的权限范围,角色的不同说明其拥有的权限是不同的。
3.2.5会员管理模块会员管理模块具有添加、编辑、删除会员等功能。
这里会员主要信息包括会员名称、联系电话和积分。
其中,联系电话是唯一的、能够区分会员身份的凭证;积分则可以用来区分消费额折扣度。
3.2.6积分规则管理积分规则管理模块可对超市中已制定的积分规则进行编辑。
其中,可编辑的信息包括积分额和积分额所对应的折扣度。
3.2.7查看统计信息模块查看统计信息模块具有查询所有销售记录、查询一定时间范围内的销售记录和获得销售总额等功能。
3.2.8日常销售模块日常销售模块具有的功能包括进行日常销售、添加销售记录和得到顾客销售总额等功能。
其中,销售记录包括的信息主要包括商品编号、销售价格、销售数量、销售时间和顾客<包括普通顾客、会员)等。
3.3系统设计概要本超市管理系统的设计目标是能够对小型超市的各种商品及销售信息进行管理。
如前所述,在该超市管理系统中根据每位员工所属的角色不同,被赋予不同的操作权限,这里通过控制操作菜单的可用性来限制员工的操作权限。
而操作菜单是根据超市管理系统的划分的各模块创建的。
3.3.1系统总体结构根据前面有关系统功能的分析和超市销售系统的特点,在经过模块化的分析得到超市管理系统功能模块的划分,本系统包括登陆模块、商品类别管理模块、商品管理模块、员工管理模块、会员管理模块、积分规则管理模块、查看系统信息管理模块以及日常销售模块。
图1所示为该超市管理系统的总体结构图。
图13.3.2系统用例图用例图由Ivar Jacobson 在开发AXE 系统中首先使用,并添加到由他所倡导的OOSE和Objectory方法中。
用例图引起了面向对象领域的极大关注,子1994年Ivar Jacobson 的著作出版后,面向对象领域已广泛接纳了这一概念,并认为它是第二代面向对象技术的标志。
使用用例图可以描述外部参与者所理解的系统功能,也就是说用例图描述了用例、参与者以及它们之间的关系。
参与者代表与系统接口的任何事或人,它是指代表某一种特定功能的角色,因此参与者是虚拟的概念,他可以是人,也可以是外部系统或设备。
同一个人也能对应多个参与者,因此一个人是可能扮演多个角色的。
参与者总在被建模的系统外部,它们从来不是系统的一部分。
用例图是对系统行为的描述,它可以促进设计人员、开发人员与用户的沟通,理解正确的需求;还可以划分系统与外部实体的界限,是系统设计的起点,是类、对象、操作的来源,而通过逻辑视图的设计,可以获得软件的静态结构。
在参与者和用例之间存在的关系通常称为通信关联,因为它代表参与者和用例之间的通信。
关联可以是双向导航<从参与者到用例吧,并从用例到参与者)或单向导航<从参与者到用例吧,或用例到参与者)。
导航的方向表明了是参与者发起了和用例的通信还所示为用户登录利用图。
如图2所示,不带箭头的线段将参与者与用例关联起来,一以表示两者之间交换信息。
其中,参与者与“用户”,用例为“登录超市管理系统”,所以这里可以看到一位员工正在登录超市管理系统。
因为根据角色的不同,用户在登陆超市管理系统后将获得不同的操作权限,用户<超市工作人员)图2 用户登录用例图所以登陆管理的用例图如图3所示。
普通员工用户<超市工作人员)图3 登录管理用例图图3所示的登录管理用例图中使用了泛化技术,这里的参与者“管理员”和“普通员工”成为泛化参与者,而参与者“用户<超市工作人员)”成为泛化参与者。
对超市管理系统来说,不管该员工是管从理员,还是普通员工,都称为超市管理系统的用户,所以可以看出泛化参与者在系统中扮演较为具体的角色。
泛化可以应用于参与者和用例来表示其子项<泛化参与者)从父项<泛型参与者)继承功能,而且泛化还表示父亲的每个孩子都有略微不同的功能和目的是为以确保自己的唯一性。
管理角色可对系统中的所有模块进行管理,不同模块的管理员用例图如图4至图10所示。
图4 管理员角色商品类别管理模块用例图图5 管理员商品管理模块用例图图6 管理员员工管理模块用例图图7 管理员会员管理模块用例图图8 管理员积分规则管理模块用例图图9 管理员查看统计信息模块用例图图10 管理员日常销售模块用例图普通员工角色只能对系统中的日常销售模块、查看统计信息模块和会员管理模块中的添加会员进行管理,各模块普通员工用例图如图11至图13所示图11 普通员工会员管理模块用例图图12 普通员工查看统计信息模块用例图图13 普通员工日常销售模块用例图上图中带箭头的线和它所指向的用例,这里用来表示一个用例为执行其功能从其他用例引入功能,他们之间形成包含关系。
其中,箭头指向的用例为包含用例为被包含用例,而另一侧用例为包含用例。
也就是说,当管理员添加会员后,必须保存会员信息;当管理员查看会员信息时,必须先加载会员信息。
3.4系统模块设计上面根据系统功能的模块化得出了系统总体结构,也就是超市管理系统功能模块的划分,接着使用超市管理系统用例图加以说明。
3.4.1登陆用户登录的实现流程是用户在登陆窗口输入用户名称和密码,单击【登录】按钮,系统开始验证用户提交的登录信息是否正确。
如果正确,则获取该用户的角色,打开超市管理系统,并根据用户角色,打开超市管理系统,并根据用户角色赋予相应的操作权限;否则给出错误的信息。
具体实现流程如图14所示。
图14 用户登录流程3.4.2商品类别管理商品类别管理模块用于实现商品类别的添加、删除、编辑功能。
其中,商品类别添加的实现流程是用户在商品类别管理窗口中,选择添加商品类别选项卡页,输入所要添加商品类别的信息后,单击【添加】按钮,系统获得用户提交的商品类别信息,并写入到超市管理系统的数据库中,最后返回商品类别添加的执行结果。
商品类别的添加、删除与编辑都是通过使用编写的数据库操作类来实现更新和数据的显示的。
其中,删除与编辑中的数据列表通过使用init<)函数调用数据库操作类<DataOper)中的query<)函数来实现;而添加、删除与编辑则分别使用add_click(>、modify_click(>和deleteG_clict(>函数调用DataProcess<)函数来实现。